使用Charles在同一个网段中抓取数据就不说了(模拟器、真机都👌),下面我们看看更加实用的技术篡改返回数据
因为这种做法可以让一个iOS前端的开发人员独立完成测试而不用拉过来一个后端一起联调。并且各种特殊维度,或是临界的账号也不用再去辛苦找了,仅仅自己在青花瓷上改来改去就可以达到效果了。比如这个地方如果返回了nil程序会不会崩,直接改response就行了。下面是具体操作方案。
打开青花瓷切换成结构页面
wKiom1WcsD6B1KCuAAATwpXwZYo738.jpg这里可以看到断点和调试信息
wKioL1Wcsg7CWVhUAADTkpw_7pk214.jpg然后找一个我们公司的页面。这个页面本来应该返回是这样的:如上图右边
你先正常的打开这个页面把玩几下,这个青花瓷就会抓取很多接口和域名分类了。在这里找到你这个页面所属的域名分类应该不难。然后打上断点。这里要注意是在域名上打断点而不是在下面的单个请求上打断点。
再次用手机进入这个页面,就会通过你刚才打断点的那个域名来请求数据,就会被断点拦住,如下图所示。
wKiom1WcsD_QWRxUAAEijZIpaAo144.jpg右边的信息也很清晰,一开始可以编辑请求。如果点击单步执行,等一下相应回来了也可以编辑响应。
wKiom1WcsD-y_Q-6AADiaXU4ztA176.jpg wKioL1Wcsg_BkKW3AADkY8GBziQ592.jpg这里的有好几种查看的方式,但是推荐使用JSON Text看的比较清楚。 现在我们对拦截回来的数据进行修改,我把这些统计数据全改成999如下图
wKioL1Wcsg_C_ukxAABwuHfbKh4059.jpg然后再次点击下方的Execute单步执行,更改后的数据就会像正常返回回来的数据那样显示到,APP的页面上展示。
wKiom1WcsECAj-zKAABNiw_cXLA498.jpg能来到这一步就说明已经完整的掌握了用青花瓷篡改返回数据测试App的技术。
这么做的意义:
这里只是简单的更改了一些数字,在页面显示更加直观。实际的操作中,你可以经常用来把某些值改为临界情况以看到App在处理这些临界状况时的反应,这样比找那些临界数据的测试账号成本要低得多。也可以把一些可能不会反回数值的字段找到,直接将里面的值删成nil,看看会不会报异常等等。
好友提到了Charles的本地映射 我感觉也是非常实用的东西,记得前面做项目,查看后台数据通过NSLog/Print 或者是在工程中打断点,看到的数据都不在是标准的JSON格式数据,而是经过转换的这样的数据
如果这时我想把本地映射的数据加载入工程作为工程的测试数据,这时就非常方便了,而不需要手动去修改控制台打印出来的数据(如果数据量大,你就不想去改成JSON数据了😄)所以将抓取到的数据做本地映射就显得格为重要
NSData转JSON 没搞懂为什么要放个 try? 希望懂的大神解释一波
网友评论