一、接口分类
- 外部接口:被测系统与外部系统之间的接口
- 内部接口:被测系统内部各个模块之间的接口
二、接口测试重点
- 检查接口参数的正确性
- 接口功能的正确性
- 输出结果的正确性
- 异常场景的容错处理
- 权限控制
三、接口测试的流程
- 拿到api接口文档(从开发拿或抓包获取),熟悉业务接口、接口地址、鉴权方式、入参、出参、错误码及其他特别的需求。
- 编写接口测试用例以及评审
编写思路:
正例:输入正确的入参、接口返回正常
反例:
鉴权反例:鉴权码为空、错误、过期。。。
参数反例:参数是否必填验证、参数的异常验证、错误码覆盖。。。
其他场景:接口黑名单、接口调用次数限制、分页场景测试(负数页、0、1、5、 10…100) - 使用接口测试工具Postman、Jemeter执行接口测试
- Postman+newman+jenkins+git实现持续集成。(输出报告和电子邮件)
四、Postman接口测试工具
- 两种工具体系:Postman+newman+jenkins+git、Jemeter+Ant+jenkins+git
- Postman工作台

请求接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx74a8627810cfa308&secret=e40a02f9d79a8097df497e6aaf93ab80
请求参数:grant_type=client_credential
appid=wx74a8627810cfa308
secret=e40a02f9d79a8097df497e6aaf93ab80
返回:
{
"access_token": "53_MuXabuJBJ7qFJysWndxaoa6_LGPz2y4rB61LJ3GA-GZlzMF91mTFUFaLN7zaZY84R5q46Dv-u14AIUL7u_cIqlxM8MhIDkNS14d0wXjpTKptflvpiBr6wvD9rmGrTs53ib_G2hpWUUkC9ltbWAQgAGAQUK",
"expires_in": 7200
}
如上图:请求页签:
params:get传递的参数
Authorization:鉴权,常见的鉴权方式为:Bearer Token、Basic Auth。
Headers:请求头
Body:post传参的地方
none:没有参数
form-data:既可以传键值对参数,也可以传文件
x-www-from-urlencoded:只能传键值对参数
raw:json、text、xml、html、JavaScript
binary:把文件以二进制的方式传参数
Pre-request Script:请求前的脚本
Tests:请求后的断言
cookies:用于管理cookies信息
响应页签:
Body:接口返回的数据
pretty:以json、html、xml。。。不同的格式查看返回的数据
Raw:以文本的方式查看返回的数据
PreView:以网页的方式查看返回的数据
ookies:响应cookies信息
Headers:响应头
Test Results:断言的结果
200:状态码
OK 状态信息
273ms 响应的时间
343B 响应的字节数
Save Response:将响应保存起来
接口描述:创建标签接口
请求URL:https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKEN
请求方式:POST
请求Body:{“tag”:{“name”:“广东”}}


Post和Get请求的区别:
1、get请求一般是获取数据,post请求一般是提交数据
2、post请求比get请求更安全
3、传参数的方式不同:get请求在地址栏后面以?的方式传参,多个参数之间用&隔开。post请求在body中以表单形式传参。
五、接口关联
1、使用json提取器实现接口关联
首先使用打印语句,将日志打印出来

之后使用json提取将返回的数据转换成对象格式,并且赋给变量result

之后去构造全局变量


之后用双大括号将全局变量括起来就可以作为下一个请求的变量

第一个接口:
console.log(responseBody);
//使用json提取器提取access_token值
//把返回的字符串格式的数据转换成对象的格式
var result = JSON.parse(responseBody)
console.log(result.access_token)
//把access_token设置为全局变量
pm.globals.set(“access_token”,result.access_token)
第二个接口:
{{access_token}}
2、使用正则表达式提取器实现接口关联
首先使用正则去获取整个token
获取日志

看日志,可以看到是下标为1的,去获取下标为1的

把获取的值当做全局变量

之后再去执行下一个接口
{{access_token}}


//使用正则表达式提取器实现关联接口关联,match匹配
var result = responseBody.match(new RegExp(‘“access_token”:“(.*?)”’));
console.log(result[1])
//设置全局变量
pm.globals.set(“access_token”, result[1]);
六 、postman内置动态参数以及自定义的动态参数
postman内置动态参数
{{KaTeX parse error: Expected 'EOF', got '}' at position 10: timestamp}̲}生成当前时间的时间戳
{{randomInt}}生成0-1000之间的随机数
{{$guid}} 生成速记GUID字符创
自定义动态参数
//手动的获取时间戳
var times = Date.now();
//设置为全局变量
pm.globals.set(“times”,times)


七、接口业务闭环(增删改查)
获取公账号已创建的标签接口
https://api.weixin.qq.com/cgi-bin/tags/get?access_token={{access_token}}

编辑标签接口
可以考虑在创建标签的时候,获取标签的id,之后根据id,去编辑标签
由此,将标签的id设置为全局变量
//获取创建的标签ID
var tag_id = responseBody.match(new RegExp(‘“id”😦.*?),’));
console.log(tag_id[1]);
//把标签id设置为全局变量
pm.globals.set(“tag_id”,tag_id[1]);


删除标签接口
https://api.weixin.qq.com/cgi-bin/tags/delete?access_token={{access_token}}

上传文件接口
https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={{access_token}}

八、Postman断言

Status code:Code is 200 检查返回的状态码是否是200
Response body:Contains string 检查响应中包含指定字符串
Response body:Json value check 检查响应中其中json的值
Response body:is equal to a string 检查响应等于一个字符串
Response headers:Content-Type 检查是否包含响应头Content-Type
Response time is less than 200ms:检查请求耗时小于200ms
本文详细介绍了接口测试的重点,包括接口分类、接口测试流程、接口关联等,并重点讲解了Postman工具的使用,包括参数设置、接口描述、请求方式、预请求脚本和断言。同时,通过示例展示了如何进行接口关联和动态参数的运用,以及Postman内置的动态参数和自定义动态参数的创建。最后,讨论了接口业务闭环中的增删改查操作及其在Postman中的实现。
495

被折叠的 条评论
为什么被折叠?



