如何忽略斜坡上升和斜坡下降期间的测试结果

How to ignore the test results during the ramp-up and ramp-down period

我想删除加速和减速期间的测试结果。这将帮助我在持续的工作负载下获得测试结果。此外,它会在斜坡时间内删除异常值。

该解决方案应与 JMeter 脚本 (JMX) 本身集成。从测试结果文件 (jtl,csv,xml) 中删除测试结果会增加一些额外的工作。

Synthesis Report 插件可以在一定程度上提供帮助。但它需要人工干预并且报告能力有限。 Synthesis Report is a mix between Summary Report and Aggregate Report:

我创建了一个带有 JSR223 Post Processor and placed it just after the Test Plan 组件的测试片段,以确保它应用于测试计划中的所有采样器。

将以下参数添加到参数中

${__P(ignore_ramping_time_results,true)}  ${__P(testResultToIgnoreBeforeInMin,5)} ${__P(testResultToIgnoreAfterInMin,65)}
  1. arg[0] - 设置 true 忽略结果,false 包含结果
  2. arg[1] - 以分钟为单位设置加速时间。如果设置为2,前两分钟的测试结果将被忽略
  3. arg[2] - 以分钟为单位设置减速开始时间。如果设置为 10,则 10 分钟后的所有结果将被忽略。

if(args[0].toBoolean()){
    int testResultToIgnoreBeforeInMin=args[1].toInteger()
    int testResultToIgnoreAfterInMin=args[2].toInteger()
    
    long testResultToIgnoreBeforeInMillis=testResultToIgnoreBeforeInMin*60*1000
    long testResultToIgnoreAfterInMillis=testResultToIgnoreAfterInMin*60*1000
    
    long startTimeInMillis=vars.get("TESTSTART.MS").toLong()
    long currentTimeInMillis = new Date().getTime()
    long currentTestDurationInMillis=currentTimeInMillis-startTimeInMillis
    
    log.info("currentTestDurationInMillis ${currentTestDurationInMillis}")
    
    
    if(currentTestDurationInMillis< testResultToIgnoreBeforeInMillis || currentTestDurationInMillis >testResultToIgnoreAfterInMillis){
        prev.setIgnore()
        log.info("Test result is ignored")
    }
}

Pre-Defined Property

TESTSTART.MS - test start time in milliseconds is used in the script to get the test start time.

只需从 .jtl 结果文件中删除 ramp-up 和 ramp-down 阶段,选项在:

  1. Filter Results Tool 提供 --start-offset--end-offset 参数,因此您可以“切断”上升和下降阶段

  2. JMeterPluginsCMD Command Line Tool 你提到综合报告时似乎已经在使用它了:

    JMeterPluginsCMD --generate-csv report.csv --input-jtl /path/to/your/result.jtl --start-offset your-ramp-up-period-in-seconds --end-offset your-ramp-down-period-in-seconds --plugin-type SynthesisReport