接口测试抓包与 mock

霍格沃兹测试开发学社

ceshiren.com

目录

  • 接口测试基础
  • Charles 安装配置
  • Charles 工具实战

接口测试基础

霍格沃兹测试开发学社

接口测试概念

  • 接口:不同的系统之间相互连接的部分,是一个传递数据的通道
  • 接口测试:检查数据的交换、传递和控制管理过程
  • 使用场景:针对于前后端分离的产品(基本上市面上的绝大部分产品)

接口测试的价值

  • 传统的测试方法成本急剧上升
  • 测试效率下降

接口测试与功能测试的对比

接口测试流程

名企的接口文档

接口测试用例编写思路

接口测试用例

  • 用例名称
  • 接口地址
  • 请求方式
  • 前置条件
  • 请求头部
  • 请求参数
  • 响应状态码
  • 预期响应结果

接口测试工具类型

测试类型 工具
接口数据分析 Charles、Fiddler、谷歌开发者工具
弱网测试 Charles、Fiddler
性能测试 JMeter
安全测试 owasp
功能测试 Postman
自动化测试 Python+Request、Java+RestAssured
性能测试 JMeter
Mock技术 Charles、Python+Requests、Java+RestAssured

Charles 安装配置

霍格沃兹测试开发学社

Charles 工具介绍

  • 支持 SSL 代理
  • 支持流量控制
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获并动态修改
  • 可以自动将 json 或 xml 数据格式化,方便查看

Charles 安装

link

Charles 界面介绍

Charles 基础设置

Windows 系统安装证书

Mac 系统安装证书

  • 注意:选择始终信任

link

Charles 端设置 ssl

link

移动端代理配置

  1. 设备和电脑处于同一 WIFI(模拟器不需要配置)
  2. 移动端网络设置
    • 服务器 ip 地址
    • 设置端口
  3. 安装证书
    • 系统浏览器访问 chls.pro/ssl
    • iOS:描述文件中安装证书
    • iOS:信任证书
  4. 演示使用 mumu 模拟器(Android 6)
  5. 配置步骤可参考:https://ceshiren.com/t/topic/12561

注意事项

  • Android 6 以上的系统 app 默认不信任抓包证书
    • 需要开发修改代码
    • 大部分测试 app 安装包默认打开状态
  • iPhone 10 系统以上需要在 设置->通用->关于本机->证书信任设置 中打开信任开关

Charles 工具实战

霍格沃兹测试开发学社

抓包原理

常用应用场景

  • 解决移动端接口测试
  • 解决接口测试过程中检查传参错误问题
  • mock 测试

接口抓包分析实战

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

HTTP 协议

  • 请求
    • 请求行:method url protocol
    • 请求方法:GET、POST、PUT、DELETE、HEAD
    • 请求头: Host Cookie User-Agent
    • 请求参数 query
    • 请求体:JSON XML FORM
  • 响应:
    • 响应状态行
    • 响应头
    • 响应体

URI 和 URL

  • URI,统一资源标识符,用来唯一的标识一个资源。
  • URL,统一资源定位符,它是一种具体的 URI

URL 解析

  • URL 结构:https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1
字段名称 含义
https 使用什么协议 哪家快递公司
www.baidu.com 目标地址的域名 收件人省份、城市
省略代表使用默认端口 端口 进城的入口
/s 资源的路径 收件人具体的地址
wd=霍格沃兹&rsv_spt=1 URL 的参数信息 快递的类型、比如生鲜、冷链、文件

HTTP 请求报文

> GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
> Host: ceshiren.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://ceshiren.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 响应状态码

  • 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
  • 2xx 表示成功,接受或知道了
    • 200 成功
  • 3xx 表示重定向,要完成请求还必须才去进一步的行动
    • 301 永久移动
    • 302 临时移动
  • 4xx 表示客户端请求错误
    • 403 未授权
    • 404 未找到
  • 5xx 表示服务端错误
    • 500 服务器内部错误
    • 503 服务不可用

断点(BreakPoint)

  • 调整接口的参数信息
  • 鼠标右键 — Breakpoint
    • Proxy – Breakpoint settings 设置断点
    • 确定接口信息,确定是请求断点还是响应断点
    • 重新发送请求 – 进入断点修改状态 – 修改内容 – 点击 Excute

课堂练习

重写(Rewrite)

  • Tools -> Rewrite
  • 勾选 Enable Rewrite
  • 点击下方 Add 按钮新建一个重写的规则
  • 在右侧编辑重写规则
  • 点击 ok 生效

实战

  • 修改雪球行情页面的股票名称
  • 修改雪球行情页面的股票价格

课堂练习

  • 修改雪球行情页面股票颜色