Jemeter--关联接口压测

Jemeter–独立不变参接口压测
Jemeter–独立变参接口压测
Jemeter–关联接口压测

案例分析

比如:有个波次复核接口很慢,优化后需要压测。但是波次复核接口数据是由另外两个接口(配单详情、内盒信息)的数据组合而来,而内盒信息又依赖于配单中返回的数据cardCode来查询。那应该如何压测呢?

接口关系:
波次复核接口数据 依赖 配单详情数据 +内盒信息数据 组合
内盒信息数据 依赖 配单详情数据

两种方法

1、如果数据库有足够数据,将关联符合的订单的配单的id查询出来,导出csv,先执行配单详情接口查询并把返回的数据作为变量,再根据变量数据执行内盒信息接口并把返回需要用到的数据作为变量。
最后从变量信息中组合数据调用波次复核接口

2、如果数据库没有什么数据,就需要再添加前置生成数据的接口,比如生成订单接口、组波接口、生成配单接口,然后把配单id保存为变量,再执行配单详情接口查询并把返回的数据作为变量,再根据变量数据执行内盒信息接口并把返回需要用到的数据作为变量。最后从变量信息中组合数据调用波次复核接口

(PS: 如果要保持测试库数据干净,可以把生成订单接口、组波接口、生成配单接口放到setUp线程组,然后把配单id保存为全局变量。然后在业务线程组执行配单详情接口、内盒信息接口、波次复核接口等业务接口,最后在TearDown线程组里执行删除生成的业务的所有数据逻辑,嗯,有点自动化测试的味道)

注意因为有依赖关系注意接口运行的顺序性,保证先执行的接口在前面。

下面选择第一种方案,第二种对业务来说多了很多接口过于麻烦了

CSV方案实现

1、创建公共组件

线程组、头部管理器、数据库筛选过的csv数据文件、结果树等监听器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、创建http1配单详情接口

配置csv文件中的 bill_code 变量去查询配单详情,可以加个http1标志,方便知道这个接口是第一个需要执行的
在这里插入图片描述

3、提取配单详情返回Json数据变量

右击http1添加json提取器(接口交互是json的方式)
在这里插入图片描述
配置需要提取的变量

  • 有多少个变量,这四行的数量是一样的
  • $.是根据你接口的返回json层级来的
    在这里插入图片描述
    我的接口返回是直接{}里面就是数据,所以直接 $.字段
    在这里插入图片描述
    如果返回的形式这样
    在这里插入图片描述
    对应的配置
    在这里插入图片描述

4、添加调试取样器

右击线程组,添加Debug Sampler 取样器,用来检测、获取变量的属性值
在这里插入图片描述
可以先执行这个接口,察看结果树,可以看到自定义的变量值都可以获取到了(可以没有获取到证明接口中哪里设置的有问题)
在这里插入图片描述

5、创建http2内盒信息接口

使用接口http1中的变量${cardCode} 获取内盒信息接口
在这里插入图片描述

6、提取内盒信息接口Json数据变量

添加http2的json提取器,内盒变量设置
在这里插入图片描述
注意: 返回数据套了两层[{}]括号,对应变量 $. . 两个点 属性值
在这里插入图片描述

7、创建http3复核接口

在body体中,使$引用对应的变量充当参数
在这里插入图片描述

8、调整整体接口、组件如下顺序

在这里插入图片描述

9、执行压测

察看结果树

在这里插入图片描述
汇总报告
在这里插入图片描述
聚合报告
在这里插入图片描述
TPS
在这里插入图片描述

10、总结

可以发现,接口http1、http2、http3是并发依次调用的,即在不同线程里是依次调用的,而且csv数据由线程共享的,不同线程不会取同一行的数据。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值