接口测试抓包与mock实战
接口测试抓包与 mock
预习准备
- 提前先预习完以下相关的知识,再开始本章节的学习。
- 安装 Charles、Postman
专题课 | 阶段 | 章节 | 上课地址 |
---|---|---|---|
接口测试 | L1 | 接口测试价值与体系 | 录播地址 |
接口测试 | L1 | 常见的接口协议 | |
接口测试 | L1 | 接口测试用例设计 | |
接口测试 | L1 | postman 基础使用 | |
接口测试 | L1 | 【实战】postman 实战练习 | |
接口测试 | L2 | 抓包工具 charles | |
接口测试 | L2 | 【实战】接口测试实战练习 | |
接口测试 | L3 | mock 的价值与意义 | |
接口测试 | L3 | 【实战】mock 实战练习 |
课程目标
- 掌握常用抓包工具 Charles。
- 掌握接口手工 mock 技术。
- 掌握接口测试设计思路与方法。
- 掌握常用接口测试工具 Postman。
- L1 接口协议与接口测试
- L2 常用抓包工具
- L3 Mock 工具使用
- L4 Mock 工具与定制化
知识点总览
点击查看:接口测试知识点梳理.xmind
需求说明
产品一:
- 雪球
- C 端金融类型产品,国内最火的投资者社区之一。
- 提供咨询获取、数据查询和交易服务等功能。
- 其主要业务功能为精华帖、行情咨询查看、股票基金交易。
- 需求:
- 完成雪球 Web 产品与 App 产品接口抓包分析。
- 完成雪球 Mock 测试。
产品二:
- 企业微信
- 企业微信是腾讯微信团队打造的企业通讯与办公工具。
- 具有与微信一致的沟通体验,丰富的 OA 应用,和连接微信生态的能力。
- 可帮助企业连接内部、连接生态伙伴、连接消费者。专业协作、安全管理、人即服务。
- 需求:
- 编写接口测试用例:创建部门。
- 使用 postman 编写接口测试用例与断言。
实战思路
实战:Charles 工具安装配置
接口抓包需要具备的能力
- 代理功能:HTTP/HTTPs、SOCKS5。
- 请求模拟工具:拼装请求、重放请求,重复请求。
- 网络环境模拟:限速、超时、返回异常。
- Mock:请求修改、响应修改。
- Fake:用测试环境替代真实环境。
推荐工具
- Charles:开发/测试工程师必备。
- mitmproxy:测试开发工程师必备。
- ZAP:测试工程师安全测试工具。
- BurpSuite:黑客必备渗透测试工具。
- Fiddler:跨平台支持不好,不推荐。
- Postman:代理功能太弱,不推荐。
Charles 安装配置
课堂练习
- 完成 Charles 安装。
- 完成 Charles 基础配置。
- 完成电脑端证书配置。
- 完成 mumu 模拟器代理配置与证书配置。
实战:Charles 基础使用
- Charles 基础使用
- 抓包分析接口数据
- 过滤:Filter、Focus
- 弱网:Throttle Settings
- Charles 完成弱网测试
课堂练习
- 电脑端抓包
- 抓取雪球搜索接口数据
- 查看接口响应状态码与使用的协议版本
- 查看请求参数与 json 格式的响应内容
- 快速过滤雪球域名的接口
- 进行弱网测试,选择弱网模式为 256 kbps
- App 抓包
- 抓取雪球行情自选设置--股价提醒列表的接口数据
- 查看请求参数与 json 格式的响应内容
- 进行弱网测试,选择弱网模式为 256 kbps
实战:Charels 完成 Mock 测试
功能 | 使用场景 |
---|---|
Rewrite | 动态修改请求和响应中的数据 适用于全局修改或者修改内容简单的场景 |
Map Local | 对响应体进行复杂修改 |
Map Remote | 修改要访问的服务器地址 App 测试中,可以不用重新打包直接修改测试环境 |
课堂练习
- 使用雪球行情自选设置--股价提醒列表的接口。
- Rewrite:
- 把列表中第一个股票名称改为自己的名字。
- 把列表中第二个股票的代码改为 hogwarts。
- Map Local:
- 把列表中第一个股票名称改为自己的名字。
- 把列表中第二个股票的代码改为 hogwarts。
- 把列表中第三支股票的 type 改为 30。
实战:接口测试用例设计
接口文档分析
请求方式:GET/POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
请求包体:
...
参数说明:
...
权限说明:
...
返回结果:
...
参数说明:
...
- 开发前必读
- 介绍了接口文档阅读的方法
- 介绍了接口的要求:所有的接口需使用 HTTPS 协议、JSON 数据格式、UTF8 编码
- 全局错误码入口:https://work.weixin.qq.com/api/doc/90000/90139/90313
- 接口调用流程:所有的业务接口调用之前必须先获取 access_token,这是 token 就相当于是我们的身份证,决定了我们所拥有的权限,获取到了这个 token 值,我们才有权限通过接口调用的方式对我们的企业微信进行操作。
- 开发者工具:错误码查询工具,通过这个工具我们可以快速定位接口调试中遇到到问题。
- 基本概念介绍:介绍接口中用到的一些概念是什么意思,开始测试前需要先了解清楚
- 获取 access_token
- 通讯录管理-概述:介绍通讯录接口的使用方法
- 通讯录管理-部门管理
接口测试用例编写
课堂练习
- 补充完成企业微信部门管理接口测试用例设计
实战:postman 执行接口测试
构建接口请求
- 企业微信
- 获取 access_token 接口
- 创建部门接口
编写断言
- 验证接口响应状态码
- 验证业务逻辑
// Status Code:Code is 200
// 验证响应状态码
pm.test("响应状态码为 200", function () {
pm.response.to.have.status(200);
});
// Response Body:JSON value check
// 验证 JSON 中的某个值是否等于预期的值
pm.test("预期结果描述", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.errcode).to.eql(0);
});
创建测试集
- 使用测试集管理接口
设置变量
- 设置测试集变量:
- 测试环境:base_url
- token:access_token
- 引用变量:
{{ 变量名 }}
自动获取最新 token
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.access_token;
//把token值设置为测试集变量
pm.collectionVariables.set("token", token);
设置鉴权
所有的这些接口,都是通过 access_token 这个请求参数来进行鉴权的。那可以直接设置一次,然后自动生效么?当然是可以的,直接在测试集上设计就可以。
- 确认接口鉴权方式
?access_token=ACCESS_TOKEN
测试集下属所有文件夹和请求都默认继承这个设置。
数据驱动
- 准备数据:JSON 或者 CSV 格式
[
{
"name": "技术部",
"name_en": "JISHU1",
"parentid": 1,
"order": 1,
"id": 2,
"expect": 0
},
{
"name": "",
"name_en": "JISHU2",
"parentid": 1,
"order": 2,
"id": 3,
"expect": 40058
},
{
"name": "j",
"name_en": "JISHU2",
"parentid": 1,
"order": 2,
"id": 3,
"expect": 0
}
]
- 修改参数设置
- 修改断言
查看测试结果
- 运行测试集。
- 查看测试结果。
课堂练习
- 完成企业微信新增部门接口剩余测试用例:
- 使用 postman 完成接口测试执行。
总结
- Charles 工具安装配置
- Charels 完成 Mock 测试
- 接口测试用例设计
- postman 执行接口测试