导读
Mock是一个接口编辑模拟工具,可以快速手动或者基于YAPI创建Mock接口模拟数据调试,同时支持场景,场景组的快速切换,方便在开发期和测试阶段试验不同数据返回的UI功能逻辑。
Mooncake数据模拟平台是得物统一的针对端侧(包括前端,客户端),与服务侧联调Mock的一款工具产品,在平台内部可以快速的创建各个项目产品的Mock多场景数据。本文主要聚焦Mooncake数据模拟平台的探索和实践。
在技术研发过程中,经常会遇到端侧前置开发,UI链路自测,特殊问题复现等场景,此时往往服务端侧数据未准备好,或者难以提供特定场景数据,以及多场景的切换等。而针对服务端造数,存在成本高,链路长不稳定等问题,此时UI端侧的数据模拟,则会作为开发调试的必备手段。
现今,在得物技术部,借助Mooncake数据模拟平台,已经可以快速地实现接口Mock数据的创建,基于类型定义生成,基于抓包创建,基于自定义函数等方式,同时支持前端,客户端同学,快速模拟数据测试,验证页面,业务链路,同时也能快速生成二维码方便测试和产品同学,前置做产品UI测试和验收。
Mooncake数据模拟平台从立项之初,到最终落地,在过程中我们总结了一些探索和实践总结。今天在此,主要介绍包括三个部分:
Mooncake数据模拟平台是得物统一的针对端侧(包括前端,客户端),与服务侧联调Mock的一款工具产品,如下所示,在平台可以快速的创建各个项目产品的Mock多场景数据。
在Mooncake平台之前,前端一般使用修改本地代码填充Mock数据,或者使用接口路径转换方式替换请求路径来完成Mock,进行测试,这种往往需要对前端代码有改造成本,针对一个接口存在多个场景,往往需要进行来回切换验证,如果一个场景链路中,往往需要多个接口返回固定的数据,需要一个个接口替换验证,没有线上存档,难以共享,数据切换,链路验证繁琐。
基于如上问题,Mooncake平台着力完成了如下功能,来降低UI侧与服务侧联调的造数成本,以及验收侧的沟通成本。主要包括,基于插件的Mock代理功能,以及视觉验收流程。
Mock产品整体,包括线上配置平台,Mock代理层,Mock代理注入( 仅H5有注入 )三个板块。
Mooncake平台本身技术并不复杂,但相对于一般的Mock工具,在实现思路上,可能有所差异。在此就Mock插件代理的主要流程,以及线上平台中的抓包流程做简单介绍。
首先Chrome插件开启后将MockProxy.js注入到页面的Header中,而后Proxy改写页面中全局的Fetch和XHR对象,将页面发起的请求替换成请求Mooncake平台的getMockData请求,并带上请求路径,请求方法,空间Code,和请求参数等信息,如果查询不到数据请求,会再去请求真实接口。
如果可以查询到Mock数据,Proxy插件会对返回的配置数据进行处理(包括执行动态JS等),并将最终经用户配置的预期返回,返回给Fetch和XHR的response,那么用户直接拿到的数据即为配置的数据部分。
如下图所示,点击开启抓包面板后,再去操作业务页面(已注入MockProxy脚本),抓包面板会类似Charles那样,实时更新当前请求的数据,并用以用户勾选所需要的接口进行Mock场景的生成。
具体实现如下:
整体流程如下所示:
至此,无需配置网络端口代理,就能类似Charles那样,实现接口的抓包请求。
除了上述产品整体设计,技术方案点的设计开发外,技术产品在上线后,才是主要工作的刚刚开始。往往需要进行长期的用户宣发,产品迭代完善,直至产品打磨完整,用户能有一定规模。在此简单介绍下,Mooncake平台在推广的迭代过程中的一些策略方式。
首先,前期Mooncake平台通过与各团队进行沟通,约会组织产品和技术分享,先后组织分享20次以上,从首期功能上线,到大的产品迭代变更,给及时同步到大前端内部的各团队同学,主要用以收集用户体验问题,并排期进行产品功能完善。
这个阶段还是以健全功能,完善产品体验为主,可能会有比较多的答疑工作,需要维护好答疑群,做好用户文档编写工作,其中用户文档,需要能做到以下几点。
中期时,主要扩宽产品的用户面,Mooncake平台从服务大前端内部,辐射到效率前端,客户端,测试同学等,在产品功能上进行大的升级,然后期间依旧会通过会议分享、内部宣发,发现潜在用户。
同时,针对产品使用开始制作数据报表,观测双周使用数据情况。同时开始发放产品使用问卷,了解进一步的产品体验提升点,以及后续的产品发力方向。
后期在产品推到一定阶段后,开始By天,By人,制作报表,了解具体产品数据情况,包括用户使用异常,用户粘性情况,用户分布情况等。
目前Mooncake平台在内部已经累计几百用户,近万个数据场景,双周活跃用户百+,后续产品将通过自动化测试来进一步降低产品UI链路验收人工成本,让测试提供核心用例,开发同学自动化进行链路回归;然后与数据服务平台进行深度融合,减少从接口定义,到Mock数据生成中的产品割裂。
未来的Mooncake平台会将演变成结合接口文档、服务市场、数据Mock、自动化测试等为一体的综合研发测试工具平台。
文|凌瑶
关注得物技术,做最潮技术人