14. 生成报告仪表板¶
JMeter 支持仪表板报告生成,以从测试计划中获取图表和统计信息。
本章介绍如何配置和使用生成器。
14.1 概述¶
仪表板生成器是 JMeter 的模块化扩展。它的默认行为是从 CSV 文件中读取和处理样本以生成包含图形视图的 HTML 文件。它可以在负载测试结束时或按需生成报告。
此报告提供以下指标:
- APDEX(应用程序性能指数)表,根据可容忍和满足阈值的可配置值计算每个事务的 APDEX
- 显示成功和失败请求(不考虑事务控制器示例结果)百分比的请求摘要图:
- 一个统计表,在一个表中提供每个事务的所有指标的摘要,包括 3 个可配置的百分位数:
- 一个错误表,提供所有错误的摘要及其在总请求中的比例:
- Sampler 的前 5 个错误表为每个 Sampler(默认情况下不包括事务控制器)提供前 5 个错误:
- 可缩放图表,您可以在其中选中/取消选中每笔交易以显示/隐藏它:
- 随时间变化的响应时间(包括事务控制器示例结果):
- 响应时间百分比随时间变化(仅限成功响应):
- 随着时间的推移活动线程:
- 随时间推移的字节吞吐量(忽略事务控制器示例结果):
- 随时间推移的延迟(包括事务控制器示例结果):
- 随时间变化的连接时间(包括事务控制器示例结果):
- 每秒点击次数(忽略事务控制器示例结果):
- 每秒响应代码(忽略事务控制器示例结果):
- 每秒事务数(包括事务控制器示例结果):
- 响应时间与每秒请求(忽略事务控制器示例结果):
- 延迟与每秒请求(忽略事务控制器示例结果):
- 响应时间概览(不包括事务控制器示例结果):
- 响应时间百分位数(包括事务控制器示例结果):
- 时间与线程(包括事务控制器示例结果):
在分布式模式下,此图显示了一个水平轴,表示 1 个服务器的线程数。这是当前的限制
- 响应时间分布(包括事务控制器示例结果):
14.2 配置仪表板生成¶
仪表板生成使用 JMeter 属性来自定义报告。一些属性用于常规设置,而其他属性用于特定的图形配置或导出器配置。
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 仪表板”
默认日期格式为yyyyMMddHHmmss
当您希望在负载测试之后生成报告并且结果文件包含另一个时区的时间戳时很有用。在这种情况下,日期格式必须包括时区 (zzz)。
示例:dd/MM/yyyy HH:mm:ss zzz
日期格式由 date_format 属性定义。
默认值:未填充,表示将从头开始使用数据范围
日期格式由 date_format 属性定义。
默认值:未填充,这意味着数据范围将一直使用到最后
默认值:1500
使用示例名称或正则表达式。
格式为sample_name:satisfaction|tolerance[;]
值以毫秒为单位。
jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\ samples12:3000|4000;\ scenar01-12:5000|6000
格式:正则表达式。
默认: ””
默认值:温度
默认值:20000
- aggregate_rpt_pct1 :默认为 90
- aggregate_rpt_pct2 :默认为 95
- aggregate_rpt_pct3 :默认为 99
您可以定义生成器配置使用的一些整体属性。这些属性可以自由命名,但您应该使用前缀
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.AbstractGraphConsumer。
有关更多详细信息,请参阅 默认图表部分 。
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 。
格式:正则表达式。默认: ””
14.2.4.2 具体属性¶
特定的导出器属性必须使用前缀
jmeter.reportgenerator.exporter.<exporter_id>.property
参数
14.2.4.3 图形属性¶
图形属性允许导出器覆盖一些图形数据。
他们必须使用前缀:
jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id>
参数
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
此配置允许生成报告,其中:
- 随着时间的推移图的时间粒度等于 1 分钟。
- ADPEX 计算的满意度阈值为 1 秒半。
- ADPEX 计算的容差阈值为 3 秒。
- HTML 文件在目录/tmp/test-report中生成。
- 仅显示名称以“ s0 ”或“ s1 ”开头的系列。
- 前面的过滤器仅适用于系列(相应的行)匹配样本的图表(相应的汇总表)
14.3 生成报告¶
报告生成可以作为来自示例日志文件的独立过程完成,也可以在运行负载测试后自动完成。
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 报告:
每个参数见下表:
参数
如果没有定义输出目录,控制器将使用${JMETER_HOME}/bin/report-output。
然后,您只需单击“生成报告”按钮并等待信息对话框出现
14.4 默认图表¶
此报告引擎提供的所有图表都位于包 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
参数
以下是绘制变量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 :