我目前正在使用JMeter来模拟每40秒发送一次请求的5个用户。我创建了100个不同的请求,但是每40秒后,每个用户都会发出100个请求。我想以这样的方式制作它:每40秒后,每个用户只发出1个请求,该请求必须与之前的请求不同。我想知道使用什么样的控制器(或其他任何东西)来实现这种情况。
由于
答案 0 :(得分:13)
尝试使用Random Controller。
实施场景的最简单方法:
Thread Group Number of Threads = 5 Loop Count = N . . . Random Controller HTTP Request 001 HTTP Request 002 HTTP Request 003 . . . . . . HTTP Request 100 Test Action Target = Current Thread Action = Pause Duration = 40000 . . .
这将迭代5个线程N次
随机控制器将随机接收来自“请求池”的每一步http请求 - 所有采样器作为子控件添加到随机控制器。
测试操作将暂停线程40秒。
<强>更新强>
以上计划的工作说明:
Thread Group Number of Threads = 5 Ramp-Up Period = 0 Loop Count = 10 Constant Timer Thread Delay (in ms) = 40000
您可以从此处下载所述方案的工作示例:rc-plan.jmx 这个按你想要的方式运行(至少对我而言,Jmeter 2.5.1):它在每个步骤(这里 - 10个循环)为EACH用户(这里是5个用户)从请求池中随机选择一个请求(例如 - 10个请求) )并暂停每个线程40秒(Constant Timer)。
您还可以查看此邮件存档:Is their a way to randomize URL selection?
类似于你的情况似乎被描述为here。
......根据官方文档“多个控制器之间的交互可能会产生复杂的行为。对于随机控制器尤其如此。”
答案 1 :(得分:6)
您的另一个选择可能是提前创建包含请求参数的CSV文件,并使用CSV Data Set Config参数化单个http请求。
这显然取决于您的http请求有多么不同,但如果它符合您的要求,则在您的测试计划中维持1个http请求有100个可能的奖励。
其他细节与@Alies Belik布局相同 - 一个线程组配置为所需数量的线程和循环,最后一个常量计时器暂停40秒。