软件测试工程师必看:手把手教你用Fiddler进行数据抓包与分析

软件测试工程师必看:手把手教你用Fiddler进行数据抓包与分析

作为软件测试工程师,你是否曾经遇到过这些场景:前端显示异常但却无法确定是前端还是后端问题;需要测试接口但缺乏详细文档;想要验证移动应用的网络请求是否正确;或是需要模拟弱网环境测试应用表现?

这些常见测试挑战都可以通过掌握一款强大工具来解决——Fiddler。本文将全面介绍软件测试工程师如何利用Fiddler进行数据抓包与分析,提升测试效率与深度。

一、Fiddler简介与测试中的应用价值

1.1 什么是Fiddler?

Fiddler是一款免费的HTTP/HTTPS协议分析工具,由Telerik公司开发。它作为代理服务器运行,能够捕获所有通过它的网络流量,提供详细的请求和响应分析功能。相比于浏览器自带的开发者工具,Fiddler的优势在于能够捕获非浏览器流量(如桌面应用、移动应用)并且提供更强大的数据操纵能力。

1.2 Fiddler在软件测试中的核心价值

对于软件测试工程师而言,Fiddler提供了以下关键价值:

接口测试与分析:无需文档即可分析接口请求和响应结构

前后端问题定位:精确判断问题是出自前端、后端还是网络层面

性能测试辅助:分析请求耗时,找出性能瓶颈

安全测试支持:检查敏感信息是否明文传输

模拟测试环境:模拟各种网络条件、修改响应数据等

自动化测试集成:与测试脚本结合增强测试能力

二、Fiddler安装与基础配置

2.1 安装Fiddler

Fiddler可在官网(https://www.telerik.com/fiddler)免费下载。安装过程简单,只需注意以下几点:

Windows系统建议Windows 7及以上版本

安装时需要.NET Framework支持

建议以管理员身份运行安装程序

2.2 基础配置指南

首次使用Fiddler需要进行一些基本配置:

配置HTTPS抓包:

打开Tools > Options > HTTPS

勾选"Capture HTTPS CONNECTs"和"Decrypt HTTPS traffic"

安装Fiddler根证书(会弹出提示)

根据需要配置"Ignore server certificate errors"选项

配置连接设置:

打开Tools > Options > Connections

设置监听端口(默认8888)

勾选"Allow remote computers to connect"(用于移动设备抓包)

配置抓包过滤器:

在Filters选项卡中配置过滤条件

可基于主机名、进程等条件过滤请求

三、Fiddler界面详解与基本操作

3.1 主界面功能区域介绍

Fiddler界面分为以下几个主要区域:

会话列表:显示捕获的所有HTTP请求,包含状态码、协议、主机名、URL、大小等信息

请求查看器:显示选中请求的详细信息,包括 headers、文本视图、Hex视图等

响应查看器:显示服务器返回的响应内容

工具栏:提供常用功能的快捷访问

状态栏:显示当前抓包状态和统计信息

3.2 基本抓包操作

开始/停止抓包:

点击File > Capture Traffic或使用快捷键F12

状态栏左侧显示"Capturing"表示正在抓包

清空会话列表:

点击Edit > Remove > All Sessions或使用Ctrl+X

保存会话数据:

点击File > Save > All Sessions可保存为SAZ格式(Fiddler专用格式)

也可导出为其他格式如HTTPArchive格式

四、数据抓包实战技巧

4.1 浏览器流量抓取

浏览器流量抓取是Fiddler最基本的功能。只需确保浏览器代理设置为Fiddler监听端口(默认8888),Fiddler即可捕获所有浏览器发起的请求。

注意事项:

某些浏览器(如Chrome)可能使用系统代理设置,而其他浏览器可能需要手动配置

使用完毕后记得恢复代理设置,否则可能导致无法上网

4.2 移动设备流量抓取

移动应用测试是Fiddler的重要应用场景,配置步骤如下:

确保PC和移动设备在同一局域网

查找PC的IP地址:在Fiddler中点击Online > Get Computer IP获取

移动设备配置代理:在Wi-Fi设置中手动配置代理,服务器为PC的IP地址,端口为8888

在移动设备上安装Fiddler根证书:浏览器访问http://:8888,下载并安装证书

开始抓包:操作移动应用,Fiddler将捕获所有网络请求

iOS设备特别注意:iOS 10.3及以上版本需要在"设置 > 通用 > 关于本机 > 证书信任设置"中启用Fiddler根证书

4.3 桌面应用程序抓包

对于桌面应用程序,有以下几种抓包方式:

如果应用使用系统代理设置,Fiddler可直接捕获

如果应用不使用系统代理,可使用WinINET代理强制工具(如Fiddler的Hook功能)

对于特别顽固的应用,可能需要使用路由级重定向技术

4.4 过滤目标请求技巧

当会话列表中有大量请求时,使用过滤功能可以快速定位目标请求:

使用Filters选项卡:

在Hosts过滤器中指定只显示特定域名的请求

使用Process过滤只显示特定进程产生的请求

使用命令行快速过滤:

在左下角QuickExec框中输入"urls www.example.com"只显示该域名请求

输入"select image"选择所有图片请求

使用搜索功能:

点击Edit > Find Sessions或使用Ctrl+F搜索特定内容

五、数据分析与解读

5.1 理解HTTP请求结构

在Fiddler中选中一个会话,查看Inspectors标签页的Raw部分,可以看到完整的HTTP请求:

GET /api/user/info HTTP/1.1Host: api.example.comConnection: keep-aliveAccept: application/json, text/plain, */*User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

测试工程师需要关注的关键要素:

请求方法(GET/POST/PUT/DELETE等)

请求URL和参数

请求头信息(认证信息、内容类型等)

请求体(对于POST/PUT请求)

5.2 理解HTTP响应结构

HTTP响应示例:

HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8Date: Wed, 01 Sep 2021 07:23:41 GMTContent-Length: 125{ "status": "success", "data": { "userId": 12345, "userName": "tester", "email": "tester@example.com" }}

测试工程师需要关注的关键要素:

状态码(200成功、404未找到、500服务器错误等)

响应头信息(内容类型、缓存控制等)

响应体内容(需要验证其正确性)

5.3 性能数据分析

通过Fiddler可以分析请求的性能特征:

时序统计信息:

DNS解析时间:域名解析耗时

TCP连接时间:建立TCP连接耗时

HTTPS握手时间:SSL/TLS握手耗时

请求发送时间:发送请求数据耗时

服务器响应时间:服务器处理请求耗时

响应接收时间:下载响应数据耗时

性能分析技巧:

关注耗时异常的请求

比较同一请求在不同条件下的性能

使用Timeline视图直观查看请求时间线

5.4 安全数据分析

从安全测试角度,需要关注以下方面:

敏感信息是否明文传输(密码、令牌等)

是否使用适当的加密协议(HTTPS而非HTTP)

认证和授权机制是否合理

是否存在不必要的敏感信息泄露

六、高级调试与 mock 技术

6.1 断点调试技术

Fiddler提供了强大的断点功能,可以中断请求和响应进行调试:

设置请求断点:

在QuickExec框输入"bpu www.example.com"中断指定域名请求

输入"bpu"取消所有请求断点

设置响应断点:

在QuickExec框输入"bpafter www.example.com"中断指定域名响应

输入"bpafter"取消所有响应断点

断点调试应用场景:

修改请求参数测试不同输入条件下的行为

修改响应数据测试前端对不同数据的处理

模拟服务器错误响应测试客户端容错能力

6.2 AutoResponder 模拟技术

AutoResponder是Fiddler最强大的功能之一,允许使用本地文件或预设响应代替实际服务器响应:

基本配置步骤:

拖拽会话到AutoResponder选项卡

点击"Add Rule"创建规则

选择或创建响应文件

启用"Unmatched requests passthrough"确保不匹配的请求正常通过

常见应用场景:

模拟接口返回数据测试前端表现

模拟错误状态码测试应用容错

替换大型资源(如图片、视频)提高测试效率

模拟尚未开发完成的接口进行前端测试

高级匹配规则:

使用EXACT:前缀进行精确匹配

使用REGEX:前缀使用正则表达式匹配

使用通配符*进行模糊匹配

6.3 Fiddler Script扩展功能

通过Fiddler Script可以自定义Fiddler行为,实现高度定制化的抓包和修改功能:

常见脚本应用:

自动修改特定请求或响应

添加自定义日志记录

实现复杂的AutoResponder逻辑

自定义性能指标计算

示例脚本:在请求头中添加自定义标记

static function OnBeforeRequest(oSession: Session) { if (oSession.uriContains("example.com")) { oSession.oRequest["X-Custom-Header"] = "FiddlerAdded"; }}

七、性能测试与弱网模拟

7.1 网络性能分析

Fiddler提供了多种性能分析工具:

Statistics选项卡:

显示选中请求的性能统计数据

提供多个请求的聚合统计数据

显示网络带宽利用率估算

TimeLine视图:

图形化显示请求发生时间和耗时

直观识别性能瓶颈

支持按时间范围筛选请求

7.2 弱网环境模拟

使用Fiddler可以模拟各种网络条件,测试应用在弱网环境下的表现:

模拟配置步骤:

打开Rules > Performance > Simulate Modem Speeds

或使用Customize Rules手动配置网络条件

手动配置网络模拟:在Customize Rules脚本中修改以下值:

// 上传速度 (bps)oSession["request-trickle-delay"] = "150"; // 下载速度 (bps)oSession["response-trickle-delay"] = "150";

典型网络条件模拟值:

4G网络:上传/下载延迟为50-100ms

3G网络:上传/下载延迟为100-200ms

2G网络:上传/下载延迟为300-1000ms

极差网络:上传/下载延迟为2000ms以上

八、Fiddler与其他工具集成

8.1 与测试框架集成

Fiddler可以与自动化测试框架集成,增强测试能力:

与Selenium集成:

通过代理配置使Selenium使用Fiddler代理

在测试过程中捕获和分析网络请求

使用AutoResponder模拟网络条件

与Postman集成:

将Fiddler捕获的请求导出为Postman集合

使用Fiddler分析Postman发送的请求

8.2 与持续集成流程集成

虽然Fiddler主要是GUI工具,但也可以通过命令行方式集成到CI流程中:

Fiddler命令行用法:

fiddler.exe /capture /startfiddler.exe /capture /stopfiddler.exe /export /format:har /output:output.har

九、常见问题与解决方案

9.1 抓包常见问题

无法捕获HTTPS流量:

确认已安装Fiddler根证书

检查浏览器/设备证书信任设置

尝试重置Fiddler证书(Tools > Options > HTTPS > Actions > Reset Certificates)

移动设备无法连接:

确认PC和设备在同一网络

检查防火墙设置,允许8888端口通信

尝试使用PC IP地址而非主机名

9.2 性能分析问题

Fiddler自身性能影响:

Fiddler作为代理会对网络性能有一定影响

对于性能敏感测试,应考虑这种影响

测试完成后记得关闭Fiddler或恢复代理设置

十、最佳实践与总结

10.1 Fiddler使用最佳实践

规范化抓包流程:建立团队统一的抓包和分析流程

合理使用过滤:避免捕获过多无关请求提高效率

注意安全隐私:处理敏感数据时遵守公司安全政策

定期清理会话:长时间抓包会导致内存占用过高

结合其他工具:Fiddler与其他测试工具配合使用效果更佳

10.2 测试工程师的Fiddler技能矩阵

根据经验水平,测试工程师应掌握以下Fiddler技能:

初级:

基本抓包和查看能力

简单过滤和搜索

基础性能数据分析

中级:

HTTPS和移动设备抓包

AutoResponder使用

断点调试技巧

弱网模拟配置

高级:

Fiddler Script编写

与自动化测试集成

复杂性能分析

安全测试应用

10.3 总结

Fiddler是软件测试工程师工具箱中不可或缺的利器,掌握了Fiddler的使用,测试工程师能够:

更深入理解系统工作原理

更快速定位和诊断问题

更全面进行接口和性能测试

更有效模拟各种测试环境

希望通过本文的详细介绍,你能全面掌握Fiddler在软件测试中的应用,提升自己的测试技能和效率。记住,工具只是手段,真正的价值在于如何利用工具发现和解决实际问题。

不断练习和实践,将Fiddler变成你的第二双眼睛,看清网络流量背后的真相,成为一名更加优秀的测试工程师。

本文原创于【程序员二黑】公众号,转载请注明出处!

欢迎大家关注笔者的公众号:程序员二黑,专注于软件测试干活分享,全套测试资源可免费分享!

最后如果你想学习软件测试,欢迎加入笔者的交流群:785128166,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!

相关推荐

亚琛世界马术节
mobile365bet365com

亚琛世界马术节

📅 09-01 👁️ 2544
当苹果芯片跌落神坛
爱彩365彩票官方app下载

当苹果芯片跌落神坛

📅 07-13 👁️ 6967
世界杯-帕帕佩特卢27分 希腊逆转新西兰晋级
爱彩365彩票官方app下载

世界杯-帕帕佩特卢27分 希腊逆转新西兰晋级

📅 09-07 👁️ 5401
!恒慧融平台现状:是否真的已经倒闭?
爱彩365彩票官方app下载

!恒慧融平台现状:是否真的已经倒闭?

📅 07-01 👁️ 6816
麦当劳今年近半新餐厅将开在中国
365bet足球实时动画

麦当劳今年近半新餐厅将开在中国

📅 09-08 👁️ 1602
佛法:为什么有的人行善要遭恶报,而作恶的人却能享受善报!
鸟鸣与天气变化
爱彩365彩票官方app下载

鸟鸣与天气变化

📅 08-10 👁️ 1993
进水处理要多少钱
mobile365bet365com

进水处理要多少钱

📅 07-26 👁️ 2732
平板电脑如何用手机涨流量?流量共享方法是什么?