1 接口测试的简介和分类
接口测试是测试系统组件之间的一种测试。 分类: 测试外部接口:测试被测系统和外部系统之间的接口。一般只需要测试正向用例即可。 测试内部接口: (1)内部接口只提供给系统使用。一般只需要测试正向用例即可。 (2)内部接口提供给外部系统使用。测试必须非常全面。
2 接口测试的流程以及用例的设计
1 拿到接口API文档(通过抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码。 2 编写接口用例以及评审。 思路。正向用例,输入正常参数,接口能够成功返回数据。 反向用例有鉴权反向用例、参数反向用例、错误码覆盖和其他错误场景。 鉴权反向用例宝库鉴权码为空,鉴权码错误和鉴权码过期等等。 参数反向用例包括参数为空,参数类型异常,长度异常。 错误码覆盖根据业务而定。 其他错误场景包括接口黑名单,接口调用次数限制和分页场景。 3 使用接口测试用例工具Postman执行接口测试。 4 Postman+Newman+Jenkins实现持续集成,并且输出参数报告和发送邮件。
3 mall_cms_v2接口
测试的接口如下:
https://documenter.getpostman.com/view/12387168/TzzDKb12#7f0beb33-e365-420b-bbcf-67df9c87749e
name,password,token。
4 Postman界面介绍
Home主页 workpaces工作空间 collections集合,项目集合。 APIs api文档。 Environments 环境变量,全局变量。 Mock Servers 虚拟服务器。 Monitors 监听器。 Hoistory 历史记录。
5 Postman执行接口测试
5.1 请求页面模块
Parsam:get请求传参 authorization:鉴权 headers:请求头 Body:post请求传参,传参方式如下表:
方式 | 描述 |
---|
form-data | 可用键值对和文件传参数 | x-www-from-urlencoded | 只能以键值对方式传参数 | raw | json,text,xml,html,javascript | binary | 把文件以二进制的方式传参 |
具体位置如下图:
pre-request-script:请求之间的脚本 tests:请求之后的断言 cookies:用于管理Cookie信息
Postman 请求页面模块如下图:
5.2 响应页面模块
Body:接口返回的数据,传参的形式如下表:
方式 | 描述 |
---|
Pretty | 以json,html,xml等不同的格式查看返回的数据 | Raw | 以文本的方式查看返回的数据 | PreView | 以网页的方式查看返回的数据 |
Cookies:响应的Cookies信息。 Headers:响应头。 Test Results:断言的结果。
200 为状态码 OK 为状态信息 12.64s为响应时间 347.84kb为响应的字节数
响应页面模块如下图: get请求和post请求的区别: 1 get请求是获取数据,post请求是提交数据。 2 本质区别是传参的方式不一样。 get请求在地址栏后面以? 的方式传参,多个参数之间用& 分隔。post请求是在body以表单的方式传参。
post请求例子,请求模块如下图: 响应模块如下图:
6 Postman的环境变量和全局变量
6.1 环境变量
第一,添加多个环境变量,如下图:
第二,在环境变量中设置变量以及变量值,变量为url,变量值为api.weixin.qq.com ,如下图:
第三,在Collections切换环境变量,如下图:
6.2 环境变量和全局变量的区别
环境变量:环境变量就是全局变量 全局变量:全局变量是能够在任何接口里面访问的变量 获取环境变量和全局变量的值通过:{{变量名}}
7 接口关联
7.1 使用json提取器实现接口关联
以152.136.185.210:4000/login 为例子
请求之后的断言 第一步,查看响应之后的结果,如下代码:
console.log(responseBody);
第二步,将获取的access_token的值的格式转换为对象的数据,结果存储在result变量中,如下代码:
var result = JSON.parse(responseBody)
第三步,将access_token设置为全局变量,如下代码:
pm.globals.set("token", "result.token");
综上,在请求模块中的Tests子模块中输入以下代码:
console.log(responseBody);
var result = JSON.parse(responseBody)
pm.globals.set("token", "result.token");
运行结果如下图: 查看全局变量是否添加了token,如下图: 上述两张图片的token一致,则证明成功添加了token全局变量! 即其他接口都是直接使用token,使用格式{{token}} ,实现了与接口相关联。
7.2 使用正则表达式提取器实现接口关联
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result[1])
pm.globals.set("access_token", result[1]);
分析上述代码: responseBady返回结果,math方法将结果与token匹配,从而获token,再将token设置为全局变量。 在Console框运行结果如下图: 在全局变量页面中也可以查看token值,如下图:
8 Postman内置动态参数以及自动有的动态参数
8.1 内置动态参数
postman内置动态参数写在请求模块的Body子模块中的row点上,以json形式传入,内置动态参数如下:
{{$timestamp}} 生成当前时间的时间戳
{{$randomInt}} 生成0-1000之间的随机数
{{$guid}} 生成随机GUID字符串
8.2 自定义动态参数
自定义动态参数一般写在请求页面的Pre-request Script中,如下代码:
var times = Date.now()
pm.globals.set("times", times);
使用times全局变量变量格式如下:
{{times}}
注: (1)业务闭环的实现。遵从创建、修改、查询和修改的顺序。 (2)上传文件,如下图所示:
9 Postman断言
9.1 常用的6种断言
断言 | 描述 |
---|
Status code: Code is 200 | 判断状态码是否为200 | Response boby: Contains string | 判断响应内容是否包含string字符串 | Response boby: JSON value check | 判断响应内容的json是否为对应的值 | Response boby: Is equal to string | 判断响应内容是否等于string字符串 | Response headers: Content-Type header check | 判断响应头是否包含Content-Type header | Response time is less than 200ms | 判断响应时间是否少于200ms |
9.2 动态参数的断言方式
一般情况下,我们都会把动态参数设置成全局变量,即在断言中需要调用全局变量,方法如下: 其一,使用Postman中自带的获取全局变量的方法,如下:
pm.globals.get("variable_key");
其二,使用列表取值的方式,如下:
globals["variable_key"]
其三,使用对象引用的方式,如下:
globals.variable_key
9.3 全局断言
在项目选择Edit,如下图: 在Tests模块下设置全局断言,即每一个接口都会进行该全局断言。一般地,我们将状态码断言设置为全局断言,如下图:
10 Postman批量运行测试用例
添加进runner中
若测试用例中有上传文件,则需要在设置中进行调整,首先找到设置界面,如下图: 选择settings。 然后,允许Postman读取外部文件,如下图: 最后,将需要上传的文件放在D:\Users\DELL\Postaman\files 目录中。
|