[腾讯 TMQ] 零基础学习 Fiddler 抓包改包

本文转载于https://testerhome.com/topics/7159css

 

1、Fiddler
1.1.简介
Fiddler是一款HTTP协议调试代理工具,它可以抓取记录本机全部HTTP(S)请求,经过设置断点等方法咱们能够任意修改进出Fiddler的数据(cookie,html,js,css)完成测试。其原理以下图,咱们仅须要修改Proxy中收到的数据就能够模拟客户端和服务器的交互,完成一系列Mock测试。html

 

 

关于Fiddler的安装、配置方法KM上教程不少,这里就再也不介绍。
1.2.抓包
若是须要抓取本机请求,只须要启动程序并确保左下角为Capturing状态便可windows

 

 

 

若是须要抓取移动端请求,则须要在移动终端上指定代理服务器为Fiddler所在主机IP(须要处于同一网络),端口默认8888浏览器

 

 

 

Fiddler配置服务器

 

 

 

Android中网络配置
若是须要抓取HTTPS请求,须要在Fiddler中勾选菜单栏Tools选项cookie

 

 

 

勾选以下选项:网络

 

 

 

导出证书并安装工具

 

 

 

移动终端能够在浏览器中访问127.0.0.1:8888来安装证书。测试

若是不安装证书的话只能抓取HTTP请求。ui

1.3.修改数据
Fiddler提供修改数据的方法有不少,经常使用的以下AutomaticBreakpoint命令行设置断点

AutoResponsder

FiddlerScript (Customize Rules)

后面将在实例中为你们介绍各个方法的具体使用方法。

2、测试实例

2.1. 需求介绍
如图所示,App中的一个页面向用户展现天气信息,具体规则以下:

 

 

 

拉取时机:进入页面后刷新天气信息数据源: Yahoo接口显示数据:温度信息、天气icon、出行提示、风速、能见度……

从测试角度看这个功能的测试难度不大,问题是如何快速的将所有天气信息匹配的icon和出行提示验证完毕。

2.2.测试前分析
经过分析接口和客户端代码了解到,客户端向服务器请求指定城市天气信息,在服务器返回的天气信息中各种天气情况由code值表示(对应关系如图1-1),数值对应的天气图标如图1-2.

 

 

 

图1-1

 

 

 

图1-2所以在测试中咱们只须要让客户端接收到指定code值的天气数据就能够完成所有验证,因此先用Fiddler抓包看下接口的返回数据。

方法如前文:首先PC上开启Fiddler,其次在手机中配置代理,接下来咱们还要在手机浏览器中访问127.0.0.1:8888来安装证书(本例中接口为HTTPS请求),最后客户端触发下请求就OK了。

 

 

 

能够看出,红框内圈出的这一部分就是咱们须要修改的数据啦。下面咱们就采用各类手段来Mock吧。

2.3.修改数据

AutomaticBreakpoint

若是在工做中须要对某一个请求进行操做,最简单的方法莫过于使用Fiddler的这个功能

 

 

默认状况下状态为Disabled,根据须要咱们能够选择开启不一样的断点

Before Requests:向服务器发起请求前打中断,用以修改请求内的数据。

After Responses: 在服务器返回数据后中断,用以修改响应数据。

咱们的用例中须要修改客户端收到的数据,所以勾选After Respnses便可。

注意:使用此功能须要正确使用Filter,不然Fiddler抓到的全部请求的会发生中断。

 

 

 

全部的设置都打开后就能够进行测试了,在Fiddler抓到返回数据后发生中断时咱们手动将全部天气信息(code值)更改成龙卷风

 

 

 

修改完毕后点击Run to Completion 向客户端返回数据。接下来就是检查结果了。

 

 

 

结果符合预期,页面中的全部天气icon均为龙卷风通标。

以上即是自动打断点的使用方法,惟一不足的地方是当你须要查看其它请求的时候,已配置的Filter可能致使它们没法展现在Fiddler中,不过不要紧,看看下面这种方法。

命令行设置断点

 

 

 

为了方便用户使用,Fiddler还提供了一个命令行接口,经过一系列内置命令能够大大的提升使用效率,这里咱们只关注断点相关的几个经常使用命令,其余的内容能够经过help查询。

 

 

 

本例中咱们关闭Filter并使用bpafter进行中断

 

 

 

键入断点后进入天气也触发天气信息拉取

 

 

 

这样一条熟悉的中断请求就出如今咱们面前了,后面的操做跟以前同样,修改数据返回便可。

注:清除断点输入断点命令符不接参数便可,如:bpafter对于熟悉Fiddler的同窗这种方法更灵活,能够快速的对须要监控的数据打点操做。

AutoResponsder
AutoResponsder这个功能基本原理就是替换线上文档,例如一个js/css请求,咱们能够设置规则将返回的文件替换成本地文件。使用方法也非常简单,只须要在AutoResponder插件内添加规则便可。

 

 

 

在咱们这个测试用例中,只须要建立规则匹配指定字符串,而后将修改好的响应文件添加进去,同时勾选上方三个复选框便可。一切搞定以后,当客户端发起请求后Fiddler会将本地构造的文件(如图)做为response返回给客户端完成测试

 

 

 

这种方法操做简单,一劳永逸,对于数据量改动比较大的场景较为适用。

FiddlerScript(Customize Rules)
前面的方法对于Mock数据来说尽管够用,但总感受有所些欠缺:人工介入太多,不能自动替换数据也没法经过数据驱动来进行测试。幸亏,Fiddler提供了这样一个FiddlerScript插件,经过它能够编辑脚本文件实现自定义规则的实现。

FiddlerScript使用JScript语言(不是JS)须要单独安装后才可使用

JScript:

http://doc.51windows.net/jscript5/?url=/jscript5/dir.htm

安装:

http://www.telerik.com/download/fiddler/fiddlerscript-editor

安装完毕后重启点击【Fiddler Script】tab便可

 

 

 

能够看到,脚本中已经预先设置好了这些接口,咱们只须要在其中定义本身须要的规则就能够了。

第一种方法 
咱们能够向下面这样将直接替换数据中的字符串来进行测试

 

 

 

再次发送请求后收到的数据将自动修改(以前的 code=”23” 变动为code=”1” test=”23”)

 

 

 

第二种方法 
也能够向下面这样,当收到服务器响应时弹出提示框动手动输入数据

 

 

 

 

 

 

第三种方法
固然最建议的一种方式仍是搞成数据驱动:

① 建立一个txt文件按行存储测试用例

 

 

 

② 脚本里读取文件信息,此处的getCurrentTestCase方法是本身实现的,功能就是计算出第一个未标注“done”的数据做为当前须要替换的数据,并在结束时作上标记。这样一来,系统中全部的请求信息将按照预先设计好的顺序Mock

 

 

 

③ 测试同窗按照预先设计好的用例检查结果就能够了。

这是一个很小的例子,但足以说明它强大的扩展性。对于测试工做而言FiddlerScript更像是一种粘合剂,它能够把手机、测试数据、执行脚本等测试中参与的一切粘合在一块儿,让测试更便捷,让自动化测试更强大。

3、小结

Fiddler除以上介绍的这些Mock数据的功能外还有不少其余用途,如域名的重定向、API的测试,这里就不一一列举。但根据咱们以往的经验,若是能结合咱们在其余领域的研究和探索,确定还能有更深更广的应用。

相关文章
相关标签/搜索