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

如何在JMeter非GUI模式下获取仅含稳态数据的HTML报告?

在JMeter非GUI模式下提取稳态阶段测试数据的方法

当然可以,以下是几种实用方案,帮你在非GUI模式下仅保留稳态阶段的数据生成HTML报告:

方案1:通过命令行工具过滤结果文件后生成报告

先完整运行测试得到全量结果,再用JMeter自带工具提取稳态数据,最后生成报告:

  1. 运行测试生成全量结果文件:
    jmeter -n -t testplan.jmx -l full_results.jtl
    
  2. 使用JMeter的FilterResults工具过滤稳态数据(假设Ramp Up时长为60秒,测试总时长为300秒):
    java -cp JMETER_HOME/lib/ApacheJMeter_core.jar:JMETER_HOME/lib/ApacheJMeter_java.jar org.apache.jmeter.report.postprocessor.FilterResults --input-file full_results.jtl --output-file steady_state_results.jtl --start-offset 60 --end-offset 300
    
    说明:--start-offset是稳态开始时间(单位:秒),--end-offset是稳态结束时间;若没有Ramp Down阶段,直接填测试总时长即可。
  3. 用过滤后的结果生成HTML报告:
    jmeter -g steady_state_results.jtl -o steady_state_report
    

方案2:通过测试计划标记稳态请求,后期过滤

在测试计划中给稳态阶段的请求打标记,再通过脚本过滤出目标结果:

  1. 在线程组下添加JSR223前置处理器,写入以下Groovy代码(自动判断是否进入稳态):
    // 获取线程组Ramp Up时长(转成毫秒)
    def rampUpMs = ctx.getThreadGroup().getRampUp() * 1000
    // 获取测试开始时间
    def testStartMs = ctx.getThreadGroup().getStartTime()
    // 当前时间
    def currentMs = System.currentTimeMillis()
    
    // 标记是否处于稳态
    vars.put("isSteadyState", currentMs - testStartMs >= rampUpMs ? "true" : "false")
    
  2. 在结果收集器(如Simple Data Writer)的Sample Save Configuration中,勾选「Custom Fields」,添加变量isSteadyState,确保结果文件包含该标记。
  3. 运行测试得到带标记的full_results.jtl后,用脚本过滤稳态数据:
    Linux/macOS(用awk):
    awk -F ',' '$NF == "true"' full_results.jtl > steady_state_results.jtl
    
    Windows PowerShell:
    Import-Csv full_results.jtl | Where-Object { $_.isSteadyState -eq "true" } | Export-Csv steady_state_results.jtl -NoTypeInformation
    
  4. 最后用过滤后的文件生成报告,命令同方案1第三步。

方案3:直接通过配置文件指定报告时间范围

修改JMeter配置文件,让生成HTML报告时自动截取稳态阶段的数据:

  1. 打开JMeter安装目录下的bin/user.properties文件,添加以下配置(替换为你的稳态时间范围):
    # 稳态开始时间(单位:秒)
    jmeter.reportgenerator.start_offset=60
    # 稳态结束时间(单位:秒)
    jmeter.reportgenerator.end_offset=300
    
  2. 直接用全量结果文件生成报告,JMeter会自动截取指定时间段的数据:
    jmeter -g full_results.jtl -o steady_state_report
    

注意:所有方案都需要你准确掌握Ramp Up时长、测试总时长(或Ramp Down时长),确保时间范围的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:36:20