AppMock 工具设计及原理

目录

 

一、目前现状

二、为什么不用Charles

三、如何实现

1、实现方案:

2、实现成本:

3、基本流程

四、实现结果

5、如何使用


一、目前现状

开发过程中和QA测试过程中遇到下列情况:

1、想快速看到当前app api接口请求情况,以及打点请求情况,目标:帮助快速定位和排查问题;

2、制造数据和场景比较复杂时,不能够给自己手机或者模拟器上 的app去 mock某个指定接口(1~n个)的数据返回并且不影响其他人;

3、对于新业务需求,接口的入参和返回定义完后,客户端会被服务端block住,不能在本地自己mock联调和自测;

4、开发或者QA在测试或者调试过程中遇到需要数据上的支持时,只能麻烦其他同事配置或者自己去配置,不能自己快速解决问题和绕过问题(例如支付完成后的流程无法走到)

5、遇到有些接口请求的数据一天只会返回一次,这样会给自测的过程中带来麻烦

 

总结为以下几点:

1、不利于快速排查和定位问题;

2、客户端和服务端不能进行开发依赖分离;

3、接口不能快速Mock;

4、需要更多的沟通本成和时间成本;

 

对于第二点再补充下:

1)可以给指定的某个接口mock自己给的测试数据;

2)mock server根据设备唯一标识来区分;

3)自己的mock设置不会影响其他人;

4)mock可以灵活启用和禁用

二、为什么不用Charles

对于目前现状中的有些charles也可以解决呀。是的Charles是可以解决,就是多花些时间成本,关键是这个成本是所有开发和QA都需要付出。

1、需要自己各种配置和设置,难用还要钱

2、展示的东西太多,需要自己去筛选,UI展示看起来不是那么友好

3、功能太强大,反而我们最需要的那部分功能做的比较简单或者说粗糙

4、太过低效

附:Charles使用介绍https://www.jianshu.com/p/15869111a6ff

三、如何实现

1、实现方案:

客户端:android和iOS需要有个手机扫码功能,模拟器需要app内提供一个请求链接mock服务入口,在所有发出的网络请求都需要带上唯一标识的设备id,注册服务的时候也需要带上设备id

PCWeb端:需要提供展示Mock相关所有的数据和用户操作入口

PS:只展示当前手机app扫二维码连接后的数据可能会有个疑问:Web端是如何确切知道当前连接MockServer的手机是哪个呢?

Server端:

1、需要搭建了一个HTTP Mock Server,然后根据需求返回指定数据。对于不需要模拟的请求,直接到达真实的Server,需要模拟的请求就转向MockServer。

2、Server端需要提供app注册的服务并记录app的设备id,可以通过设备、接口等维度进行区分即需要支持单个设备单个接口的mock。

 

web端是如何知道是哪个手机连上了MockServer呢?

其实也就是需要明白手机上app在扫电脑上二维码时,到底做了哪些操作呢?看下在注册流程图:

AppMock 工具设计及原理_第1张图片

2、实现成本:

客户端成本最小,只需要提供入口进行注册将host换成mockserver,不需要代码侵入

PCWeb端需要提供完备的功能给用户使用

服务端成本最大,需要比较多的实现,一方面需要提供给PCWeb端网站接口,一方面需要搭建一套成熟的HTTP Mock Server,有些复杂,但却是整个系统的心脏。

3、基本流程

AppMock 工具设计及原理_第2张图片

四、实现结果

AppMock 工具设计及原理_第3张图片

5、如何使用

1、手机用户通过直接扫Web提供的二维码进行扫码注册;

2、查看已经请求过的API

3、找到需要被mock的API

4、在Response区mock自己的测试数据,点击保存并生效

5、重新发出该接口的请求,获取到自己设置的测试数据,mock成功

6、在mock管理处有个历史mock记录,此处可以进行mock暂停,可以恢复到接口真实数据返回

你可能感兴趣的:(ios,python)