一. JMeter介绍
Apache JMeter是Apache组织开发的基于Java的压力测试工具。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
二. JMeter安装
1. 安装JDK
参考官网
2. 安装JMeter
直接访问官网下载编译好的版本。
解压(建议至/Applications 目录)后目录结构如下图:
添加环境变量
打开 ~/.bash_profile文件
添加以下指令:
export JMETER_HOME=/Applications/apache-jmeter-5.3/bin
export PATH=$JMETER_HOME:$PATH:.
执行source ~/.bash_profile使环境变量生效
执行jmeter -v出现下图内容则安装成功
三. 启动JMeter
执行jmeter,将启动JMeter,在终端会有如下输出:
在输出中提示不能使用图形界面进行负载测试,只能创建和调试测试计划,负载测试需要执行如下命令:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
另外提示需要增加JVM的Heap配置去满足自己的测试需求。
在终端启动JMeter后会自动打开图形界面,如下图:
可操作菜单Options => Choose Language => Chinese 进行中文语言的切换:
四. 创建测试计划
点击文件=》新建,创建测试计划。
右键“测试计划”,选择“添加=》线程=》线程组”
3.设置线程数为“60”
右键“线程组”,选择“添加=》取样器=》http请求”
设置http请求的路径为http://localhost:8080
右键“线程组”,选择“添加=》断言=》响应断言”
设置响应代码为200
右键“线程组”,选择“添加=》监听器=》观察结果树”
点击顶部的执行按钮(绿色三角符),验证执行结果,在观察结果树可看到执行的记录
10.点击保存,测试计划创建完成
五、关联
在某些业务场景中b接口需要的内容是a接口返回的,对a接口设置正则表达式,提取想要的值,在b接口中引用。
使用关联首先在取样器下添加-后置处理器-正则表达式提取器
引用名称:即变量名称,调用方法与变量一致,即${引用名称}
正则表达式:根据上下文获取需要的数据,()内的数据即变量的数据,()左边两边是你取值的边界
模版:表示将解析到的第几个值赋予给引用名称,需要用$$引用起来
匹配数字:如果你的模版匹配到了多个值,0代表随机,1代表全部,如果你想使用匹配到的第一个值,即${引用变量_g1},第二个值即${引用变量_g2}
缺省值:如果没有匹配到的默认值。
六、参数化
1.添加配置元件-csv数据文件设置
2.参数化文件使用CSV文件,即逗号分隔值,
文件名:填写参数化配置文件绝对的地址
变量名称,即每一列数据的变量名
遇到文件结束符再次循环,http请求结束后继续执行下一组数据
七. 运行测试计划
执行命令 jmeter -n -t /Users/lufei/jmeter脚本目录/PC区域管理模块.jmx -l result.txt -e -o report
Test_plan.jmx:测试计划文件
result.txt:测试记录
report:测试报告保存目录
输出如下则执行成功
八. 看懂测试报告
进入至report目录,用浏览器打开index.html
中间Statistics部分是聚合报告,测试报告的主要指标集中在这一部分,下面是指标的详细说明:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec