前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器Feeds契约测试方案简析

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

作者头像
腾讯移动品质中心TMQ
发布2019-05-16 15:40:07
6490
发布2019-05-16 15:40:07
举报

背景

在浏览器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字,当前共字

发送中

微信扫一扫 关注该公众号

微信扫一扫 使用小程序

即将打开""小程序

取消 打开

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯移动品质中心TMQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 朋友会在“发现-看一看”看到你“在看”的内容
  • 朋友将在看一看看到
  • 发布到看一看
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档