Performance testing 如何依次为每个线程运行两个相关采样器,即一次为每个用户运行。?这在jmeter中是可能的吗?

Performance testing 如何依次为每个线程运行两个相关采样器,即一次为每个用户运行。?这在jmeter中是可能的吗?,performance-testing,Performance Testing,我的应用程序的流程如下:我有一个WEB服务,它有两个端点。在一个中获取的值正在下一个中使用。 例如:我必须在第一个请求中获取一些AWB值,然后我必须使用该AWB值来显示。现在,我必须检查多线程的完整事务 我的测试计划结构如下: 测试计划 Http请求默认值 用户定义变量 设置线程组(仅获取一次身份验证令牌) Http头管理器 CSV数据集配置(用于传递用户凭据) Http请求(获取令牌) Json提取器(从响应中提取令牌) BeasShell断言(将令牌传递给下一个线程) 线程组 事务控制器1

我的应用程序的流程如下:我有一个WEB服务,它有两个端点。在一个中获取的值正在下一个中使用。 例如:我必须在第一个请求中获取一些AWB值,然后我必须使用该AWB值来显示。现在,我必须检查多线程的完整事务

我的测试计划结构如下:

测试计划 Http请求默认值 用户定义变量 设置线程组(仅获取一次身份验证令牌) Http头管理器 CSV数据集配置(用于传递用户凭据) Http请求(获取令牌) Json提取器(从响应中提取令牌) BeasShell断言(将令牌传递给下一个线程) 线程组 事务控制器1 Http请求1(获取AWB值) 事务控制器2 Http请求2(处理该AWB值) 列表器

我正在为10个用户运行这个

现在,我希望第一次事务控制器1和事务控制器2应该为thread1(user1)按顺序运行。一旦事务控制器2的执行完成,thread2应该开始执行事务控制器1和事务控制器2,依此类推

但是,目前在运行测试计划后,我得到如下结果:

事务控制器1(用于线程1) 事务控制器2(用于线程1) 事务控制器1(用于线程2) 事务控制器1(用于线程3) 事务控制器2(用于线程2) 事务控制器1(用于线程4) 事务控制器2(用于线程3)等等

但我预计结果如下: 事务控制器1(用于线程/用户1) 事务控制器2(用于线程/用户1)

事务控制器1(用于线程/用户2) 事务控制器2(用于线程/用户2)

事务控制器1(用于线程/用户3) 事务控制器2(用于线程/用户3) 等等


请告诉我有没有办法达到这个效果。

欢迎来到Stackoverflow

线程仅限于一个线程组。不能将同一线程用于另一个线程组。如果您确实需要这样做,那么您将需要像以前那样将数据写入csv

作为替代方案,您可以灵活地连续运行线程组。您需要选中上述复选框。之后,在下一个线程组中读取创建的csv文件以获取身份验证令牌


如上所述,现在需要使用计数器设置为1的循环计数器(维护序列的方法之一)。这样可以确保遵循顺序。“结果”选项卡显示线程完成时的状态。因此,如果线程2在线程1之前完成,那么线程2将首先出现在结果中

你的场景没有意义。每个JMeter线程执行时颠倒(或根据),因此每个JMeter线程(虚拟用户)将首先执行事务控制器1中的采样器,然后执行事务控制器2中的采样器

如果添加更多线程,即10个,线程仍将颠倒执行采样器,但您将获得一些并发性,实际执行顺序将取决于两个因素:

  • 加速期
  • 应用程序响应时间
  • 如果您正在进行一些功能测试,只需将线程数减少到1或将事务控制器置于


    在任何情况下,请注意和用于脚本编写


    如果您只在将JMeter变量转换为JMeter属性时使用脚本,那么最好使用可以在测试计划中的任何地方使用的脚本

    如果您认为令牌是短期的,那么将设置线程组采样器放入第二个采样器的循环counterAuth中,设置中的令牌仅用于一个用户。并在下一个线程组中成功使用。我希望仅为普通线程组中设置的线程/用户维护请求序列。另外,我已经检查了线程组是否连续运行。附加的测试计划截图供参考。