首页 > 解决方案 > 如何依次为每个线程运行两个依赖采样器,即一次为每个用户。?在jmeter中可以吗?

问题描述

测试计划截图 我的应用程序流程是这样的:我有一个 WEB 服务,它有两个端点。在一个中获取的值将在下一个中使用。例如:我必须在第一个请求中获取一些 AWB 值,然后我必须使用该 AWB 值来表现。现在,我必须检查这个完整的事务是否有多个线程。

我的测试计划的结构如下:

测试计划 Http Request 默认用户定义变量 SetUp 线程组(仅获取一次 Auth_token) Http Header Manager CSV 数据集配置(传递用户凭据) Http Request(获取令牌) Json Extractor(从响应中提取令牌) Beasnshell 断言(将令牌传递给下一个线程) 线程组 事务控制器 1 Http Request1(用于获取 AWB 值)事务控制器 2 Http Request2(用于处理该 AWB 值)侦听器

我暂时为 10 个用户运行这个。

现在我希望第一次事务控制器 1 和事务控制器 2 应该为 thread1(user1)按顺序运行。一旦事务控制器 2 的执行完成,只有在线程 2 应该开始执行事务控制器 1 和事务控制器 2 等之后......

但是,目前在运行测试计划之后,我得到了这样的结果:

事务控制器 1(用于 thread1) 事务控制器 2(用于 thread1) 事务控制器 1(用于 thread2) 事务控制器 1(用于 thread3) 事务控制器 2(用于 thread2) 事务控制器 1(用于 thread4) 事务控制器 2(用于 thread3) 所以上...

但我希望结果类似于:事务控制器 1(用于线程/用户 1)事务控制器 2(用于线程/用户 1)

事务控制器 1(用于 thread/user2) 事务控制器 2(用于 thread/user2)

事务控制器 1(用于线程/user3) 事务控制器 2(用于线程/user3)等等...

请让我知道有什么方法可以达到这个结果。

标签: performance-testing

解决方案


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

如果您添加更多线程,即 10 个,线程仍将执行 Samplers Upside down,但您将获得一些并发性,实际执行顺序将取决于 2 个因素:

  1. 加速期
  2. 应用程序响应时间

如果您正在做一些功能测试 - 只需将线程数减少到 1 或将您的事务控制器放在关键部分控制器下


无论如何请注意,从 JMeter 3.1 开始,您应该使用 JSR223 测试元素Groovy 语言编写脚本。

如果您仅使用脚本将 JMeter 变量转换为 JMeter 属性 - 最好使用__setProperty() 函数,该函数可以在测试计划中的任何地方使用。


推荐阅读