JMeter 组件详解-Listeners 监听器

Metadata

title: JMeter 组件详解-Listeners 监听器
date: 2022-12-13 13:20
tags: 
  - 行动阶段/完成
  - 主题场景/工具
  - 笔记空间/KnowladgeSpace/ToolSpace
  - 细化主题/JMeter
  - 细化主题/组件
  - 细化主题/监听器
categories:
  - JMeter
keywords:
  - JMeter
  - 组件
  - 监听器
description: 监听结果,还提供了查看、保存和读取保存的测试结果的方法。

Listeners | 监听器

除了”听”测试结果之外,大多数监听器还扮演着几个角色。它们还提供了查看、保存和读取保存的测试结果的方法。

注意,侦听器在找到它们的范围的末尾处理。

测试结果的保存和读取是通用的。各种侦听器都有一个面板,可以通过该面板指定将结果写入(或读取)的文件。默认情况下,结果存储为XML文件,通常带有 .jtl 扩展。将其存储为CSV是最有效的选项,但没有XML(另一种可用选项)详细。

侦听器不会在CLI模式下处理示例数据,但是如果配置了输出文件,则会保存原始数据。为了分析CLI运行生成的数据,您需要将文件加载到适当的Listener中。

要读取现有结果并显示它们,请使用文件面板Browse按钮打开文件。

如果您想在加载一个新文件之前清除任何当前数据,请在加载文件之前使用菜单项Run→clear (Ctrl + Shift + E)Run→clear All (Ctrl + E)

结果可以从XML或CSV格式文件中读取。当读取CSV结果文件时,使用头(如果存在)来确定存在哪些字段。为了正确地解释无头CSV文件,必须在jmeter.properties中设置适当的属性。

如果样本很多,监听器会占用大量内存。为尽量减少所需的内存,请使用Simple Data Writer,并使用CSV格式。

Simple Data Writer | 简单数据写入器

界面

Attribute Description Required
Filename 包含示例结果的文件的名称。可以使用相对路径名或绝对路径名指定文件名。相对路径是相对于当前工作目录解析的(默认为bin/目录)。JMeter还支持相对于包含当前测试计划(JMX文件)的目录的路径。如果路径名以”~/“(或jmeter.save.saveservice。base_prefix JMeter属性),则假定路径相对于JMX文件位置。 No
Browse 文件浏览按钮 No
Errors 选择此选项将导致只写/读的结果带有错误 No
Success 选择这个选项,只写/读结果,不出错。如果既没有选择Errors也没有选择successful,那么将处理所有结果。 No
Configure 配置按钮,参见下面 No

Graph Results | 图结果

图结果绝对不能在负载测试期间使用,因为它会消耗大量资源(内存和CPU)。只在功能测试或测试计划调试和验证期间使用它。

Graph Results侦听器生成一个简单的图来绘制所有样本时间。在图的底部,以毫秒为单位显示当前样本(黑色)、所有样本的当前平均值(蓝色)、当前标准差(红色)和当前吞吐量率(绿色)。

吞吐量数字表示服务器每分钟处理的实际请求数。这个计算包括您添加到测试中的任何延迟和JMeter自己的内部处理时间。这样计算的好处是,这个数字代表真实的东西—您的服务器所在的东西

界面

下表简要描述了图表中的项目。关于统计术语的精确含义的进一步细节可以在网上找到,如维基百科,或通过查阅统计书籍。

Data - 绘制实际数据值
Average - 绘制平均值
Median - 绘制中位数(中间值)
Deviation - 绘制标准差(一种变化的度量)
Throughput - 绘制出单位时间内的样本数量

Assertion Results | 断言结果

在负载测试期间绝对不能使用断言结果,因为它会消耗大量资源(内存和CPU)。只在功能测试或测试计划调试和验证期间使用它。

Assertion Results可视化工具显示每个样本的Label。它还报告测试计划中任何断言的失败。

界面

View Results Tree | 查看结果树

界面

视图结果树显示所有示例响应的树,允许您查看任何示例的响应。除了显示响应之外,您还可以看到获取此响应所需的时间和一些响应代码。请注意,请求面板只显示JMeter添加的标题。它不显示HTTP协议实现可能添加的任何报头(如Host)。

参数说明

Renderer Description
CSS/JQuery Tester CSS/JQuery测试器只适用于文本响应。它在上面的面板中显示纯文本。"测试"按钮允许用户将CSS/JQuery应用到上面的面板,结果将显示在下面的面板。CSS/JQuery表达式引擎可以是JSoup或Jodd,这两种实现的语法略有不同。</br> 例如,将href属性应用到当前JMeter函数页面的Selector a[class=sectionlink]会给出如下输出: </br> Match count: 74 </br> Match[1]=#functions </br> Match[2]=#what_can_do </br> Match[3]=#where </br> Match[4]=#how </br> Match[5]=#function_helper </br> Match[6]=#functions </br> Match[7]=#__regexFunction Match[8]=#__regexFunction_parms </br> Match[9]=#__counter </br> … and so on …
Document 文档视图将显示从各种类型的文档中提取的文本,如Microsoft Office(Word, Excel, PowerPoint 97-2003, 2007-2010 (openxml), Apache OpenOffice (writer, calc, impress), HTML, gzip, jar/zip文件(内容列表),以及一些"多媒体"文件的元数据,如mp3, mp4, flv等。完整的支持格式列表可以在Apache Tika格式页面上找到。</br> > Document视图的一个要求是下载Apache Tika二进制包(Tika -app-x.x.jar),并将其放在JMETER_HOME/lib目录中。</br>如果文档大于10mb,则不显示。要更改此限制,请设置JMeter属性文档。Max_size(单位为字节)或设置为0以删除限制。
HTML HTML视图试图将响应呈现为HTML。渲染的HTML很可能比较差,一个人会在任何web浏览器获得的视图;然而,它确实提供了一个快速的近似值,有助于初步结果的评估。不下载图像、样式表等。
HTML (download resources) 如果选择了 HTML(下载资源)视图选项,则渲染器可以下载 HTML 代码引用的图像、样式表等。
HTML Source formatted 如果选择了 HTML Source formatted view 选项,渲染器将显示由 Jsoup 格式化和清理的 HTML 源代码。
JSON JSON 视图将以树形样式显示响应(也处理嵌入在 JavaScript 中的 JSON)。
JSON Path Tester JSON Path Tester 视图将让您测试您的 JSON-PATH 表达式并查看从特定响应中提取的数据。
JSON JMESPath Tester JSON JMESPath Tester 视图将让您测试 JMESPath 表达式并查看从特定响应中提取的数据。
Regexp Tester Regexp Tester 视图仅适用于文本响应。 它在上面板中显示纯文本。 "测试"按钮允许用户将正则表达式应用到上面板,结果将显示在下面板中。 正则表达式引擎与正则表达式提取器中使用的引擎相同。 例如,应用于当前 JMeter 主页的 RE (JMeter\w*).* 会给出以下输出: </br> Match count: 26 </br> Match[1][0]=JMeter - Apache JMeter </title> </br> Match[1][1]=JMeter </br> Match[2][0]=JMeter" title="JMeter" border="0"></a> </br> Match[2][1]=JMeter </br> Match[3][0]=JMeterCommitters">Contributors</a> </br> Match[3][1]=JMeterCommitters </br>… and so on … </br> []中的第一个数字是匹配号; 第二个数字是组。 组 [0] 是与整个 RE 匹配的任何内容。 组 [1] 是与第一组匹配的任何内容,即在这种情况下为 (JMeter\w*)
Text 默认文本视图显示响应中包含的所有文本。 请注意,这仅在响应内容类型被视为文本时才有效。 如果 content-type 以下列任何一种开头,则认为是二进制,否则认为是文本。 </br> image/ </br> audio/ </br> video/
XML XML 视图将以树形样式显示响应。 任何 DTD 节点或 Prolog 节点都不会出现在树中; 但是,响应可能包含这些节点。 您可以右键单击任何节点并展开或折叠其下方的所有节点。
XPath Tester XPath 测试器仅适用于文本响应。 它在上面板中显示纯文本。 "测试"按钮允许用户将 XPath 查询应用到上面板,结果将显示在下面板中。
Boundary Extractor Tester 边界提取器测试器仅适用于文本响应。 它在上面板中显示纯文本。 "测试"按钮允许用户将边界提取器查询应用到上面板,结果将显示在下面板中。

使用Search选项,大多数视图还允许搜索显示的数据;搜索结果将在上面的显示中高亮显示。例如下面的控制面板截图显示了搜索”Java”的结果。注意,搜索对可见文本进行操作,因此在搜索text和HTML视图时,您可能会得到不同的结果。

注意:正则表达式使用Java引擎(而不是像正则表达式提取器或Regexp Tester视图那样的ORO引擎)。

举例

Aggregate Report | 汇总报告

聚合报告为测试中的每个不同名称的请求创建一个表行。对于每个请求,它汇总响应信息,并提供请求计数、最小、最大、平均、错误率、大致吞吐量(请求/秒)和每秒千字节吞吐量。一旦测试完成,吞吐量就是整个测试期间的实际吞吐量。

吞吐量是从采样器目标的角度计算的(例如,在HTTP采样的情况下,远程服务器)。JMeter会考虑生成请求的总时间。如果其他采样器和计时器在同一个线程中,这将增加总时间,从而降低吞吐量值。所以两个名称不同的相同采样器的吞吐量是两个名称相同的采样器的一半。正确选择采样器名称以从聚合报告中获得最佳结果是很重要的。

计算中位数和90 % Line(第90百分位)值需要额外的内存。JMeter现在结合了具有相同运行时间的示例,因此使用的内存更少。然而,对于花费超过几秒的样本,概率是更少的样本将有相同的时间,在这种情况下,将需要更多的内存。注意,您可以在之后使用这个侦听器重新加载CSV或XML结果文件,这是避免性能影响的推荐方法。参见摘要报告了解类似的监听器,该监听器不存储单个示例,因此需要固定的内存。

界面

  • Label - 样品的标签。如果选择Include group name in label?,则将线程组的名称作为前缀添加。这允许在需要时分别对来自不同线程组的相同标签进行排序。
  • # Samples - 相同标签的样品数量
  • Average - 一组结果的平均时间
  • Median - 中位数是一组结果中间的时间。50 %的样本不超过这次;剩下的至少花了同样长的时间。
  • 90% Line - 90 %的样本不超过这次。剩下的样本至少花了这么长时间。(90)
  • 95% Line - 95 %的样本不超过这次。剩下的样本至少花了这么长时间。(95)
  • 99% Line - 99% %的样本不超过这次。剩下的样本至少花了这么长时间。(99)
  • Min - 相同标签的样品时间最短
  • Max - 相同标签的样品时间最长
  • Error % - 请求错误的百分比
  • Throughput - 吞吐量以每秒/分钟/小时的请求数来衡量。选择时间单位使显示的速率至少为1.0。当吞吐量被保存到一个CSV文件时,它被表示为请求/秒,即30.0请求/分钟被保存为0.5。
  • Received KB/sec - 以每秒接收千字节为单位的吞吐量
  • Sent KB/sec - 以每秒发送千字节为单位的吞吐量

Times are in milliseconds.

View Results in Table | 用表格查看结果

界面

这个可视化工具为每个示例结果创建一行。与View Results Tree一样,这个可视化工具也使用大量内存。

默认情况下,它只显示主(父)样例;它不显示子样本(子样本)。JMeter有一个”Child Samples?”复选框。如果选中此选项,则显示子样本而不是主样本。

Simple Data Writer | 简单数据写入器

界面

这个侦听器可以将结果记录到文件中,但不能记录到UI中。它旨在通过消除GUI开销来提供记录数据的有效方法。在CLI模式下运行时,可以使用-l标志创建数据文件。要保存的字段是由JMeter属性定义的。看到 jmeter.properties 查看详细信息。

Aggregate Graph | 汇总图

聚合图类似于聚合报告。主要的区别是聚合图提供了一种简单的方法来生成条形图并将图保存为PNG文件。

界面

参数说明

Attribute Description Required
Column settings - Columns to display: 选择要在图形中显示的列。 </br> - Rectangles color: 点击右边的颜色矩形打开一个弹出对话框,为列选择一个自定义的颜色。 </br> - Foreground color 允许改变值文本颜色。 </br> - Value font: 允许定义文本的字体设置。 </br> - Draw outlines bar? 在柱状图上画或不画边线 </br> - Show number grouping? 是否显示Y轴标签中的数字分组。 </br> - Value labels vertical? 更改值标签的方向。(默认是水平) </br> - Column label selection: 根据结果标签进行筛选。可以使用正则表达式,例如: .*Transaction.* 在显示图形之前,单击Apply filter按钮以刷新内部数据。 Yes
Title 在图表的头部定义图表的标题。空值为默认值:"聚合图"。Synchronize with name按钮用监听器的标签定义标题。并定义图形标题的字体设置 No
Graph size 根据当前JMeter窗口大小的宽度和高度计算图形大小。使用宽度和高度字段定义自定义大小。单位为像素。 No
X Axis settings 定义X轴标签的最大长度(像素)。 No
Y Axis settings 为Y轴定义一个自定义最大值。 No
Legend 定义图表图例的位置和字体设置 Yes

Response Time Graph | 响应时间图

响应时间图绘制了一个折线图,显示了测试期间每个标记的请求响应时间的演变。如果同一时间戳存在多个样本,则显示平均值。

界面

参数说明

Attribute Description Required
Interval (ms) X轴间隔的时间,以毫秒为单位。样本根据这个值分组。在显示图形之前,单击应用间隔按钮来刷新内部数据。 Yes
Sampler label selection 根据结果标签进行筛选。可以使用正则表达式,例如:*Transaction.*。在显示图形之前,单击Apply filter按钮以刷新内部数据。 No
Title 在图表的头部定义图表的标题。空值为默认值:"响应时间图"。Synchronize with name按钮用监听器的标签定义标题。并定义图形标题的字体设置 No
Line settings 定义线的宽度。定义每个值点的类型。选择none将有一条没有标记的线 Yes
Graph size 根据当前JMeter窗口大小的宽度和高度计算图形大小。使用宽度和高度字段定义自定义大小。单位为像素。 No
X Axis settings 定制X轴标签的日期格式。语法是Java SimpleDateFormat API。 No
Y Axis settings 以毫秒为单位定义Y轴的自定义最大值。显示或不显示Y轴标签中的数字分组。 No
Legend 定义图表图例的位置和字体设置 Yes

Summary Report | 汇总报告

界面

摘要报告为测试中的每个不同名称的请求创建一个表行。这类似于聚合报告,只是它使用更少的内存。

吞吐量是从采样器目标的角度计算的(例如,在HTTP采样的情况下,远程服务器)。JMeter会考虑生成请求的总时间。如果其他采样器和计时器在同一个线程中,这将增加总时间,从而降低吞吐量值。所以两个名称不同的相同采样器的吞吐量是两个名称相同的采样器的一半。正确选择取样器标签是很重要的,以便从报告中得到最好的结果。

  • Label - 样品的标签。如果选择Include group name in label?,则将线程组的名称作为前缀添加。这允许在需要时分别对来自不同线程组的相同标签进行排序。
  • # Samples - 相同标签的样品数量
  • Average - 一组结果的平均时间
  • Min - 相同标签的样品时间最短
  • Max - 相同标签的样品时间最长
  • Std. Dev. - 样本运行时间的标准偏差
  • Error % - 请求错误的百分比
  • Throughput - 吞吐量以每秒/分钟/小时的请求数来衡量。选择时间单位使显示的速率至少为1.0。当吞吐量被保存到一个CSV文件时,它被表示为请求/秒,即30.0请求/分钟被保存为0.5。
  • Received KB/sec - 以每秒接收千字节为单位的吞吐量
  • Sent KB/sec - 以每秒发送千字节为单位的吞吐量
  • Avg. Bytes - 样本响应的平均大小(以字节为单位)。

Save Responses to a file | 保存响应到文件

这个测试元素可以放置在测试计划中的任何地方。对于其范围内的每个示例,它将创建一个响应Data文件。它的主要用途是创建功能测试,但当响应太大而无法在”视图结果树侦听器”中显示时,它也很有用。文件名是从指定的前缀加上一个数字创建的(除非禁用了这个前缀,请参阅下面的内容)。文件扩展名根据文档类型创建(如果已知的话)。如果不知道,文件扩展名设置为’unknown’。如果禁用了编号,并且禁用了添加后缀,那么文件前缀将被用作整个文件名。这允许在需要时生成一个固定的文件名。生成的文件名存储在示例响应中,如果需要,可以保存在测试日志输出文件中。

界面

Generate Summary Results | 生成概要结果

界面