14. 生成报告仪表板

JMeter 支持仪表板报告生成,以从测试计划中获取图表和统计信息。
本章介绍如何配置和使用生成器。

14.1 概述

仪表板生成器是 JMeter 的模块化扩展。它的默认行为是从 CSV 文件中读取和处理样本以生成包含图形视图的 HTML 文件。它可以在负载测试结束时或按需生成报告。

此报告提供以下指标:

  • APDEX(应用程序性能指数)表,根据可容忍和满足阈值的可配置值计算每个事务的 APDEX
  • 显示成功和失败请求(不考虑事务控制器示例结果)百分比的请求摘要图:
  • 一个统计表,在一个表中提供每个事务的所有指标的摘要,包括 3 个可配置的百分位数:
  • 一个错误表,提供所有错误的摘要及其在总请求中的比例:
  • Sampler 的前 5 个错误表为每个 Sampler(默认情况下不包括事务控制器)提供前 5 个错误:
  • 可缩放图表,您可以在其中选中/取消选中每笔交易以显示/隐藏它:
    • 随时间变化的响应时间(包括事务控制器示例结果):
    • 响应时间百分比随时间变化(仅限成功响应):
    • 随着时间的推移活动线程:
    • 随时间推移的字节吞吐量(忽略事务控制器示例结果):
    • 随时间推移的延迟(包括事务控制器示例结果):
    • 随时间变化的连接时间(包括事务控制器示例结果):
    • 每秒点击次数(忽略事务控制器示例结果):
    • 每秒响应代码(忽略事务控制器示例结果):
    • 每秒事务数(包括事务控制器示例结果):
    • 响应时间与每秒请求(忽略事务控制器示例结果):
    • 延迟与每秒请求(忽略事务控制器示例结果):
    • 响应时间概览(不包括事务控制器示例结果):
    • 响应时间百分位数(包括事务控制器示例结果):
    • 时间与线程(包括事务控制器示例结果):
      在分布式模式下,此图显示了一个水平轴,表示 1 个服务器的线程数。这是当前的限制
    • 响应时间分布(包括事务控制器示例结果):

14.2 配置仪表板生成

仪表板生成使用 JMeter 属性来自定义报告。一些属性用于常规设置,而其他属性用于特定的图形配置或导出器配置。

所有报告生成器属性都可以在文件reportgenerator.properties中找到。要自定义这些属性,您应该将它们复制到user.properties文件中并进行修改。

14.2.1 要求

14.2.1.1 过滤配置

如果您不想要所有内容,请 确保设置属性jmeter.reportgenerator.exporter.html.series_filter以仅在报告中保留您想要的交易。
在下面的示例中,您必须只修改Search|Order,保留其余部分:
jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

14.2.1.2 保存服务配置

为了使生成器能够运行,JMeter 生成的 CSV 文件必须包含某些必需的数据,这些数据在 JMeter 的最后一个实时版本中默认是正确的
如果您修改了这些设置,请检查您的 JMeter 配置是否遵循这些设置(这些是默认设置):

jmeter.save.saveservice.bytes = true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
jmeter.save.saveservice.connect_time = true
jmeter.save.saveservice.assertion_results_failure_message = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
# jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
                        

14.2.1.3 事务控制器配置

如果您使用Transaction Controller,以确保最准确的结果:

  • 取消选中该框(这是默认配置): 生成父样本
  • 如果事务控制器用作容器来表示对将触发 Ajax 调用的 HTML 页面的请求,并且您只希望在报告中使用事务控制器,则右键单击节点并应用命名策略
    你会得到这个:

14.2.2 一般设置

所有属性必须以
jmeter.reportgenerator.

参数

属性
描述
必需的
报告标题
生成的报告中使用的标题。
默认值:“Apache JMeter 仪表板”
日期格式
来自SimpleDateFormat Java API的 默认日期格式,带有 Locale.ENGLISH。
默认日期格式为yyyyMMddHHmmss
当您希望在负载测试之后生成报告并且结果文件包含另一个时区的时间戳时很有用。在这种情况下,日期格式必须包括时区 (zzz)。
如果jmeter.save.saveservice.timestamp_format不包含年份,则使用 1970 作为年份

示例:dd/MM/yyyy HH:mm:ss zzz
开始日期
用于报告的数据范围的开始日期。
日期格式由 date_format 属性定义。
默认值:未填充,表示将从头开始使用数据范围
结束日期
用于报告的数据范围的结束日期。
日期格式由 date_format 属性定义。
默认值:未填充,这意味着数据范围将一直使用到最后
整体粒度
随时间变化图的粒度。数据汇总为 1 分钟刻度。
粒度必须高于 1 秒 (1000) 否则吞吐量图将不正确
默认值:“60000”(1 分钟)
apdex_satisfied_threshold
设置 APDEX 计算的满意度阈值(以毫秒为单位)。
默认值:500
apdex_tolerated_threshold
设置 APDEX 计算的容差阈值(以毫秒为单位)。
默认值:1500
jmeter.reportgenerator.apdex_per_transaction
为特定样本设置满意度和容忍度阈值。
使用示例名称或正则表达式。
格式为sample_name:satisfaction|tolerance[;]
值以毫秒为单位。
注意样本名称和值之间的冒号,阈值之间的管道和末尾的分号以分隔不同的样本。不要忘记在分号后转义以跨越多行。
例子:
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\
    samples12:3000|4000;\
    scenar01-12:5000|6000
样本过滤器
设置要保留的样本过滤器以生成图形和统计信息。空值禁用过滤。
格式:正则表达式。
默认: ””
临时目录
如果需要文件 I/O 操作,则设置生成过程使用的临时目录。
默认值:温度
统计窗口
设置百分比评估使用的滑动窗口的大小。注意:值越高,精度越高,但需要更多内存。
默认值:20000
通过使用 3 个属性,可以将汇总表和百分比图使用的百分比调整为不同的值:
  • aggregate_rpt_pct1 :默认为 90
  • aggregate_rpt_pct2 :默认为 95
  • aggregate_rpt_pct3 :默认为 99
相对路径是从 JMeter 工作目录构建的(默认值:bin)。

您可以定义生成器配置使用的一些整体属性。这些属性可以自由命名,但您应该使用前缀

jmeter.reportgenerator.
为了避免属性重叠。

例如:

属性定义:
jmeter.reportgenerator.overall_granularity=60000
属性参考:
${jmeter.reportgenerator.overall_granularity}

14.2.3 图表设置

描述图配置的每个属性都必须以

jmeter.reportgenerator.graph.
后跟图形标识符。

14.2.3.1 一般属性

所有图表都支持这些属性:

参数

属性
描述
必需的
班级名称
图的完全限定类名 图
的类必须扩展 org.apache.jmeter.report.processor.graph.Abs​​tractGraphConsumer
有关更多详细信息,请参阅 默认图表部分
是的
exclude_controllers
定义图形是否丢弃控制器样本。默认值:
标题
设置图表的标题。默认: ””

14.2.3.2 具体属性

特定的图形属性必须使用前缀:

jmeter.reportgenerator.graph.<graph_id>.property
属性名称将使用驼峰变换映射,并以属性值作为参数调用类的匹配方法。

例如:

jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150
在图的实例上 引发方法setGranularity(150)的调用。

14.2.4 导出设置

每个描述导出器配置的属性都必须以

jmeter.reportgenerator.exporter
后跟出口商标识符。

14.2.4.1 一般属性

所有导出器都支持这些属性:

参数

属性
描述
必需的
班级名称
导出器的完全限定类名 导出器
的类必须实现 org.apache.jmeter.report.dashboard.DataExporter
是的
filters_only_sample_series
定义series_filter(见下文)是否仅适用于样本系列。默认值:
series_filter
设置系列过滤器。空值禁用过滤。如果不为空,则正则表达式应以(-success|-failure)?$ 结尾
格式:正则表达式。默认: ””
show_controllers_only
定义是否仅显示控制器系列。默认值:

14.2.4.2 具体属性

特定的导出器属性必须使用前缀

jmeter.reportgenerator.exporter.<exporter_id>.property

参数

属性
描述
必需的
输出目录
设置生成的 html 页面的目标目录。默认值:报告输出
模板目录
设置生成 html 页面的模板文件的源目录。默认值:报告模板

14.2.4.3 图形属性

图形属性允许导出器覆盖一些图形数据。
他们必须使用前缀:

jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>

参数

属性
描述
必需的
最小X
设置图形的最小横坐标。
最大X
设置图形的最大横坐标。
最小
设置图形的最小纵坐标。
最大值
设置图形的最大纵坐标。

14.2.4.4 过滤机制

与 在计算前丢弃数据的一般属性部分中的过滤不同 ,这里的过滤是在计算之后执行的,用于简化最终报告。

属性series_filter 允许使用与系列名称(相应的行)匹配的正则表达式过滤图形的哪个系列(汇总表的相应行)。但是,即使系列的名称(相应的行)与过滤器匹配,其他过滤属性的设置也可能导致其丢弃。相反,如果没有匹配,其他属性可以允许保留它。

下表显示了过滤属性设置的工作原理。

有模式匹配时丢弃的案例
filter_only_sample_series 图表/摘要支持控制器区分 当前系列是控制器系列 show_controllers_only 丢弃
错误的 错误的 - 错误的 错误的
真的
- 错误的
真的
真的 错误的 错误的
真的
真的 错误的
真的
真的 错误的 - 错误的
真的
- 错误的
真的
真的 错误的 错误的
真的 真的
真的 错误的 错误的
真的

没有模式匹配时的保留案例
filter_only_sample_series 图表/摘要支持控制器区分 保留
错误的 错误的 错误的
真的
真的 错误的 真的
真的 错误的

不正确的过滤器配置可能导致生成空图/汇总表:
  • 如果您设置属性 show_controllers_only 并且图形配置为排除控制器。
  • 如果属性 series_filter 不匹配任何系列。

14.2.5 示例配置

您可以将以下配置复制到您的 user.properties 文件中以测试报告生成器。

# 配置此属性以更改报告标题
#jmeter.reportgenerator.report_title=Apache JMeter 仪表板

# 如果要更改随时间变化图的粒度,请更改此参数。
# 粒度必须高于 1000(1 秒)否则吞吐量图将不正确
# 见错误 60149
#jmeter.reportgenerator.overall_granularity=60000

 如果要更改响应时间分布的粒度,请更改此参数
# 默认设置为 100 毫秒
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100

# 如果要覆盖 APDEX 满意度阈值,请更改此参数。
jmeter.reportgenerator.apdex_satisfied_threshold=1500

# 如果要覆盖 APDEX 容差阈值,请更改此参数。
jmeter.reportgenerator.apdex_tolerated_threshold=3000

# 设置生成的html页面的目标目录,最好每一代都改变
# 这将覆盖通过 -o 命令行选项设置的值
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report

# 表示过滤了哪些图系列(正则表达式)
# 在下面的例子中,我们过滤搜索和排序样本
# 请注意,模式的结尾应始终包含 (-success|-failure)?$
# Transactions per second 以“-success”或“-failure”为后缀的交易数,具体取决于
# 关于结果
#jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

# 指示系列过滤器是否仅适用于样本系列
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
                    
使参数 output_dir适应 您的环境。

此配置允许生成报告,其中:

  • 随着时间的推移图的时间粒度等于 1 分钟。
  • ADPEX 计算的满意度阈值为 1 秒半。
  • ADPEX 计算的容差阈值为 3 秒。
  • HTML 文件在目录/tmp/test-report中生成。
  • 仅显示名称以“ s0 ”或“ s1 ”开头的系列。
  • 前面的过滤器仅适用于系列(相应的行)匹配样本的图表(相应的汇总表)

14.3 生成报告

报告生成可以作为来自示例日志文件的独立过程完成,也可以在运行负载测试后自动完成。

14.3.1 从现有的示例 CSV 日志文件生成

使用以下命令:

jmeter -g <log file> -o <Path to output folder>

14.3.2 负载测试后生成

使用以下命令:

jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>

14.3.3 使用 GUI 工具菜单生成

您可以使用菜单项Tools → Generate HTML report 生成 HTML 报告

图 14.1。 HTML 报告对话框菜单
图 14.1。HTML 报告对话框菜单

每个参数见下表:

参数

属性
描述
必需的
结果文件(csv 或 jtl)
测试运行的 CSV 输出
是的
user.properties 文件
用于运行负载测试的 user.properties 文件
是的
输出目录
您希望创建报告的目录(必须为空)

如果没有定义输出目录,控制器将使用${JMETER_HOME}/bin/report-output

然后,您只需单击“生成报告”按钮并等待信息对话框出现

如果报告生成时间超过两分钟,请调整属性generate_report_ui.generation_timeout

14.4 默认图表

由于这个早期版本的限制,每个默认图都必须在 JMeter 属性中声明。否则,图表视图将为空。

此报告引擎提供的所有图表都位于包 org.apache.jmeter.report.processor.graph.impl

仪表板生成器提供以下图形类:

图形 描述 支持控制器区分
ActiveThreadsGraphConsumer 此图表示一段时间内的活动线程数。 错误的
BytesThroughputGraphConsumer 此图表示随时间变化的接收和发送数据的吞吐量。 错误的
CodesPerSecondGraphConsumer 此图表示响应代码随时间变化的速率。 错误的
HitsPerSecondGraphConsumer 此图表示随着时间的推移完成请求的速率。 错误的
LatencyOverTimeGraphConsumer 此图表示随时间变化的平均延迟时间。 真的
ConnectTimeOverTimeGraphConsumer 此图表示随时间变化的连接时间。 真的
延迟VSRequestGraphConsumer 此图表示取决于当前请求数量的中值和平均延迟时间。 错误的
ResponseTimeDistributionGraphConsumer 该图表示样本的分布取决于它们经过的时间和名称。 真的
ResponseTimeOverTimeGraphConsumer 此图表示随时间变化的平均响应时间。 真的
ResponseTimePercentilesGraphConsumer 此图表示随着时间的推移经过的时间的百分位数。 真的
ResponseTimePercentilesOverTimeGraphConsumer 此图显示随时间变化的最小/最大和 3 个百分位响应时间。 真的
ResponseTimeVSRequestGraphConsumer 此图表示取决于当前请求数量的中值和平均响应时间。 错误的
TimeVSThreadGraphConsumer 此图表示取决于当前活动线程数的平均响应时间。

*-聚合系列表示平均响应时间,与当前活动线程的数量无关。这些系列由一个点表示,因为当前活动线程的数量被聚合为一个平均值。所以对于这些点:

  • 横坐标是系列样本完成时当前活动线程数的平均值。
  • 纵坐标是该系列样本的平均响应时间,与当前活动线程的数量无关。

真的
TransactionsPerSecondGraphConsumer 此图表示随时间推移按样本名称的事务率。 真的

14.5 随时间生成海关图表

您可以随时间在 CSV 中绘制任何 sample_variable 图表,您可以通过在 user.properties 文件中设置它们的属性来自定义图表。
他们必须使用 id 前缀custom_

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
要指定此图是自定义图:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

参数

属性
描述
必需的
set_X_Axis
设置图形的 X 轴名称。
是的
set_Y_Axis
设置图形的 Y 轴名称。
是的
set_Content_Message
设置当光标在图形的某个点上时显示的消息。
是的
set_Sample_Variable_Name
您要在 csv 中绘制图表的列的名称。
是的

以下是绘制变量ts-hit的自定义图形配置示例:

jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Chunk Hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Number of Hits
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Over Time
jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000
jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=Number of Hits :
                        

14.6 想要改进报告仪表板?

如果您想贡献新的图表或改进当前的图表,您可以阅读此开发者文档
阅读有关贡献的 文档。
Go to top