一、本文背景:
今天更新我的第6篇博文了,本文分享一下我工作中是如何使用fiddler来配合测试的,很实在的一篇分享,欢迎大家阅读指正。
二、Fiddler是什么:
Fiddler是一个HTTP协议调试代理工具,以代理服务器的方式,监听系统的Http网络数据流动,具有一个强大的日志系统和数据格式化工具,可以帮助开发者更轻松地理解HTTP请求和响应。测试实际工作当中主要就是用来抓取接口信息,通过分析请求响应报文来分析问题。
三、Fiddler抓包工具的实际应用场景:
1、帮助测试定位bug:
通过fiddler可以抓取request和response,再通过对参数进行分析可以定位bug是前端还是后端的问题。
例如:在app界面输入数据时候,点击下一步时,页面提示错误,这个时候就不能判断出问题的根本所在,是前端页面限制导致的,还是前端request的参数问题,又或者是后台程序挂了。
解决办法就是利用fiddler对手机app进行抓包。
2、构建模拟测试场景(mock):
在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景。但是仅仅通过页面端发来的交易,往往是不能够模拟所有场景的。
例如:常见的登录功能,输入超出长度的账号和密码时,一般都是在前端页面就提示错误了,这样就不能够测试服务端接收到超过长度的请求时的处理场景了。
解决方案利用AutoResponsder功能,可以通过修改requset或者response的参数,来实现构建模拟测试场景。
3、app弱网模拟测试:
移动端测试区别于pc端测试的一点就是网络的多变性;不同的网络环境和网络制式的差异(进地铁、进电梯),都会对用户app造成一定的影响(包括app闪退、数据丢失等)。
解决方案:就是利用fiddler的simulate modem speeds功能,可以通过设置网络的上传、下载的流量大小来达到模拟弱网环境,从而实现弱网模拟测试,即通过延迟发送数据或者接收数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。
4、其他:
可以反馈性能问题,前端的性能数据可以通过fiddler的statistics和timeline来获取,从而为性能分析及优化提供依据。
四、Fiddler工具介绍:
1、基础介绍:
先下载并打开fiddler工具,下图是fiddler工具窗口界面介绍:
会话栏中一个请求就是一个会话,即一个session,主要包含了请求的ID编号、状态码、协议、主机名、URI、内容类型body大小、进程信息、自定义备注等信息。
[#]-- HTTP Request 的顺序,从 1 开始,按照页面加载请求的顺序递增[Result]-- HTTP 响应的状态。
[Protocol] --请求使用的协议《如 HTTP/HTTPS/FTP)
[Host]-- 请求地址的域名
[URL]--请求的服务器路径和文件名,也包括 GET 参数
[BODY]--请求的大小,以 byte 为单位
[Caching]--请求的缓存过时间或存控制 header等值
[Content-Type]--请求响应的类型(Content-Type)
[Process]--发出此请求的 Windows 进程及进程 ID
[Comments]一-用户通过即本或者右键菜单给此 session 增加的备注
[Custom]--用户可以通过脚本设置的自定义值
Protocol、Host和URL合起来是一个完整的请求地址。
2、菜单栏和工具条介绍:
如下图所示:
3、状态行和命令行介绍:
如下图所示:
在命令行中输入“help”,按“回车”,就会直接跳转到官网上,告诉你命令行里面命令的使用。
如:我在命令行里输入“?api”,点击回车键,那么fiddler将自动为我把URL中包含“api”的所有请求标记高亮。
下面进行状态行介绍:
(1):Capturing:
Capturing:出现capturing表示现在处于一个代理的功能。
点击【Capturing】可以设置代理或者说取消代理(fiddler将不再作为系统代理进行请求的录制)。
(2):All Processes:
All Process:点击进去可以选择查看那些进程。
All Processes:查看所有进程;
Web Browsers:仅查看web浏览器的所有进程;
Non-Browser:仅不查看web浏览器的所有进程;
Hide All:隐藏所有进程。
4、辅助标签+工具面板的介绍(使用最多)
(1):statistics:
Statistics:统计信息,主要是统计一些性能相关方面的信息。http请求性能和一些数据分析内容,如:DNS解析的时间和tcp/ip链接消耗的时间等。
(2):Inspctors(检查器):
检查请求使用的,直接双击请求就可以打开Inspactors.
将以各种形式来检查 请求报文 和 响应报文 两部分的内容:
(不知道为啥图片贴反了,调不过来了,抱一丝哈~)
以不同的形式(Headers、Raw、JSON等)来展示请求报文的信息或者请求报文的部分信息。
响应报文这块也是如此,相似与请求报文,不在赘余介绍:
然后主要就是对请求和响应内容进行分析了,这个后面找个例子单独分享一篇如何分析接口请求和响应内容。
(3):AutoResponder(自动响应器):
可用于拦截某一请求,重定向到本地资源。
比如,拦截某一请求,上传本地图片覆盖服务器返回的图片,最终返回客户端呈现的就是本地上传的图片,不过很多公司都做了防坏人冒充服务器修改数据的措施。
然后,再浏览器内刷新这个网址,可以看看网址本身的图片已经被篡改了。
需要注意的是,在使用AutoResponder时,需要谨慎操作,避免修改请求或响应数据导致系统运行异常。同时,也需要注意不要在生产环境中随意使用AutoResponder进行调试,以免影响系统的正常运行。
(6):Composer(设计者):
自定义请求发往服务器。
简单的接口测试工具,可以用来发数据包(将请求拖动到Composer栏下,进行发包。)一般进行断点调试时,用这个功能来单独发某请求。
(7):Filters(过滤器):
通俗地讲:就是帮助我们过滤掉一些不想显示在会话/想要被显示在会话的请求。
Filters的主页面:
首先,需要启动Filters
主机的过滤:
1、域的过滤(选择局域网和广域网的过滤):
- 只展示以下的主机
隐藏以下的主机
不展示主机
标记以下主机
……
其他过滤器,下来自己去尝试,英语好的就能懂……
五、解决Fiddler仅能抓到http请求抓不到https请求的问题:
设置一下,Tools->options->https:
在执行Actions,选择最后一项,重装所有证书。
查看已经装好的证书:
打开Open Windows Certificate Manage就可以去查看已经安装上的证书了。
选择“操作”->“查找证书”:
输入“fiddler”,点击“立即查找”:
查看结果如下示:
完成以上步骤就能正常抓取https请求了。
六、断点操作:
先介绍一种简单点的打断点方式:
1):可以使用状态行的空白处进行打断点操作,如下:
点击空白处一次,产生一个“请求前断点”,就是还没有发送到服务器去;
此时因为数据还未到达服务器端,还处在fiddler代理处,可以进行数据的篡改,将错误或者危害安全的数据发送到服务器。
一般我们在测试过程中可以用来进行验证前后端同时校验的场景,举一个例子哈:
比如:登录接口需求规定只能输入数字字符类型,非数字字符类型输入无效,这个时候一般我们从界面可以验证到前端是否做了该处校验,如果输入不进去非数字类型的字符就说明前端校验了,但是不能保证后端也同时做了该处的校验,此时就可以通过修改接口传递的登录数据,将其修改为非数字字符类型的数据继续发往服务器,查看服务器是否做了响应处理。
点击空白处两次,产生一个“响应后断点”;
此时,数据已经从服务器端返回回来了,但是先被fiddler代理给拦住了,同理,这时也可以进行一些响应数据的篡改,继续返回到客户端。比如:本身服务器端返回回来的数据是“登录成功”,可以在fiddler代理上给修改成“登录失败”,继续返回到客户端,客户端收到的响应内容就是“登录失败”。
点击空白处三次,取消断点。
另一中打断点方式:
断点的设置在:如下
Before requests:是请求之前的断点,对应:
after resquests:是响应之后的断点,对应:
七、模拟弱网测试:
模拟网络限速:
进行弱网测试时一定要开启下面这个配置,如果觉得弱网速度仍然很快,可以自己进行脚本配置,修改时间:
配置脚本:
找到脚本重置,搜索“simuelate”函数就可以修改了。
另外,一些实用快捷键介绍:
File——Capture Traffic:勾选表示开启抓包,不勾选表示暂停抓包。
Alt + Q :激活quickexec命令行
CTRL + A :选择所有会话
CTRL + X :清除会话列表
CTRL +R :重新发送出请求(按住Shift + R设置重新发布的次数)
CTRL + F:查找会话