目录
1、查看结果树
-
调试JMeter脚本最常用的监听器
-
查看返回结果的
-
最基础的结果如下:
-
还可以将返回的数据通过不同格式进行查看,如常用的json格式的:
2、用表格查看结果
-
如果请求比较多,用这个看比较直观
3、聚合报告
-
聚合报告是一个比较精简的报告元件。
-
可以查看每个接口的性能情况与执行结果。
-
看聚合报告的前提:
- ①、没有网络瓶颈
-
②、并发用户数不变
- 负载测试时,并发用户数会随着时间而变化,那变化了,就不能看聚合报告
-
设置步骤:
- 选中线程组--->添加--->监听器--->聚合报告
-
说明:
- Label
- 每个请求的名称
-
Samples
- 本次场景中各请求发出的数量,以及一共完成了多少个请求
-
Average
- 平均响应时间,单位ms
-
默认是单个请求的平均响应时间
-
当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间
-
Median
- 50%的请求响应时间在这个时间之下,单位ms
-
或者说50%的请求响应时间都不超过这个时间
-
90% Line
- 官网解释:90% Line - 90% of the samples took no more than this time. The remaining samples at least as long as this.
-
90%的请求耗时没有超过这个时间,剩余的请求耗时至少在这个时间之上
-
也就是说90%的请求耗时都在这个时间之下
-
或者说90%的请求响应时间都不超过这个时间
-
95% Line
- 95%的请求响应时间都不超过这个时间
-
99% Line
- 99%的请求响应时间都不超过这个时间
-
Min
- 最小响应时间
-
所有请求中的最小响应时间
-
Max
- 最大响应时间
-
所有请求中的最大请求时间
-
Error
- 出错率
-
或者叫错误率
-
Throughput
- /ˈθruːpʊt/
-
吞吐量,接口处理能力的指标
-
默认情况下,表示的是每秒完成的请求数,一般认为它是TPS
- 但是TPS还要算下的,比如你10个用户,吞吐量为7.8/sec,那么TPS = 7.8 / 10 = 0.78
-
如果你是100个用户,吞吐量为46/sec,那么TPS = 46 / 100 = 0.46
-
Received KB/sec
- 每秒从服务器接收到的数据量
-
属于吞吐率
-
Sent KB/sec
- 每秒发送给服务器的数据量
-
也属于吞吐率
-
吞吐率跟带宽是有关系的,可以看出是否存在网络带宽问题的!
-
那怎么看是否有网络瓶颈呢?
-
怎么算?
-
1Mb 带宽 = 1 * 1024 Kb = 1024 / 8 KB = 128 KB/s
-
所以,理论上1M的带宽,上行/下行速度能达到128KB/s,那么只要你上面的聚合报告的吞吐率完全还没接近这个1M的值的时候,是完全没有网络瓶颈的!
- 何况你公司的网络,怎么可能才1Mb 带宽,是不?
-
那公司带宽一般咋看?
- ①、看项目
- 比如抖音、大公司、直播平台等,肯定很大
-
②、一般的企业服务器,一般电商类的产品,也就几M带宽
- ①、看项目
-
- Label
-
作为最重要的性能指标,最后【响应时间】的值如何选择?
- 观察最小值和最大值的波动范围
- 如果波动范围不大,那么可以以平均响应时间作为最终的性能响应时间结果
-
如果波动范围大,那么可以以90%的响应时间来作为最终的性能响应时间结果
- 你想,如果大部分都是正常的,结果来几个超级长的那样的,其他的很可能被平均
-
你在公司里,你们十个人年薪都是差不多二十万,但是来了个马云,你们再一平均,那么肯定你们年薪平均好多个亿了,是不
-
这就是传说中的被平均。
- 观察最小值和最大值的波动范围
4、HTML报告
-
jmeter -n -t [testplan jmx file] -l [results file] -e -o [Path to web report folder]
- 说明:
- -n,非GUI方式运行
-
-t,指定.jmx脚本路径及脚本名称
-
-l,指定结果文件路径及结果文件名称
-
-e,设置测试完成后生成测试报告
-
-o,指定测试报告生成的文件夹,该文件夹必须为空或者不存在。
- 说明:
-
1)进入jmeter的bin目录下
-
2)报错
$ jmeter -n -t httpbin.jmx -l httpbin0913.jtl -e -o ./report1
Creating summariser <summary>
Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property
An error occurred: Error in NonGUIDriver Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property
-
3)处理:
- 需要把bin目录下的 “jmeter.properties”文件中的“jmeter.save.saveservice.output_format”的格式改为csv就可以了
495 # legitimate values: xml, csv, db. Only xml and csv are currently supported.
496 jmeter.save.saveservice.output_format=csv
497 #jmeter.save.saveservice.output_format=xml
-
4)用非GUI方式运行生成报告
# lanhai @ lanhaideMacBook-Pro in ~/lanhai_test/jmeter_test [0:11:03]
$ jmeter -n -t httpbin.jmx -l httpbin0913.jtl -e -o ./report1
Creating summariser <summary>
Created the tree successfully using httpbin.jmx
Starting standalone test @ Tue Sep 13 00:11:09 CST 2022 (1662999069907)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary = 16 in 00:00:07 = 2.4/s Avg: 355 Min: 1 Max: 1090 Err: 1 (6.25%)
Tidying up ... @ Tue Sep 13 00:11:16 CST 2022 (1662999076660)
... end of run
5、其他监听器
-
监听器很多,按需选择
6、备注
-
很多监听器一般常用于GUI调试时候使用
-
在真正跑性能测试脚本的时候,注意有些需要关掉,如查看结果树【它会耗费很多资源,可能影响测试结果】
-
真正跑性能测试脚本的时候,一般都是用非GUI的模式,所以,脚本里面记得禁用不需要的组件