作为软件测试工程师,你是否曾经遇到过这些场景:前端显示异常但却无法确定是前端还是后端问题;需要测试接口但缺乏详细文档;想要验证移动应用的网络请求是否正确;或是需要模拟弱网环境测试应用表现?
这些常见测试挑战都可以通过掌握一款强大工具来解决——Fiddler。本文将全面介绍软件测试工程师如何利用Fiddler进行数据抓包与分析,提升测试效率与深度。
一、Fiddler简介与测试中的应用价值1.1 什么是Fiddler?Fiddler是一款免费的HTTP/HTTPS协议分析工具,由Telerik公司开发。它作为代理服务器运行,能够捕获所有通过它的网络流量,提供详细的请求和响应分析功能。相比于浏览器自带的开发者工具,Fiddler的优势在于能够捕获非浏览器流量(如桌面应用、移动应用)并且提供更强大的数据操纵能力。
1.2 Fiddler在软件测试中的核心价值对于软件测试工程师而言,Fiddler提供了以下关键价值:
接口测试与分析:无需文档即可分析接口请求和响应结构前后端问题定位:精确判断问题是出自前端、后端还是网络层面性能测试辅助:分析请求耗时,找出性能瓶颈安全测试支持:检查敏感信息是否明文传输模拟测试环境:模拟各种网络条件、修改响应数据等自动化测试集成:与测试脚本结合增强测试能力二、Fiddler安装与基础配置2.1 安装FiddlerFiddler可在官网(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请求:
代码语言:javascript代码运行次数:0运行复制GET /api/user/info HTTP/1.1
Host: api.example.com
Connection: keep-alive
Accept: 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响应示例:
代码语言:javascript代码运行次数:0运行复制HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Wed, 01 Sep 2021 07:23:41 GMT
Content-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逻辑自定义性能指标计算示例脚本:在请求头中添加自定义标记
代码语言:javascript代码运行次数:0运行复制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脚本中修改以下值:
代码语言:javascript代码运行次数:0运行复制// 上传速度 (bps)
oSession["request-trickle-delay"] = "150";
// 下载速度 (bps)
oSession["response-trickle-delay"] = "150";典型网络条件模拟值:
4G网络:上传/下载延迟为50-100ms3G网络:上传/下载延迟为100-200ms2G网络:上传/下载延迟为300-1000ms极差网络:上传/下载延迟为2000ms以上八、Fiddler与其他工具集成8.1 与测试框架集成Fiddler可以与自动化测试框架集成,增强测试能力:
与Selenium集成:
通过代理配置使Selenium使用Fiddler代理在测试过程中捕获和分析网络请求使用AutoResponder模拟网络条件与Postman集成:
将Fiddler捕获的请求导出为Postman集合使用Fiddler分析Postman发送的请求8.2 与持续集成流程集成虽然Fiddler主要是GUI工具,但也可以通过命令行方式集成到CI流程中:
Fiddler命令行用法:
代码语言:javascript代码运行次数:0运行复制fiddler.exe /capture /start
fiddler.exe /capture /stop
fiddler.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变成你的第二双眼睛,看清网络流量背后的真相,成为一名更加优秀的测试工程师。
本文原创于【程序员二黑】公众号,转载请注明出处!
欢迎大家关注笔者的公众号:程序员二黑,专注于软件测试干货分享