如何在jmeter中同时运行线程

时间:2018-03-12 06:48:29

标签: testing jmeter performance-testing load-testing

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

2 个答案:

答案 0 :(得分:1)

如果您希望仅在所有30个用户完成“注册”交易时才启动“登录”交易,您需要:

  1. 在“register”和“login”事务控制器之间添加Test Action采样器
  2. 添加Synchronizing Timer作为测试操作采样器的子项,并将Number of Simultaneous Users to Group by设置为30
  3. 这样,测试操作采样器将充当“会合点”,因此所有30个线程将在那里“相遇”,这样您就可以确信所有30个线程在开始登录之前完成了注册。

    示例测试计划:

    JMeter Test Action Synchronizing Timer

答案 1 :(得分:1)

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

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

您可以使用以下结构创建脚本:

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

enter image description here

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

当测试到达HTTP注册登录1'然后在发送此请求之前,它将执行同步计时器并等待所有用户完成注册操作。

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

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

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

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