Fiddler在软件测试中的具体应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fiddler在软件测试中的具体应用相关的知识,希望对你有一定的参考价值。

参考技术A         合格的软件测试工程师,不仅仅需要能够发现bug,还需要能透过bug表象,分析出问题根本原因,从而提升bug的解决效率,通过fiddler可以抓取接口请求的request和response,通过对参数进行分析,可以定位是前端问题还是后台问题,直接找到对应的开发人员,可以快速解决问题。

        配置前提:手机与电脑在同一局域网

            1、Fiddler设置打开Fiddler, Tools-> Options。选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来(配置完后记得要重启Fiddler).

            2、获取电脑ip地址:cmd输入ipconfig,或者直接通过fiddler查看,鼠标放在fiddler界面右上角网络连接图标处,即可展示本机ip(如图)。

            3、打开手机, 找到你的无线网络连接, 打开HTTP代理,选择“手动”, 输入Fiddler所在机器的IP地址(比如:192.168.1.104) 以及Fiddler的端口号8888

            4、手机安装证书:首先要知道Fiddler所在的机器的IP地址,手机浏览器访问“ip地址:8888”,FiddlerRoot certificate" 然后安装证书并设置信任。

        在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景;而仅仅通过页面端来发起校验,往往是不能够模拟所有场景的。另外,如果系统调用的有外部接口,根据外部接口的不同返回结果进行不同的逻辑处理,那么就需要外部接口的提供方配合我们进行测试,而在实际操作中这是很难做到的,这个时候我们就可以使用fiddler来篡改接口返回的数据,构造我们需要的测试场景,可以大大提高我们的测试效率。

        举例:boss后台模拟充值

        输入充值金额,提交前,进行断点设置,fiddler中选中Rules->Automatic Breakpoints->Before Requests;页面进行业务操作,此时在fiddler页面可以看见对应的请求图标会有个红色通行标示,表示请求过程中设置了断点,客户端发出的请求被fiddler拦截了

在左侧点击这个请求,在右侧Inspectors->TextView或WebForms等界面下会看到请求发送的具体内容,直接修改需要模拟的测试场景数据,再点击右下页面的run to complete按钮即可。

此时再看接口,会发现接口向服务器发送的请求是我们篡改过的。此方法在充值,购物支付等重要场景可以对服务端的安全性进行校验。本质是绕过前端的限制直接向服务端发起请求,有多种应用场景

        举例:将“baidu”这个关键字跟本地电脑的一张图片绑定,再访问带有“baidu”关键字的地址,就会被劫            持,具体步骤如图所示:

        举例:

移动端测试,常常会对网络有一定要求,因为移动端使用的网络环境是多变的,传统方法要满足不同网络可能要将移动端置于不同网络的真实环境中,但是fiddler可以帮助实现此功能。

举例:APP弱网测试

  fiddler中选中Rules->Cutomize Rules,Ctrl+F搜索关键字:m_SimulateModem;

  首先修改m_SimulateModem值为true,开启网络模拟

    修改uploaded、downloaded的数据来模拟不同的弱网场景:

上传1KB需要300ms,转化一下上传速度:1Kb/0.3s = 10/3(KB/s),如果想设置上传的速度为50KB/s,你则需要设置Delay 时间为 20ms;(=1000/50)

  2G一般上行/下行速率约为:2.7、9.6kbs,模拟设置为:uploaded 约 2962 ms,downloaded 约 833 ms;(弱网一般指2G网络)

  3G一般上行/下行速率约为:384、2560kbs,设置为:uploaded 约 2.6 ms,downloaded 约 0.39 ms;

有些需求,我们需要验证下后台接口是否对请求做了只能处理一次的限制,以防止漏洞产生

解决办法:

1.Reply:点击该按钮可以向服务器重新发送选中的请求,他可以帮助我们验证接口是否屏蔽了重复请求的情况

2.模拟多次重复点击,点击“Reissue Requests”的同时按下SHIFT键会弹出提示对话框,要求指定每个请求应该被重新发送的次数。

必看!Fiddler在接口测试中的应用。

在HTTP接口的测试过程中,一般我们会按照如下的步骤进行:

    1)测试环境的准备

2)HTTP消息体的构造

3)HTTP消息的发送及断言

如果我们可以拿到项目组的接口文档,并且HTTP后台服务是可以工作的,那我们的接口测试会非常顺利,可以不使用Fiddler工具。

 

AD:

测试行业最牛圈子(7+年经验才可以加入)

点击上方链接即可加入!

 

但是,实际情况中,不断的测试前移,需要我们的接口自动化测试用例在编码工作还未完成的情况下,就能准备完成。代码开发完成之后,直接运行自动化用例。

这种情况下,Fiddler工具就能大显身手了。本文介绍两种Fiddler工具的使用场景:

1)在没有接口文档的情况,使用Fiddler抓包,获得HTTP后台接口;

2)在没有HTTP后台服务的情况下,使用Fiddler模拟服务端。

 

1 移动APP下Fiddler 抓包

为了行文及截图方便,我们使用android模拟器操作,真机的操作步骤一样:

1)让手机和PC在同一个局域网下面,如果PC是笔记本,它们连接同一个wifi网络即可

2)找到PC的IP地址,如下图,运行ipconfig,得到192.168.0.103:

技术分享

 

3)在Fiddler工具上点击:Tools->TelerikFiddler Options->connections,在如下的Allow remote computers to connect 的勾打上,记住Fiddler的监听端口8888,稍后会使用上

技术分享

 

4)打开手机,长按已连接的wifi网络,点击修改网络

技术分享

 

5)在代理上面选择手动,IP填写上面获取的192.168.0.103,端口填写Fiddler的监听端口8888,之后点击保存。

技术分享

 

6)此时,我们在手机上面,打开被测试移动APP,在Fiddler上面就可以看到消息体了。以华为应用市场为例:

我们打开华为应用市场,点击我的:

技术分享

 

截取的消息如下:

我们可以清晰的看到通过post接口发送的消息包括headers以及body等,以及响应消息体:

技术分享

 

至此,移动APP的前后台抓包大功告成。

 

2 使用Fiddler模拟服务端

通过Fldder的AutoResponder可以做到模拟服务端。

首先,我们介绍最简单的服务模拟方式,即我们有真实响应的情况下,如何模拟服务端。

1)选中我们需要模拟的消息,也就是第11条:

技术分享

 

2)保存该消息的响应消息体,用于我们的桩去回一样的响应:

技术分享

 

3)点击模拟功能的入口AutoResponder,选中Enablerules,以及Unmatched requests passthrough:

技术分享

 

4)点击添加一条规则,在最下面的响应消息下拉框中,选中find a file,指向我们上面保存的文件

技术分享

 

5)这样,一条消息的服务端模拟就完成了。

技术分享

 

6)我们使用postman检验一下,响应消息和预期的一样,并且是在我们本机的桩上响应的。

 

 

技术分享

上面的这个例子,我们使用了精确匹配EXACT,是最简单的应用。实际上,很多时候,服务端响应的消息体是需要我们自己去构造的,并且上面的消息匹配方式是精确匹配,应用面偏窄了些,这些再普及一下自动匹配的一些知识:

关于自动匹配,可以使用的有:

前缀为“EXACT:”表示完全匹配(大小写敏感)

无前缀表示基本搜索,表示搜索到字符串就匹配

前缀为“REGEX:”表示使用正则表达式匹配

前缀为“REGEX:(?insx)”表示匹配方式其中:

  • i表示不区分大小写;

  • n表示指定的唯一有效的捕获是显式命名或编号的形式;

  • s表示单行模式;

  • x表示空格说明的;

时间关系,今天的分享就到这里,后续继续给大家写一些经验总结。

以上是关于Fiddler在软件测试中的具体应用的主要内容,如果未能解决你的问题,请参考以下文章

必看!Fiddler在接口测试中的应用。

必看!Fiddler在接口测试中的应用。

fiddler中都有哪些应用

功能测试必备:Fiddler 设置断点拦截请求和响应(附具体案例)

高频Fiddler软件测试面试题

软件测试面试必问:fiddler 在工作中有哪些应用?怎么破?