# JMETER 分享
# 一、接口测试
注:接口参数可从附件 / 接口参数中拷贝 txt 文件内容,然后在 http 请求参数选择从剪切板复制添加
# 1、断言
响应断言
- 包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式
- 匹配: 响应内容需要完全匹配需要匹配的内容即代表响应成功,不区分大小写,支持正则表达式
- 相等:响应内容要完全等于需要匹配的内容才代表成功,区分大小写,支持正则
- 字符串:返回结果包含指定结果的字符串,但是 Substring 不支持正则
- 否:不进行匹配
断言持续时间
在限定的时间内得到响应数据,超时同样为失败
JSON 断言

# 2、用户参数
使用方法:前置处理器中添加,设置每次迭代更新一次,需要增加线程数才能起作用
作用:可以更新参数
# 3、函数助手
使用方法:在工具中添加
# 4、Bean shell
使用方法:在前置处理器中添加
作用:支持 JAVA 语言定义变量
例子:
vars.put("user","zj")
在变量中 ${user} 即可使用
# 5、CSV 数据文件设置
文件名:C:/Users/Desktop/user_name.txt
变量名:username
忽略首行:False
是否允许带引号:False
遇到文件结束符再次循环:如果循环一百次,只有四个文件就 True
线程共享模式:看变量的生效区域
优先使用用户参数 > CSV 数据 如需禁用,右键用户参数 > 禁用
# 6、命令行启动
jmeter -n -t D:\apache-jmeter-5.4.3\TestCase\数据库测试.jmx -l mt_test.jtl -e |
-n 以非 GUI 形式启动(命令行)启动 -t 测试脚本 -l 生成的文件名称 -e 执行完脚本后生成 html 报告 -o 测试报告存放的位置 (不加会默认生成到 bin\report-output)
如果有 jtl 文件想生成 html 报告 (生成的 html 报告可能与聚合报告数据不一致,以聚合报告为准,再使用 jtl 报告生成 html 报告)
jmeter -g test.jtl -o /path | |
# -g:后跟 test.jtl 文件所在的路径 | |
# -o:后跟生成的 HTML 文件存放的路径 |
报告数据项说明
Request->Label: 请求名称即采样器名称
Executions->#Samples:共请求多少次,请求的数量 (线程数 * 循环次数)
Executions->KO:错误数量
Executions->Error%:错误率
Response Time(ms):响应时间
Average:平均响应时间
Min:最小响应时间
Max:最大响应时间
90% Line:90% 线,90% 用户响应不超过该时间
95% Line:95% 线,95% 用户响应不超过该时间
99% Line:99% 线,99% 用户响应不超过该时间
Throughput:吞吐量,一般情况下可看做每秒完成请求数 (和 QPS 类似)
特别强调下 90th pct:这里指的是百分之九十的用户都不超过多少 ms,并不是多少指百分之九十的用户是多少 ms
Network(KB/sec):网络情况
Received:每秒从服务器端接收到的数据量
Sent:每秒从客户端发送的请求的数量
# 二、分布式部署
适用:压力测试
前提条件:
- 运行相同版本的 JMeter
- 使用相同的 java 版本
- 有基于 SSL 的 RMI 的有效密钥库,或者禁用 SSL。
- 都在一个网络
控制机:我们操作的机器,用于启动和传递测试任务,一般不执行测试任务(为了性能考虑)
执行机:用于执行控制机分发的测试任务,并上传测试数据到控制机
以多个 jmeter 运行在单机为例
控制机:
执行机:
控制机 & 执行机:
启动顺序
1、先启动执行机下的 jmeter-server.bat,等待出现连接成功
2、执行控制机下的 jmeter.bat
注意:
1、任务并不是分发,而是拷贝
2、执行机下不需要有测试脚本
3、如果有用到CSV数据,则执行机下的相同路径也需要有csv配置文件