Fiddler 是一款免费、灵活、操作简单、功能强大的 HTTP 代理工具,是目前最常用的 HTTP 抓包工具之一。可以抓取所有的 HTTP/HTTPS 包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等功能。
本篇文章主要讲解如何使用Fiddler设置请求断点和响应断点。这个功能可用于辅助定位BUG、构建模拟测试场景等。
辅助定位BUG
通过Fiddler可以抓取request和response,通过对参数进行分析,可以定位是前端问题还是后台问题。例如:
在APP界面输入数据,点击下一步时,提示错误;这时候不能判断问题的根本原因在哪里,是前端页面作限制导致?还是前端request的参数问题,又或者是后台程序文明同?这个时候就可以通过Fiddler抓包,分析request、response来判断问题根本原因所在。
构建模拟测试场景
在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景;而仅仅通过页面端来发起往往是不能够模拟所有场景的。例如:
天气预报类APP,测试时只能根据当前的城市、天气情况来测试,如何快速的将全部天气信息匹配的icon?这就可以通过修改response数据来实现测试场景。
常见的登录功能,输入超出长度的的账号、密码,一般都是在前端就提示错误了,这样就不能够测试服务端接收到超出长度的请求时的处理场景了,这就可以通过修改request数据来实现测试场景。
一、设置请求断点
(一)在工具栏设置断点
在顶部菜单栏,依次点击Rules——Automatic Breakpoints——Before Requests,
Before Requests为在请求前设置断点,也可通过按F11开启。在工具栏设置断点后,会拦截所有的请求。
点击某一个请求的Run to completion或导航栏上的Go继续请求。
可通过依次点击Rules——Automatic Breakpoints——Disabled或按Shift+F11来关闭请求断点。
(二)使用命令设置断点
点击左侧请求栏底部的黑色命令框,输入命令,
用命令设置断点可以拦截某一个请求,区别于从工具栏中或按F11的全局拦截。
命令示例如下:
bpu url:在请求该地址之前设置断点,例如输入bpu www.baidu.com,敲击回车键,然后访问百度地址,
点击Run to completion或导航栏上的Go继续请求。
bpu:取消所有请求断点。输入完命令后敲击回车键,可取消所有请求断点。
(三)示例演示
访问某个网站,输入正确的用户名、密码和图片验证码。Fiddler开启请求断点,点击页面上的登录按钮,
Fiddler会拦截这个请求,
选中请求后点击请求栏的TextView,点击请求信息栏,可对数据进行更改。如下图所示将验证码改成错误的值,
点击Run to completion按钮,然后就可以看到响应500等信息了。
二、设置响应断点
(一)在工具栏设置断点
在顶部菜单栏,依次点击Rules——Automatic Breakpoints——After Responses,
After Responses为在服务器响应之后断点,也可通过按Alt+F11开启。在工具栏设置断点后,会拦截所有请求的响应。
点击某一个请求的Run to completion或导航栏上的Go继续返回响应信息。
可通过依次点击Rules——Automatic Breakpoints——Disabled或按Shift+F11来关闭响应断点。
(二)使用命令设置断点
点击左侧请求栏底部的黑色命令框,输入命令,
用命令设置断点可以拦截某一个请求的响应,区别于从工具栏中或按Alt+F11的全局拦截。
命令示例如下:
bpafter url:在请求该地址之前设置断点,例如输入bpafter www.baidu.com,敲击回车键,然后访问百度地址,
点击Run to completion或导航栏上的Go继续返回响应信息。
bpafter:取消所有响应断点。输入完命令后敲击回车键,可取消所有响应断点。
(三)示例演示
打开Fiddler后开启响应断点,再访问百度地址。选中请求后点击响应栏的TextView,点击响应信息栏,可对返回的数据进行更改。如下图所示,在百度部分导航栏的名称后面加上test,然后点击Run to completion按钮,
收到响应数据后,返回到百度页面查看,部分导航栏名称后面加上了test。