JMeter - 在每次迭代中触发不同的请求

时间:2011-12-01 01:54:26

标签: jmeter load-testing

我目前正在使用JMeter来模拟每40秒发送一次请求的5个用户。我创建了100个不同的请求,但是每40秒后,每个用户都会发出100个请求。我想以这样的方式制作它:每40秒后,每个用户只发出1个请求,该请求必须与之前的请求不同。我想知道使用什么样的控制器(或其他任何东西)来实现这种情况。

由于

2 个答案:

答案 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秒。

<强>更新
以上计划的工作说明:

Random Controller example

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秒。