目录
1.接口及其类型
2.接口测试的流程
3.Postman执行接口测试
3.1 界面功能
3.2 请求
1.?请求方式
2. 接口地址
3.查询字符串
4. 鉴权方式
5. 请求头
6.请求正文
7. 请求预处理
8. 测试用例
9. 设置
10. cookie
3.2 响应
3.3 Postman环境变量和全局变量
3.4 使用集合来管理请求
3.5?Postman断言
3.6?上一个接口的返回值如何作为下一个接口的参数
1.接口及其类型
API,应用编程接口,简称接口。
通过接口,可以使程序和程序之间,能够相互交互
接口的类型有很多:
- SOAP
- REST
- GapghQL
- Websocket
- TCP
- RPC
- 其他
分为两大类:
了解接口的类型,有助于我们选择测试方案和工具:
- 基于TCP的,不适用与postman
- 基于HTTP的,适用于postman
2.接口测试的流程
1.前提 ? ? ? ? 1.理解需求 ? ? ? ? 2.了解接口
? ?退而求次:体验产品,抓包分析
2.选择工具
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请求主要页签说明:
6.请求正文
1. 表单(表单会经过编码)
2. 原始内容(不会进行编码)
- XML传递数
json 的数据格式
基本特点:数据结构简单,适合程序解析
基本数据类型:数字、字符串、布尔值、空值null
容器数据类型:数组、对象
特殊的规范:
? ? ? ? 1.字符串一定使用双引号
? ? ? ? 2.容器的最后一项,不加逗号。
3. 二进制内容
4.GraphQL
- github 3.0 Restful
- github 4.0 GapghQL
5. Postman响应主要页签说明:
- Body:响应的数据(Pretty:json格式,Raw:文本格式,Preview:网页格式)
- Cookies:缓存
- Headers:响应头
- Test Results:断言的结果
7. 请求预处理
8. 测试用例
9. 设置
10. cookie
3.3?响应
1. 响应数据
2. cookie
3. 响应头
4. 测试结果
5. 状态码 、耗时、文档大小(?Postman返回码和返回状态信息说明)
- Status:200返回码
- OK:返回信息
- Time:170ms 毫秒
- Size:343B 字节
3.4?Postman环境变量和全局变量
1.在右上角的眼睛图标中可以设置环境变量和全局变量
?2.在请求时:通过{{}}去调用全局变量
?3.在运行时:选择不同的环境
4. 生成不同的代码
5. 控制台
?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);
});
该文章部分知识点参考程序员小野
|