news 2026/4/10 20:18:45

接口测试:Mock、加密解密与抓包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口测试:Mock、加密解密与抓包

接口测试:Mock、加密解密与抓包

接口测试是软件质量保障的核心环节,随着业务复杂度提升,仅基础的接口调用已无法满足测试需求 ——Mock 测试解决 “接口未开发完成” 的阻塞问题,加密解密应对 “数据安全传输” 的业务要求,抓包工具则搞定 “接口信息缺失” 的调试痛点。本文将系统拆解这三大进阶技能,结合 Postman、JMeter、Fiddler 等工具实战,帮你构建全方位的接口测试能力。

一、Mock 测试:接口未开发也能提前测试

在前后端分离项目中,后端接口往往滞后于前端开发,Mock 测试通过 “模拟接口响应”,让前端测试与后端开发并行推进,避免项目进度阻塞。

1. Mock 测试核心认知

  • 定义:通过创建模拟接口(Mock Server)替代未开发完成的真实接口,返回预设的响应数据,验证前端业务逻辑是否正常。
  • 适用场景
    • 后端接口未开发完成,前端需调试调用逻辑;
    • 第三方接口(如支付、短信)无法频繁调用(有调用次数限制);
    • 异常场景模拟(如模拟接口超时、返回错误码)。
  • 核心价值:打破 “前端等后端” 的依赖瓶颈,提前暴露前端逻辑缺陷,提升迭代效率。

2. Postman Mock Server 实战步骤

Postman 自带 Mock Server 功能,无需额外部署,适合快速搭建模拟接口:

  1. 创建 Mock Server

    • 点击 Postman 左侧「Mock Servers」→「Create Mock Server」;
    • 填写 Mock 名称(如 “登录接口 Mock”)、请求 URL(如/api/login)、请求方法(POST);
    • 设置响应状态码(如 200)、响应体(JSON 格式,如{"code":0,"message":"登录成功","token":"mock_token_123"});
    • 完成创建后,Postman 自动生成 Mock 地址(如https://xxx.mock.postman.co)和同名环境变量。
  2. 配置与调用模拟接口

    • 切换至创建的 Mock 环境,在请求中使用生成的 Mock URL;
    • 发送请求后,将收到预设的响应数据,前端可基于此调试登录后的页面跳转、token 存储等逻辑。
  3. 进阶配置

    • 支持多场景模拟:为同一接口设置不同请求参数对应不同响应(如用户名错误返回{"code":-1,"message":"用户名不存在"});
    • 动态响应:通过 Postman 脚本生成随机数据(如动态 token、时间戳),提升模拟真实性。

3. Mock 测试关键注意事项

  • 模拟接口的请求 URL、参数格式、响应结构需与真实接口一致,避免后期适配成本;
  • 明确 Mock 接口的生命周期,后端接口开发完成后,及时切换为真实接口进行回归测试;
  • 重点覆盖异常场景(如接口超时、权限不足、数据格式错误),补充真实接口难以复现的场景。

二、接口加密解密:应对数据安全传输需求

为保障数据安全,企业接口常对敏感参数(如密码、手机号)进行加密传输,常见加密方式包括对称加密(Base64、AES)、非对称加密(RSA)、哈希加密(MD5),测试需精准还原加密逻辑才能正常调用接口。

1. 常见加密方式与测试逻辑

加密类型代表算法核心特点测试核心逻辑
哈希加密(不可逆)MD5明文加密后生成固定长度密文,无法解密按接口要求对参数加密,传入密文验证响应
对称加密(可逆)Base64、AES加密和解密使用同一密钥加密传入密文,必要时解密响应数据验证
非对称加密(可逆)RSA公钥加密、私钥解密,安全性高用公钥加密参数,验证接口是否正确解密

2. Postman 加密实战(MD5/Base64)

Postman 通过「Pre-request Script」(请求前脚本)实现参数加密,无需手动计算密文,效率更高。

(1)MD5 加密(以登录接口为例)

接口要求:用户名和密码需通过 MD5 加密后传输,禁止明文。

  1. 打开 Postman,新建 POST 请求,填写接口 URL(如/api/login);
  2. 编写 Pre-request Script 脚本,对参数加密并存储为环境变量:
// 定义明文参数 const username = "admin"; const password = "123456"; // MD5加密(需引入CryptoJS库,Postman自带) const encryptedUsername = CryptoJS.MD5(username).toString(); const encryptedPassword = CryptoJS.MD5(password).toString(); // 存储为环境变量 pm.environment.set("encryptedUsername", encryptedUsername); pm.environment.set("encryptedPassword", encryptedPassword);
  1. 在请求参数中引用环境变量:
{ "username": "{{encryptedUsername}}", "password": "{{encryptedPassword}}" }
  1. 发送请求,验证接口是否正常响应(状态码 200 且返回 token)。
(2)Base64 加密(以用户信息接口为例)

接口要求:用户 ID 和姓名通过 Base64 加密传输。

  1. Pre-request Script 脚本:
const userId = "1001"; const userName = "张三"; // Base64加密(UTF-8编码后加密) const encryptedUserId = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(userId)); const encryptedUserName = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(userName)); pm.environment.set("encryptedUserId", encryptedUserId); pm.environment.set("encryptedUserName", encryptedUserName);
  1. 引用变量发送请求,Base64 加密可逆,可通过在线工具解密响应数据验证正确性。

3. RSA 加密测试要点(进阶)

RSA 加密涉及公钥 / 私钥机制,测试需注意:

  • 向开发获取公钥,用于加密请求参数;
  • Postman 需引入第三方 RSA 库(如jsencrypt),脚本中加载公钥并加密;
  • 重点验证 “加密参数是否能被接口正确解密”,避免因密钥不匹配导致请求失败。

4. 加密接口测试避坑指南

  • 加密前需确认参数编码格式(如 UTF-8),避免因编码不一致导致密文错误;
  • 手动加密时(如在线工具),需去除密文首尾空格,否则接口无法识别;
  • 响应数据若加密,需在「Tests」脚本中解密后断言(如验证返回的用户名是否与加密前一致)。

三、Fiddler 抓包:接口信息缺失的调试利器

接口测试常遇到 “需求文档不完整”(如缺少请求头、参数格式不明确)的问题,Fiddler 作为专业抓包工具,可捕获 Web/APP/ 小程序的接口请求与响应,补充缺失的测试信息。

1. Fiddler 核心作用与工作原理

  • 核心作用:作为 HTTP/HTTPS 代理,拦截客户端(浏览器、手机 APP)与服务器之间的所有请求,获取接口 URL、请求头、参数、响应数据等完整信息;
  • 工作原理
    • 请求流程:客户端→Fiddler(拦截)→服务器;
    • 响应流程:服务器→Fiddler(拦截)→客户端;
  • 优势:支持跨端抓包(Web、APP、小程序),功能比浏览器 F12 更全面(如弱网模拟、数据替换)。

2. Fiddler 安装与基础配置

  1. 安装步骤

    • 下载 Fiddler 安装包,默认下一步完成安装;
    • 配置 HTTPS 抓包(关键):打开 Fiddler→「Tools」→「Options」→「HTTPS」,勾选 “Decrypt HTTPS traffic”,安装根证书并信任;
    • 配置允许远程连接(用于 APP 抓包):「Connections」→勾选 “Allow remote computers to connect”,端口默认 8888。
  2. 界面核心组件

    • 会话列表:显示所有捕获的接口请求,包含协议、URL、状态码、数据大小等;
    • Inspect 页签:查看单个接口的请求头、请求体、响应头、响应体(支持 JSON、HTML、文本格式预览);
    • Composer 页签:模拟发送接口请求(类似 Postman,适合快速调试);
    • AutoResponder 页签:实现请求重定向(如替换线上接口响应为本地文件)。

3. 实战场景:抓包与接口调试

(1)Web 端接口抓包(补充请求头信息)

当接口文档仅提供 URL,缺少请求头导致调用失败时:

  1. 打开 Fiddler,浏览器访问目标网页(如百度搜索),Fiddler 自动捕获所有接口;
  2. 在会话列表中找到目标接口(如搜索接口/s),查看 Inspect 页签的请求头(如 User-Agent、Cookie、Accept);
  3. 将捕获的请求头复制到 Postman/JMeter,补充后重新发送请求,接口即可正常响应。
(2)APP 端接口抓包(获取完整参数)

需抓取手机 APP 的接口时:

  1. 确保手机与电脑处于同一 WiFi 网络,查询电脑 IP(cmd 输入ipconfig);
  2. 手机 WiFi 设置中手动配置代理:代理服务器主机名(电脑 IP)、端口(8888);
  3. 手机安装 Fiddler 根证书(打开手机浏览器访问http://电脑IP:8888,下载并安装证书);
  4. 打开 APP 操作目标功能,Fiddler 即可捕获 APP 的接口请求,获取完整参数和响应数据。
(3)弱网测试(模拟网络延迟)

通过 Fiddler 模拟弱网环境,验证接口稳定性:

  1. 打开 Fiddler→「Rules」→「Performance」→勾选 “Simulate Modem Speeds”(默认弱网配置);
  2. 进阶配置:编辑脚本自定义延迟,点击「Rules」→「Customize Rules」,搜索 “simulate”,修改上传 / 下载延迟参数:
m_SimulateModem = true; // 上传延迟:每KB数据延迟300毫秒 oSession["request-trickle-delay"] = "300"; // 下载延迟:每KB数据延迟100毫秒 oSession["response-trickle-delay"] = "100";
  1. 保存脚本后,发送接口请求,验证接口是否能耐受网络延迟(如无超时、无数据丢失)。
(4)请求重定向(生产环境调试)

需修改线上接口响应进行调试时(如替换线上图片为本地文件):

  1. Fiddler 捕获目标接口(如图片接口/logo.png);
  2. 点击「AutoResponder」→「Add Rule」,设置 “Match Request” 为捕获的接口 URL,“Action” 为 “Find a file”,选择本地替换文件;
  3. 勾选 “Enable rules” 和 “Ignore cache”,刷新页面即可看到替换后的效果,实现无侵入式调试。

4. Fiddler 抓包避坑指南

  • 抓不到 HTTPS 接口:检查是否安装并信任根证书,手机抓包需确保证书已安装;
  • APP 抓包失败:确认手机与电脑同网段,代理端口与 Fiddler 配置一致;
  • 会话列表杂乱:使用「Filters」功能过滤(如按主机 IP、接口类型筛选),隐藏无关请求(如图片、CSS)。

四、接口自动化测试报告生成(JMeter+Ant)

接口测试完成后,需生成标准化报告供团队分析,JMeter 结合 Ant 可生成 HTML 格式的可视化报告,支持持续集成。

1. 环境准备

  1. 安装 Ant 工具:下载 Ant 压缩包,解压后配置环境变量(系统变量ANT_HOME为解压路径,Path 追加%ANT_HOME%\bin);
  2. 验证 Ant 安装:cmd 输入ant -version,显示版本号即成功;
  3. 配置 JMeter:修改 JMeter 安装目录下bin/jmeter.properties文件:
    • 搜索jmeter.save.saveservice.output_format,改为xml(默认 csv);
    • 搜索jmeter.save.saveservice.response_data,改为true(显示响应数据);
    • 保存配置并重启 JMeter。

2. 生成测试报告

  1. 编写 JMeter 脚本:完成接口测试(含参数化、断言),保存为.jmx文件;
  2. 创建 Ant 配置文件(build.xml),放在 JMeter 脚本同级目录,配置核心参数:
<project name="接口自动化测试报告" default="run" basedir="."> <!-- JMeter安装路径 --> <property name="jmeter.home" value="D:\apache-jmeter-5.6"/> <!-- 脚本路径 --> <property name="test.script" value="test_api.jmx"/> <!-- 报告输出路径 --> <property name="report.html" value="D:\test_reports\html"/> <property name="report.jtl" value="D:\test_reports\jtl\result.jtl"/> <target name="run"> <!-- 执行JMeter脚本,生成JTL原始数据 --> <exec executable="${jmeter.home}\bin\jmeter.bat" failonerror="true"> <arg value="-n"/> <arg value="-t"/> <arg value="${test.script}"/> <arg value="-l"/> <arg value="${report.jtl}"/> </exec> <!-- 生成HTML报告 --> <jmeter-report jmeterhome="${jmeter.home}" testlog="${report.jtl}" reportdir="${report.html}"/> </target> </project>
  1. 执行命令生成报告:
    • cmd 切换至脚本目录,输入ant,执行完成后生成 JTL 原始数据和 HTML 报告;
    • 打开 HTML 报告,可查看接口通过率、响应时间、请求 / 响应详情等关键指标。

五、总结:接口测试进阶能力图谱

接口测试的进阶之路,本质是 “解决实际业务痛点” 的过程:

  • Mock 测试打破 “依赖瓶颈”,让测试提前介入;
  • 加密解密应对 “安全需求”,覆盖敏感数据传输场景;
  • Fiddler 抓包解决 “信息缺失”,搞定调试难题;
  • 自动化报告实现 “结果可视化”,支撑持续集成。

掌握这些技能后,你将能应对复杂业务场景的接口测试需求,从 “单纯调用接口” 升级为 “全链路质量保障”。实际测试中,需结合工具特性灵活选择(如快速 Mock 用 Postman、大规模自动化用 JMeter、复杂抓包用 Fiddler),同时注重流程规范化,才能高效保障接口质量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 10:40:55

IT62633:单芯片高速LVDS转HDMI 2.0转换器

该IT62633是一款高性能单芯片De-SSC LVDS转HDMI转换器&#xff0c;结合了高速LVDS接收器和HDMI 2.0b发射器。IT62633支持LVDS输入和HDMI 2.0b输出&#xff0c;通过转换功能实现。内置的高速LVDS接收机支持1/2链路和最高10位色深。为了减少传统系统应用中的EMI噪声&#xff0c;传…

作者头像 李华
网站建设 2026/4/8 11:34:55

探索Bandgap带隙基准:新手友好指南

Bandgap 带隙基准&#xff0c;基准电压&#xff0c;参考电压带启动电路&#xff0c;无版图&#xff0c;适合新手 每个testbench都有单独的仿真状态&#xff0c;直接安装就可以跑了 温度特性曲线 电源抑制比psr仿真 稳定性仿真&#xff0c;整个环路的增益和相位怎么仿真 噪声仿真…

作者头像 李华
网站建设 2026/3/29 14:22:48

作业--数组

一、单选题1. 第7周测验2. 第7周 练兵区——单选题二、编程题1. 从键盘输入某班学生的学号和某门课成绩&#xff08;每班人数最多不超过40人&#xff0c;具体人数由键盘输入&#xff09;&#xff0c;试编程打印最高分和最低分以及对应的学生序号。#include <stdio.h> #in…

作者头像 李华
网站建设 2026/4/10 11:56:58

【案例分享】风扇轴承电腐蚀?先搞懂轴电压是怎么来的

大家好&#xff0c;我是老林。1、真实案例&#xff1a;上周收到一位电子厂客户的求助&#xff1a;他们的双滚珠轴承风扇&#xff0c;在 85℃老化测试箱里跑了 1380 小时&#xff0c;拆开后发现轴承油脂全碳化了&#xff0c;沟道上密密麻麻全是电腐蚀小坑 —— 明明已经判定是电…

作者头像 李华
网站建设 2026/4/9 13:52:02

非计算机科班如何顺利转行网络安全领域?

非计算机科班如何顺利转行网络安全领域&#xff1f; 一、前言 近年来&#xff0c;很多人想要从其他行业跳槽转入网络安全领域。非计算机科班如何丝滑转码&#xff1f; 跨行转其实很常见&#xff0c;特别是当下比较火的行业&#xff0c;目前较火的网络安全尤其常见&#xff0…

作者头像 李华