如何使用命令提示符将JMeter聚合报告结果保存到CSV文件中?

24

我一直在使用JMeter GUI模式来编写所有需要进行负载测试的测试用例,但是为了实际测试,我需要以非GUI模式执行测试。 请问如何使用命令提示符将聚合报告的结果保存到CSV文件中。

提前致谢。

5个回答

15

作为替代方法:您可以直接通过聚合报告侦听器执行此操作。

1. 为结果文件设置文件名/模板:

resultsFile = ${__property(user.dir)}${__BeanShell(File.separator,)}result_${__time(yyyyMMdd-HHmmss)}.csv

2. 如下所示配置聚合报告监听器:

enter image description here

在此情况下生成的CSV文件将与通过GUI /“保存表格数据”生成的文件不同。

如果这种方式不可行,最好使用先前答案中的JMeterPluginsCMD方法:

java -jar JMeterPluginsCMD.jar --generate-csv aggregateResults.csv --input-jtl testResults.jtl --plugin-type AggregateReport

9
你的第一个回答(直到“If it is not acceptable…”)毫无意义 - 它只是写测试结果(例如来自_View Results Tree ),与_Aggregate Report_本身没有任何关系。我会翻译为:您的第一个回答(直到“如果这不可接受…”)没有任何意义 - 它只是显示测试结果(例如来自_View Results Tree ),与_Aggregate Report本身没有任何关系。 - Konrad Kokosa
1
我使用了这个命令行工具,但只得到了以下列。缺少95%和99%的百分位数。sampler_label,aggregate_report_count,average,aggregate_report_median,aggregate_report_90%_line,aggregate_report_min,aggregate_report_max,aggregate_report_error%,aggregate_report_rate,aggregate_report_bandwidth,aggregate_report_stddev - Makmeksum
1
@Makmeksam,你在生成的CSV文件中看到这些列是因为它们在插件源代码中预定义了。看起来没有配置方法可以将百分位数或其他样本参数添加到CSV文件中(与聚合报告监听器相反,您可以通过设置附加属性在user.properties文件中添加第2个和第3个百分位数:http://jmeter.apache.org/usermanual/component_reference.html#Aggregate_Report)。 - Aliaksandr Belik
3
@Makmeksam,您可以在此分支中找到JMPlugins 1.4.0的更新源代码,它将在生成的AggregateReport csv中添加95th和99th百分位数:https://github.com/aliesbelik/jmeter-plugins/tree/aggregate-upd。或者只查看差异:https://github.com/aliesbelik/jmeter-plugins/commit/a257c85f2ec0f9a9ae3b1e98af0df1fcfbd9f575#diff-6f6c237d32fcfb66d51138fd9020a3bb。您需要重新构建项目并替换JMETER_HOME/lib/ext/目录中的JMeterPlugins-Standard.jar文件。 - Aliaksandr Belik

9

6

1. 保存结果文件

在“查看结果树”或“查看表格结果”(以 CSV 或 XML 格式)中指定要保存的结果文件。例如:out/test-results.csv,或使用 CLI 参数 -JTEST_RESULTS_FILE=out/test-results.csv

2. 转换为报告

将结果文件转换为汇总报告:

$ java -jar CMDRunner.jar  --tool Reporter --generate-csv aggregateResults.csv --input-jtl out/test-results.csv --plugin-type AggregateReport

如果您使用brew,则CMDRunner位于以下位置:
/usr/local/Cellar/jmeter/2.13/libexec/lib/ext/CMDRunner.jar

顺便提一下,我不得不安装一个额外的插件,因为我在这里读到了https://groups.google.com/forum/#!topic/jmeter-plugins/Da4YN_nLvJA。顺便说一句,在jmeter bin文件夹中有一个cmd插件运行器,可以避免直接调用jar文件。 - guillem

1
  1. 下载JMeterPluginsCMD

  2. 将jmeter-plugins-manager-0.13.jar移动到您的JMeter的/bin/libs/ext目录中。

  3. 打开JMeter,转到选项 > 插件管理器。
  4. 安装以下插件:
    • 综合报告
    • 命令行图形绘制工具
  5. 从您的JMeter的/bin文件夹运行此命令: ./JMeterPluginsCMD.sh --tool Reporter --generate-csv test.csv --input-jtl input.jtl --plugin-type AggregateReport

要使用jmeter gui的“插件管理器”,下載插件將自動下載依賴插件。 - Luke Cheung

0

通过以上答案的帮助,我编写了一个简单的bash脚本来自动化生成聚合结果.csv文件使用.jtl文件的工作

您可以将此脚本放在.jtl文件所在的文件夹中,然后只需在该目录中运行脚本。 然后,它将把所有聚合报告(.csv文件)放在同一目录中的aggregate_report目录中。

#! /usr/bin/env bash

echo "Generating reports..."
command_runner="/opt/apache-jmeter-2.13/lib/ext/CMDRunner.jar"
output="aggregate_report"
count=0

mkdir $output

for sample_file in *.jtl
do
        ((count++))
        filename="${sample_file%.*}"
        echo "Converting $filename"
        java -jar $command_runner --tool Reporter --generate-csv ${output}/${filename}.csv --input-jtl ${filename}.jtl --plugin-type AggregateReport
done

echo "$count files were converted."

注意:根据您的 CMDRunner.jar 位置相应更改 command_runner 变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接