2015-03-03 42 views
0

我目前的环境:JMeter的V2.11,远程Oracle 12,JDK 7的JMeter - 停止所有线程的具体时间后当线程已经回路控制器

我有200个用户内登录到Web应用程序录制的脚本1线程组,但我需要保持这种状态持续几个小时,所以我需要保持200个用户的会话持续几个小时,如果没有交互,http会话将会过期,所以我决定使用循环控制器来简单地重新提交同样的HTTP请求每14.5分钟,一旦用户的会话已建立登录。

因为我需要停止脚本运行一段时间后我指定持续时间的线程Group,但我注意到,如果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毫秒来测试我上面的边界。

任何人都可以提供任何见解,我可以如何停止线程运行一段时间后尽管回路控制器设置?也就是说 - 任何人都可以描述一种方法来覆盖循环控制器设置,以便在某个持续时间后停止线程,而不是在循环计数达到时停止线程?

非常感谢!

回答

0

我已经确定是什么导致了我的问题。循环控制器值 - 它需要设置为“永久”,以便它不会覆盖父线程组或单独的停止测试操作(使用子常量定时器)线程组中的“持续时间”设置。

一旦循环控制器设置为“永远”,它就会出现JMeter,然后运行到“持续时间”设置。

谢谢