哈喽。大家好,我是思思。通过这一节课的学习,必掌握内容是:
1.实现多接口串联场景用例
2.对多接口场景用例实现业务闭环
3.会使用db验证及脚本验证结果正确性
目录
二.业务场景(wms删除入库单场景化(图形化验证码--登录--新建入库--删除入库--验证db字段))
1.case1--图形化验证码接口(/api/captchaImage)
5.case3--wms系统删除入库单接口(/api/wms/receiptOrder/${id_1})
这篇主要介绍多接口的一个串流程,包括参数传递、响应报文验证和数据库的验证。
JMeter的单接口实战请见JMeter接口测试实战(一)--简单接口请求-CSDN博客
一.JMeter运行顺序
1.测试计划-->线程组-->配置元件-->前置处理器-->定时器-_>取样器-->后置处理器-->断言-->监听器
其中线程组与线程组之间是并行运行,但是勾选独立运行每个线程组时,就会变成串行运行,即一个线程组运行结束后会启动下一个线程组。
二.业务场景(wms删除入库单场景化(图形化验证码--登录--新建入库--删除入库--验证db字段))
业务背景:从登录开始新建一个入库接口并删除入库单,形成一个业务闭环。此场景中要实现对入库单编号删除要实现4个接口的串联,并对数据库入库数据做出校验。
1.case1--图形化验证码接口(/api/captchaImage)
主要功能是生成一个唯一的uuid供登录接口请求报文中的uuid字段调用
知识点-UUID:uuid通用唯一识别码。每次请求都会生成一个新的 UUID,从而保证请求的唯一标识不同。UUID是唯一的,系统可以轻松地使用它们来跟踪和管理这些对象,避免出现冲突和重复。
接口1涉及流程:测试计划---->添加线程(用户 )-线程组---->添加取样器(HTTP请求)---->添加断言(响应断言和JSON断言)---->添加监听器查看结果树
知识点-响应断言和JSON 断言
常见的断言类型包括响应断言和JSON 断言
a.响应断言
- 响应文本断言,判断响应报文里是否包含了对应字段内容。
- 响应码断言,判断响应码状态是否符合预期
b.JSON 断言
JSON断言有判断单个节点断言和判断多个变量的断言。
JSON Path 指的是 JSON 路径表达式。表达式由一系列的属性名和数组索引组成:根节点用$表示;object用.表示;Array用[]表示。
- 判断单个变量断言
- 判断多个变量的断言
JMeter本身提供JSON Assertion断言,但当我们想要对返回的JSON list中的多个字段进行断言的时候,就需要通过Json List Element Assertion插件进行多字段断言。将下面4个插件放入路径\apache-jmeter-5.6.2\lib\ext下。
c.断言结果
运行用例。如果响应值符合断言,则什么都不会发生。否则,在查看结果树中会看到报错信息。
断言正确
断言报错
2. case2--登录接口(/api/login)
从上个接口captchaImage的response中获取uuid信息传入到登录接口request的uuid
- 在上一个接口captchaImage添加后置处理器
#JSON提取器注释
名称:可以随意设置,甚至为空;
注释:可随意设置,可以为空;
Apply to:应用范围。选默认的main sample only就行
Names of created variables:变量名(多个变量名用;隔开),后面使用${Variable names}引用。必传
JSON Path expression:json提取表达式(多个表达式用;隔开),变量值绝对路径。必传
Match No.(0 for Random):提取第几个值(0:随机,默认;-1所有;1第一个值)。非必传
Compute concatenation var(suffix_ALL):如果发现许多结果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为_ALL的var中
Default Values:缺省值,匹配不到值的时候取该值,可写error;多个值用分号分割。非必传
- 变量uuid传入至登录接口的request中
3. case3--wms系统入库接口(/api/wms/receiptOrder/add-or-update)
入库接口的功能是创建一个新的入库单,此接口需要依赖上个接口登录接口生成的token信息
入库接口依赖上个登录接口的response返回的token字段传入到入库接口add-or-update请求头Authorization的字段中
- 设置后置处理器-JSON提取
- 在此接口中设置HTTP信息头处理器
- 入库接口add-or-update请求接口后对request报文参数化
首先将request报文字段OrderNo参数化,可通过两种方式。
i.通过BeanShell预处理程序
选择request中要替换的参数
ii.设置用户定义的变量
4.sql查询语句参数化设置
验证调用新增入库接口,是否有落入wms_receipt_order表中
- JMeter mysql请见JMeter连接Mysql数据库-CSDN博客
- 验证db和报文的一致性
5.case3--wms系统删除入库单接口(/api/wms/receiptOrder/${id_1})
删除入库单接口,为了处理接口测试时候产生的一些垃圾数据
注意点:参数写${id_1},因为默认的第一行是0,代表的是字段属性。1代表第二行数据
将select查询出来的第一个变量值改为id
6.查询删除入库单后del_flag状态值为1
删除后的入库单,会将数据库中的del_flag字段更新为1
------------------------------------------------------------------------------------------------------------------------
后记
欢迎交流软件测试的一切,且本场景实践中,需要的插件、用例、视频。可以contact wechat:sisiceshi