您的位置:首页 > 其它

Fiddler实践

2015-08-21 08:21 543 查看

Fiddler实践

问题1、界面增加IP地址

测试过程中发现访问的数据不正确,怀疑是修改的host没有生效导致的。但无法查看手机端访问该数据页面的IP,所以一直无法确认该问题

 

 

1. 运行fiddler,菜单,Rules->CustomizeRules…或者点击右侧tab

“FiddlerScript”

2. Ctrl+F查找“static function Main()”字符串,然后添加下面这行代码:

FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP",120, "X-HostIP");

 

3. 保存CustomRules.js或者点击“SaveScript”按钮,如下所示:

 

 

   static function Main() {

       var today: Date = new Date();

       FiddlerObject.StatusText = " CustomRules.js was loaded at: " +today;

       FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120,"X-HostIP");

 

4. 查看fiddler,此时IP会添加到所有数据的最后一列,拖到滚动条,即可看到,如下所示:

 

 

问题2、修改端口

测试过程中,手机借来借去是常有的事,也行你刚在一台手机上将自己的IP添加上,过一会这台手机就被某某某拿走了,不一会儿,你的Fiddler上面多了很多会话,不巧其中有个URL的参数id为空。Bug?!然而,重复操作N遍都没法重现。仔细查看请求后发现不是自己使用的手机。如何摆脱曾经的小尾巴,请看下文

在Toolsà Fiddler options à Connections,如下图所示:

Fiddler默认端口号是8888,为了避免这种情况对自己的干扰,在找不到北某某某的拿走的手机时,可以将这个端口修改为其他的,例如:8889,重启Fiddler,再在自己使用的手机上做相应的修改即可。

 

 

问题3、Fiddler的过滤功能

在PC上打开Fiddler用于查看手机端的请求,但总是被PC上来来往往的请求所干扰。如何只查看android上的请求,而不被干扰呢?

    Fiddler有强大的filter,通过filter能够只查看自己关注的请求。但是呢,有一些去服务器下载的请求,由于服务器有好多,添加过滤器有可能过滤掉本来想看的内容,例如:某个banner展示成功的前提是:图片资源下载成功。当我们在测试过程中看到banner图显示不出来,到底是banner图的功能有问题呢?还是服务器的问题呢?因此,作为一名认真、负责任的测试同学,我们想要准确定位bug的原因,就需要关注这个过程中发生了什么,而不能简单的跟开发同学说:banner图显示不出来了。

So,这种过滤如何实现呢?正确的处理方式是:

点击Fiddler左下角的Capturing,可以控制是否把Fiddler注册为PC代理,当左下角出现”Capturing”时,CaptureTraffic是打开的,此时的IE的Internet选项连接  局域网(LAN)设置 中的 代理服务器是勾选的;否则不勾选,如下图所示:

 

 

问题4、生效修改的hosts文件

测试过程中需要访问测试服务器,打开Fiddler,在PC的etc目录下修改了hosts文件却不能不生效,为什么呢?

当Fiddler已经建立会话时,任何修改hosts的行为都不会被Fiddler注意到。可以通过Fiddler的Tools à HOSTS 导入本地的hosts文件。需要指定测试服务器的时候,勾选“Enable remapping of request for one host to a different host or IP,overredding DNS”,否则去掉勾选。

 

 

 

问题5、测试过程中如何模拟多用户网络场景

这里介绍下模拟低速网络情况。

Fiddler是一个代理,它提供了客户端请求和服务器响应前的回调接口,我们可以在这些接口里自定义一些逻辑。Fiddler的模拟限速就是在客户端请求前来定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。

Fiddler提供了一个功能,可以方便的模拟低速网络环境。方法:Rules à Performances à Simulate Modem Speeds,如图所示:

也可自定义低速网络:

(1)打开Fiddler,Rules à Customize Rules…,或者在Fiddler中使用Ctrl+R快捷键

(2)搜索关键字“m_SimulateModem”

(3)然后根据自己需要,修改上传与下载速度

 

说明如下:

oSession["request-trickle-delay"]= "300";

#每上传1K,延迟300ms

oSession["response-trickle-delay"]= "150";

#没下载1K,延迟150ms

(4)保存修改后,勾选之前的 Simulate Modem Speed 选项。

 

 

问题6、Fiddler保存会话的response内容为乱码

右键点击会话选择“saveà Response à Response Body”,保存的文件打开后里面出现乱码。

这是因为Fiddler为了提高性能,将会话的response压缩后进行了传输,查看Transformer的选项卡,如下图所示:

是否可看到GZIP Encoding处于选中状态?想要正常查看被压缩的数据,需要选择成No Compression,但是出现乱码的情况下,该处是不能点击的,如何解决呢?

方法1、如果想在会话处理过程中进行Decode,点击Fiddler界面上Decode 按钮,如下图所示:

则会对所有的会话进行decode,这样保存的response就能正常显示了,需要注意:点击“Decode”之后,需要重启Fiddler才能生效。

 

   方法2、如果想对所有会话处理之后再进行No Compression(解压缩),可以选择多个会话,右键选择“Decode Selected Sessions”,另外,在会话的response区域看到的却是乱码,上面有黄条提示“Response is encoded and require decoding before inspection.Clickhere to transform”,杜继英的Transform勾选情况如下图所示:

处理方法:这种情况下,只要按照提示,点击黄条即可对当前的会话进行decode,但是这样处理只针对当前的会话,是一次性的效果,如果不担心传输性能的话,可以直接使用方法1。

 

 

问题7、模拟http请求

模拟http POST请求

对于post请求,需要输入Reuqest Body。而Request Body 默认情况是隐藏起来的。按下面步骤点击显示出Reuqest Body。

1、点击Options

 
2、点击Tear off,如下图

点击执行,就可以模拟post请求了。
上图中的消息头,可从别的地方拷贝过来,如下图所示:

 

 

 

模拟http get操作

下拉框中选择GET,输入请求的地址,输入Request Headers。RequestHeaders是键值对的格式,用:隔开。点击执行。

查看get操作获取到的结果:

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Fiddler