菜鸟的性能测试之路(四)——Jmeter生成性能报告

接上次我利用了Jmeter做完压测之后,现在我就要把它自动生成一个HTML的性能报告了。

由于性能测试测的是性能,所以此处建议使用命令行,而不是图形界面。用命令行界面的优势有如下几点:

1.图形界面消耗的资源比命令行界面大得多;

2.命令行界面可以用于测试大型负载的性能测试;

3.可以部署在持续集成的CI工具,例如jenkins。

埋坑与填坑之路

于是我就开启了jmeter非GUI的暴走模式,刚开始到处碰壁,下面就把遇到的问题和解决办法分享给大家。

首先用cmd打开windows的命令行窗口, cd切换到jmeter bin所在的目录。因为我的Jmeter是放在了D盘的D:\Program Files (x86), 所以我的是 D:\Program Files (x86)\apache-jmeter-3.0\bin 。

接着运行 jmeter -n -t D:\Program Files (x86)\apache-jmeter-3.0\result\Test.jmx -l D:\Program Files (x86)\apache-jmeter-3.0\result\demo.csv

其中   -n 表示运行jmeter非GUI,如果直接jmeter 回车,就会打开GUI界面。

          -t 指定的脚本文件及其路径。

          -l 输出结果指定的路径,默认是输出到bin目录下的jmeter.log


接下来让人抓狂的事情发生了:报错An error occured:Unknown arg

@#@¥#¥%……¥¥……¥……¥¥&¥%#%¥……¥&¥……¥……¥&¥¥……&(内心戏:OMG, what happen? What's wrong?)

由于我有python的编程经验,其中python对于缩进有严格的限制,我就猜想,会不会是我的路径有问题?

D:\Program Files (x86)\apache-jmeter-3.0\result\Test.jmx  (问题其实就在这里)

命令行界面对于空格也有一定的规则,我路径错误就在于Program Files (x86)这个文件夹名称存在空格。

所以解决方法是把我的jmeter直接移动到根目录,变成D:\apache-jmeter-3.0

当然我也可以把Program Files(X86)中的空格去掉,但是我不会这么做,因为这个文件夹下面装了好多东西。

OK,这次接着采用我上次用过的百度测试的jmx脚本来调试,再次运行命令,jmeter -n -t D:\apache-jmeter-3.0\testFile\testBaidu.jmx -l D:\apache-jmeter-3.0\testFile\csvlog.log -e -o D:\apache-jmeter-3.0\testFile\Report


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第1张图片
运行界面

yes, success!

正确的指令打开方式

jmeter –n –t  -l   -e –o

-n: 非GUI模式执行JMeter

-t: 执行测试文件所在的位置

-l: 指定生成测试结果的保存文件,jtl文件格式

-e: 测试结束后,生成测试报告

-o: 指定测试报告的存放位置

该方式的输入,为JMX file path,另外两个参数(CSV log和report folder)皆为输出。

需要注意的是,csv log不能在report folder下,否则将报类似csv log is not empty之类的错误。

输出的CSV文件如下(百度测试为例):


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第2张图片
CSV文件

报告展示

报告生成完毕后,目录结构如下:


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第3张图片
Report folder


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第4张图片
Dashboard


Test and Report Information

列出csv log文件名,已经报告生成所花费的时间(起始时间,结束时间)。

APDEX

应用程序性能指标。

Apdex:性能结果,范围0-1,1表示满意。

T:满意阈值,小于或等于该值,表示满意。

F:失败阈值,大于或等于该值,表示不满意。

处于T与F之间,表示可容忍。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第5张图片

Requests Summary

所有Request的成功比例,OK表示成功,KO表示不成功。

Statistics

数据分析。

Samples:线程数量

KO:失败数量

Error:失败率

Average:平均耗时

Min:最小耗时

Max:最长耗时

90th/95th/99thpct:90%、95%、99%的线程耗时

Throughput:每秒钟发送的请求数量

Received:接收网络响应耗时

Sent:发送网络请求耗时


Errors

会给出所有的错误原因。


OverTime

(1) Response Time Over Time

随时间变化,每个时间节点上的线程平均响应时间

菜鸟的性能测试之路(四)——Jmeter生成性能报告_第6张图片


(2) Bytes Throughput Over Time


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第7张图片


(3) Latencies Over Time

随时间变化,每个时间节点上的平均响应延时。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第8张图片



Thoughput

(1) Hits Per Second (excluding embedded resources)

每秒钟向服务器发送的请求数量。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第9张图片

(2) Codes Per Second (excluding embedded resources)

每秒钟服务器返回的ResponseCode数量。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第10张图片

(3) Transactions Per Second

服务器每秒钟处理的事务数量。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第11张图片

(4) ResponseTime Vs Request

每秒发送多少个请求时,所对应的平均响应时间。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第12张图片

(5) LatencyVs Request

每秒发送多少个请求时,所对应的平均延时。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第13张图片

Response Times

(1) ResponseTime Percentiles

响应时间与百分比的对应关系,即有百分之多少的线程花费了某一响应时间。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第14张图片

(2)  Active Threads Over Time



菜鸟的性能测试之路(四)——Jmeter生成性能报告_第15张图片

(3) TimeVs Threads

N个活动线程情况下的平均响应时间。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第16张图片

(4) Response TimeDistribution

在某一响应时间段内的线程响应数量。


菜鸟的性能测试之路(四)——Jmeter生成性能报告_第17张图片


报告详情可以参考:JMeter-Generating Dashboard

最后还有一点要注意的是,每次启动命令之前,report的文件夹内容必须和 jtl 文件一起清空。



读更多的好书,拍更美的照片,写更酷的代码,遇见更有趣的人,愿望是实现从IT菜鸟到全栈工程师的蜕变。

你可能感兴趣的:(菜鸟的性能测试之路(四)——Jmeter生成性能报告)