JMeter4.0提供了两种方式,皆为命令行指令。
(1) jmeter –n –t
该方式的输入,为JMX file path,另外两个参数(CSV log和report folder)皆为输出。
需要注意的是,csv log不能在report folder下,否则将报类似csv log is not empty之类的错误。
jmeter –n –t C:\D\JMeterSpace\CA\CA.jmx –l C:\D\JMeterSpace\CA\csvlog.log –e –o C:\D\JMeterSpace\CA\Report
(2) jmeter –g
该方式是一种间接生成方式,以方式1的输出csv log文件作为输入,生成报告。
jmeter –g C:\D\JMeterSpace\CA\csvlog.log –o C:\D\JMeterSpace\CA\Report
两条指令的区别是,前者将触发JMX的运行,运行的同时生成报告;而后者,则仅是生成报告。
报告示例
报告生成完毕后,目录结构如下
Dashboard
Test and Report Information
列出csv log文件名,已经报告生成所花费的时间(起始时间,结束时间)。
APDEX
应用程序性能指标。
Apdex:性能结果,范围0-1,1表示满意。
T:满意阈值,小于或等于该值,表示满意。
F:失败阈值,大于或等于该值,表示不满意。
处于T与F之间,表示可容忍。
从示例图片可见,对于Sign Multi Request,用户满意,但对于Sign Single Request,用户有部分不满意。原因,在后面的Statistics中解释。
Requests Summary
所有Request的成功比例,KO表示成功,KO表示不成功。
Statistics
数据分析。
Samples:线程数量
KO:失败数量
Error:失败率
Average:平均耗时
Min:最小耗时
Max:最长耗时
90th/95th/99thpct:90%、95%、99%的线程耗时
Throughput:每秒钟发送的请求数量
Received:接收网络响应耗时
Sent:发送网络请求耗时
从示例图中可见,Sign Multi Request,最大耗时才62,即使加上网络耗时,也远小于500ms的阈值,所以Sign Multi Request所对应的apdex为1。而对于Sign Single Request而言,95%的线程耗时132ms以内,小于500ms,而99%的线程耗时在814ms以内,约有不到4%的线程高于500ms,因此,其对应的apdex小于1,为0.986。
Errors
会给出所有的错误原因。
Top 5 Errors by sampler
会给出排名前五的Error。
OverTime
(1) Response Time Over Time
随时间变化,每个时间节点上的线程平均响应时间
(2) ResponseTime Percentiles Over Time (successful responses)
随时间变化,每个时间节点上的最长/最短/90%/95%/99%的线程响应时间
(3) Active Threads Over Time
随时间变化,每个时间节点上的活动线程数。
(4) BytesThroughput Over Time
随时间变化,每个时间节点上接收和发送的数据量(byte)。
(5) LatenciesOver Time
随时间变化,每个时间节点上的平均响应延时。
(6) ConnectTime Over Time
随时间变化,每个时间节点花费在连接上的平均时间。
Thoughput
(1) HitsPer Second (excluding embedded resources)
每秒钟向服务器发送的请求数量。
(2) CodesPer Second (excluding embedded resources)
每秒钟服务器返回的ResponseCode数量。
(3) TransactionsPer Second
服务器每秒钟处理的事务数量。
(4) ResponseTime Vs Request
每秒发送多少个请求时,所对应的平均响应时间。
(5) LatencyVs Request
每秒发送多少个请求时,所对应的平均延时。
Response Times
(1) ResponseTime Percentiles
响应时间与百分比的对应关系,即有百分之多少的线程花费了某一响应时间。
(2) ResponseTime Overview
小于T,大于T小于F,大于F的线程数各有多少。
(3) TimeVs Threads
N个活动线程情况下的平均响应时间。
(4) Response TimeDistribution
在某一响应时间段内的线程响应数量。