JMeter:如何在.bat文件中运行测试一段时间,忽略TG S​​tart&结束时间

时间:2016-05-11 21:12:04

标签: multithreading batch-file jmeter

我有3个帖子的测试:

  1. 启动
  2. 实际测试
  3. 清理
  4. 我不想为每个线程组指定调度程序开始/结束时间。相反,我希望任何人在必要时从.bat文件开始测试并让它在.bat文件中指定的持续时间运行。

    我的.bat文件配置如下,我希望测试运行30分钟(1800秒):

    @echo on
    call ..\..\binaries\apache-jmeter-2.13\bin\jmeter -Jduration=1800 -Jhostname=localhost -Jport=18100 -n -t "API Performance.jmx" -l performanceAPITestResults.log
    

    如果我按照概述从.bat文件运行测试,并且没有为每个线程组设置Scheduler,那么测试只运行一次并退出。 (约90秒)

    在测试中,如果我在每个TG中启用调度程序并指定过去的日期以及每个日期的持续时间,则启动.bat文件会导致测试仅运行一次而忽略持续时间。如果我在将来指定日期,则测试将等待未来的开始时间。

    有人有任何建议吗?

    其他详细信息

    在.jmx测试中,我似乎必须在每个TG中指定以下调度程序:

    启动TG

    Start Date = today @ 11:00:00 
    Stop Date = today @ 11:00:10 
    Duration (seconds) = 10 
    Startup Delay = null
    

    测试TG

    Start Date = today @ 11:00:10 
    Stop Date = today @ 11:30:10 
    Duration (seconds) = 1800 
    Startup Delay = null
    

    拆解TG

    Start Date = today @ 11:30:10 
    Stop Date = today @ 11:30:15 
    Duration (seconds) = 4 
    Startup Delay = null
    

1 个答案:

答案 0 :(得分:2)

如果是时间过去,JMeter会忽略开始时间。您只需参数化持续时间。

这样持续传递3个参数。

$next_statement

在你的考试中

启动TG

jmeter -n -t test.jmx -Jsetup.duration=10 -Jtest.duration=1800 -Jtear.duration=4

测试TG

Start Date = today @ 11:00:00 
Stop Date = today @ 11:00:10 
Duration (seconds) = ${__P(setup.duration)}
Startup Delay = null

拆解TG

Start Date = today @ 11:00:10 
Stop Date = today @ 11:30:10 
Duration (seconds) = ${__P(test.duration)}
Startup Delay = null

有关__P功能的更多信息。

Start Date = today @ 11:30:10 Stop Date = today @ 11:30:15 Duration (seconds) = ${__P(tear.duration)} Startup Delay = null - 当您像这样使用时,如果该属性未传递给测试,则测试将使用默认值。

因此,${__P(property_name,default_value)}将调用该测试。

启动TG

jmeter -n -t test.jmx

测试TG

Start Date = today @ 11:00:00 
Stop Date = today @ 11:00:10 
Duration (seconds) = ${__P(setup.duration,10)}
Startup Delay = null

拆解TG

Start Date = today @ 11:00:10 
Stop Date = today @ 11:30:10 
Duration (seconds) = ${__P(test.duration,1800)}
Startup Delay = null

如果要覆盖默认值,则只需传递这些属性。

例如:Start Date = today @ 11:30:10 Stop Date = today @ 11:30:15 Duration (seconds) = ${__P(tear.duration,4)} Startup Delay = null

将使用默认值运行设置TG 10秒,使用覆盖值测试TG 3600秒,并使用覆盖值撕掉TG 20秒。