Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件。这篇文章介绍一下使用JMeter生成的报告的概要说明,以及使用的技巧和注意事项。
环境准备
关于Apache JMeter的概要介绍与安装的方法,可参看如下内容:
- https://liumiaocn.blog.csdn.net/article/details/101264380
事前准备
这里使用JMeter自带的Java请求进行压力测试的示例来说明如何生成测试报告,详细的操作步骤可以参看如下内容(生成了一个100并发进行360次循环,共计36000次测试的报告)
- https://liumiaocn.blog.csdn.net/article/details/101362941
结果说明
结果格式
结果的HTML模版使用了sbadmin,本文示例的5.1.1版本的JMeter使用的是sbadmin2-1.0.7版本
liumiaocn:jmeter-rpt-gui liumiao$ ls
content index.html sbadmin2-1.0.7 statistics.json
liumiaocn:jmeter-rpt-gui liumiao$
- 1
- 2
- 3
汉化或者定制化修改方法
基于sbadmin的JMeter测试报告结果缺省是英文的,由于此报告基于JMeter自身所提供的模版来实现,如果希望对结果进行定制化修改比如将生成的的显示页面汉化,则直接替换JMeter执行目录bin下的report-template文件夹即可,模版文件后缀为.fmkr,可以修改模版文件实现汉化的目的。
liumiaocn:apache-jmeter-5.1.1 liumiao$ ls bin/report-template/
content index.html.fmkr sbadmin2-1.0.7
liumiaocn:apache-jmeter-5.1.1 liumiao$
- 1
- 2
- 3
报告概要
测试报告概要信息页面主要显示如下信息:
- Apdex:应用程序的性能指标,取值范围为0-1,0表示所有用户请求均不满意,1表示全部满意
- Toleration threshold: 可接受的响应时间的设定阈值(成功值),缺省为0.5秒
- Frustration threshold: 不可接受的响应时间的设定阈值 (失败值),缺省为1.5秒
- 取样器类型
- 测试取样次数
- 线程组数量
- 响应时间:平均/最小/最大/90、95、99%用户的响应时间
- 吞吐量
- 网络传输速度
- 执行错误的统计信息(Sent:客户端发送数据的速度,Received:服务器端接收数据的速度)
- TOP 5的取样器错误内容
图表详细
主要的图表分为如下三类:
时间变化(Over Time)
时间趋势图主要分为如下几种:
- Response Times Over Time(响应时间趋势图):用于显示响应时间跟随时间变化的状况
- Response Time Percentiles Over Time (successful responses) (响应时间变化趋势图):主要用于显示最大、最小、90%/95%/99%百分位的用户响应时间的变化趋势
- Active Threads Over Time(有效线程趋势图):在JMeter中,线程相当于LR中的VU,用于模拟实际的用户。此图用于显示随着时间变化有效或者活跃的用户的情况。
- Bytes Throughput Over Time(字节吞吐量趋势图):将每秒发送字节数和每秒接收字节数根据时间推移进行显示以显示吞吐量趋势
- Latencies Over Time(延迟趋势图):延时指的是客户发送请求之前的时间段,在负载较高的情况下,延时自然也成为拉慢整体业务处理的影响要素。
- Connect Time Over Time(连接时长趋势图):用于显示随时间半环花费在连接上的平均时间。
以响应时间变化趋势图为例,信息如下图所示
注意:因为缺省粒度(1min)过大,所以结果无法看出趋势,拉长测试的时间或者修改显示粒度的大小即可。
Throughput(吞吐量)
吞吐量趋势图主要分为如下几种:
- Hits Per Second(每秒请求/点击趋势图):用于显示每秒点击或者每秒请求随时间变化的情况。
- Codes Per Second(每秒状态码数量趋势图):JMeter被设计用来进行Web应用的压力测试,此图用于显示对于HTTP的200响应码(成功结果)的数量统计趋势,在本文示例中也可以看到其也能对Java请求的结果进行显示。
- Transactions Per Second(每秒事务数量趋势图):用于分别显示各类测试结果的TPS随时间变化的趋势
- Total Transactions Per Second(每秒总事务总数趋势图):用于显示TPS总数随时间变化的趋势(分为成功和失败两类)。
- Response Time Vs Request(响应时间点与请求数的关系图):用于显示响应时间和请求数之间的关系(纵轴表示响应时间(单位毫秒),横轴表示请求数)
- Latency Vs Request(延迟时长与请求数的关系图):用于显示延迟时长和请求数之间的关系(纵轴表示延迟时长(单位毫秒),横轴表示请求数)
Response Times(响应时间)
响应时间趋势图主要分为如下几种:
- Response Time Percentiles(响应时间百分比图):用于显示不同百分比的用户请求的平均响应时间关系图(纵轴表示响应时间(单位毫秒),横轴表示百分比从0到100)。
- Response Time Overview(响应时间概要图):响应时间概要信息的展示,用于展示性能指标设定的各个阈值区间的响应数量(纵轴表示响应数量,横轴表示阈值区间,为测试概要页面显示的设定阈值)。示例如下图所示:
- Time Vs Threads(平均响应时间和活跃线程数关系图):用于显示压测中活跃线程数与响应时间之间的关系,示例如下所示:
- Response Time Distribution(响应时间分布图):用于显示不同响应时间段内响应数量的关系(纵轴表示响应数量,横轴表示响应时间,单位毫秒)
常用技巧
中断情况下的测试报告生成方法
jmeter -g 结果文件 -o 测试报告输出目录
报告生成是提示错误
因为jtl结果格式非常简单,就是标题和内容的csv文件格式。一般情况下的错误经常是最后一行的数据的列的内容缺失所导致,这种情况下删除该列即可。
平均采样显示粒度修改
缺省情况下系统配置的报告图表的显示的粒度为1分钟,一般来说需要进行修改,修改的内容与注意事项如下所示
- 文件名称:reportgenerator.properties/user.properties,建议修改user.properties对设定进行覆盖更为合理
- 所在目录:bin/
- 修改项目:jmeter.reportgenerator.ovrall_granularity
- 修改内容:将设定值从缺省的6000毫秒改为所需设定即可
- 注意事项:根据官方当前版本的提示,此值需要设定为大于1000毫秒,不然吞吐量的图表可能出错,建议最小设定为2000毫秒
图表标题修改
缺省情况下图表的标题为Apache JMeter Dashboard,可以通过修改report_title来实现
- 文件名称:reportgenerator.properties/user.properties,建议修改user.properties对设定进行覆盖更为合理
- 所在目录:bin/
- 修改项目:jmeter.reportgenerator.report_title
- 修改内容:将设定值修改为期待的显示内容
可接受/不可接受的响应时间阈值修改
可接受的响应时间的设定阈值(成功值),缺省为0.5秒,不可接受的响应时间的设定阈值(失败值),缺省为1.5秒,也可以通过修改对应设定项目来实现
可接受的响应时间阈值
- 文件名称:reportgenerator.properties/user.properties,建议修改user.properties对设定进行覆盖更为合理
- 所在目录:bin/
- 修改项目:jmeter.reportgenerator.apdex_satisfied_threshold
- 修改内容:将设定值修改为可接受的响应时间阈值
不可接受的响应时间阈值
- 文件名称:reportgenerator.properties/user.properties,建议修改user.properties对设定进行覆盖更为合理
- 所在目录:bin/
- 修改项目:jmeter.reportgenerator.apdex_tolerated_threshold
- 修改内容:将设定值修改为可接受的响应时间阈值
用户响应时间百分位修改
缺省情况下响应时间的显示中,应用时间的百分位有三个:90%、95%、99%,而相关的百分比也可以通过设定来实现修改。
- 文件名称:jmeter.properties
- 所在目录:bin/
- 修改项目:aggregate_rpt_pct1、aggregate_rpt_pct2、aggregate_rpt_pct3
设定项 | 缺省值 |
---|---|
aggregate_rpt_pct1 | 90 |
aggregate_rpt_pct2 | 95 |
aggregate_rpt_pct3 | 99 |