JMeter:使用If Controller

时间:2018-03-14 14:30:10

标签: timer jmeter synchronizing

我的要求是我希望10个用户登录(使用CSV登录凭据)同时登录5个用户,每个用户根据登录的用户遍历不同的路径。以下是我的测试计划: Test Plan

下面是我使用的同步计时器设置: synchronizing Timer settings

我已在事务控制器中处理了我的请求,因为每个主要请求都有多个并发子请求。我想将所有JS,css,图像文件的请求作为一个父请求。我正在考虑在每个交易控制器中包含所有请求的1个请求: Requests clubbed within transaction controller

根据我的测试计划,如果我的理解是正确的,那么第一个用户将登录并且请求继续到#34;如果控制器" User1。这里的请求将等待5个请求按照同步定时器中的设置排队,并且所有5个请求将一次发送到服务器。然后第二个用户将登录并处理第二个用户的请求,依此类推。

如果未使用同步计时器,则上述测试计划会成功执行。一旦我使用同步计时器,我的测试计划执行将无限期地继续。

根据我对同步计时器的理解,处理应该继续,因为我使用了200000毫秒的超时值。我无法理解为什么使用同步计时器会导致测试计划挂起。

我真正想要的是首先所有10个用户应该登录5个同时登录,然后每个用户按照If Controller中指定的条件继续他们各自的请求($ {__ groovy("用户名& #34;)==" user1")}),同时有10个请求。

那么,我如何设计我的测试计划以及使用同步计时器来实现所需的结果呢?

我将非常感谢经验丰富的JMeter专家的投入。谢谢!

1 个答案:

答案 0 :(得分:1)

当10个用户进入if控制器时,您似乎希望同步计时器正常工作。

因为Timers在范围内的每个Samplet之前执行,

  

计时器在每个采样器之前处理它们的范围;

在您的情况下,您只需要在控制器内的请求1下移动计时器。

目前您正在尝试同步流中的所有采样器,而您无需等待每个采样器