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


    目录:

    1. 抓包工具charles
      1. 工具介绍
      2. 安装
    2. 抓包工具fiddler
      1. ​​​​​​​工具介绍
      2. 界面简介
      3. 抓取 HTTP 请求
      4. 抓取 HTTPS 请求
      5. 抓取移动端请求
    3. 抓包工具证书配置
      1. ​​​​​​​Charles 基础设置
      2. 电脑证书配置
      3. Windows 系统安装证书
      4. Charles 端设置 ssl
      5. 移动端代理配置
    4. app抓包实战练习
      1. ​​​​​​​抓包原理
      2. 接口抓包分析实战​​​​​​​
    5. 接口测试实战练习
      1. ​​​​​​​LiteMall 搜索接口测试用例设计 (根据上边的接口文档进行测试用例设计)
      2. 使用Postman 完成接口测试
      3. 数据驱动
      4. 测试集的导入和导出
      5. 使用 Cookies
      6. 鉴权方式
      7. 参数传递
      8. 设置鉴权
      9. 请求前脚本中获取参数(这个用来配置测试集的变量,不在像上边一样,一个请求得添加一回鉴权)
      10. 导出代码

    1.抓包工具charles

    工具介绍
    • 支持 SSL 代理
    • 支持流量控制
    • 支持重发网络请求,方便后端调试
    • 支持修改网络请求参数
    • 支持网络请求的截获并动态修改
    • 可以自动将 json 或 xml 数据格式化,方便查看
    安装
    • Charles 官网:
      • https://www.charlesproxy.com/

     

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

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

    2.抓包工具fiddler

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

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

     

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

     

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

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

     

    查看接口信息

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

     

    AutoResponder

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

     

    断点

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

     

    弱网

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

     

    3.抓包工具证书配置

    Charles 基础设置

    电脑证书配置

     Windows 系统安装证书

    Charles 端设置 ssl

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

    注意事项

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

    4.app抓包实战练习

    抓包原理

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

     

    过滤

    • Filter
    • Focus
    • Recording Settings – Include

     

    重发

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

     

    修改请求

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

     

    断点(BreakPoint)

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

     

    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

     抓包分析:

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

    查看响应:

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

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

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

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

    保存 har 导入 postman 

     

     

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

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

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

    准备数据:CSV 格式数据

    配置参数 :

    使用csv格式的数据: 

    配置测试集变量:

    运行:

     

    运行结果:

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

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

    运行结果:

    测试集的导入和导出
    • 测试集导入
    • 测试集导出

     使用 Cookies

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

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

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

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


    4. 再次点击send下边的那个cookie,查看现在的cookie信息

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

    鉴权方式

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

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

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

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

    4.在其他接口中使用tocken

    设置鉴权

    请求前脚本中获取参数(这个用来配置测试集的变量,不在像上边一样,一个请求得添加一回鉴权)
    1. // 构造登录请求
    2. const loginRequest = {
    3. url: 'http://litemall.hogwarts.ceshiren.com/wx/auth/login',
    4. method: "POST",
    5. header: 'Content-Type: application/json',
    6. body: {
    7. mode: 'raw',
    8. raw: JSON.stringify({'username': 'user123', "password": "user123"})
    9. }
    10. };
    11. // 发送请求
    12. pm.sendRequest(loginRequest, function (err, response) {
    13. if (err) {
    14. console.log(err);
    15. } else {
    16. console.log(response.json());
    17. pm.collectionVariables.set("token", response.json().data.token);
    18. }
    19. });

    导出代码
    • 点击右侧边栏的

  • 相关阅读:
    c++ 卡特兰数
    贪心算法_活动安排问题
    深度学习与视频直播美颜sdk:背后的技术革新
    1985-2020年全国各省一二三产业就业人数/各省分产业就业人数数据(无缺失)
    5.Docker搭建MinIO
    TortoiseGit设置作者信息和用户名、密码存储
    Linux--信号携带消息
    【PCB学习】几种接地符号
    Go语言语法入门
    【Java】springboot 枚举参数
  • 原文地址:https://blog.csdn.net/qq_56444564/article/details/132941451