You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程从JMeter GUI模式保存元素图像?能否在非GUI模式实现?

当然可以!完全不用每次打开JMeter GUI手动操作,在非GUI模式下就能自动生成这些组件的图像,完美解决你预期RPS频繁变更的痛点。下面分场景给你详细说明:

一、生成Throughput Shaping Timer的预期RPS曲线图像

因为预期RPS是测试计划里的配置(不是运行结果),我们可以通过Groovy脚本在测试启动时自动生成对应的图表并保存:

  1. 在你的测试计划里,给线程组最前面加一个JSR223 Sampler,选择Groovy作为脚本语言,粘贴以下代码:
    import org.jmeterplugins.modules.timer.ThroughputShapingTimer;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    
    // 找到测试计划里的Throughput Shaping Timer实例
    def tst = ctx.getThreadGroup().getTestElementList().find { it instanceof ThroughputShapingTimer }
    
    if (tst != null) {
        // 提取预期RPS的时间节点和对应数值
        def profile = tst.getProfile()
        XYSeries series = new XYSeries("Expected RPS")
        profile.each { step ->
            series.add(step.getEnd(), step.getThroughput())
        }
    
        // 创建折线图
        def dataset = new XYSeriesCollection(series)
        def chart = ChartFactory.createXYLineChart(
            "Expected RPS (From Throughput Shaping Timer)",
            "Time (seconds)",
            "Requests Per Second",
            dataset,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
        )
    
        // 保存为PNG文件,你可以修改路径和尺寸
        ChartUtilities.saveChartAsPNG(new File("expected_rps.png"), chart, 800, 600)
        log.info("✅ Expected RPS chart saved to expected_rps.png")
    } else {
        log.warn("⚠️ Throughput Shaping Timer not found in your test plan")
    }
    
  2. 当你用非GUI模式运行测试时,这个脚本会自动生成预期RPS的图像并保存到指定路径,完全不用手动干预。

二、生成监听器/线程组的实际运行结果图表(比如每秒点击数)

对于实际运行产生的结果(比如你需要对比的“每秒点击数”),可以用JMeter插件的CMDRunner工具在测试完成后批量生成图表:

  1. 先确保你已经安装了JMeter插件(尤其是jpgc-cmd和jpgc-graphs-basic这两个,没有的话用JMeter插件管理器装一下)
  2. 测试结束后,执行以下命令(替换成你的实际路径):
    java -jar /你的JMeter路径/lib/ext/cmdrunner-2.2.jar \
        --tool Reporter \
        --generate-png actual_rps.png \
        --input-jtl /你的结果文件路径/results.jtl \
        --plugin-type HitsPerSecond \
        --width 800 \
        --height 600
    
    • 关键参数解释:
      • --plugin-type:指定图表类型,比如HitsPerSecond对应每秒点击数,ResponseTimeOverTime对应响应时间趋势,你可以根据需要替换
      • --input-jtl:指定测试生成的JTL结果文件路径
      • --generate-png:设置输出图像的文件名和保存路径

三、一键自动化整合

你可以把这些步骤写到Shell或PowerShell脚本里,实现“运行测试+生成两张对比图表”一键完成:
比如Shell脚本示例:

# 第一步:运行非GUI测试
jmeter -n -t your_test_plan.jmx -l results.jtl

# 第二步:生成实际RPS图表
java -jar lib/ext/cmdrunner-2.2.jar --tool Reporter --generate-png actual_rps.png --input-jtl results.jtl --plugin-type HitsPerSecond --width 800 --height 600

echo "🎉 测试完成,预期/实际RPS图表已生成!"

(注意:预期RPS的图表已经在测试运行时由Groovy脚本生成了,所以这里不用额外处理)

这样每次只需要运行这个脚本,就能自动拿到两张对比图,彻底告别重复的GUI操作~

内容的提问来源于stack exchange,提问作者scormaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:32:51