运行 jmeter 使用 mvn 测试时在控制台中显示汇总报告信息

Show aggregate report info in console when running jmeter tests with mvn

我有一个mvn项目,里面也集成了jmeter,用来测试性能。到目前为止,我的测试计划中有 6 个线程组,它们都包含 HTTP 请求。我 运行 使用来自 jmeter-maven 插件的命令 "mvn clean verify" 进行测试。在结果中我发现多行是这样的:

summary + 1 in 00:00:02 = 0.6/s Avg: 208 Min: 208 Max: 208 Err: 0 (0.00%) Active: 6 Started: 12 Finished: 6

我需要控制台中的一些额外信息,尤其是每个线程组或 运行 的 HTTP 请求的名称和平均时间。例如,类似于来自 GUI 模式的聚合报告:

标签样本平均中值 90% 线 95% 线 99% 线最小值最大值 ...

苹果代码请求 6 196 119 279 284 284 108 284
PearCodeRequest 3 382 485 490 490 490 173 490

我想要这个是因为我正在使用 sh 脚本来 运行 测试,我想在打开 html 报告之前触发一些性能问题。

有什么办法可以得到吗? Maby 一些用户属性(即使我搜索了一个但没有结果)或一些解决方法?

最简单的解决方案是使用 BlazeMeter Uploader, this way you will be able to observe real time test metrics in a fancy web UI. You can install BlazeMeter Uploader plugin using JMeter Plugins Manager

这样的插件


替代解决方案是使用 JMeterPluginsCMD Command Line Tool

  1. 将下一行添加到您的 pom.xml 文件

    <configuration>
        <jmeterExtensions>
            <artifact>kg.apc:jmeter-plugins-cmd:2.2</artifact>
            <artifact>kg.apc:jmeter-plugins-synthesis:2.2</artifact>
            <artifact>kg.apc:jmeter-plugins-dummy:0.2</artifact>
            <artifact>kg.apc:cmdrunner:2.0</artifact>
            <artifact>kg.apc:jmeter-plugins-filterresults:2.2</artifact>
            <artifact>kg.apc:jmeter-plugins-cmn-jmeter:0.6</artifact>
        </jmeterExtensions>
        <!-- The plugin uses some broken dependencies
             An alternative is to set this to true and use excludedArtifacts, see below
        -->
        <downloadExtensionDependencies>false</downloadExtensionDependencies>
        <propertiesJMeter>
            <jmeter.save.saveservice.autoflush>true</jmeter.save.saveservice.autoflush>
        </propertiesJMeter>
    </configuration>
    
  2. 将另一个 Thread Group 添加到您的测试计划中,其中包含 1 个用户和无限次循环

  3. JSR223 Sampler 添加到您的线程组
  4. 将以下代码放入"Script"区域:

    SampleResult.setIgnore()
    def resultFile = new File('../results').list().first()
    "java -jar ../lib/ext/cmdrunner-2.0.jar --tool Reporter --generate-csv temp.csv  --input-jtl ../results/$resultFile --plugin-type AggregateReport".execute().waitFor()
    println("cat temp.csv".execute().text)
    new File("temp.csv").delete()
    
  5. 使用 Constant Timer
  6. 控制您希望查看此信息的频率
  7. 你应该可以在控制台看到结果window: