如何在 jmeter 中并发 运行 个线程

How to run threads concurrently in jmeter

您好,我创建了一个包含 10 个事务控制器的线程组,每个控制器都有多个 HTTP 请求采样器。 现在要根据要求确定瓶颈,每个事务控制必须一个接一个地运行。 例如:30 个线程 - 注册并登录。发送报告和注销是场景。 因此,对于每个操作,我都创建了 1 个事务控制器,其中包含所需的 http 采样器请求。首先我需要 运行 注册 30 个用户。在获得所有 30 个用户的响应后,只有登录事务控制器应该 运行。等等.. 一个接一个。 我尝试创建多个线程组,但我在每个组中获取安全令牌。因此,如果我创建多个线程组,我将无法在另一个线程组中调用一个线程组的变量值。 所以如果有人知道解决方案请帮助我,我是 jmeter 的初学者...

如果您希望仅当所有 30 个用户都完成 "register" 交易时才开始 "login" 交易,您需要:

  1. 在 "register" 和 "login" 事务控制器之间添加 Test Action 采样器
  2. 添加一个 Synchronizing Timer 作为 Test Action 采样器的子项,并将 Number of Simultaneous Users to Group by 设置为 30

这样测试操作采样器将充当 "rendezvous point",因此所有 30 个线程都将 "meet" 在那里,这样您将确信所有 30 个线程在开始登录之前已完成注册。

示例测试计划:

这可以仅使用 JMeter 的 'Synchronizing Timer' 元素来实现。请在下面找到此元素的简要说明:

  • 同步计时器:当您有意要在特定步骤暂停 users/threads 直到达到此元素中提到的用户计数时使用此元素

您可以按照以下结构创建脚本:

  • 注册请求的事务控制器
    • HTTP 注册请求 1
    • HTTP 注册请求 2
  • 登录请求的事务控制器
    • HTTP 注册登录1
      • 同步计时器[根据您的要求将 'Number of Simulated Users to Group by' 设置为 30 和超时 [建议设置的值为“300000”,即 5 分钟]。不要将超时设置为“0”,否则如果任何用户在上一步中失败,您的测试将永远保持 运行 状态]
    • HTTP 注册登录2
    • HTTP 注册登录3

注意:在上面的示例中,您可以看到我已将同步计时器添加为登录事务控制器下的第一个 HTTP 采样器请求的子项。

当测试到达'HTTP Register Login1'时,那么在发送这个请求之前,它会执行同步定时器,等待所有用户完成注册动作。

对于初学者来说,RedLine13 的以下博文对于快速入门 JMeter 非常有用:

https://www.redline13.com/blog/kb/

另外,使用同步定时器肯定会增加响应时间,因为这个定时器会暂停测试,直到所有用户都到达该步骤,然后再执行登录操作。由于所有 30 个用户将同时执行登录操作,因此与一些用户进行注册而其他用户进行登录的情况相比,响应时间会更长。

如果您有任何问题,请告诉我。