JMeter整体综述
- 1. JMeter体系结构及运行原理
- 1.1 主要的组件
- 1.2 运行原理
- 2. 元件执行顺序和作用域
- 2.1 元件执行顺序
- 2.2 元件执行作用域
- 3. 参考
1. JMeter体系结构及运行原理
-
负载模拟:负责模拟用户请求。如取样器有参数化的需求,可通过配置元件或前置处理器完成。如有关联需求,可通过后置处理器完成。
-
线程组:用来设置运行场景,如模拟多少用户,运行多长时间
-
定时器:用来模拟用户并发场景
-
控制器:用来控制业务的执行逻辑,如单次登录等
-
断言:验证结果正确性
-
监听器:负责结果的收集与展示
1.1 主要的组件
-
取样器(Sampler)
模拟用户操作,向测试系统发出请求,如http请求、Web Service请求或JDBC请求
取样器执行JMeter的实际请求交互工作。每个取样器请求都会生成一个或多个取样结果。取样结果具有各种属性,如是否成功或失败,经历的时间,数据包大小等,且可在各种监听器中查看结果 -
断言
用来验证验证结果是否正确、判断请求是否成功返回值是否符合要求。常见的断言有响应断言、XML断言等 -
监听器
负责结果的收集(保存到文件)与展示(图形化展示) -
前置处理器
- 在请求发送之前进行环境或参数的准备工作,如对数据库建立连接等
- 为了确保作用到特定的取样器,可以将其添加到特定的取样器
-
配置元件
- 模拟用户操作过程中的参数化,比如CSV Data Set Config,可以从文件中读取测试数据,为取样器提供预备数据
- 记录服务器返回的数据,如Http Cache Manager,自动记录服务器返回的Cache信息
- 配置元件在同一范围内首先执行,即在同一范围内,先于任何取样器之前被执行
-
后置处理器
- 一般放在取样器之后,用来处理服务器的返回结果,比如正则表达式提取器
- 关联是通过JMeter元件从服务器的响应数据中提取动态数据的过程,动态数据可以应用于随后的取样器等
- 后置处理器是JMeter的关联元件,可以从服务器响应数据中查找需要的数据
- 诸多的后置处理器元件可以适用于不同的关联和信息抽取场景
- 应用于同一作用域的所有取样器,可以将其添加到特定的取样器
-
逻辑控制器
确定取样器的处理顺序和逻辑控制等。如执行一次控制器,循环控制器,交替执行控制器等来满足实际运行中的复杂需求除仅一次控制器外,其它控制器下可嵌套别的种类的逻辑控制器
-
定时器
- 为了真实模拟用户负载,有时需要模拟在什么时候以什么规律发送请求。比如在同一时刻并发访问某一服务器。
- JMeter定时器控制取样器的执行时机,根据实际需求,有诸多的定时器可以选择,如固定定时器,随机定时器等
-
线程组:
- 性能测试需要模拟大量用户负载的情况,通过线程组来完成此工作,可以设置运行的线程数,即模拟的用户数,还可以设置运行时长和循环次数等
1.2 运行原理
- JMeter通过线程组来驱动多个线程运行测试脚本对被测服务器发起负载
- 负载机上可以运行多个线程组,JMeter运行场景可以在GUI和非GUI模式下运行,非GUI资源消耗相对较小
- JMeter中取样器,断言和监听器组合在一起就可以完成请求发送,验证结果及记录结果过程
- JMeter可以运行在远程控制模式下,即分布式处理
2. 元件执行顺序和作用域
2.1 元件执行顺序
JMeter测试计划脚本呈树形结构排列,元件的执行顺序是先执行根节点,再执行子节点。在同一层次中,各元件的执行顺序逻辑如下:
- 配置元件
- 前置处理器
- 定时器
- 取样器
- 后置处理器
- 断言
- 监听器
元件执行顺序注意事项: - 定时器、断言、前置处理器及后置处理器只有在适用于取样器的情况下才会按照顺序进行处理
- 控制器和取样器按照在测试计划树中的顺序进行处理
- 其他测试元件根据其范围和测试元素的类型进行处理
- 如测试元件是同一种类型,则元件按照在树种出现的顺序进行处理
2.2 元件执行作用域
JMeter测试计划树包括的元件是分层并且有序的
-
其中监听器、配置元件、后置处理器、前置处理器、断言及定时元件是严格分层且有序执行的
-
控制器和取样器则是有序执行的
-
断言元件分层作用域
- 对于严格分层的元件,如断言元件在测试计划树中是分层的。如果其父节点是一个请求,则该断言应用于该请求。
如父节点是控制器,则该断言将应用于控制器内的所有请求
3. 参考
https://www.bilibili.com/video/BV1Sv411w7wy?p=73&vd_source=99dba1420b584095a4003bd191f6c0cf