接口测试抓包与 Mock

霍格沃兹测试开发学社

ceshiren.com

目录

  • 学习价值
  • 直播前准备
  • 知识点梳理
  • 雪球接口抓包与 Mock 实战
  • 总结

学习价值

  • 掌握接口测试设计思路与方法。
  • 掌握常用接口测试工具 Postman。
  • 掌握常用抓包工具 Charles。
  • 掌握接口手工 mock 技术。

直播前准备

  • 环境准备
    • 代理工具:Charles
    • Android 模拟器:mumu
    • 练习 app:雪球
专题课 阶段 形式 章节
接口测试 L2 知识点 抓包工具 charles
接口测试 L2 知识点 抓包工具证书配置
接口测试 L2 知识点 【实战】App 抓包实战练习
接口测试 L2 知识点 【实战】接口测试实战练习
接口测试 L3 知识点 mock 的价值与意义
接口测试 L3 知识点 【实战】mock 实战练习

知识点梳理

雪球接口抓包与 Mock 实战

  • 实战目标
  • 被测产品介绍
  • 需求说明
  • 实战思路
  • 实战演练

思考

  • 如何定位 Bug 是前端产生还是后端产生的?
  • 没有接口文档的时候,如何获取接口信息?

实战目标

  • 掌握常用抓包工具 Charles。
  • 掌握接口手工 mock 技术。
  • L1 接口协议与接口测试
  • L2 常用抓包工具
  • L3 Mock 工具使用
  • L4 Mock 工具与定制化

成果展示

被测产品介绍

  • 雪球
    • C 端金融类型产品,国内最火的投资者社区之一。
    • 提供咨询获取、数据查询和交易服务等功能。
    • 其主要业务功能为精华帖、行情咨询查看、股票基金交易。

需求说明

  • 完成雪球 Web 产品与 App 产品接口抓包分析。
  • 完成雪球 Mock 测试。

实战思路

相关知识点

形式 章节
知识点 抓包工具 charles
知识点 抓包工具证书配置
知识点 【实战】App 抓包实战练习
知识点 mock 的价值与意义
知识点 【实战】mock 实战练习

接口抓包需要具备的能力

  • 代理功能:HTTP/HTTPs、SOCKS5。
  • 请求模拟工具:拼装请求、重放请求,重复请求。
  • 网络环境模拟:限速、超时、返回异常。
  • Mock:请求修改、响应修改。
  • Fake:用测试环境替代真实环境。

推荐工具

  • Charles:开发/测试工程师必备。
  • mitmproxy:测试开发工程师必备。
  • ZAP:测试工程师安全测试工具。
  • BurpSuite:黑客必备渗透测试工具。
  • Fiddler:跨平台支持不好,不推荐。
  • Postman:代理功能太弱,不推荐。

接口抓包原理

Charles 基础使用

课堂练习

  • 完成 Charles 安装。
  • 完成 Charles 基础配置。
  • 完成电脑端证书配置。
  • 完成 mumu 模拟器代理配置与证书配置。

Charles 接口抓包分析

  • 抓取接口数据
    • Overview:接口的大体情况
    • Content:请求信息和响应信息
      • 上半部分:请求,请求头信息,请求参数,cookie
      • 下半部分:响应,响应头信息,响应体(不同格式)
    • Summary:响应时间
    • Chart:图标形式的资源情况展示
    • Notes:写一些记录

Charles 基础使用

  • 过滤:Filter、Focus
  • 重发:Repeat、Repeat Advanced
  • 修改请求:Compose
  • 弱网:Throttle Settings

课堂练习

  • Web 抓包
    1. 抓取雪球搜索接口数据
    2. 查看接口响应状态码与使用的协议版本
    3. 查看请求参数与 json 格式的响应内容
    4. 编辑请求参数,把搜索内容替换为自己的名字,重新发送请求,查看响应内容
    5. 快速过滤雪球域名的接口

课堂练习

  • App 抓包
    1. 抓取雪球行情自选设置–股价提醒列表的接口数据
    2. 查看请求参数与 json 格式的响应内容
    3. 设置重发 10 次,并发数量为 2,延迟时间为 500ms
    4. 进行弱网测试,选择弱网模式为 256 kbps

什么是 Mock 测试

  • 在测试活动中,对于某些不容易构造或者不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法。

Mock 测试的价值与场景

  • 价值:
    • 不依赖第三方数据。
    • 节省工作量。
    • 节省联调。
  • 场景:
    • 前后端数据交互。
    • 第三方系统数据交互。
    • 硬件设备解耦。

使用 Charles 完成 Mock 测试

功能 使用场景
Rewrite 动态修改请求和响应中的数据
适用于全局修改或者修改内容简单的场景
Map Local 对响应体进行复杂修改
Map Remote 修改要访问的服务器地址
App 测试中,可以不用重新打包直接修改测试环境

课堂练习

  • 使用雪球行情自选设置–股价提醒列表的接口。
  • Rewrite:
    1. 把列表中第一个股票名称改为自己的名字。
    2. 把列表中第二个股票的代码改为 hogwarts。

课堂练习

  • 使用雪球行情自选设置–股价提醒列表的接口。
  • Map Local:
    1. 把列表中第一个股票名称改为自己的名字。
    2. 把列表中第二个股票的代码改为 hogwarts。
    3. 把列表中第三支股票的 type 改为 30。

课堂练习

  • 使用测试人搜索接口。
  • Map Remote:
    • 把接口重定向到百度接口上。
    • 测试人社区会展示警告弹窗,注意 Charles 中抓到的接口数据。

总结

  • Charles 接口抓包分析。
  • Charles 完成 mock 测试。

资料地址

  • 课程贴

作业