有时为了能更好的完成测试工作,提高软件质量,只是功能测试方法已经不能满足需求,所以需要根据项目的特点加入合适的测试方法。
写这篇文的原因是,在实际的测试工作中,所在公司APP添加了新研发的商品及其支付功能。
做测试的可能都有跟弦,跟Money有关的项目都要小心。之前了解过一些拦截篡改的方法,但没有实践过,为了测试质量,只好现学现用。中间遇到问题时没有资料可查,摸索了几天终于弄明白了。整理一下,做个笔记。
下面我尽可能详细的描述下我用fiddler对APP的get和post请求进行拦截和篡改的步骤:
以下省去下载安装fiddler和使用fiddler抓APP包的步骤,网上都有方法而且非常详细。首先介绍拦截方法,然后再根据实际例子详细描述拦截和篡改。
一、两种拦截方法(get和post请求的拦截方法相同)
1、在fiddler左上角的菜单栏,rules->automatic Breakpoints->选择断点的方式。通过这里设定的断点会对之后的所有HTTP请求有效。有两个断点位置:
1)before response,在请求到达服务器之前进行拦截,也就是发送请求之后,Fiddler代理中转之前,这时可以修改请求的数据。
2)after response,在响应到达客户端之前拦截,也就是服务器响应之后,在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。
3)默认是Disabled即不拦截的状态,则点击Rules->Automatic Breakpoint->Disabled 可以取消拦截的状态。
举例 before response:
举例 after response:
以上是第1种方法,设置后,可以拦截所有请求和响应。
2、命令行设置断点
1)bpu在请求到达服务器前中断;
2)bpafter在响应到达客户端前中断;
3)bps中断HTTP响应状态为指定字符的全部session响应;(引用作者博客地址:https://www.cnblogs.com/x1you/p/11866055.html)
4)bpv/bpm中断指定请求方式的全部session响应。(引用作者博客地址:https://www.cnblogs.com/x1you/p/11866055.html)
举例bpu命令:
格式:bpu空格IP地址回车。如:bpu https://www.baidu.com然后加回车。
解除拦截状态,直接输入bpu然后回车。命令行书写位置如下图:
查看接口拦截情况:
如图红框里的接口,最前面带T的就是被拦截的接口。
这里拦截接口可以具体到某一个接口,也可以是某一批接口。具体到某一个接口很好理解,接口地址填写完整,拦截的就是具体某一个接口;如果接口地址填写一部分,拦截的就是具有相同路径的一批接口。
举例bpafter命令:
格式:bpbpafter空格IP地址回车。如:bpu https://www.baidu.com然后加回车。
解除拦截状态,直接输入bpbpafter然后回车。命令行书写位置如下图:
查看接口拦截情况:
后面两个在实际测试中没有用到,先不举例了,只是网上有写,作者这里也带一下。
以上就是拦截的两个方法。下面来结合实际描述下篡改的方法。
二、get和post请求及响应的篡改方法
1、get和post请求的篡改方法(以下均使用命令行拦截方式)
1)get请求篡改方式
如下图,使用命令行bpu加接口地址的方式拦截get请求后,在WebForms下直接修改get请求参数值,然后点击Run to Completion完成接口请求,然后查看APP页面数据显示,这样就实现了get请求篡改。
2)post请求篡改方式
如下图,使用命令行bpu加接口地址的方式拦截post请求后,在SyntaxView下直接修改post请求参数值,然后点击Run to Completion完成接口请求,然后查看APP页面数据显示,这样就实现了post请求篡改。
2、get和post响应的篡改方法(以下均使用命令行拦截方式)
1)get响应篡改方式
如下图,使用命令行bpafter加接口地址的方式拦截get响应后,在SyntaxView下直接修改get响应参数值,然后点击Run to Completion完成接口响应,然后查看APP页面数据显示,这样就实现了get响应篡改。
2)post响应篡改方式
如下图,使用命令行bpafter加接口地址的方式拦截post响应后,在SyntaxView下直接修改post响应参数值,然后点击Run to Completion完成接口响应,然后查看APP页面数据显示,这样就实现了post响应篡改。
三、修改数据的两种方式
修改数据有两种方式,一种是临时修改方式,即修改后只对当次请求有效,这种方式在fiddler页面中可以直接修改;另一种是永久修改方式,可以通过urlreplace命令实现,urlreplace命令行输入位置和拦击命令行输入位置相同。
1、临时修改(文章作者在测试时使用的方式)
1)get请求
get请求值修改,即在fiddler右侧栏上面的请求栏中,Inspectors->WebForms,修改请求变量参数后执行Run to Completion,服务器返回新的请求结果。
get响应值修改,即在fiddler右侧栏下面的响应栏中,Inspectors->SyntaxView,修改请求变量参数后执行Run to Completion,服务器返回新的请求结果。
2)post请求
post请求值修改,即在fiddler右侧栏上面的请求栏中,Inspectors->SyntaxView,修改请求变量参数后执行Run to Completion,服务器返回新的请求结果。
post响应值修改,即在fiddler右侧栏下面的响应栏中,Inspectors->SyntaxView,修改请求变量参数后执行Run to Completion,服务器返回新的请求结果。
2、永久性修改请求(直接引用网上其他作者内容,本文章作者没有修改成功,为使文章完整故整理)
1)命令行设置修改规则,修改请求:urlreplace 旧请求值 新请求值(引用作者博客地址:https://www.cnblogs.com/x1you/p/11866055.html)
fiddler命令行输入:urlreplace uuid=103 uuid=105
其中uuid是请求参数,输入命令后回车即可,新的请求设置成功,除非释放请求,否则请求值不变,释放请求命令urlreplace
2)脚本中修改规则,打开脚本方式:fiddler执行Rules->Customize Rules
在fiddler中修改订单数据后,点击Run to Completion按钮,实现数据篡改,页面中的数据修改成功
以上为fiddler拦截篡改get和post请求及响应的完整步骤,文章作者是新手。