如何通过fiddler的断点功能,来修改请求和响应数据。

在功能测试时,经常会遇到要输入不同的数据来验证不同的输出 ,这其中有好多的输入数据是很比较难以构造的,比如我们要测试个购物功能,在购物前系统会自动定位你的位置 ,那个这个位置就相当于已经帮初始化好了,当我们要测试其它位置的话 ,在APP或web系统中就很难修改 。怎么办呢 ? 其中的一种方法就是通过fiddler的断点功能将其位置数据修改 ,然后让其返回对应的数据 。

基本原理

在了解该功能的使用前,我们先简单的来了解下它的大致原理,下面一张图就是在开启fiddler的前后,客户端与服务端的数据交互过程。可以看出,在没有fiddler介入前,客户端和服务端交互主要有以下三个步骤

  1. 客户端发送请求给服务端

  2. 服务端处理客户端的请求数据(在图中没有体现)

  3. 将处理后的结果返回给客户端

当开启fiddler以后,客户端与服务端的交互都会先经过fiddler,这样发送给服务器的数据或返回给客户端的数据就都能截取到,从而进行篡改操作 。这基本就是fiddler的断点原理 。

设置断点

在fiddler中设置断点有两个位置,设置断点的请求在开头都有这样一个标志:

其中,第一处就是通过Rules-Automatic Breakpoints设置断点 。

  • Before Request :选择此选项,所有请求都会被设置断点,且所有的请求数据都将暂停发送到服务器。暂停的每一条数据都可以进行编辑其请求和响应数据,然后再发送到服务器。

  • After Responses :选择此选项,所有请求也都会被设置断点,但是它是将服务器返回的数据暂停,暂停的每一条数据都可以编辑其响应数据,然后再发返回给客户端 。和Before Request所不同的是,After Responses只能修改响应(返回)数据,而Before Request既可以修改请求数据,也可以修改响应数据 。

  • Disabled : 取消断点,

  • Ignore Images :忽略给图片设置断点 。

需要注意的是,取消断点除了以上设置外,还可以通过go进行恢复,也可以命令恢复(后续介绍)

第二处是在左下方输入断点命令。和上面设置断点不同的是,在命令输入框中输入是针对单个请求设置的断点。

 这个命令输入框中支持很多命令,其中就包括断点的命令 ,那么具体都包含那些断点命令?我们不妨先输入个bp试试看。

也就是说设置断点的命令支持如下四个命令

  • bpu :这个命令可以理解为bpurl的缩写。产生的效果和上面的befor Request是一样的,也就是说既可以修改请求数据,也可以修改响应数据。当在命令输入框内输入:bpu +空格 + 请求的URL + 回车 , 那么符合条件的url相对应的请求就会被中断 。

  • bpm : 这个命令就相当于bpmethod,所以在输入框输入:bpm +空格+ 请求方法+ 回车,那么符合条件的请求方法相对应的请求就会被中断 。

  • bps : 这个命令就是bpstatus的缩写,在输入框输入:bps + 空格 + 响应状态码 + 回车,符合条件的状态码的相对应请求就会被中断 。

  • bpafter :这个命令和上面after responses效果一样,只能修改响应数据 。 当然这个命令也可以输入bpa,两者的效果。在输入框输入:bpafter + url + 回车,符合条件的url就会被中断 。

需要说明的是,以上通过命令设置断点,也可以通过命令清除断点,清除断点只需要输入关键词就可以了,比如我通过bpu 设置的断点,那么清除断点时只需要输入bpu回车即可 。

修改请求

若按照上面条件设置断点后,符合条件的请求就会中断,这时选中一个中断的请求,点击Inspectors后,你就看有下面的这个图

以上这个截图有三个可操作的按钮,分别是:

  • Break on Response : 点击后,该请求在返回给客户端前设置断点,这时就只能修改响应数据了 。

  • Run to Completion : 点击该按钮后,不管是否对数据做了修改,都将会返回数据客户端,如果修改了,客户端收到的数据也是修改后的数据。

  • Choose Response : 除了上面直接修改响应数据外,也可以选择预定义好的数据作为响应数据 。

案例说明

案例1:在禅道的登录页面,将该请求的正确密码修改为错误的密码,使其返回登录失败的提示 。

实现思路:在命令输入框中输入bpu https://demo.zentao.net/user-login.html后回车,将请求数据中的密码修改成错误的密码即可。

案例2:使用请求方法过滤,在禅道登录页面,通过修改响应数据使其跳转到测试页面(备注:禅道登录成功后默认跳转的是我的地盘页面)。

实现思路:命令输入框中输入: bpm post后回车,修改登录成功的返回数据,将跳转路径指向测试页面地址即可。

案例3:将接口返回的数据修改为预定义数据后返回。

实现思路:需要在本地新建一份预定义数据,设置打断点后,加载预定义数据即可 。

综上案例可以看出,通过fiddler的断点功能,我们既可以修改发送服务器的请求数据,也可以修改返回给客户端的响应数据 。那么再回到本文开头的话题,很多情况下,测试数据难以构造,那么就可以通过这个功能随便修改各类数据 ,以满足我们的测试需求 。  

 


写在最后,本人在头条账号有更加系统全面的fiddler教程更新,若对fiddler的更多功能感兴趣,欢迎大家关注我的头条账号。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值