1.接口及其类型
API,应用编程接口,简称接口。
通过接口,可以使程序和程序之间,能够相互交互
接口的类型有很多:
- SOAP
- REST
- GapghQL
- Websocket
- TCP
- RPC
- 其他
分为两大类:
- 基于TCP全双工
- 基于HTTP半双工
了解接口的类型,有助于我们选择测试方案和工具:
- 基于TCP的,不适用与postman
- 基于HTTP的,适用于postman
2.接口测试的流程
1.前提
1.理解需求
2.了解接口
退而求次:体验产品,抓包分析
2.选择工具
- Postman
- Download Postman | Get Started for Free 下载安装
3.设计用例
1.基本正向用例
2.带可选参数的额外扩展正向用例
3.反向用例
4.破坏性的测试
** 4.执行用例**
- 稍后详细展开
5.持续测试
- postman+newman+jenkins+git
- 持续测试、生成报告
3.Postman执行接口测试
Postman是一款功能强大的网页调试与发送HTTP请求的Chrome插件,专为接口而生。
3.1 界面功能
3.2 请求
1. 请求方式
2. 接口地址
3.查询字符串
- GET参数,会成为URL中的一部分
4. 鉴权方式
- 继承上级
- 不需要鉴权
- API KEY:在请求头添加指定的内容
- Bearer Token:有明确约定的使用方式
- 其他...
5. 请求头
- KV结构(key-value结构),不能重复,可以批量编辑,通过冒号来分隔key和value
补充:使用Postman执行接口测试页签和传参说明:
Postman请求主要页签说明:
- Params:get请求传参
- Headers:请求头
- Body:post请求传参
1.none没有参数 2.form-data:传文件和键值对 3.x-www.. 传键值对 4.raw:传text,json,xml 5.binary:传文件的二进制。
- Pre-request Script:请求之前的脚本
- Tests:请求之后的断言脚本,用于判断请求是否成功!
6.请求正文
- 表单(表单会经过编码)
- KV结构+文件上传
- KV结构
- 原始内容(不会进行编码)
- json传递数据
- XML传递数
json 的数据格式
基本特点:数据结构简单,适合程序解析
基本数据类型:数字、字符串、布尔值、空值null
容器数据类型:数组、对象
特殊的规范:
1.字符串一定使用双引号 2.容器的最后一项,不加逗号。
- 二进制内容
4.GraphQL
- github 3.0 Restful
- github 4.0 GapghQL
- Postman响应主要页签说明:
- Body:响应的数据(Pretty:json格式,Raw:文本格式,Preview:网页格式)
- Cookies:缓存
- Headers:响应头
- Test Results:断言的结果
7. 请求预处理
- 请求发送前置,执行js,改变请求。
8. 测试用例
- 响应收到后执行,执行js,来断言响应。
9. 设置
- 改变传输细节
10. cookie
- 自动更新、自动发送
- 可以禁用
3.3 响应
- 响应数据
- 查看方式:美化、原始、浏览器预览、自定义可视化
cookie
响应头
测试结果
状态码 、耗时、文档大小( Postman返回码和返回状态信息说明)
- Status:200返回码
- OK:返回信息
- Time:170ms 毫秒
- Size:343B 字节
3.4 Postman环境变量和全局变量
1.在右上角的眼睛图标中可以设置环境变量和全局变量
2.在请求时:通过{{}}去调用全局变量
3.在运行时:选择不同的环境
- 生成不同的代码
- 控制台
3.5 使用集合来管理请求
1.创建集合
2.创建文件夹
3.创建请求
3.6 场景应用
接口关联(上一个接口的返回值如何作为下一个接口的参数)
1.上一个接口的tests中取值:
//JSON.parse把返回的值转化成一个vjson格式的数据,保存到value这个变量中
var value = JSON.parse(responseBody)
//把取得的token值保存到全局变量的access_token变量中。
pm.globals.set(“access_token”, value.access_token);
2.下一个接口通过{{access_token}}取值
3.7 Postman断言
断言:判断接口有没有成功,常用的断言如下:
1.断言返回码为200
pm.test(“Status code is 200”, function () {
pm.response.to.have.status(200);
});
2.断言返回的结果中中包括access_token字符串。
pm.test(“Body matches string”, function () {
pm.expect(pm.response.text()).to.include("access_token");
});
3.断言返回的json数据中的值:断言expires_in的值为7200
pm.test(“Your test name”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.expires_in).to.eql(7200);
});
4.断言响应的内容等于一个字符串
pm.test(“Body is correct”, function () {
pm.response.to.have.body("response_body_string");
});
5.检查响应头中是否有Content-Type字段
pm.test(“Content-Type is present”, function () {
pm.response.to.have.header("Content-Type");
});
6.断言响应的时间少于200MS
pm.test(“Response time is less than 200ms”, function () {
pm.expect(pm.response.responseTime).to.be.below(300);
});
该文章部分知识点参考程序员小野
版权归原作者 蜗牛_Chenpangzi 所有, 如有侵权,请联系我们删除。