【发布时间】:2015-05-04 02:36:10
【问题描述】:
我目前的环境:JMeter v2.11,远程Oracle 12,JDK 7
我为 200 个用户在 1 个线程组中登录 Web 应用程序录制了脚本,但我需要保持这个过程几个小时,所以我需要让 200 个用户的会话保持几个小时,如果没有交互,http 会话将过期,因此我决定使用循环控制器,在用户通过登录建立会话后,每 14.5 分钟重新提交一次相同的 http 请求。
因为我需要在一定的持续时间后停止脚本运行,所以我在线程组上指定了持续时间,但我注意到如果 http 请求发生在脚本中的循环控制器之前,当达到持续时间值时,脚本但是,停止了 - 如果在达到“持续时间”时正在执行的 http 请求在循环控制器中 - 循环控制器会覆盖这些持续时间设置,并且脚本会一直运行,直到循环数完成。
我发现了以下帖子https://sqa.stackexchange.com/questions/8378/how-to-run-jmeter-test-plan-for-specified-amount-of-time 和 https://sqa.stackexchange.com/questions/1660/how-to-stop-thread-in-jmeter 并按照说明创建第二个单独的线程组,放置一个带有常量计时器子项的测试操作,这将停止所有线程。
再次(如通过线程组属性值指定“持续时间”时)如果正在执行的 http 请求不在循环控制器中,则停止测试操作在停止另一个线程组中的脚本时起作用 - 如果它们是,停止测试操作不起作用 - 即循环控制器覆盖停止测试操作的恒定计时器持续时间值并运行直到循环计数完成。
我的作品如下:Thread Group 1 : No. of Threads-->200, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-HTTP Request Defaults
-Recording Controller
--HTTP Request (GET) - Login Page Launched
--HTTP Request (POST) - Login Details submitted
--HTTP Request (POST) - Home Page displayed
---Loop Controller : Loop Count --> 2
----HTTP Request (POST) - Relaunch Home page
-----Constant Timer : Thread Delay --> 870000 ms
----HTTP Request (POST) - Select 'Yes' to View Home Page Again
Thread Group 2 : No. of Threads-->1, Ramp Up-->1, Loop Count-->Forever, Duration-->900 seconds
-Test Action: Stop, All Threads
--Constant Timer --> 900000 ms
注意:我使用 15 分钟/900 秒/900000 毫秒来测试我上面的边界。
任何人都可以提供任何关于我如何在一定时间后停止线程运行的见解,尽管有循环控制器设置?也就是说 - 任何人都可以描述一种方法来覆盖循环控制器设置以在特定持续时间后停止线程,而不是在达到循环计数后停止?
非常感谢!
【问题讨论】: