JMeter核心组件与实战
组件串联顺序:配置元件 > 前置处理器 > 定时器 > 采样器 > 后置处理器 > 断言 > 监听器
1. Thread Group
线程组控制总体并发,通过右击测试计划添加
(1) Thread Properties
- Number of Threads (users):线程数,即虚拟用户数(一个虚拟用户占用一个进程或线程)
- Ramp-up period (seconds):全部线程启动的时长(不是线程组的运行时间周期)
- Loop Count:每个线程运行的次数,可以勾选无限循环(置空会无限循环)
Summary
- 线程运行总次数 = < Number of Threads (users) > * < Loop Count >
- 每秒启动线程数 = < Number of Threads (users) > / < Ramp-up period(seconds) >
- 一个线程启动后就会开始运行(而不是等所有线程启动好才开始),运行< Loop Count >次结束
(2) Start
线程组可以被单个或全部运行
2. Config Element
配置元件通过右击测试计划、线程组或采样器添加,其下可以添加变量
- 变量在一处定义后,可以被四处使用,通常可以应变于测试数据(比如服务器地址)的更改
- 变量可以在 User Defined Variables 中添加,也可以从 CSV Data Set Config 中配置的 CSV 或 TXT 文件中读取
- 变量引用方式:${variable_name}
(1) User Defined Variables
可添加一个或多个用户自定义变量
(2) CSV Data Set Config
CSV和TXT文件里面的参数可以被读取以进行压测
1) Steps
- 在.csv或.txt文件中按行存储实参
- 在JMeter中将该文件引入为CSV数据源
- 以“variable_name1,variable_name2,…”的格式定义形参,并与文件中的实参按列对应
- 以${variable_name}的格式使用变量
- 若引入的是.txt文件,确保多参数分隔符与实参存储文件中的一致
2) Results
- 线程每运行一次就会从文件中按行读取一次实参
- 当线程运行次数大于实参行数,就会再从首行重新读取
3. Sampler
采样器通过右击线程组添加,一个线程组下面可以增加多个
- 名称:采样器名称
- 注释:对这个采样器的描述
HTTP Request
- 默认协议是http
- 服务器名称或IP :请求的目标服务器名称或IP地址
- 默认端口是80
- 路径:服务器URL
- Use multipart/form-data:当发送POST请求时,使用Use multipart/form-data方法发送,默认不选中
4. Assertions
断言通过右击测试计划、线程组或采样器添加
Response Assertion
- apply to(应用范围):
- Main sample only: 仅当前父取样器进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub sample(比较少用)
- 要测试的响应字段:
- 响应文本:即响应的数据,比如json等文本
- 响应代码:http的响应状态码,比如200,302,404这些
- 响应信息:http响应代码对应的响应信息,例如:OK, Found
- Response Header: 响应头
- 模式匹配规则:
- 包括:包含在里面就成功
- 匹配:响应内容完全匹配,不区分大小写
- equals:完全匹配,区分大小写
- Custom failure message:定制的断言失败信息,不填会使用默认的
5. Listener
监听器监听线程组运行后的结果,通过右击测试计划、线程组或采样器添加
(1) View Results Tree
查看结果树监听器可以反馈线程组的运行结果(可切换Raw/Parsed视图)
- 可以在每个采样器下面添加多个断言和一个结果树,再在最外层添加一个结果树进行汇总
- 绿色代表成功,红色代表失败
- 若是断言失败,双击失败记录,可以看到错误信息
(2) Assertion Results
断言结果监听器返回采样器的名称,若断言失败,也返回失败信息
(3) Aggregate Report
聚合报告记录压测的整体性能数据(响应时间相关参数的单位为毫秒)
- Lable:Sampler的名称
- Samples:一共发出的请求数,例如10个用户,循环10次,则是100
- Average:平均响应时间
- Median:中位数,50% 用户的响应时间小于此值
- 90% Line:90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
- 95% Line:95% 用户的响应不会超过该时间
- 99% Line:99% 用户的响应不会超过该时间
- min:最小响应时间
- max:最大响应时间
- Error%:错误的请求的数量/请求的总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps
- 适当调大和调小线程组的线程数后反复测试,可以获取到吞吐量的峰值
- Received KB/Sec:每秒接收的数据量
- Sent KB/Sec:每秒发送的数据量
6. Panel Header
GUI JMeter 顶部有一些常用的按钮和压测数据显示
- 查看/关闭运行日志:选中或取消选中options -> Log Viewer 或者 点击右上角⚠️图标
- 全部展开/折叠:顶部 +/- 按钮
- 右上角显示压测数据