1、利用JMeter做接口测试实战
先根据产品来梳理测试点,一张图解释 ,一言以蔽之 ,我们这次要做的是关于登录 添加产品的相关接口测试 如下图所示
我们关于该产品 需要思考的测试点为
1、登录功能是否正常
2、登录成功后的显示页面
3、关于产品方面的接口测试(增改查删除)
我们需要注意的点为
1、在我们进行 删除的时候 是需要对删除的返回信进行断言
2、在我们进行登录的时候 ,系统会给我们一个动态的sessionID,具体的动态id 可翻看我之前的随笔,会讲到session的请求流程
3、JMeter与postman的不同获取动态ID的方法 JMeter 调用动态id用的是 ${}格式 而postman调用动态id的方式是{{}}的格式
4、在做接口测试的时候,关于逻辑问题一定要清楚 例如 我需要先添加产品 才能获取到 添加过后返回的信息,我根据添加的产品才可以对产品进行修改,当我们修改完成后 应认证所有的修改内容是否真正的修改(断言)
5、注意在调用id的时候用简介的英文进行定义,如出现错误应第一时间排查 是否调用出现问题 ,然后根据 基本原则 post(添加,登录) put(修改)delete(删除)get(获取,查看) 的方式来查看HTTP的请求
6、关于响应数据为中文的解决办法如下
A、先展示没有用后置处理器导致中文乱码的图
B、对该问题进行逐步解析操作 我们需要如下图所示操作
C、创建成功后 如下图所示 输入代码prev.setDataEncoding("UTF-8")
D、放到如图所示的位置(切记层级关系)
E、运行效果展示
2、根据上述信息进行JMeter的整体测试构建
在构建的时候 我们需要创建一个线程组 然后将HTTP的请求头 以及请求默认值和编码设置放到线程组的下一级
HTTP请求头的信息如下图
其中Content-Type 是数据类型 我们以json类型写入
Authorization为 tokenID的请求头
然后来创建响应的 简单控制器 分别为登录、首页、产品管理
我们需要在简单控制器下面来编写HTTP请求 进行接口测试
下面进行测试案例详解 逐步分解并且解析
2.1登录相关接口测试
因为我们在进行登录的时候 默认的操作就是输入用户名和密码 在这里我们用的是自己的手机号 以json的格式写入 然后在运行一下 查看我们的返回的结果
我们可以看到在这时候 会返回一个tokenID 按照上面说过的 方法 我们创建一个json提取器 将动态的token 给获取到
关于获取到动态的token之后 我们需要进行登录接口的断言 ,这里以验证登录状态为例 ,登录状态为boor类型 :只有true 和fales 具体断言方式如下
这样关于登录界面的接口测试我们就已经做完了
2.2用JMeter做首页的接口测试
因为我们清楚 在做首页的接口测试 是查看到数据 所以我们在写请求类型的时候就应该为GET请求 并不用填写任何参数
紧接着我们根据返回的结果
在这里 我们来断言API的个数 具体操作情况如下
2.3用JMeter做产品相关的接口测试
关于产品相关 其实逻辑比前两个复杂起来 因为涉及到最基本的排序为题
即为 顺序为 添加、查看、修改、展示产品详情(搜索情况)、删除产品
2.3.1添加产品
首先 请求类型为post类型 因为我们本质是修改出一个新增加的东西 然后因为我们要编写的产品大多数为中文 ,所以我们需要UTF-8来进行解析中文 具体操作方式如下
其次 我们在进行添加产品的时候,每添加一个产品 都需要验证一个产品ID ,这样我们需要针对动态的产品ID进行定义 具体方式如下
这时候我们就已经做好了 添加产品接口测试的所有准备工作 这里我们以验证产品的动态id来进行演示 具体方式如下
在图中我们可以看到 在期望结果里我们运用了 JMeter的调用全局变量 我们这里用的是${id}来进行获取到动态的id与其匹对 这样我们无论创建多少个新的产品 在验证ID的时候都不会出错
其余的断言都为定值,按照此操作可以一次进行断言(能进行断言的参数 就一定要进行断言 为了确保产品最终的稳定性)
2.3.2查看产品相关的接口测试
在我们添加产品过后 需要对产品的搜索关键字进行匹对
具体思路如下:
我们在客户端当中 以用户的视角来模拟操作 分别为
1、不做输入 直接点击搜索按钮
2、搜索已添加的产品 点击搜索按钮
3、搜索没有的产品名称 点击搜索按钮
如下图所示
因为我们可以知道 在查看产品的时候 是需要获取信息 所以需要用到GET请求
然后我们进行相关的断言
在这里 我们学习到了一个新的知识 ----------(利用响应断言来进行断言)
响应断言 可以理解成为postman的模糊搜索 进行断言 可以从返回的所有结果中 根据关键字进行匹配
这里以我们添加的产品名称为关键字进行搜索
对HTTP请求右键 然后选择添加断言里面的响应断言
按照红色箭头所指的位置来进行填写 即可完成该部分的操作 关于搜索结果为空和关键字搜索的断言以及HTTP请求 同理 我们需要改的就是HTTP请求当中的name=后面的值即可
2.3.3修改产品的接口测试实战
在我们添加产品之后,需要测试更改产品的接口是否正确
这个时候我们就需要先创建HTTP的请求 因为修改的请求类型为PUT类型 如下图所示
这个时候我们可以看到 在修改产品的时候 多了一个id:${id}的代码
这个个人理解为 我们在修改的时候 因为我们肉眼修改的时候需要定位到这个产品 才能点击修改按钮进行修改
但是机器的理解跟我们人的不一样,我们需要定位到这个动态的id 才能根据相应的id 更改id里面的内容 如(姓名,产品类型,版本,负责人,以及产品描述等)
在我们编写好HTTP请求的时候 进行更改后的数据进行断言 (这里以修改产品名称来进行演示)如下图所示
其余HTTP的PUT请求大同小异 需要更改的就是 你的请求信息 以及断言 中的 数据位置和期望结果,这里就不做一一的展示了
2.3.4查看产品详情页的接口实战
在我们修改完成后 我们需要对已经修改的内容进行断言 这样就演变成了我们要对已经修改的产品内部进行更改信息相关的断言
在这里我们在路径后面添加了一个调用变量id 指的是我们这个id可以为任意值 根据你具体输入的值 返回相关的信息
三种断言的不同之处
在这里我们用到了两种不一样的断言方式 ,用两种的效果是一样 这里想解释的是两种断言不一样的 效果
首先JSON断言 是JMeter源生的一个断言工具 只能用作json类型的断言
其次JSON/YAML断言是我们需要在JMeter里面添加插件之后才能作用 除JSON外 的YAML类型断言 功能更多
还有一个是前面写过的响应断言 更多用到的是模糊搜索相关的断言
2.3.5删除产品的接口测试实战
在我们前面所有的步骤都进行完之后,我们需要验证删除产品的接口是否正常
在验证产品接口我们需要从两个维度展开
1、HTTP的DELETE的请求 根据动态的ID进行删除产品 具体操作方式如下
2、来验证产品是否真正的删除,这个时候我们就要用到 get请求 根据返回的值 来确认是否返回了 已经删除的产品参数 ,如果已经删除成功 是不会返回相应的响应数据 反之则为删除成功
所以我们这里面需要来添加一个响应断言 来验证是否真正的删除
具体操作顺序如下
1、验证产品是否删除的HTTP请求
这里面我们需要在name后面添加之前我们已经更改成功的产品名字 根据名字进行搜索 返回的情况为空 在响应断言里输入的值应该为[] 具体操作效果如下
这个时候我们对于产品管理相关的接口测试已经全部做完 后续还会更新地址管理等相关接口测试实战 请关注 谢谢!