【问题标题】:JMeter: How to run test from .bat file for a specific duration ignoring TG Start & End TimesJMeter:如何从 .bat 文件运行测试特定持续时间忽略 TG 开始和结束时间
【发布时间】:2016-05-11 21:12:03
【问题描述】:

我有一个包含 3 个线程的测试:

  1. 启动
  2. 实际测试
  3. 清理

我不想为每个线程组指定调度程序开始/结束时间。相反,我希望任何人在必要时从 .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 文件运行测试并且没有为每个线程组设置调度程序,则测试只运行一次并退出。 (大约 90 秒)

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

大家有什么建议吗?

其他详情

在.jmx测试中,我似乎不得不在每个TG中指定如下Scheduler:

启动 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

【问题讨论】:

    标签: multithreading batch-file jmeter


    【解决方案1】:

    如果开始时间已经过去,JMeter 会忽略它。您可以参数化持续时间。

    像这样在持续时间内传递 3 个参数。

    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
    

    拆解 TG

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

    更多关于__P函数的信息。

    ${__P(property_name,default_value)} - 当你这样使用时,如果属性没有传递给测试,测试将使用默认值。

    所以,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
    

    拆解 TG

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

    如果你想覆盖默认值,你只需要传递那些属性。

    例如:jmeter -n -t test.jmx -Jtest.duration=3600 -Jtear.duration=20

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

    【讨论】:

    • 非常感谢!我不知道您可以通过 .bat 文件操作/覆盖 __P 函数。这正是我想要的,您的解释非常清晰易懂。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2016-01-21
    相关资源
    最近更新 更多