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

目录:

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

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 到测试集变量
//获取响应数据的json对象
var jsonData = pm.response.json();
//从json对象中提取token值
var token = jsonData.data.token;
//把token值设置为测试集变量
pm.collectionVariables.set("token", token);

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

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

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

4.在其他接口中使用tocken

设置鉴权

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

// 构造登录请求
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);}
});

导出代码

  • 点击右侧边栏的 </>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子电子架构——AUTOSAR信息安全机制有哪些?(上)

电子电子架构——AUTOSAR信息安全机制有哪些&#xff08;上&#xff09; 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 人们会在生活中不断攻击你。他们的主要…

Mysql 子查询,最值查询

1.leetcode-184&#xff1a;查找部门内最高的薪水 首先是一个子查询&#xff0c;找出一个部门里最高的那个工资 随后查找最终需要的值&#xff0c;并且部门编号以及薪水应该包含在这个子查询中 最终答案&#xff1a; # Write your MySQL query statement below SELECT Depar…

爬虫获取一个网站内所有子页面的内容

上一篇介绍了如何爬取一个页面内的所有指定内容&#xff0c;本篇讲的是爬去这个网站下所有子页面的所有指定的内容。 可能有人会说需要的内容复制粘贴&#xff0c;或者直接f12获取需要的文件下载地址一个一个下载就行了&#xff0c;但是如下图十几个一级几十个二级一百多个疾病…

网工内推 | 网络工程师,软考证书优先,六险一金,包吃

01 科力信息 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责蚌埠项目的设备安装及调试&#xff1b; 2、对边界网络运行中的监控、故障排除、问题处理。 任职要求&#xff1a; 1、2年及以上网络相关工作经验&#xff0c;有交通管理网络运维经验优先&#xff1b…

重新认识Java中的死锁问题

一、定义 多个进程因抢夺系统资源而产生相互等待的现象。 二、场景模拟 package com.gui.practise.thread.deadlock;public class DeadLock {private final Object resource1 new Object();//资源 1 private final Object resource2 new Object();//资源 2 public v…

前端架构师之路03_移动端规范兼容处理

1 移动端页面制作规范 1.1 计量单位的使用 CSS 的计量单位选择 px&#xff1a;固定的像素值em&#xff1a;相对父级元素的 font-size 设置来作为当前元素 1em 所代表的像素值&#xff0c;如父节点的 font-size:10px&#xff0c;当前节点的 font-size:1.2em&#xff0c;则当前节…

什么才是物联网领域最好的开发语言?

什么才是物联网领域最好的开发语言&#xff1f; 最好&#xff01;运行最快&#xff1f;开发最高效&#xff1f;最容易学习&#xff1f; 各有特点&#xff01; 采用C/C语言&#xff0c;运行最快&#xff0c;一般采用厂家提供的底层驱动支持包BSP&#xff0c;所有MCU都支持。如…

2009-2018年各省涉农贷款数据(wind)

2009-2018年各省涉农贷款数据&#xff08;wind&#xff09; 1、时间&#xff1a;:209-2018年 2、范围&#xff1a;31省 3、来源&#xff1a;wind 4、指标&#xff1a;涉农贷款 指标解释 &#xff1a;在涉农贷款的分类上&#xff0c;按照城乡地域将涉农贷款分为农村贷款和城…

Django的设计模式及模板层

Django的设计模式及模板层 设计模式MVC和MVT MVC 代表 Model-View-Controller(模型-视图-控制器)模式。 M 模型层(Model),主要用于对数据库层的封装 V 视图层(View),用于向用户展示结果 (WHAT HOW) C 控制(Controller&#xff0c;用于处理请求、获取数据、返回结果(重要) 作…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…

Spring学习笔记3 Spring对IOC的实现

Spring学习笔记2 Spring的入门程序_biubiubiu0706的博客-CSDN博客 控制反转是一种思想 控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP(开闭原则)原则,达到DIP(依赖倒置原则)原则 控制反转,反转的是什么? 1.将对象的创建权力交出去,交给第三方容器负责 2.对象与对象…

【Vue3 源码解析】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…

【C#】Redis在net core下使用教程

系列文章 文章目录 系列文章前言一、Redis 简介1.1 Redis 优势1.2 Redis与其他key-value存储有什么不同&#xff1f; 二、Redis安装步骤2.1 下载链接2.2 安装测试 三、Redis修改帐户密码四、Redis写成Windows服务五、.net core - 使用CSRedisCore操作redis 前言 官方教程&…

25814-2010 三聚氯氰 阅读笔记

声明 本文是学习GB-T 25814-2010 三聚氯氰. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了三聚氯氰的要求、采样、试验方法、检验规则以及标志、标签、包装、运输、贮存、安全、 安全技术说明书。 本标准适用于三聚氯氰的产品…

ARM/X86工控机在轨道交通交通管理系统的应用(4)

交通管理系统 信迈XM-3000系列专为道路监控应用而设计。随着城市化的发展&#xff0c;道路车辆数目与日俱增&#xff0c;而道路监控对于时刻保障城市的安全是非常必要的。由于性能强大并支持宽温度工作&#xff0c;XM-3000系列成为交通管理系统应用的理想选择。 系统架构 交通…

服务网关Gateway_微服务中的应用

没有服务网关 问题&#xff1a; 地址太多安全性管理问题 为什么要使用服务网关 网关是微服务架构中不可或缺的部分。使用网关后&#xff0c;客户端和微服务之间的网络结构如下。 注意&#xff1a; 网关统一向外部系统&#xff08;如访问者、服务&#xff09;提供REST API。在Sp…

常用螺栓标准、规格、用途汇总表

螺栓 1 常用螺栓标准、用途 常用螺栓标准、规格、用途见表1。 表1 常用螺栓标准、规格、用途汇总表 注&#xff1a;1.冷镦工艺生产的小六角头螺栓具有材料利用率高、生产效率高、机械性能高等优点,但由于头部尺寸较小, 不宜用于多次装拆、被联接件强度较低和易锈蚀等场合。 2.…

印章篆刻小程序商城的作用是什么

印章的需求度也有很高市场需求&#xff0c;处理办公印章外&#xff0c;还有艺术类的&#xff0c;而对爱好者来说&#xff0c;需要找到一家靠谱的品牌制作&#xff0c;包括材料、样式、内容等都有较高要求&#xff0c;线上可以接触到更多雕刻商家。 而对品牌来说&#xff0c;需…

Chrome获取RequestId

Chrome获取RequestId 参考&#xff1a;https://help.aliyun.com/zh/redis/how-do-i-obtain-the-id-of-a-request 在浏览器页面按下F12键&#xff0c;打开开发者工具页面&#xff1b; 在开发者工具页面&#xff0c;单击Network(网络)&#xff1b; 在playload(载荷)窗口中找到目…

Java-day18(网络编程)

网络编程 1.概述 Java提供跨平台的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;程序员面对的是一个统一的网络编程环境 网络编程的目的&#xff1a;直接或间接地通过网络协议与其他计算机进行通信 网络编程的两个主要问题&#xff1a; 1.如何准确定位网络上一台…