接口测试——接口协议抓包分析与mock_L2

目录:

  1. 抓包工具charles
  2. 抓包工具fiddler
  3. 抓包工具证书配置
  4. app抓包实战练习
  5. 接口测试实战练习

1.抓包工具charles

工具介绍

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

安装

  • Charles 官网:
    • https://www.charlesproxy.com/

 接口测试——接口协议抓包分析与mock_L2_第1张图片

Charles配置:Charles下载与安装教程(超详细)_不要问我y的博客-CSDN博客

Charles下载安装_choo choo charles下载教程_会飞的咕咕鱼的博客-CSDN博客

2.抓包工具fiddler

 工具介绍

  • 官网:https://www.telerik.com/fiddler/fiddler-classic
  • Fiddler 是位于客户端和服务器端的 HTTP 代理
  • 也是目前最常用的 HTTP 抓包工具之一
  • 功能
    • 监控流量
    • 支持解密 HTTPS
    • 查看分析接口数据
    • 修改请求的数据
    • 修改服务器返回的数据
    • 设置断点

界面简介

  • 菜单栏
  • 工具栏
  • Session 面板
  • 详情和数据统计面板
  • 状态栏

接口测试——接口协议抓包分析与mock_L2_第2张图片

抓取 HTTP 请求

  • 设置:Tools -> Options -> Connections
  • 确认抓包端口:默认为 8888
  • 默认勾选 Act as system proxy on startup

 接口测试——接口协议抓包分析与mock_L2_第3张图片

抓取 HTTPS 请求

  • Tools -> Fiddler Options -> HTTPS
  • 勾选 Decrypt HTTPS Traffic
  • 弹出安装证书弹窗 -> 选择【Yes】-> 点击 【Yes】安装证书
  • 点击 Actions -> Open Windows Certificate Manager 查看证书

 接口测试——接口协议抓包分析与mock_L2_第4张图片

抓取移动端请求

  • Tools -> Fiddler Options -> Connections
  • 勾选 Allow remote computers to connect
  • 移动端与电脑处于同一网络下
  • 移动端配置网络代理
    • 代理服务器主机:电脑IP
    • 代理服务器端口:8888
  • 浏览器输入 http://电脑ip:8888 下载 Fiddler 证书进行安装

接口测试——接口协议抓包分析与mock_L2_第5张图片

注意:fiddler,模拟器的端口要一致: 

接口测试——接口协议抓包分析与mock_L2_第6张图片

 接口测试——接口协议抓包分析与mock_L2_第7张图片

查看接口信息

  • Statistic:性能与统计数据
  • Inspectors:请求和响应数据
  • Filter:制定过滤规则
  • Composer:编辑发出请求

 接口测试——接口协议抓包分析与mock_L2_第8张图片

AutoResponder

  • 拦截某一请求,并重定向到本地的资源,或者使用 Fiddler 的内置响应
  • 用于调试服务器端代码而无需修改服务器端的代码和配置

 接口测试——接口协议抓包分析与mock_L2_第9张图片

断点

  • 菜单栏 -> Rules -> Automatic Breakpoints ->选择断点方式
  • 状态栏点击
    • 请求前断点:向上箭头
    • 响应后断点:向下箭头
  • 命令行下输入
    • 请求前断点:bpu xxx
    • 响应后断点:bpafter xxx

 接口测试——接口协议抓包分析与mock_L2_第10张图片

弱网

  • 菜单栏 -> Rules -> Performance -> Simulate Modem Speeds
  • 修改网络配置参数
    • 菜单栏 -> Rules -> Customize Rules…
    • 搜索关键词 simulate
    • 修改延迟时间

 接口测试——接口协议抓包分析与mock_L2_第11张图片

3.抓包工具证书配置

Charles 基础设置

接口测试——接口协议抓包分析与mock_L2_第12张图片

电脑证书配置

接口测试——接口协议抓包分析与mock_L2_第13张图片

 Windows 系统安装证书

接口测试——接口协议抓包分析与mock_L2_第14张图片

接口测试——接口协议抓包分析与mock_L2_第15张图片

Charles 端设置 ssl

接口测试——接口协议抓包分析与mock_L2_第16张图片

移动端代理配置

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

接口测试——接口协议抓包分析与mock_L2_第17张图片

注意事项

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

4.app抓包实战练习

抓包原理

接口测试——接口协议抓包分析与mock_L2_第18张图片

接口抓包分析实战

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

 接口测试——接口协议抓包分析与mock_L2_第19张图片

过滤

  • Filter
  • Focus
  • Recording Settings – Include

 接口测试——接口协议抓包分析与mock_L2_第20张图片

重发

  • 简单重发:鼠标右键 – Repeat
  • 简单压力:鼠标右键 – Repeat Advanced

 接口测试——接口协议抓包分析与mock_L2_第21张图片

修改请求

  • 鼠标右键 – Compose
  • 选择接口 – 点击小钢笔图标

 接口测试——接口协议抓包分析与mock_L2_第22张图片

断点(BreakPoint)

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

 接口测试——接口协议抓包分析与mock_L2_第23张图片

5.接口测试实战练习

  1. LiteMall 搜索接口抓包分析
  2. LiteMall 搜索接口测试用例设计
  3. Postman 完成接口测试
  4. 数据驱动
  5. 测试集的导入和导出
  6. 使用 Cookies
  7. 鉴权方式
  8. 参数传递
  9. 设置鉴权
  10. 请求前脚本中获取参数
  11. 导出代码

LiteMall 搜索接口抓包分析

  • LiteMall 商城:https://litemall.hogwarts.ceshiren.com/vue/index.html#/
  • 浏览器开发者工具抓包:Network

 抓包分析:

接口测试——接口协议抓包分析与mock_L2_第24张图片

得出请求地址:https://litemall.hogwarts.ceshiren.com/wx/goods/list 

查看响应:

接口测试——接口协议抓包分析与mock_L2_第25张图片

分析响应内容:并且生成接口文档:Python: 66666666666666

接口测试——接口协议抓包分析与mock_L2_第26张图片

LiteMall 搜索接口测试用例设计 (根据上边的接口文档进行测试用例设计)

接口测试——接口协议抓包分析与mock_L2_第27张图片

编写测试用例:SoftwareTest: 用来存放软件测试的代码或者文档

接口测试——接口协议抓包分析与mock_L2_第28张图片

使用Postman 完成接口测试

  • 保存 har 导入 postman
  • 创建测试集
  • 创建接口测试用例

保存 har 导入 postman 

接口测试——接口协议抓包分析与mock_L2_第29张图片

接口测试——接口协议抓包分析与mock_L2_第30张图片 接口测试——接口协议抓包分析与mock_L2_第31张图片

 接口测试——接口协议抓包分析与mock_L2_第32张图片

根据测试用例,使用postman编写脚本 

接口测试——接口协议抓包分析与mock_L2_第33张图片

导出测试集为json格式:SoftwareTest: 用来存放软件测试的代码或者文档

接口测试——接口协议抓包分析与mock_L2_第34张图片

数据驱动

  • 准备数据:JSON 或者 CSV 格式
  • 修改参数设置
  • 修改断言
  • 在测试集中定义数据变量
  • 运行测试集,选择准备好的数据

接口测试——接口协议抓包分析与mock_L2_第35张图片

准备数据:CSV 格式数据

接口测试——接口协议抓包分析与mock_L2_第36张图片

配置参数 :

接口测试——接口协议抓包分析与mock_L2_第37张图片

使用csv格式的数据: 

接口测试——接口协议抓包分析与mock_L2_第38张图片

配置测试集变量:

接口测试——接口协议抓包分析与mock_L2_第39张图片

运行:

接口测试——接口协议抓包分析与mock_L2_第40张图片

 接口测试——接口协议抓包分析与mock_L2_第41张图片

运行结果:

接口测试——接口协议抓包分析与mock_L2_第42张图片

准备数据:JSON 格式数据 SoftwareTest: 用来存放软件测试的代码或者文档

接口测试——接口协议抓包分析与mock_L2_第43张图片

接口测试——接口协议抓包分析与mock_L2_第44张图片

直接使用上边csv格式,配置的一些参数,我们只换了个数据格式,直接复用上边csv配置的参数,运行:

接口测试——接口协议抓包分析与mock_L2_第45张图片

接口测试——接口协议抓包分析与mock_L2_第46张图片

运行结果:

接口测试——接口协议抓包分析与mock_L2_第47张图片

测试集的导入和导出

  • 测试集导入
  • 测试集导出

接口测试——接口协议抓包分析与mock_L2_第48张图片

 使用 Cookies

接口测试——接口协议抓包分析与mock_L2_第49张图片

如果登录使用的是cookie这种方式,在postman中只要成功登录一次,登录成功之后的cookie信息就会保存在postman中,之后请求该网站其他接口时候,会自动在header中带上cookie,下面以百度为例:

1.填入url,点击headers查看,没有cookie信息

接口测试——接口协议抓包分析与mock_L2_第50张图片

2.点击send下边的那个cookie,查看现在的cookie信息(什么都没有)

接口测试——接口协议抓包分析与mock_L2_第51张图片

3.发送请求(这个时候cookie信息已经保存在postman中的headers上了)

接口测试——接口协议抓包分析与mock_L2_第52张图片
4. 再次点击send下边的那个cookie,查看现在的cookie信息接口测试——接口协议抓包分析与mock_L2_第53张图片

5.我们现在访问百度页面的其他接口(这时候headers里边已经有刚才的登录的cookie信息了)

接口测试——接口协议抓包分析与mock_L2_第54张图片

鉴权方式

接口测试——接口协议抓包分析与mock_L2_第55张图片

参数传递

  • 创建登录接口
  • 成功后在 Test 中提取 token
  • 保存 token 到测试集变量
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.data.token;
//把token值设置为测试集变量
pm.collectionVariables.set("token", token);

1.创建登录接口,发起登录请求

接口测试——接口协议抓包分析与mock_L2_第56张图片

2.编写Tests,在Tests中把tocken值设置为测试集变量:再次发起请求:

接口测试——接口协议抓包分析与mock_L2_第57张图片

3.运行结果:(查看测试集中的tocken)

接口测试——接口协议抓包分析与mock_L2_第58张图片

4.在其他接口中使用tocken

接口测试——接口协议抓包分析与mock_L2_第59张图片

接口测试——接口协议抓包分析与mock_L2_第60张图片

设置鉴权

接口测试——接口协议抓包分析与mock_L2_第61张图片

请求前脚本中获取参数(这个用来配置测试集的变量,不在像上边一样,一个请求得添加一回鉴权)

// 构造登录请求
const loginRequest = { 
    url: 'http://litemall.hogwarts.ceshiren.com/wx/auth/login', 
    method: "POST", 
    header: 'Content-Type: application/json',
    body: { 
        mode: 'raw',
        raw: JSON.stringify({'username': 'user123', "password": "user123"})
    } 
}; 

// 发送请求 
pm.sendRequest(loginRequest, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        console.log(response.json());
        pm.collectionVariables.set("token", response.json().data.token);
    }
});

接口测试——接口协议抓包分析与mock_L2_第62张图片

导出代码

  • 点击右侧边栏的

接口测试——接口协议抓包分析与mock_L2_第63张图片

你可能感兴趣的:(测试开发,python)