背景
在浏览器Feeds的测试工作中,目标主要分为两个方面:
所谓样式,即为Feeds下滑过程中每一个条目所展现的形式,也是我们本文测试方案关注的重点,其具体形式如下图所示:
所有Feeds内容都通过服务器端下发,数据下发之后在终端Hippy框架中做Native处理,最终呈现给用户,其大概逻辑如下图所示:
目前Feeds中样式合计66个, 从下面的分布图中可以看出,top10的总量已经超过了95%。
图如下所示:
在分布如此不均衡的情况下,集成测试中为了尽可能覆盖全部样式,我们主要通过两种手段处理。
在这种方案下,我们每次的集成测试消耗大致如下:
需求分析
基于以上问题分析,我们需要一套自动化的方案来精简与加速流程。具体需求如下:
方案初想:
根据需求分析和固有测试的瓶颈,通过研究实验,我们引入了一个概念:契约测试。
所谓契约测试,简而言之,即在多个互相依赖的模块之间订立契约(Contract),每个模块都只对契约负责,不关心契约背后消费者(Consumer)。而消费者则只针对契约依赖,不关注契约背后的服务方(Provider)。
于是,端到端测试便做了衍生,最终结果如下图所示:
方案选型对比
基于上面表格对比确认,以及和开发讨论,我们最终决定借鉴Sinon.js来快速设计实现我们的契约测试方案。总体流程图如下图所示:
其中存储数据环节,同步使用python自动分析,并转存成excel与markdown,便于统计以及与产品,开发等同步信息。
应用场景
最终收益
通用性思考
当契约测试接入业务过多的时候,推荐将功能服务器化,做成契约Server 的形式提供,可以相当大的成都节省项目适配成本和维护成本。
后期我们会根据每个维度陆续写相关的测试文章,如果你有兴趣,请关注我们哦。
长按指纹识别图中的二维码,获取更多测试干货分享!
将我们公众号置顶
不会漏掉我们的原创干货哦!
var first_sceen__time = (+new Date());if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx45ba31.css"; head.appendChild(link); } })();
lynnmi
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
分享 在看
已同步到看一看
确定
已同步到看一看写下你的想法
最多200字,当前共字 发送
已发送
确定
写下你的想法...
取消
确定
最多200字,当前共字
发送中
微信扫一扫 关注该公众号
微信扫一扫 使用小程序
即将打开""小程序