专栏首页腾讯移动品质中心TMQ的专栏浏览器Feeds契约测试方案简析

浏览器Feeds契约测试方案简析

背景

在浏览器Feeds的测试工作中,目标主要分为两个方面:

  • 样式
  • 其他功能

所谓样式,即为Feeds下滑过程中每一个条目所展现的形式,也是我们本文测试方案关注的重点,其具体形式如下图所示:

所有Feeds内容都通过服务器端下发,数据下发之后在终端Hippy框架中做Native处理,最终呈现给用户,其大概逻辑如下图所示:

目前Feeds中样式合计66个, 从下面的分布图中可以看出,top10的总量已经超过了95%。

图如下所示:

在分布如此不均衡的情况下,集成测试中为了尽可能覆盖全部样式,我们主要通过两种手段处理。

  1. 通过下拉更新方式刷现网数据,具体出现频率基本一如上图占比;
  2. 端到端测试:通过后台开发配置白名单指定下发样式。如下图所示:

在这种方案下,我们每次的集成测试消耗大致如下:

  1. 外网样式刷2个小时,只覆盖top 8的样式;
  2. 其余样式各业务后台开发,收集测试机器guid,配置白名单,重新发布,等待生效;
  3. 总时间消耗在6H+,后台配置下发时间消耗占比40%+;
  4. 两周发一个版本;
  5. 后台开发同事不堪重负(差点要打我:joy:)。

需求分析

基于以上问题分析,我们需要一套自动化的方案来精简与加速流程。具体需求如下:

  1. 减少后台频繁配置下发数据的频率;
  2. 能准确获取并存储外网真实数据;
  3. 能将外网数据准确发给客户端使用;
  4. 能分析数据格式,并对内容做修改;
  5. 能按需整合不同样式,并下发;
  6. 可简单开启与关闭;
  7. 定期更新维护成本低;
  8. 数据格式能清晰可见。

方案初想:

根据需求分析和固有测试的瓶颈,通过研究实验,我们引入了一个概念:契约测试。

所谓契约测试,简而言之,即在多个互相依赖的模块之间订立契约(Contract),每个模块都只对契约负责,不关心契约背后消费者(Consumer)。而消费者则只针对契约依赖,不关注契约背后的服务方(Provider)。

于是,端到端测试便做了衍生,最终结果如下图所示:

  1. 终端不再直接向后台请求数据,转而向Provider请求;
  2. 后台下发和请求全部由Mock层接管;
  3. Mock到的数据静态存储,并处理之后提供给Provider下发使用。

方案选型对比

基于上面表格对比确认,以及和开发讨论,我们最终决定借鉴Sinon.js来快速设计实现我们的契约测试方案。总体流程图如下图所示:

其中存储数据环节,同步使用python自动分析,并转存成excel与markdown,便于统计以及与产品,开发等同步信息。

应用场景

  • 前端开发同事自测依赖Provider提供数据
  • DailyBiuld自动化冒烟验证
  • 手工集成测试中使用
  • 自动化性能数据收集

最终收益

  • 版本发布周期由两周缩短至一个周
  • 集成测试时间6H+缩短至2.4H左右
  • 后台开发GG不再配置大量回归样式
  • 现网数据 Mock 30s可完全更新

通用性思考

当契约测试接入业务过多的时候,推荐将功能服务器化,做成契约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字,当前共字

发送中

微信扫一扫 关注该公众号

微信扫一扫 使用小程序

即将打开""小程序

取消 打开

本文分享自微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)

    PS:appium明显要比安卓的ui那个工具好用多了,重点是开头的那段配置,一开始的截图,我的Andriod单词写错了,是onReset,截图写成了onRese...

    IT故事会
  • Python自动化之代码覆盖

    不论是单元测试还是自动化测试,代码覆盖率都是由特定的测试套件覆盖被测源代码的程度来度量的。当然在现实的情况中,测试代码应该更加高质量的保证把包含到...

    无涯WuYa
  • Python自动化之unittest框架

    在软件架构的层面来讲,测试最重要的步骤之一是发生在软件开发的时候。而软件最终的功能是软件实现细节实现的产物。在金字塔模型的测试理论体系中,单元测试是最...

    无涯WuYa
  • 如何做一枚合格的数据产品经理

    根据定义,产品经理负责统筹各方需求,选择业务模式,并根据公司产品的生命周期进行协调、研发、营销、运营。

    大数据文摘
  • 加州自动驾驶路测规则“生变”,轻型运输车辆或将被纳入允许范围

    目前,许多自动驾驶汽车研发商都会选择在美国加利福尼亚州(以下简称“加州”)进行路测,但这其中被允许的测试车型不包括自动驾驶轻型运输车辆。而现在,这一规定现在有了...

    镁客网
  • 砸了几十亿美元,坐拥近500项相关专利,丰田说自己不搞“无人”驾驶

    冷不丁的一看,这是不是有病,自动驾驶不就是为了无人吗,不取代人类司机,那搞起来有什么用?

    量子位
  • 「docker实战篇」python的docker爬虫技术-移动自动化控制工具uiautomator工具(16)

    1.uiautomatorviewer – 一个图形界面工具来扫描和分析应用的UI控件。 2.uiautomator – 一个测试的Java库,包含了创建UI测...

    IT故事会
  • 美团“小袋”成为国内首个通过测试资质的服务型电动自动行驶轮式车

    4月初,在国家智能汽车与智慧交通(京冀)示范区亦庄基地内,经封闭测试场日常训练、自动行驶轮式车能力评估测试等系列程序,美团无人配送车“小袋”成功通过测试,并获得...

    美团无人配送
  • Selenium3框架详解

    自从17年开始就不再怎么关注UI自动化测试了,也就很少关注Selenium的知识体系,在当时的背景和环境下有很多的思考和选择点,基于UI的自动化测试...

    无涯WuYa
  • 软件开发成本估算过程中何时适合测量软件规模?

    软件项目的规模一般会随着需求的逐渐清晰而不断明确,规模测量的时间点可以在软件研发项目的里程碑点进行。常见的项目里程碑点包括:

    软件造价评估联盟

扫码关注云+社区

领取腾讯云代金券