软件测试工程师必看:手把手教你用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,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]