我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/6. Fiddler 抓包怎么辅助定位 Bug

6. Fiddler 抓包怎么辅助定位 Bug?

Fiddler 是测试工程师常用的 HTTP 抓包和调试工具,尤其在 Windows 环境中非常普遍。它可以帮助测试人员查看浏览器或客户端发出的请求、分析响应内容、定位前后端问题、模拟异常返回、修改请求参数、复现接口问题。和 Charles 类似,Fiddler 的核心价值不是“能抓包”,而是用抓包证据把 Bug 定位清楚。

很多测试同学提 Bug 时只写“页面显示不对”“接口报错”“按钮没反应”。开发拿到后还要自己猜是前端问题、接口问题、数据问题还是环境问题。如果你能通过 Fiddler 把请求 URL、请求参数、响应状态码、响应体、耗时和错误信息贴出来,Bug 的定位效率会高很多。

一、Fiddler 在测试中的常见用途

1. 查看接口请求

页面点击一个按钮后,到底发了哪个接口?请求方式是什么?参数是什么?Fiddler 可以直接看到。

2. 查看接口响应

接口返回了什么数据?业务 code 是多少?message 是什么?页面展示是否和响应一致?这些都可以通过响应体判断。

3. 判断前后端问题

如果响应正确但页面错,多半是前端;如果响应就错,多半是后端或数据;如果请求参数错,可能是前端传参问题。

4. 模拟异常场景

通过 AutoResponder 或断点,可以模拟接口返回 500、超时、空数据、异常字段,测试前端容错。

5. 分析接口耗时

Fiddler 可以查看请求耗时,帮助判断页面慢是否由某个接口慢导致。

二、Fiddler 抓包基本流程

  1. 打开 Fiddler;
  2. 确认浏览器或客户端流量经过 Fiddler 代理;
  3. 如果抓 HTTPS,安装并信任证书;
  4. 执行业务操作;
  5. 在会话列表中找到目标请求;
  6. 查看 Inspectors 中的 Request 和 Response;
  7. 分析参数、Header、状态码、响应体和耗时。

抓包时建议先清空历史请求,再执行操作,这样更容易定位目标接口。

三、Fiddler 重点看哪些信息

1. Host 和 URL

确认请求发到了哪个服务、哪个接口路径。有时问题是前端调用了错误域名或旧接口。

2. HTTP Method

GET、POST、PUT、DELETE 是否符合接口设计。比如删除接口错误地用了 GET,可能有安全和缓存问题。

3. Request Headers

重点看 Token、Cookie、Content-Type、Referer、User-Agent。有些 401 或 403 问题就是鉴权信息没带。

4. Request Body

确认参数是否完整、字段名是否正确、类型是否正确。例如金额传字符串还是数字,订单号是否为空。

5. Response Status

HTTP 状态码能初步判断请求结果。500 说明服务端异常,401 说明未认证,403 说明无权限,404 说明接口路径可能不对。

6. Response Body

业务系统通常还有业务 code 和 message。HTTP 200 但业务 code 失败,也要算接口业务失败。

7. Time / Duration

接口耗时过长可能导致页面加载慢、超时或用户重复点击。

四、用 Fiddler 定位 Bug 的经典思路

场景:页面点击保存提示失败

定位步骤:

  1. 清空 Fiddler 会话;
  2. 点击页面保存;
  3. 找到保存接口;
  4. 查看请求参数是否符合页面输入;
  5. 查看响应状态码和业务 code;
  6. 如果请求参数错,前端问题;
  7. 如果参数正确但响应失败,看 message 和日志,后端问题;
  8. 如果响应成功但页面提示失败,看前端处理逻辑。

这就是抓包工具辅助定位的价值。

五、Fiddler AutoResponder 怎么用

AutoResponder 可以把某个请求的响应替换成本地文件或自定义响应。常用于模拟服务端异常。

比如你想测试前端在订单列表接口返回空数组时的展示,可以准备一个本地 JSON:

{
  "code": 0,
  "data": []
}

然后用 AutoResponder 映射订单列表接口,刷新页面看是否展示“暂无数据”。

也可以模拟 500 错误、字段缺失、超长文本、异常状态等。

六、Fiddler 断点修改请求

Fiddler 支持在请求发送前或响应返回前打断点。测试可以修改参数来验证后端校验。

例如前端限制商品数量最多 99,但你可以用断点把数量改成 9999,观察后端是否拦截。如果后端没校验,说明存在安全或业务风险。

常见可测试场景:

  • 修改金额;
  • 修改用户 ID;
  • 修改角色权限;
  • 删除必填字段;
  • 修改订单状态;
  • 构造超长字符串。

注意:这类测试要在测试环境进行,不能影响生产数据。

七、Fiddler 和 Charles 的区别

两者都能抓包。简单说:

  • Fiddler 在 Windows 上使用广泛,HTTP 调试能力强;
  • Charles 跨平台体验好,移动端和弱网测试使用较多;
  • 两者都可以抓 HTTPS、改请求、看响应;
  • 面试中不用争哪个更好,重点讲你如何用它定位问题。

八、完整案例:订单金额显示错误

现象:订单详情页显示金额 99 元,但用户实际支付 89 元。

定位:

  1. 用 Fiddler 抓订单详情接口;
  2. 查看响应体中订单金额字段;
  3. 如果接口返回 89,但页面显示 99,前端展示或字段取值问题;
  4. 如果接口返回 99,再查数据库订单表和支付流水;
  5. 如果数据库订单金额 99、支付流水 89,后端金额计算或优惠券逻辑问题;
  6. 如果数据库也是 89,但接口返回 99,后端查询或缓存问题。

抓包只是第一步,结合数据库才能定位更准。

九、Bug 报告里怎么写抓包证据

建议包含:

  • 请求 URL;
  • 请求方式;
  • 请求参数;
  • 响应状态码;
  • 响应业务 code;
  • 响应体关键字段;
  • 实际页面结果;
  • 期望结果;
  • 初步判断。

示例:

点击保存后,接口 /api/address/update 返回 HTTP 200,但业务 code=4001,message=手机号格式错误。Fiddler 抓包显示前端传参 mobile 为空,页面输入框实际已填写手机号。初步判断前端提交参数绑定异常。

这种 Bug 描述比“保存失败”高质量很多。

十、面试回答模板

如果面试官问“Fiddler 怎么辅助定位 Bug”,可以这样回答:

我主要用 Fiddler 查看页面或客户端发出的接口请求和响应。比如页面展示异常时,我会抓包看请求 URL、参数、Header、状态码、业务 code 和响应体。如果请求参数就错,通常定位到前端传参;如果参数正确但响应错误,再结合日志和数据库定位后端;如果响应正确但页面展示错误,通常是前端渲染问题。另外我也会用 AutoResponder 或断点模拟异常响应、修改请求参数,验证前端容错和后端参数校验。

十一、常见追问

追问:Fiddler 如何抓 HTTPS?

需要安装并信任 Fiddler 证书,开启 HTTPS 解密,然后重新访问目标页面。

追问:如何用 Fiddler 判断是前端还是后端问题?

看请求参数和响应结果。参数错偏前端,响应错偏后端,响应正确但页面错偏前端展示。

追问:怎么模拟服务端返回异常?

可以用 AutoResponder 映射本地响应,或者用断点修改响应内容,模拟 500、空数据、字段缺失等场景。

十二、练习清单

  1. 用 Fiddler 抓登录接口;
  2. 查看请求 Header 和 Body;
  3. 查看响应状态码和业务 code;
  4. 分析一个页面展示异常;
  5. 用 AutoResponder 模拟空列表;
  6. 用断点修改请求参数;
  7. 测试后端是否校验金额;
  8. 抓 HTTPS 请求;
  9. 写一份带 Fiddler 证据的 Bug;
  10. 准备 Fiddler 面试回答。

Fiddler 的核心价值是让问题有证据。能把抓包结果转化为定位结论,才是测试工程师真正应该掌握的能力。

配套刷题: