测试工作中使用Fiddler抓包主要功能讲解
Fiddle是一个http协议调试代理工具,代理就是在客户端和服务器之间设置一道关卡,相当于在客户端与服务器中扮演中间人的角色,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,之后再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。
*Fiddle能够修改客户端提交的数据,以达到欺骗服务器的目的,另外能够修改服务器的 返回数据,以达到欺骗客户端的目的
Fiddler在日常工作中的使用
移动端app的功能主要是界面展示和页面交互,逻辑控制都是由服务端来完成。所有关于移动端的测试很大程序是关于UI的展示和界面的交互问题或者是数据的显示问题。
1.如果要验证一个角标显示是否合理,如订单的个人中心页,订单数超过99则显示99+,角标显示是否正常,那是不是需要手动新建100条以上的订单?
2.直播间点赞、关注、粉丝、销量、库存等字段,值较大时,显示是否正常;那需要找上千用户点赞,来查看显示是否合理?
3.当测试时,商品数据较少或者较多,这个时候我们不好测试超过一屏、刚好一屏、小于一屏和分页的情况,是否要在后台慢慢的新建商品?
4.在测试环境,我们测试不了待收货、已重发、已完成等订单的状态,一定要在运营环境才能够进行测试吗?
上面的场景很多时候会影响测试效率。有没有办法可以解决呢?
答案是肯定的,比如更改数据库的值,需要查表、连表,只能在测试环境进行操作,运营环境就不能改,而且要求熟练数据库操作;
另外就是使用抓包工具修改移动端发起的请求和服务端返回给客户端的值,来检查实际结果与预期结果是否一致,这一方法相对简单;
(一)篡改客户端请求或者服务器的响应结果,对接口进行测试,检验程序的稳定性和安全性
我们很多时候都是在测试客户端,关注的是界面的输入和输出,对程序的内部结构不熟悉,这样不容易发现一些底层严重bug
如:如去年盲盒大玩家app存在较为严重的bug,即服务器在程序设计之初,未对重要字段进行加密处理,我们测试的时候只关注界面,所以发现不了这个严重bug,所以我们可以将抓包工具作为工作常用工具;
另外也可以对提现、充值、购买商品等接口进行数据篡改,以测试软件的安全性和稳定性,已提高软件的安全性,一些恶意用户喜欢去攻击app,以达到非法牟利效果;
(二)使用抓包工具设置弱网,对app进行弱网测试
弱网测试是app专项测试经常用到的测试点,iOS一般可以用开发者模式的network link conditioner来进行测试,但是Android没有这类自带的功能,所以可以通过抓包工具模拟弱网环境进行测试;
(三)通过抓取客户端请求和服务器响应结果,来定位bug
很多时候,我们发现bug的时候,如果能够准确的定位bug,那么开发同事将会更容易的修复bug,同时也能够通过分析请求和响应,分析出是前端还是后端的bug;以下是我提bug时的提交的请求和响应数据
Fiddler界面讲解
Inspectors tab下有很多查看Request或者Response的消息。 其中Raw Tab可以查看完整的消息
断点的设置(全局断点和单个断点)
第一种方法(全局断点):
1.点击底部左下角第三个tab(空白显示),点击一下之后,出现一个朝上的箭头,意思是将客户端请求发送给服务器之前打断点,这个时候我们可以修改客户端的请求,再点一下之后发现出现一个朝下的箭头,意思是将服务器处理完的结果返回给客户端时产生一个断点,这个时候我们可以修改服务器的返回结果;
第二种方法(单个断点):
请求前断点(before response): bpu
1.命令行输入:bpu url
2.这个时候请求接口的时候,就会只拦截登录这个接口,此时可以修改任意请求参数,修改完数据后,点击 “Run to Completion”,执行被被修改后的数据
取消断点,在命令行输入: bpu+回车
响应后断点(after requests): bpafter
- 在命令行输入:bpafter url
2.这个客户端去请求触发,会发现已经拦截到服务器返回的数据了,此时可以修改任意返回数据,修改完数据后,点击 “Run to Completion”,执行被被修改后的数据
4.取消断点,在命令行输入: bpafter+回车
在使用抓包工具时可能会遇到的问题:
1.android7及以上版本手机抓包常规情况无法抓包,因为Android7.0 之后默认不信任用户添加到系统的CA证书,也就是说对基于 SDK24 及以上的APP来说,即使你在手机上安装了抓包工具的证书也无法抓取 https 请求,所以一般只能使用Android系统7.0以下版本或者模拟器抓包,但是有解决方法,就是让产品同事出需求,非正式包修改app代码,让app被允许抓包,其实加个判断就可以了,便于测试;
2.在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。所以我们安装CA证书的时候需要去信任证书
设置->通用->描述文件->charles proxy custom root certificate(够选上就可以了)