我有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文件运行测试,并且没有为每个线程组设置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
答案 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秒。