【问题标题】:JMeter: using synchronizing timer with If ControllerJMeter:使用与 If Controller 同步的计时器
【发布时间】:2018-03-14 14:30:10
【问题描述】:

我的要求是我希望 10 个用户登录(使用来自 CSV 的登录凭据),同时登录 5 个用户,每个用户遍历不同的路径,具体取决于哪个用户已登录。以下是我的测试计划:

以下是我使用过的同步定时器设置:

我已将我的请求合并到事务控制器中,因为每个主请求都有多个并发子请求另外我想将所有 JS、css、图像文件的请求作为一个父请求。我正在考虑 1 个请求以包含每个事务控制器中的所有请求。:

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

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

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

我真正想要的是首先所有 10 个用户应该同时登录 5 个用户,然后每个用户按照 If Controller(${__groovy(vars.get("username") = = "user1" )}),同时有 10 个请求。

那么,我如何设计我的测试计划以及使用同步计时器来达到预期的结果?

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

【问题讨论】:

    标签: timer jmeter synchronizing


    【解决方案1】:

    您似乎希望同步计时器在 10 个用户进入 if 控制器时专门工作。

    因为Timers 在作用域内的每个 Samplet 之前执行,

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

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

    目前您正在尝试同步流中的所有采样器,并且您不需要等待每个采样器

    【讨论】:

    • 我的第一个控制器是一个事务控制器,在它下面我有一个简单控制器,它又包含所有与登录相关的请求和子请求。然后我有 10 个 if 控制器,每个登录用户一个。所以我应该将计时器移到第一个登录事务控制器或第一个如果控制器下?
    • 把它放在第一个sampler里面
    • 我将计时器移到第一个登录事务控制器下。现在测试完成了,但即使有 2 个同时用户,我的测试也很少失败,响应代码 522 意味着服务器超载。我记录了所有请求,并将对 Css、Js、图像文件等的所有请求作为一个请求的一部分放在一个事务控制器下,并且还启用了“检索所有嵌入式资源”和“并行下载”= 10。我真的怀疑服务器甚至无法同时处理 2 个用户。我将所有记录的请求加上“检索嵌入式资源”放在一起是否正确?
    • 您可以在 Timer 下方添加 Test Action 和代替,对于 522 错误,请打开一个带有具体细节的新问题
    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多