2012年,百度云正式推出,随即推出一系列服务(如数据存储、文件分享、个人主页、图片智能管理、视频播放、离线下载、闪电互传、手机忘带、数据线等),构筑了一套完整的云上生态。与国内外主流厂商如三星、OPPO等合作让云能力成为终端机标配,3年实现3亿用户的增长。与此同时产品与技术不断创新,对质量保障工作带来了不小的挑战。本文将从测试技术、专项保障,体系经验三个维度讲述了百度云的质量保障工作。
  质量保障体系
  质量保障的核心目标是质量 & 效率并重,对于互联网产品来说诠释如下:
  质量
  不仅仅是功能可用性层面,需要关注用户体验。
  不仅仅是上线前的质量保证,需要延伸至把关上线中、线上的质量。
  不仅仅只停留在好坏的感性模糊认识,需要将质量概念量化、可视化。
  不仅仅光靠抽样个例,需要大数据统计做强有力的支撑。
  不仅仅只局限自身产品的质量,也需要关心竞品。
  效率
  加快产品迭代,唯快不破。
  提高问题暴露,定位以及解决速度,快中求稳。
  对产品建立质量标准,将其度量化并形成稳定的、可衡量的产品质量benchmark,对于个人云存储产品可以列出数据完整性、安全性、传输速度、在线消费体验等核心的质量维度。线下以此作为发版标准,驱动产品质量迭代越来越接近目标;线上以此作为监控范围,对线上质量问题主动防御,加快应对。

  “以质量为中心,以数据为驱动”为宗旨贯穿整个流程,将各种测试工具和方法融入进来,构筑一套全流程质量保障体系,如下图所示:

  测试技术
  线下集成持续化、测试服务化,以应用质量(QPS、SLA、性能)、业务指标、过程质量(代码覆盖率,千行 bug 率)一系列发版标准为目标,将自动化测试、性能、单测、异常等工具集成入构建—部署—quickcheck—slowcheck—release 的流程中,快速发现问题并解决,迭代质量。线下需要更多精力关注在异常和性能测试中,这些往往是线上问题多发区。
  上线过程中灰度控制,把产品发布过程划分为多个级别,每个级别限制一定的流量和用户范围,并在每个级别对产品进行部署和验证的迭代过程。一方面逐步放量,小心验证,降低上线带来的风险;另一方面开展用户测试,让用户参与产品测试,加强与用户互动。让用户参与 beta 环境分为两种情形:被动命中(将同一特征的用户强制划分至小流量环境中)和主动邀请(邀请粉丝或有偿用户)。对服务器来说架构能够支持逐步放开流量,对客户端发版来说有一个平台支持哪些版本哪些用户能升级到beta版本,并且在小流量阶段要密切关注监控和用户反馈,将问题及时扼杀在萌牙阶段,不带到全量阶段。
  线上监控 & 定位,从基础拓扑(网络、单机、数据库等底层服务)、服务稳定性(接口成功率、5XX、4XX非预期返回码的占比等服务器可用性层面)和业务质量(上传、下载的成功率等用户功能层面的易用性)三个核心要素延展开全方位细粒度的监控覆盖,并从质量标准、质量防线和质量闭环三个维度进行质量建设:首先对产品建立一套完善的产品质量标准体系,并将其度量化,固定成 benchmark。紧紧围绕质量数据,组建从用户(舆情热点)、端(产品体验)、服务器(稳定性)到基础网络(SLA)的层层实时防护网,后通过上线管理—报警中心—智能定位—故障通报的质量闭环环节落地,不断迭代优化,能够快到线上问题快速预警、定位及解决。