目录:
1.接口测试价值与体系
接口测试概念
接口测试的价值
分层测试体系
接口测试学习路线
接口测试与 mock 学习路线
| 形式 | 章节 | 描述 |
|---|---|---|
| 知识点 | 接口测试价值与体系 | 了解接口测试的知识体系与学习路线 |
| 知识点 | 常见的接口协议 | 了解常见接口协议、重点掌握 HTTP 协议 |
| 知识点 | 接口测试用例设计 | 掌握接口测试用例设计思路 |
| 知识点 | postman 基础使用 | 掌握 postman 的安装和基础使用 |
| 实战 | postman 实战练习 | 使用 postman 完成接口测试 |
| 知识点 | 抓包工具 charles | 掌握 charles 的安装和基础配置 |
| 知识点 | 抓包工具 fiddler | 掌握 fiddler 的安装和基础配置 |
| 知识点 | 抓包工具证书配置 | 抓包工具证书配置 https 协议数据抓包 |
| 实战 | App 抓包实战练习 | 对雪球实现抓包 |
| 实战 | 接口测试实战练习 | 结合 postman 完成对宠物商店的接口测试 |
| 知识点 | 弱网测试 | 使用 charles 完成弱网测试 |
| 知识点 | mock 的价值与意义 | 了解 mock 测试的价值与意义 |
| 实战 | mock 实战练习 | 雪球 mock 实战练习 |
| 知识点 | 使用 curl 发送请求【选修】 | 了解 curl 命令的参数 |
| 知识点 | tcpdump 与 wireshark 的使用【选修】 | 了解 tcpdump 与 wireshark 的基本使用 |
2.常见的接口协议
网络模型

OSI七层模型:
TCP/IP四层模型:
五层体系结构:
常见接口协议
RPC 协议
HTTP 协议
URI 和 URL
https://www.baidu.com/s?wd=海贼王&rsv_spt=1
httpwww.baidu.com/swd=海贼王&rsv_spt=**1HTTP 请求报文

- > GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
- > Host: baidu.com
- > Accept-Encoding: deflate, gzip
- > Connection: keep-alive
- > Pragma: no-cache
- > Cache-Control: no-cache
- > User-Agent: Mozilla/5.0
- (Macintosh; Intel Mac OS X 10_15_0)
- AppleWebKit/537.36
- (KHTML, like Gecko)
- Chrome/80.0.3987.116 Safari/537.36
- > Accept: image/webp,image/apng,image/*,*/*;q=0.8
- > Referer: https://sougou.com/
- > Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
- > Cookie: user_id=xx;
-
- _homeland_session=xx;
- >
HTTP 响应报文

- < HTTP/1.1 200 OK
- < Server: nginx/1.10.2
- < Date: Thu, 12 Mar 2020 09:13:44 GMT
- < Content-Type: image/png
- < Content-Length: 11390
- < Connection: keep-alive
HTTP 响应状态码
RESTful 架构
3.接口测试用例设计
接口测试流程

接口测试用例设计思路

接口测试用例要素
4.postman基础使用
Postman 介绍
Postman 安装
Postman 使用
操作头信息
查看接口响应
5.postman实战练习
测试流程:
宠物商店接口文档分析

接口测试用例设计
文档地址:template: 用来存放开发模版 - Gitee.com
Postman 完成接口测试
新增宠物
查询宠物
更新宠物:
删除宠物:

断言
- // Status Code:Code is 200
- // 验证响应状态码
- pm.test("响应状态码为 200", function () {
- pm.response.to.have.status(200);
- });
-
- // Response Body:contains string
- // 验证响应体中是否包含某个字符串
- pm.test("响应体中包含预期的字符串", function () {
- pm.expect(pm.response.text()).to.include("doggie");
- });
-
- // Response Body:JSON value check
- // 验证 JSON 中的某个值是否等于预期的值
- pm.test("宠物名称为 doggie", function () {
- var jsonData = pm.response.json();
- pm.expect(jsonData[0].name).to.eql("doggie");
- });
-
- // Response Body:Is equal to a string
- // 验证响应体是否与某个字符串完全相同
- pm.test("响应体正确", function () {
- pm.response.to.have.body("response_body_string");
- });
-
- // Response Body:Content-Type header check
- // 验证响应头信息中的 Content-Type 是否存在
- pm.test("Content-Type is present", function () {
- pm.response.to.have.header("Content-Type");
- });
-
- // Response time is less than 200ms
- // 验证响应时间是否小于某个值
- pm.test("Response time is less than 200ms", function () {
- pm.expect(pm.response.responseTime).to.be.below(200);
- });
新增宠物断言:
json压缩转义成字符串:


查询宠物断言:

更新宠物断言:
json压缩转义成字符串:


删除宠物断言:

运行测试集

宠物商店运行结果:
查看测试结果:
变量
变量定义
全局变量:
全局变量的使用:

变量的使用
{{变量名}} 使用 全局变量的使用:
Pre-request Script

在脚本中获取全局变量
测试集变量:

测试集变量的使用:


环境变量

环境变量的使用:

变量的优先级