本文章转载于搜狗测试
我们进行客户端网络相关的测试时,肯定要更改服务器返回数据进行测试,但频繁更改线上服务器的数据肯定不现实,即麻烦又有风险,所以就需要我们自己做网络返回数据了。
自己改网络返回数据,一般有两种方法,一种是指向代理服务器,然后在代理服务器上进行数据修改,此时我们使用fiddler;另一种就是更改hosts文件,把服务器指向自己的测试服务器,然后在测试服务器上进行数据修改。
1.使用fiddler的autoResponder
打开fiddler,点击要自定义网络返回的条目,点击右边工具栏中的Autoresponder,然后点击页面中的Add Rule按钮,此时就会在下面的编辑区显示刚刚添加的请求。
点击选中请求,然后编辑器下方就会出现链接的属性设置选项。
此处,上框中是要编辑的请求链接,下框是想要给的返回(可预选择的内容如下),选好之后点击save按钮就可以保存了。
常用返回的说明:
上面从200到502的都是既有的网络返回
Delay:100是设置超时返回时间,单位为毫秒
Redir指的是跳转到其它的页面
Find a file:选择一个返回的本地文件
还有,上框的内容,如果是以EXACT开头,则指的是精确匹配,也就是说只有完全匹配的链接才会执行该条规则;当然还可以使用正则表达式,用以模糊匹配,例如下面:
最后,要检查如下几个开关:
Enable automatic responses:这是总开关,如果取消勾选,那么所有设置的自定义返回规则都不生效了
Unmatched requests passthrough:没有匹配的请求是否放行,如果勾选它,那么所有没有匹配的请求都会照常工作;如果取消勾选,那么所有没有匹配的请求都会被拦截不会给任何返回。
至此,通过上面的设置后,就可以让命中规则的请求url返回指定的内容。
2.使用fiddler中的返回断点
使用fiddler设置断点也可以修改response(返回内容)。
2.1.设置请求断点的原理
Fiddler是个代理、可以捕获整个session,那么就可以在服务器返回内容之后进行中断,进而修改内容再放行给客户端,所以客户端拿到的就是修改之后的数据了。
2.2.设置返回断点的三种方法
a)打开Fiddler点击Rules->Automatic Breakpoint ->After Requests(这种方法会中断所有会话的返回)
再次点击Rules->Automatic Breakpoint ->Disabled就可以消除断点了
b)在命令行中输入命令:bpafter xxx.xxx。xxx.xxx是想要中断的请求url。所以这种方法属于定制断点。若想消除该断点,在命令行中输入命令bpu即可。
c)在auto responder中也可以添加:
2.3.设置返回断点的应用范围
上面已经说过了,设置返回断点并修改可以做客户端测试,和我们平时使用fiddler的AutoResponder功能上很类似,只不过设置返回断点的方式比设置AutoResponder更加快捷方便,相当于即时修改返回数据、当场可以看到客户端的现象。但也由于是即时修改数据,如果操作慢的话,可能会导致客户端获取超时失败。所以需要依照不同的测试场景合理使用这几种方法。
2.4.设置返回断点的实例
实例使用一张图片来说明整个操作过程和方法。
3.使用http测试服务器
http测试服务器,就是实实在在的服务器,上面搭建了http+php服务,只要本地设置了hosts(对于手机来说,必须root才能修改),就可以让指定的http访问到自己的服务器上,于是就可以随意修改了。
3.1.http测试服务器的搭建
http服务器,使用最多的是Linux+Apache,还有linux+nginx,window+IIS也行,但性能上要比Linux差不少,并且涉及windows本身的防火墙,导致外网访问可能会有问题。
具体搭建方法,大家可以百度或搜狗一下,比较简单,就不在这里赘述了。
3.2.设置本地hosts
hosts文件是操作系统中,指定域名访问指定IP的匹配对,windows操作系统中 该文件是在%windir%\system32\drivers\etc,android系统中是在/etc
下面以android系统简单说明一下如何修改:
手机必须root,方法就不说了,可网上搜索。
使用获取了最高管理员权限的文件管理应用,打开/etc,然后挂载读写操作,然后打开下面的hosts文件
在hosts文件中增加需要绑定的域名和IP,例如:
10.12.131.16 input.shouji.sogou.com
然后保存退出。最好再进入该文件看一下是否修改成功。
3.3.自定制返回内容
经过上面的操作后,凡是发往input.shouji.sogou.com的请求,都会来到10.12.131.16了,所以下面就可以自定制返回内容了:在http服务器工作根目录中新建各种对应的目录和文件,就可以被访问了。
4.其它注意点
如果即想使用http测试服务器,又想使用fiddler抓包,那么可以先设置代理到fiddler上,然后给fiddler所在机器上配置hosts。注意:如果在手机上即设置代理到fiddler,又设置了hosts,那么hosts是不管用的,也就是说代理是绕过hosts工作的。