当前版本:
- jmeter 5.6.3
- mysql 5.7.39
简介
JMeter 支持在测试完成后自动生成报告,也支持使用结果数据文件转换成html报告(使用 -l 文件.jtl)。本篇文章主要介绍如何生成报告,以及报告的基本解读。
文章目录如下
1. 生成html报告
1.1. 使用命令行生成报告
1.2. 使用GUI工具生成报告
2. 报告解读
2.1. 整体概要
① 基本报告
② 统计信息
③ 错误统计
2.2. 性能指标
① 按时间性能走势
② 吞吐量走势
③ 响应时间走势
1. 生成html报告
本章节介绍2种生成 html 报告的方法:
- 命令行生成
- GUI工具生成
jmeter 会自动生成一个文件夹,需要将整个文件夹下载到本地,打开 index.html 即可。
1.1. 使用命令行生成报告
【方法一】执行完成后自动生成html报告
jmeter -n -t 测试文件 -l 结果日志 -e -o 报告目录 # 报告目录为不存在的目录
- -n:命令行模式运行JMeter
- -t:指定要执行的jmx文件
- -l:指定测试结果的日志文件(类似于查看结果树)
- -e:在测试结束后生成HTML报告
- -o:指定用于生成HTML报告的目标目录
【方法二】将结果文件生成html报告
jmeter -g 日志文件 -o 报告目录 # 需要一个不存在的目录,jmeter自动创建
- -g:指定结果文件的路径(指定jtl文件生成报告)
- -o:指定用于生成HTML报告的目标目录
1.2. 使用GUI工具生成报告
点击 "工具" 中的 "Generate HTML report"
生成报告如下:
2. 报告解读
需要将生成报告的整个目录下载到本地,打开 index.html。报告分为3个部分:
- Dashboard:提供了整体的概览信息,显示了关于测试结果的总体摘要。
- Charts:提供了关于性能指标的图表,如吞吐量、响应时间、活跃用户数等。
- Custom Graphs:允许根据自己的需求创建和显示自定义的图表。
后面的解读以压测 MySQL 业务作为例子
2.1. 整体概要
① 基本报告
- 基本报告主要分为3个部分:基本信息、用户满意度和请求通过率。
【基本信息】
测试报告的基本信息,包括开始时间、结束时间和报告的源文件。
【用户满意度】
从上述图表来看,设定的用户容忍响应时间为500ms,最大容忍1500ms,jmeter 根据每个业务的实际响应时间来判断。update 和 delete 业务满意度达到98.8%,insert 和 select 业务满意度达到100%,整体满意度达到99.9%,基本符合预期。
换一种角度来理解:
- 100%:全部用户都很满意性能。
- 99.99%:绝大部分用户很满意性能,只有少量几个用户不满意。
- 95%:95%的用户很满意,但是存在5%的用户不满意,是否符合需求根据每个公司的要求。
【请求通过率】
这部分报告主要将请求成功和失败的结果做了饼状图表比例(FAIL:失败;PASS:成功)。
② 统计信息
- 统计信息主要分为5个部分:请求信息、执行情况、响应时间、吞吐量和网络,重点关注错误率、95%响应时间、吞吐量。
Label # 每个请求的名称
Samples # 请求总次数
FAIL # 请求失败的次数
Error% # 请求失败率
Average # 平均响应时间
Min # 最小响应时间
Max # 最大响应时间
Median # 所有请求按照响应时间从小到大排序后,处于中间位置的响应时间
90th pct # 90% 的请求响应时间低于或等于该数值
95th pct # 95% 的请求响应时间低于或等于该数值
99th pct # 99% 的请求响应时间低于或等于该数值
Transactions/s # 每秒事务数
Received # 接收的数据量
Sent # 发送的数据量
③ 错误统计
- 错误统计主要分为2个部分:错误统计、前5错误信息。
【错误统计】
Type of error(错误类型) # 统计各种错误类型,例如连接超时、响应码错误或其它与请求执行相关的错误
Number of errors(错误数量) # 在整个测试期间发生的特定类型错误的总数
% in errors(错误比例) # 在整个测试期间发生的特定类型错误占所有错误的百分比
% in all samples(所有样本中的比例) # 特定类型错误占所有请求样本的百分比
【前5错误信息】
Sample(采样器) -- 请求的名称
#Samples(样本数) -- 请求的总数
#Errors(错误数) -- 特定采样器相关的错误数
Error(错误信息) -- 特定采样器的错误信息。例如错误消息、错误类型等。
2.2. 性能指标
① 按时间性能走势
- 按时间性能走势主要分为6个部分:响应时间、响应时间百分位、活动线程数、字节吞吐量、等待时间和连接时间。
【响应时间】
随时间推移的平均响应时间的变化情况,每个业务使用不同颜色的业务线。
【响应时间百分位】
展示了系统返回的响应时间在不同百分位数上的分布情况,该信息有助于确定系统在给定时间段内的性能状况。
【活动线程数】
展示系统同时处理的并发请求数,可用于监视系统的负载情况和并发性能。
【字节吞吐量】
展示在不同时间段内发送和接收的字节数,可用于观察系统的数据传输性能。
【等待时间】
展示请求在系统中等待的时间,包括网络延迟等因素。
【连接时间】
展示请求在与服务器建立连接时所花费的时间。
② 吞吐量走势
- 吞吐量走势主要分为6个部分:每秒请求数、每秒响应码数、每秒事务数、总每秒事务数、响应时间与请求的关系、等待时间与请求的关系。
【每秒请求数】
系统每秒针对服务器的请求次数,每个请求可能包含多个样本。
【每秒响应码数】
系统每秒接收到的成功和失败响应的数量。
【每秒事务数】
显示每秒钟完成的事务数量。一个事务可以包含多个采样器,并且表示一个用户的完整操作。
【总每秒事务数】
测试期间完成的总事务数量。
【响应时间与请求的关系】
显示请求的响应时间分布情况。主要提供了不同请求所花费的平均响应时间,以便比较请求之间的性能差异。
【等待时间与请求的关系】
显示请求的等待时间分布情况。主要提供了不同请求的平均等待时间,即请求在系统中等待的时间。
③ 响应时间走势
- 响应时间走势主要分为4个部分:响应时间百分位数、响应时间概述、时间 vs 线程数、响应时间分布。
【响应时间百分位数】
提供从 0% ~ 100% 百分位的响应时间,例如:
- 10%:表示 10% 请求响应时间低于或等于该数值(按10%最大值算)
- 99%:表示 99% 请求响应时间低于或等于该数值(按99%最大值算)
【响应时间概述】
分别展示了响应时间小于500ms、大于1500ms、500~1500ms之间和响应错误的请求数(纵坐标就是请求数)。
【时间 vs 线程数】
展示每个业务的活动线程数的响应时间(横轴:线程数,纵轴:响应时间)。
【响应时间分布】
展示每个业务的请求数与响应时间的分布(横轴:响应时间,纵轴:请求数)。