Jmeter组件
之前我们已经简单的完成了一个测试计划的过程,但是我们根据模板生成的测试计划,在左边一栏有很多项,这些是干什么的呢?
这些项在Jmeter中,都是Jmeter的组件,我们的测试计划都是有Jmeter的组件组合而成的,Jmeter提供了多种丰富的组件,我们通过组合这些组件,可以开发出符合自己测试场景jmeter脚本。
接下来,让我们认识这些常用组件
1. 测试计划(Test Plan)
启动JMeter之后,就默认打开了一个测试计划,测试计划用来描述一个性能测试,包含于本次性能测试相关的所有执行步骤以及报表。
一个完整的测试计划包含:一个或多个线程组、逻辑控制、取样发生控制、监听器、定时器、断言和配置原件。
2. 线程(Threads(Users))
相当于LoadRunner中的虚拟用户,每个JMeter测试计划的第一步就是添加线程组。在线程组里设置要模拟的并发用户量、并发时间或并发次数,线程的启动频率。
JMeter的线程组分为以下3类:
- setUp Thread Group:相当于Junit的setup,进行测试前的初始化工作,也就是相当于LoadRunner脚本中的init部分
- tearDown Thread Group:相当于Junit的teardown,进行测试结束后的垃圾回收等清理工作,也就是相当于LoadRunner中的end部分
- Thread Group(线程组):最常用的就是线程组,相当于LoadRunner中的Action。一个线程相当于一个LoadRunner中的虚拟用户,这些线程在脚本运行后无法变动,不像LoadRunner一样,可以在执行过程中人为干预。
下面,我们就详细介绍下Thread Group界面的内容
3. 测试片段(Test Fragment)
测试片段元素是控制器上的一种特殊的线程组,它在测试树上主线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者被控制器或者被控制器所引用时才会被执行。
4. 取样器(Sampler)
是性能测试中间服务器发送请求并等待响应的最小单元,每个采样器有不同的属性可以设置
目前常用的取样器:
- HTTP请求
- FTP请求
- Java请求
- JDBC请求
- SAOP/XML-RPC请求
- LDAP请求
- Junit请求
- JMS请求
- TCP请求
- STMP请求
- ……
#5. 逻辑控制器(Logic Controller)
逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的序列请求。
常用的逻辑控制器:
- If Controller
- While Controller
- Runtime Controller
- Transaction Controller
- 随机控制器
- 交替控制器
- 吞吐量控制器
- 模块控制器
- ……
6.监听器(Listener)
对Jmeter测试结果进行收集处理并进行可视化展现一系列元件,包括发送请求数据、返回的结果数据、响应时间的统计、吞吐量、错误率返回结果状态等信息。
常见的监听器:
- 图形结果
- 查看结果树
- 用表格查看结果
- 聚合报告
- ……
7. 配置元件(Config Element)
维护Sampler需要的配置信息,并根据实际需要修改请求的内容,如HTTP、LDAP、java等默认值,JDBC以及MongoDB配置信息等。最常用的是用CSV Data Set config或者使用随机参数来进行参数化。为简单起见,建议将配置元件放在请求开始之前。
8. 定时器(Timer)
相当于LoadRunner中的思考时间。
设置定时器的目的:
- 一方面为了更真实地模拟用户并发行为;
- 另一方面是控制每个线程之间的请求间隔时间,以减少服务器的压力。
9. 断言(Assertions)
相当于LoadRunner中的检查点。通过对比返回的响应数据与预期数据,来判断请求是否成功,可以确保压力测试是在功能正确的前提下执行的,毕竟压力测试的前提是保证成功的正确性,这个限制对于有效的测试是非常有用的。
常用的断言有:
- 响应断言
- XML断言
- HTML断言
- Xpath断言
10. 前置处理器(Per Processors)
常用来修改请求的设置。例如,HTTP URL重写修复符可以实现URL重写,当RUL中有sessionID一类的session信息时,可以通过该处理器填充发出请求的实际sessionID。
11. 后置处理器(Post Processors)
相当于LoadRunner中的关联。用于对Sampler发出请求后得到的服务器响应数据进行处理。一般用来提取响应中的特定数据,如用后置处理器中的正则表达式提取器来对服务器返回的特定数据进行关联操作。
组件执行顺序和作用域
1–配置节点 –Config Element里面的内容
2–前置处理器 –Pre Processors
3–定时器–Timer
4–取样器–sampler
5–后置处理器(只在有结果可用情况下执行)
6–断言(只在有结果可用情况下执行)
7–监听器(只在有结果可用情况下执行)