JMeter中的监听器有很多种,这里主要介绍常用的几种:聚合报告、图形结果、查看结果树以及断言结果。
聚合报告 Aggregate Report
作用:记录这次性能测试的总请求数、错误率、用户响应时间(中间值、90%、最少、最大)、吞吐量等,用以帮助分析被测试系统的性能。在聚合报告中,各个响应时间不能超过客户的要求,就是合格,例如不能超过响应时间2s,大于2s就是不合格的.
在这里用一个测试连接进行尝试:
点击运行,得到聚合报告如下,聚合报告可以是调优的参考:
1. Label :每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值;
2.#Samples :表示测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代1次,那么这里就显示对应的 HTTP Request的执行次数是10;(因为在模拟过程中,经过两次lcts5... 所以在这里显示的总执行次数为20)
3. Average :平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间;(通过报告可以得到登录行为在哪个HTTP Request的响应时间最长)
4.Median :50%用户的响应时间小于此值,表示中位数;
5.90%Line :90%用户的响应时间小于此值;
6.Min:最少响应时间;
7.Max:最大响应时间;
8.Error% :本次运行测试中出现错误的请求的数量/请求的总数;
9.Throughput: 吞吐量,默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 KB/sec;
10.Received KB/sec :每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec;
11.Sent KB/sec:每秒发送多少KB的数据;
图形结果 Graph Results
作用:通过图形展示出本次性能测试数据的分布。 图形结果一般作为聚合报告的分析辅佐。
1、样本数目:总共发送到服务器的请求数(聚合报告中的TOTAL #Samples)。
2、最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
3、吞吐量:服务器每分钟处理的请求数。
4、平均值:总运行时间除以发送到服务器的请求数。
5、中间值:代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
6、偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
查看结果树 View Results Tree
作用:以结果树的形式显示测试结果。查看结果树监听器放置的位置不同,得到的结果也不同。在线程组下添加察看结果树,查看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果。
如下图,这里的监听器放在线程组下,所有会显示所有的HTTP Request循环10次的结果。绿色代表测试通过,红色代表失败。
而在下图中,监听器放在第一个HTTP Request下面,因此看到的是同个HTTP Request循环10次的结果。
取样器结果
Thread Name: 线组名称;
Sample Start: 启动开始时间 ;
Load time: 加载时长 ;
Latency: 等待时长 ;
Size in bytes: 发送的数据总大小 ;
Headers size in bytes: 发送头大小 ;
Body size in bytes: 发送数据的其余部分大小 ;
Sample Count: 发送统计 ;
Error Count: 错误统计 ;
Response code: 返回码 ;
Response message: 返回消息 ;
Response headers:返回头信息 ;
请求
数据获取方式、路径、地址等以及传递的参数、cookie ;
响应数据
响应加载的页面html;
断言结果 Assertion Results
作用:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致,一般与结果树结合使用。
如何设置/添加断言?
一个HTTP可以添加一条断言。如下图,给第二条HTTP增加一个响应断言
1、响应文本:响应服务器返回的文本内容,HTTP协议排除Header部分;
2、响应代码:指请求返回的状态,如200 ;
3、响应信息:指请求返回的响应信息,如OK、not found ;
4、Response Headers : 匹配响应的头信息 ;
5、Request Headers :请求头信息;
6、URL样本:匹配URL链接;
7、Document(text):对文档内容进行匹配。通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式。jmeter会用Apache Tika去解析服务器响应内容,耗内存、也耗时间,解析易失败,尽量少用或不用。多用响应文本方式来进行断言验证。
8、Ignore Status:一个请求有多个响应断言,其中第一个响应断言选中此项。当第一个响应断言失败时可以忽略此响应结果,继续下一个断言。如果下一个断言成功则还是可以判定事物成功的。
9、Resquest Data:相应的数据。
模式匹配规则
1、包括:响应内容包括需要匹配的内容即代表响应成功,支持正则匹配;
2、匹配:(1) 相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同;(2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。
3、Equals : 返回结果与你指定断言完全一致,大小写敏感,需要匹配的内容是字符串非正则表达式 ;
4、SubString:响应内容包含需要匹配的内容才代表响应成功,大小写敏感,需要匹配的内容是字符串非正则表达式 。
举例:
断言第二个HTTP的相应代码为200。当返回状态码确实为200时,断言结果中不提示异常,结果树中不报错。
而当把断言改为555时,看到以下情况: