Jmeter - 当线程具有循环控制器时,在特定持续时间后停止所有线程

时间:2015-03-03 12:30:25

标签: loops jmeter duration

我目前的环境: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-timehttps://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毫秒来测试上面的边界。

任何人都可以提供任何有关如何在一定时间内停止线程运行的信息,尽管有环路控制器设置吗?也就是说 - 任何人都可以描述一种方法来覆盖循环控制器设置以在某个持续时间之后停止线程,而不是在达到循环计数后停止吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

我已经确定了导致我问题的原因。循环控制器值 - 需要设置'永远'所以它不会覆盖“持续时间”。父线程组或单独的停止测试操作(带子常量计时器)线程组中的设置。

设置循环控制器后永远'看来JMeter会跑到'持续时间'设置。

由于