写点什么

详解优酷客户端质量评估体系

  • 2020-02-22
  • 本文字数:2759 字

    阅读完需:约 9 分钟

详解优酷客户端质量评估体系

一、客户端质量评估体系的需求

移动客户端的质量包括功能和体验两方面。在不同阶段,客户端质量保障能力建设的粒度和广度的需求并不相同。早期可能快速试错是一种更为高性价比且有效的手段,但是随着应用的规模和用户体量逐渐增加,合理的质量保障投入就成为了一个必需品。明确质量保障的需求和范围,找到质量保障的成本和质量出现问题的修复成本的有机结合点,实现质量和成本收益最大化,是在设计和实施质量保障工作前务必要考虑清楚的事情。


体系化建设主要包括两个维度的实践:通过评估手段和方法的建设实现“有法可依”,通过流程和监督体系的建设实现“有法必依”。本文将介绍优酷技术质量部在“有法可依”维度进行的一系列建设,希望能给读者提供一些参考。

二、客户端质量评估体系的建设

根据优酷质量保障的需求和业务特点,我们重点在如下图示的几个重要阶段进行了投入,并且在构建打包阶段、整包验证阶段和线上验证阶段进行了重点建设。


1. 需求评审阶段

需求评审是整个开发测试流程的起点,占据非常重要的位置。质量控制团队在需求制定和评审阶段有效介入,确认需求的合理性以及质量的可评估性,在需求中强调对质量风险的处理能力以及对测试支持的友善性,将会对后期软件质量的可控起到非常重要的作用。我们在每个版本启动阶段进行需求评审,除了明确需求细节之外,会对新需求潜在的质量和用户体验影响、以及可测试性进行讨论,最大限度的暴露问题并寻求解解方案,极大的节省了后续定位问题和返工的成本。

2. 编码开发阶段

我们通过推动 Code Review 以及单元测试来评估这一阶段的质量情况,主要扮演了协调者和监督者的角色,编码开发阶段的规范化也是我们在加大力度进行建设的部分。

3. 构建打包阶段

构建打包阶段相对整个应用版本的生命周期来说仍然处于一个较早期的阶段,适合的能力针对性的投放在这个阶段可以做到以小博大,投入少,产出明显,例如静态代码扫描、包大小健康度检查等等。优酷技术质量部也是优先在这个环节发力,解决了较多相对埋藏较深的历史遗留隐患。

4. 整包验证阶段

通过测试分层、分类,加强自动化能力建设以及拓展新的测试能力这几个手段,我们在整包测试环节取得了不错的进展,提升了测试能力和测试效果。


针对优酷客户端测试的需求和组织形式,我们优先根据测试的目的从两个维度对测试内容进行分层操作:服务端+客户端,白盒+黑盒。


常规的端上黑盒验证存在一些固有弊端:场景多、链路长、执行过程复杂,难以维护和提效。通过服务端和客户端的测试分层,在服务端的接口处设置一道验证屏障,保证服务端的逻辑正确,可以有效减少测试验证的链路长度和复杂度,简化客户端的测试场景,从而减小客户端的测试压力。服务端的自动化验证是相对容易实现和部署的,执行效率高,成本低;经过简化的客户端验证因为少了很多待验证场景,去掉了相当多的 pre-condition 设置和环境/场景切换动作,自动化可行性也大大提高。


在此基础上,我们又对客户端侧的测试进一步进行细化。部分可以通过白盒测试解决的场景,可自动化程度极高,维护成本非常低,例如通过白盒直接控制播放器接口的方式对播放器进行操作,比 UI 操作的准确性和稳定性都要高很多。设想一个拖拽快进播放的场景,通过 UI 自动化实现几乎是一场噩梦,多机适配更是一个不可能的任务,但是白盒化测试来实现却易如反掌。但确实有些测试确实需要走到 UI 层用黑盒的方式操作才能实现,或者在 UI 层的操作才能触及到验证点,测试团队只有在这种情况下测试团队会选择黑盒方式完成测试。通过两次分层,各层测试场景的数量和复杂度均比较可控,可自动化程度极大提高,需要人工投入的成本和压力减少。


为了最大化的提效,我们对端上测试又进行了分类,如:回归测试、遍历测试、兼容性测试和适配测试等等,其目的是为了进一步提升测试的针对性,减少测试外延,降低测试复杂度。通过测试分类,不同的测试类型关注不同的验证点,进一步拆分了测试场景,降低了每一种类型的测试复杂度,从而使得回归、遍历和兼容性测试可以更好的进行自动化转化,快速高效的完成核心场景的检查,并通过适配测试补齐自动化测试在覆盖面上的短板。对几种测试类型的选择使用和组合使用,将使得测试策略更加灵活,测试效率和效果大大提高。



除了功能验证外,客户端性能测试不可或缺。优酷在性能测试上投入了较多的精力进行建设,取得了不错的成绩。

5. 线上验证阶段

经过编码开发阶段、打包构建阶段和整包阶段三个阶段不同维度的验证,可以最大限度的减少问题上线。但是线上用户的使用设备和使用环境千差万别,使用场景也很随机,线下测试基本无法做到对线上场景进行穷举验证。因此应用发布上线后,很大概率还是带着这样那样的问题的,仍然需要有效的质量保障手段支持。


减少线上用户影响的一个有效方法是控制用户范围,发布灰度版(beta 版、试用版)或分批发布都是比较可行的办法。灰度发布不是简单的随机圈一波用户进行测试版推送,推送的策略非常重要。我们分析了线上用户的各项特征指标,建设了用户分布模型,并基于此实现了可控的灰度推送策略,帮助优酷在灰度发布的效果和效率上取得到了较大的提升。


减少线上用户影响的另一个方法是快速止血,这需要建设完备的线上监控体系:


首先,要求有一个可靠的数据平台,有效的收集和回流线上的特征数据信息;


其次,需要根据自身业务的特点,针对性的制定监控策略,有效的利用数据平台的数据。


无论是在灰度期间还是应用正式上线全量之后发现的问题,都是对线下测试的有益补充,应该有效的加以利用。我们建设了从灰度发布到线上全量的自动化体系,串联起了灰度发布、正式发布、线上监控等环节,并对监控发现的问题自动进行分发并回收结果。基于这套自动化的流程,不仅可以确保线上问题得以及时发现,还可以加强线上问题的处理效果,目前已经成为了优酷版本发布流程中的必备环节。另外,线上问题尤其是影响面比较大的,应该进行深入分析,对可以提炼出问题路径或者验证方法的问题转化为线下验证用例。当前优酷在构建打包阶段的静态代码扫描和整包验证阶段的 BadCase 回归,都有基于线上问题转化而来的用例,来补充线下测试在测试设计阶段难以预估的测试场景。

6. 平台服务化

从需求评审到线上验证,质量保障工作贯穿于每一个需求的整个生命周期,涉及的验证环节众多且分散。我们是通过提供统一的、标准化、规范化的测试平台服务来串联各个环节的测试能力,由平台负责实现、管理、调度各种客户端测试手段,并对接各个业务团队的测试需求,提供各业务一致的解决方案。另外,测试平台利用流程服务的驱动在优酷版本发布的过程中实现关键节点的测试验证和结果展示,帮助业务方、PMO 等核心角色确认当前集成版本的质量。通过平台化建设,整合客户端的各种测试能力实现的这一套测试体系,真正构成了优酷的客户端质量评估体系。


作者介绍


翀宸,阿里文娱技术专家。


2020-02-22 10:152787

评论 1 条评论

发布
用户头像
需求评审后就直接进入编码开发阶段啦?
2020-02-24 12:06
回复
没有更多了
发现更多内容

聊聊 Sharding-Jdbc 的原理-初篇

Nick

MySQL 分库分表 中间件 ShardingJDBC 6月月更

OceanBase 源码解读(十四):集群位置信息的存储与汇报

OceanBase 数据库

数据库 oceanbase 集群位置信息

Docker下RabbitMQ延时队列实战两部曲之二:细说开发

程序员欣宸

Java RabbitMQ RabbitMQ延时队列 6月月更

15 个用于创建漂亮图表的 JavaScript 库

devpoint

eCharts D3 plotly 图表库 6月月更

在 CloudIDE 里实现天猫精灵自定义技能的业务逻辑

汪子熙

人工智能 机器学习 机器人 Cloud 6月月更

OceanBase 源码解读(十五):Location Cache 模块浅析

OceanBase 数据库

数据库 oceanbase 源码解读

OceanBase 源码解读(十二):事务日志的提交和回放

OceanBase 数据库

oceanbase 源码解读

C#入门系列(三) -- 数据类型

陈言必行

C# 6月月更

深入浅出 ODP(一):功能模块及特性详解

OceanBase 数据库

数据库 oceanbase

[ Kitex 源码解读 ] 代码解读思路的总结

baiyutang

字节跳动 微服务 kitex 6月月更

[go] 后台管理数据权限控制实现 (无业务修改)

林逸民

Fabric.js 上标和下标的使用偏方🔥

德育处主任

Web canvas 前端可视化 Fabric.js 6月月更

InfoQ 极客传媒 15 周年庆征文|分布式系统解决之道:目录、消息队列、事务系统及其他

No Silver Bullet

分布式系统 消息队列 6月月更 事务系统 InfoQ极客传媒15周年庆

OceanBase数据库荣获领先科技成果“新技术”奖

OceanBase 数据库

oceanbase 数博会

王者荣耀商城异地多活架构设计

dan629xy

生态对对碰丨OceanBase如何与Prometheus与Grafana监控结合

OceanBase 数据库

Grafana Prometheus oceanbase

SpringBoot下用Kyro作为Redis序列化工具

程序员欣宸

Java 6月月更 Kyro

OceanBase 成为信通院首批可信开源社区、可信开源项目

OceanBase 数据库

开源 oceanbase 信通院

基于 RDMA 的分布式系统研究进展

OceanBase 数据库

RDMA

万物并作,吾以观复|OceanBase 政企行业实践

OceanBase 数据库

数据库 oceanbase

【愚公系列】2022年06月 二十三种设计模式(二十)-状态模式(State Pattern)

愚公搬代码

6月月更

Javascript中的垃圾回收

大熊G

JavaScript 前端 6月月更

迷宫问题java(DFS,回溯法,递归)

写代码两年半

DFS 迷宫 javase 回溯算法 6月月更

内存数据库和磁盘数据库哪个更强?

OceanBase 数据库

内存数据库 oceanbase 磁盘数据库

Oceanbase 读写分离方案探索与优化

OceanBase 数据库

分布式数据库 读写分离 oceanbase

创建一个springboot服务就是这么简单

乌龟哥哥

6月月更

模块7作业

KennyQ

模块七:王者荣耀商城异地多活架构

jiaoxn

「架构实战营」

富滇银行完成数字化升级|OceanBase数据库助力布局分布式架构中台

OceanBase 数据库

分布式数据库 oceanbase

产教融合加速数据库人才培养 | OceanBase数据库大赛10强诞生

OceanBase 数据库

数据库 oceanbase 产教融合

生态对对碰丨详解 Flink CDC+OceanBase 全增量一体化数据集成方案

OceanBase 数据库

数据库 oceanbase Flink CDC

详解优酷客户端质量评估体系_移动_阿里巴巴文娱技术_InfoQ精选文章