【问题标题】:Write only JMeter Summary Report Avg, Min and Max to file?只将 JMeter 汇总报告平均、最小值和最大值写入文件?
【发布时间】:2014-03-04 14:35:45
【问题描述】:

我有一个在 GUI 中运行良好的测试套件,我想从命令行运行它。没问题,我知道该怎么做。

在套件中,我有一个汇总报告对象,它在表格中显示最小、最大和平均响应时间。摘要报告上有一个“配置”按钮,允许我选择可以写入文件以捕获结果的字段。但是,我想要的只是最小值、最大值和平均值,这些似乎不是我可以记录的字段。

谁能建议我可以访问这些值的方法,也许是从 Beanshell 或其他东西?

我的套件将有许多线程组,我想为每个线程组创建一个独特的摘要报告文件,以便我可以在 Jenkins 中驱动一些情节。

提前感谢您的帮助。

布拉德

【问题讨论】:

  • 你试图做的事情是不可能的。摘要报告基本上计算了这些最小值、最大值和平均值并将它们显示在 jmeter gui 中,它需要一个包含所有日志的 .csv 文件。您可以做的是在每个线程组上放置一些简单的数据写入器。让那些在非 gui 模式下运行期间写入日志。之后,您可以使用摘要报告打开这些日志,您可以将其用于每个线程组的不同报告
  • 谢谢,Johan,放弃计算结果并重做工作似乎很可惜,但没关系,因为编写包装脚本在命令行调用 JMeter 然后解析日志并不太麻烦.感谢您的回复。布拉德

标签: jmeter


【解决方案1】:

简单的 Beanshell 脚本应该是最好的解决方案。我建议使用 Beanshell 后处理器将每个请求的时间记录到一个根据线程组名称命名的文件中。

为线程组中的每个采样器添加 Beanshell 后处理器,代码如下:

long time = prev.getTime(); //get Sampler Execution Time
String samplerName = prev.getSampleLabel(); //get Sampler Name
String threadGroupName = ctx.getThreadGroup().getName(); // get Thread Group Name
FileOutputStream out = new FileOutputStream(threadGroupName + ".csv", true); // Create output file called ${Thread Group}.csv

//append information to the file
StringBuilder sb = new StringBuilder();
sb.append(samplerName);
sb.append(",");
sb.append(time);
sb.append(System.getProperty("line.separator"));

out.write(sb.toString().getBytes("UTF-8"));
out.flush();
out.close();

同样,您可以获取和存储您需要的任何东西。最小、最大和平均时间应在测试后计算。我猜 Jenkins 足够聪明,可以绘制此图,但也可能需要采样器时间戳。

参考资料:

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2014-11-20
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2013-10-12
    相关资源
    最近更新 更多