性能测试工具 Jmeter 如何同时执行多组接口?

狂天 · 2023年05月29日 · 最后由 Mr.Shuo 回复于 2023年08月04日 · 7954 次阅读

我现在要顺序执行两个接口,B 接口使用 A 接口的返回值,所以执行顺序必须是先 A 后 B。
我想对 A 然后 B 进行 10 个并发,意思是开 10 个线程,同时先执行 A,再执行 B
我的配置如下:
1.先配置了 10 个线程

2.固定了先 A 后 B 的执行顺序

3.可大家看我实际运行后的线程开启时间


不光不是同一秒执行的,还是前后花费了 10 多秒,这是怎么回事呢?
请大佬帮助。

最佳回复

首先,这个问题很简单,锊一下思路

  1. 分开两个线程,先调用线程组 A,去请求 A 接口,拿到数据
  2. A 线程执行完之后,再执行 B 线程,B 线程是并发线程

误区:

  1. 并发,是需要使用同步定时器的,否则谈何并发?
  2. 查看接口是否是并发,需要用监听器 - 用表格查看结果
  3. 如何跨线程组传数据,建议,可以使用 BeanShell 后置处理程序,把数据保存到 csv 文件夹,然后下一个接口再从这个 csv 文件读取 这里可能操作比较复杂,楼主如果看不懂的话,建议,先手动执行一次 A 接口,自己拿到数据之后,手动填充给 B 接口

操作步骤:

  1. 线程组 A,请求 A 接口,并获取响应数据供 B 接口使用

  2. 线程组 B,请求 B 接口,设置并发线程数:10 个,并且给接口设置同步定时器,用户组 10,超时:2000

  3. 用表格查看结果,看一下是否满足需求

共收到 12 条回复 时间 点赞

在看图之前我想了解下,你说的
我想对 A 然后 B 进行 10 个并发,意思是开 10 个线程,同时先执行 A,再执行 B。

是什么意思?并发 A?并发 B?并发 A+B?(还能这么玩?)

首先,这个问题很简单,锊一下思路

  1. 分开两个线程,先调用线程组 A,去请求 A 接口,拿到数据
  2. A 线程执行完之后,再执行 B 线程,B 线程是并发线程

误区:

  1. 并发,是需要使用同步定时器的,否则谈何并发?
  2. 查看接口是否是并发,需要用监听器 - 用表格查看结果
  3. 如何跨线程组传数据,建议,可以使用 BeanShell 后置处理程序,把数据保存到 csv 文件夹,然后下一个接口再从这个 csv 文件读取 这里可能操作比较复杂,楼主如果看不懂的话,建议,先手动执行一次 A 接口,自己拿到数据之后,手动填充给 B 接口

操作步骤:

  1. 线程组 A,请求 A 接口,并获取响应数据供 B 接口使用

  2. 线程组 B,请求 B 接口,设置并发线程数:10 个,并且给接口设置同步定时器,用户组 10,超时:2000

  3. 用表格查看结果,看一下是否满足需求

设置 2 个线程组,一个放 A,一个放 B

自己写 sample or 用 beanshell 脚本处理。
A 和 B 之后有无依赖关系, 是强制顺序 还是只要 A 执行过 就可以执行 B。

杀手carry 回复

这其中还涉及到,A 接口的数据如何传给 B 接口,你可有好方案?跨线程传数据

Smobee 回复

感谢巨佬

额 把那个什么临界部分控制器 disable 下试试呢 看起来有点像多并发下的锁 我记得默认情况下脚本本身就是按顺序执行的 只是因为多并发的原因 结果树显示会有错乱

Smobee 回复

2L 回复你了

我理解的并发,突然崩塌了

10楼 已删除

用 beamshell 后置处理器和用户参数就能进行跨线程传参了

Smobee 回复

如果线程是递增的,0-5 分钟 20 个线程,5-10 分钟 30 个线程,像这种递增的线程数如何设置同步定时器

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册