JMeter:一个简单的测试计划怎么做?

一、JMeter概述

▲ JMeter简介

Apache JMeter?是Apache组织开发的一款开源软件,是典型的纯Java开发的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试以度量软件的性能,也可以用于其他类型的测试比如接口测试、API测试等。

▲ JMeter版本

JMeter不同的版本,功能有所差异,对JDK的支持也不尽相同。新的JMeter版本有些功能会逐渐改进完善,还会引入新的功能组件,性能也会逐步提升。因此在JMeter官方网站的最佳实践中,建议用户无论如何最好使用最新的JMeter版本。

最新版本下载页面链接:https://jmeter.apache.org/download_jmeter.cgi

这里以JMeter5.2.1版本进行介绍。

▲ JMeter与Loadrunner区别

▲JMeter GUI界面

当JMeter以GUI模式运行时,窗口主要由三部分构成:

1.功能区

上方菜单栏,下方工具栏。菜单栏展示了JMeter提供的功能菜单,而工具栏中的图标是常见功能的快捷方式。

2.视图区

以树状结构呈现JMeter元素,其中“Test Plane”是树的根节点,每一个节点就是一个JMeter元素。在此区域可以添加、删除节点或者通过拖曳调整节点的位置。

3.内容区

当在视图区选中一个JMeter元素节点时,内容区则会相应地显示该元素的内容。这时可以对其内容进行查看、设置等操作。

二、JMeter测试组成

JMeter构建测试类似于组装一台智能电子设备,比如智能手机。智能手机由CPU、内存、输入输出设备(比如USB接口,摄像头等)、屏幕、电池等一系列物理部件构成的。

JMeter测试也是由一系列JMeter元素组合起来构成的,JMeter提供了构建测试的所有元素,你可以随心所欲的将这些元素组装起来完成你想要的测试。

JMeter元素有以下四种类型的测试元素:

1)测试计划

2)线程组

3)组件

包含配置元件、前置处理器、定时器、后置处理器、断言与监听器

4)控制器

包括取样器、逻辑控制器与测试片段

(1) 测试计划

测试计划描述了JMeter测试在运行时执行的一系列步骤。完整的测试计划由一个或多个线程组、逻辑控制器、取样器、监听器、定时器、断言和配置元件组成。

测试计划元素是JMeter测试树的根节点,是唯一的,所有的测试元素节点都位于根节点之下。

(2)线程组

在手工测试中,测试用例由测试工程师手动执行完成。而性能测试与自动化测试的测试用例由选择的测试工具代替测试工程师来执行。JMeter执行测试的任务是由线程组来完成的。打个比方,线程组相当于手工测试中执行测试用例的测试工程师。

线程组控制JMeter用来执行测试的线程数。要模拟多少个用户(称之为虚拟用户)来执行测试,可以通过修改线程组的线程数来实现。比如将线程数设置为10,表示模拟10个用户执行测试。

所有的取样器与逻辑控制器都必须位于线程组下,从这个角度理解,JMeter测试计划真正开始于线程组。其他元素,例如监听器,可以直接放在测试计划下,在这种情况下,它们将作用于所有的线程组。一个测试计划下可以有多个线程组,在测试计划中可以配置以并行或顺序方式启动多个线程组。

(3) 组件

JMeter中最基本的元素为元件,元件是JMeter测试中的最小功能单元,每个元件都具有某种特定的功能。比如“Regular Expression Extractor”元件,可以实现利用正则表达式提取响应数据的功能。

JMeter提供了很多元件,为了方便用户使用与管理众多的元件,JMeter将多个功能类似或逻辑上相关的元件归为一类,称为组件。JMeter包含六大组件: 配置元件、前置处理器、定时器、后置处理器、断言与监听器。

● 配置元件

配置元件与取样器密切相关。类似于配置文件之于软件,软件配置文件可以影响软件的行为;同样通过配置元件可以新增或修改请求内容,实现对请求的自定义。

● 前置处理器

前置处理器在进行取样器请求之前执行一些操作。

如果前置处理器附加到取样器元素,那么它将在该取样器元素运行之前执行。

前置处理器经常用于在运行之前修改取样器请求的设置,或更新未从响应文本中提取的变量。

● 定时器

默认情况下,JMeter线程按顺序执行取样器而不会出现暂停的情况。通过将定时器添加到线程组来指定延迟。如果不加延迟,JMeter可能会在很短的时间内发送过多的请求到服务器,导致服务器负载过重而崩溃。

定时器可以使在其作用范围内的每个取样器执行前延迟一段时间。

●后置处理器

后置处理器在取样器请求完成后执行一些操作。

如果后置处理器附加到取样器元素,那么它将在该取样器元素运行之后执行。

后处理器通常用于处理响应数据,从中提取需要的值。

● 断言

断言用于验证取样器请求或对应的响应是否返回了期望的结果。

JMeter测试是否执行成功,结果是否预期,都可以通过添加断言来进行验证。

● 监听器

监听器可以在JMeter执行测试的过程中搜集相关的数据,并将这些数据不同的形式,比如树、图、报告等呈现出来。

比如,“图形结果”监听器绘制响应时间的曲线图,“查看结果树”监听器显示取样器请求和响应的详细信息等。

此外,有些监听器还可以将搜集到的测试数据保存到文件中以供以后使用。

(4)控制器

●取样器

取样器用于构建发给服务器处理的请求,即告诉JMeter怎样将请求发送到服务器。例如,若要发送HTTP请求,可以选择“HTTP Request”取样器,同时还可以通过添加配置元件来自定义请求。

● 逻辑控制器

取样器请求默认是以先后顺序依次执行的,某些情况下满足了复杂的业务/场景需求。通过逻辑控制器可以控制JMeter发送请求的逻辑,来实现复杂的业务/场景。比如有选择性执行某些请求,循环执行请求,整体执行逻辑上有依赖关系的请求,交替执行请求等等,都可以使用相应的逻辑控制来实现。

● 测试片段

测试片段元素是一种特殊类型的控制器,与线程组元素同级。它与线程组的区别在于,除非被Module Controller或Include Controller引用,否则它不会执行。

测试片段主要用于测试脚本的重用。

三、一个简单的JMeter测试计划

以访问百度为例(www.baidu.com)。

按照如下步骤完成测试计划:

1.在Test Plan节点上右键,选择Add->Threads(users)->Thread Group

在Tread Properties项下,设置“Number of Threads(users)”为1

2.在Thread Group节点上右键,选择Add->Sampler->HTTP Request

在Web Server项下,设置“Server Name or IP”为www.baidu.com

在HTTP Request项下,设置“Path”为/

3.在HTTP Request节点上右键,选择Add->Assertions->Response Assertion

在Field to Test项下,选择“Response Code”

在“Patterns to Test”项下,点击“Add”,输入200

4.继续在HTTP Request节点上右键,选择Add->Listener->View Results Tree

5.点击“Save”快捷按钮,然后输入测试计划文件名,保存

6.点击“Start”快捷按钮执行测试,可以在“View Results Tree”中查看测试结果。

JMeter测试查看结果树显示如下:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容