监听器用来监听及显示JMeter取样器测试结果,能够以树、表及图形形式显示测试结果,也可以以文件方式保存测试结果,JMeter测试结果文件格式多样,比如XML格式、CSV格式。默认情况下,测试结果将被存储为xml格式的文件,文件的后缀: “.jtl”。另外一种存储格式为CSV文件,该格式的好处就是效率更高,但存储的信息不如xml格式详细。
首先我们来看一下JMeter的监听器,路径:线程组(用户)->添加->监听器;我们可以清楚地看到JMeter5中共有16个监听器如下图所示:
察看结果树,显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。
(1)察看结果树,放的位置不同,查看的结果也不同。在线程组下添加察看结果树,查看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果;
(2)该监听器推荐做调试用,在实际运行压测时,应该禁用,因为大量请求时,启用该监听器时打印的日志比较多,会造成大IO消耗,影响压力机性能。
1、添加 察看结果树 ,路径:线程组 > 添加 > 监听器 > 察看结果树,如下图所示:
2、关键参数说明如下:
**名称:**控制器的描述性名称,显示在左边节点上,并用于命名事务
**注释:**控制器注释信息,非必填项
**文件名:**载入文件名
Log/Display Only: 仅日志错误、Success ;勾选中显示对应的日志信息
**Configure:**定义report中自己所关心的数据项。
取样器结果:
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
3、作用
1)查看请求结果,请求成功的测试通常为绿色;红色则代表失败。
注:在没有对请求断言的情况下,显示绿色并不一定是成功,只代表响应码是200或300系列,显示红色说明响应码是400或500系列。所以要想确定请求返回的是正确的,必须要加上断言,只有断言成功才会显示绿色。
2)查看对应Sampler的测试结果的请求、响应数据。
汇总报告,为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似,只是它使用更少的内存。提供了最简要的测试结果信息,同时可以配置将相应的信息保存至指定的文件中(支持xml、csv格式的文件)。单击Configure按钮,可以配置结果保存各种选项
1、添加 汇总报告 ,路径:线程组 > 添加 > 监听器 > 汇总报告,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
Label 取样器别名,如果勾选Include group name ,则会添加线程组的名称作为前缀
# Samples 取样器运行次数
Average 请求(事务)的平均响应时间
Min 请求的最小响应时间
Max 请求的最大响应时间
Std. Dev 响应时间的标准方差
Error % 事务错误率
Throughput 吞吐量 也就是TPS
Received KB/sec 每秒收到的千字节
Sent KB/sec 每秒发送的千字节
Avg. Bytes 响应平均流量
聚合报告,记录这次性能测试的总请求数、错误率、用户响应时间(中间值、90%、最少、最大)、吞吐量等,用以帮助分析被测试系统的性能。在聚合报告中,各个响应时间不能超过客户的要求,就是合格,例如不能超过响应时间3s,大于3s就是不合格的.聚合报告应该是最详细的报告了,也是最为常用的报告。是在压测过程中最常用的监听器。该监听器对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,中位数、90%、95%、错误率,吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量。单击Configure按钮,
1、添加 聚合报告 ,路径:线程组 > 添加 > 监听器 > 聚合报告,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
**Label :**每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
**#Samples :**表示测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里就显示对应的 HTTP Request的执行次数是100
**Average :**平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
**Median :**50%用户的响应时间
**90%Line :**90%用户的响应时间
**Min :**最少响应时间
**Max :**最大响应时间
**Error% :**本次运行测试中出现错误的请求的数量/请求的总数
**Throughput :**吞吐量,默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
**(接收/发送)KB/sec :**每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
后端监听器,是一个异步侦听器,可以将数据推入都数据库中,提供了InfluxDB,graphite选项
1、添加 后端监听器,路径:线程组 > 添加 > 监听器 > 后端监听器,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
**Backend Listener implementation:**BackendListenerClient类的实现,Jmeter默认提供如下两种实现,因为我们使用的influxdb作为持久存储
org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
org.apache.jmeter.visualizers.backend.graphite.InfluxdbBackendListenerClient 因为我们使用的influxdb作为持久存储,所以后续只介绍InfluxdbBackendListenerClient
**Async Queue size:**异步队列大小 队列值包含异步处理时的度量标准。除非有一些特定的性能问题,否则最好不要从默认的5000。
3、我们使用InfluxdbBackendListenerClient
;
分割汇总图,我们可以看到表格显示的结果与图形结果,绝大多数都是对图形的设置。
1、添加 汇总图 ,路径:线程组 > 添加 > 监听器 > 汇总图,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
Column settings
Columns to display 选择要在图表中显示的列
Rectangles color 单击右侧颜色矩形打开弹出对话框,选择自定义颜色。(就是点击)
Foreground color 允许更改值文本颜色
Value font 允许定义文本的字体设置
Draw outlines bar? 在条形图上绘制或不绘制边界线
Show number grouping? 是否显示Y轴标签中的数字分组
Value labels vertical? 更改值标签的方向。(默认为水平)
Column label selection 按结果标签过滤
Title
在图表的头部定义图表的标题
Graph size
根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段定义自定义大小。单位是像素。
X Axis settings
定义X轴标签的最大长度(以像素为单位)
Y Axis settings
为Y轴定义自定义最大值。
Legend
定义图表图例的放置和字体设置
断言结果,对相应的请求添加断言。对取样器进行断言后,我们希望知道断言结果;此元件可以帮助我们显示断言结果(察看结果树元件中也可以看到)。消耗了大量资源(内存和CPU),性能测试时候不建议使用。
作用:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致,一般与结果树结合使用。
1、添加 断言结果 ,路径:线程组 > 添加 > 监听器 > 断言结果,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
比较断言可视化器,和比较断言配合使用。
1、添加 比较断言可视化器 ,路径:线程组 > 添加 > 监听器 > 比较断言可视化器,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
生成概要结果,该测试元素可以放置在测试计划中的任何位置。生成到目前为止对日志文件和/或标准输出的测试运行的摘要。显示了运行总计和差异总计。在适当的时间边界每n秒(默认为30秒)生成一次输出,因此将同步在同一时间运行的多个测试。
1、添加 生成概要结果 ,路径:线程组 > 添加 > 监听器 > 生成概要结果,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
图形结果,通过图形展示出本次性能测试数据的分布。 图形结果一般作为聚合报告的分析辅佐
1、添加 图形结果 ,路径:线程组 > 添加 > 监听器 > 图形结果,如下图所示:
2、关键参数说明如下:
**名称:**控制器的描述性名称,显示在左边节点上,并用于命名事务
**注释:**控制器注释信息,非必填项
**文件名:**载入文件名
Throught:吞吐量,可以理解成TPS(TPS表示每秒通过的事物数,QPS表示每秒查询接口数。jmeter中如果只有单接口,那么TPS=QPS。如果是多接口的混合场景,只有在事物控制器下执行,才能将其理解为TPS)
JSR223 Listener,允许将JSR223脚本代码应用于示例结果。
1、添加 SR223 Listener ,路径:线程组 > 添加 > 监听器 > JSR223 Listener,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
Label 取样器别名,如果勾选Include group name ,则会添加线程组的名称作为前缀
# Samples 取样器运行次数
Average 请求(事务)的平均响应时间
Min 请求的最小响应时间
Max 请求的最大响应时间
Std. Dev 响应时间的标准方差
Error % 事务错误率
Throughput 吞吐量 也就是TPS
Received KB/sec 每秒收到的千字节
Sent KB/sec 每秒发送的千字节
Avg. Bytes 响应平均流量
邮件观察仪, 如果测试运行从服务器收到太多失败的响应,则可以将邮件程序可视化工具设置为发送电子邮件,这个不错,起到及时通知效果,下面我使用的是163 SMTP进行测试。可以实现。
1、添加 邮件观察仪 ,路径:线程组 > 添加 > 监听器 > 邮件观察仪,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
Message中
From代表,发件人
Address代表 收件人
Success Limit 代表成功次数大于x时发送邮件
Failure Limit 代表失败事务大于4时,发送邮件
SMTP sever
Host 填写邮件服务器名称
Login发件人的邮箱地址
Password 将smtp服务开启,生成授权码当作密码
Connection Security 选择协议
点击TestMail 测试下是否可以发送成功,就可以投入使用了
响应时间图,响应时间图形监听器。有点和我们之前介绍的Aggregate Graph类似
1、添加 响应时间图,路径:线程组 > 添加 > 监听器 > 响应时间图,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
2.1 Graph setting 图片设置
2.2 Interval:横坐标的刻度
2.3 Title 标题 默认
2.4 Line setting 线条设置 默认
2.5 Graph size 图片尺寸 默认
2.6 X Axis 横坐标 默认
2.7 Y Aixs 纵坐标
2.8 Scale maximum value 纵坐标长度
2.9 increment scale 纵坐标的刻度 ;Legend 字体设置 默认
保存响应到文件,我们可以看到表格显示的结果与图形结果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。
1、添加 保存响应到文件 ,路径:线程组 > 添加 > 监听器 > 保存响应到文件,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空;
**文件名称前缀:**设置响应文件所在路径(路径必须已存在)和文件前缀
**Save Failed Responses only:**只保存失败的响应
**Save Successful Responses only:**只保留成功的响应
**Don’t add number to prefix:**不添加数字到文件名前缀
**Don’t add suffix:**不添加文件后缀,即扩展名(注:默认情况下,jmeter会根据服务器返回的结果自动生成合适类型的文件,比如服务器返回json格式的内容,jmter会自动生成.json文件)
**Add timestamp:**添加时间戳到文件前缀
**Minimum Length of sequence number :**最小序列号,不填默认从1开始。
简单数据写入器,对用来记录取样器响应结果,不会以图形方式显示。配合NON GUI模式使用。
1、添加 简单数据写入器 ,路径:线程组 > 添加 > 监听器 > 简单数据写入器,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
用表格查看结果,这个listener用来显示每个请求的响应头信息,我觉得它最好用的一点就是可以按先后顺序显示每个请求的开始时间、耗时、响应状态等,方便进行结果分析。
1、添加 用表格查看结果 ,路径:线程组 > 添加 > 监听器 > 用表格查看结果,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
Sample # : 一个系列号,我们线程用户设置了5,这里就有5个号
**Start Time:**每个用户的开始时间,我们设置了1秒进5个用户,所以,每个用户进入时间不同,这里精确到毫秒。
**Thread Name:**线程名称,注意1-1,1-5,第一个1我也不知道表示什么,后面的1到5很好理解,就是用户1到用户5.
**Label:**就是Http reques的名称
**Sampler Time:**运行这个Sampler所消耗的时间,有时候也等于Duration time
**Status:**执行结果标记,成本绿勾,失败红叉。
**Bytes:**请求的响应文件大小
**Sent Byte:**发送HTTP请求的数据包大小
**Latency:**这个字面意思是潜伏时间,不是延迟,暂时不好理解和解释。一个网络术语
Connet Time: 连接到服务器消耗的时间。
BeanShell Listener,通过BeanShell 监听器可以访问JMeter提供的属性和变量
1、我们先来看看这个 BeanShell Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > BeanShell Listener,如下图所示:
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。
间,有时候也等于Duration time
**Status:**执行结果标记,成本绿勾,失败红叉。
**Bytes:**请求的响应文件大小
**Sent Byte:**发送HTTP请求的数据包大小
**Latency:**这个字面意思是潜伏时间,不是延迟,暂时不好理解和解释。一个网络术语
Connet Time: 连接到服务器消耗的时间。
BeanShell Listener,通过BeanShell 监听器可以访问JMeter提供的属性和变量
1、我们先来看看这个 BeanShell Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > BeanShell Listener,如下图所示:
[外链图片转存中…(img-t7adjH0F-1605536020710)]
2、关键参数说明如下:
**Name:**名称,可以随意设置,甚至为空;
**Comments:**注释,可随意设置,可以为空。