AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

  • 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:152760

评论 1 条评论

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

医疗机构如何利用云原生加速智慧医院建设?

York

云原生 系统架构 智慧医疗 医疗信息化 互联网医疗

Flink CDC 在大健云仓的实践

Apache Flink

大数据 flink 编程 流计算 实时计算

庄周梦蝶终非蝶,冷静看待“谷歌AI形成人格”事件

易观分析

谷歌AI

字节跳动Dev Better技术沙龙来啦!参与活动赢好礼,限时免费报名中!

字节跳动终端技术

字节跳动 技术沙龙 华泰证券

如何在 Django 中使用 MVT 创建基本项目?

海拥(haiyong.site)

django 6月月更

了解 Session、LocatStorage、Cache-Control、ETag

CRMEB

低代码实现探索(四十二)数据+方法+组件

零道云-混合式低代码平台

Android技术分享| 自定义LayoutManager

anyRTC开发者

音视频 移动开发 Andriod 动画效果 LayoutManager

芯动科技加入龙蜥社区,创新驱动生态发展

OpenAnolis小助手

操作系统 芯片 龙蜥社区 CLA 芯动科技

实战模拟│揭秘为啥年会你抽不到特等奖

随机 概率 抽奖系统 6月月更

NLP论文领读|缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧

澜舟孟子开源社区

人工智能 自然语言处理 神经网络 深度学习 nlp

新闻速递 | MobTech受邀参与华为开发者联盟沙龙,谈数据智能撬动增长

MobTech袤博科技

移动互联网 运营 精细化运营 华为开发者联盟 HDG

为了写好代码,我坚持了这8条习惯!

Jackpop

签约喜报 | 月财生态签约旺链科技,区块链溯源让有机产品“有迹可循”

旺链科技

区块链 产业区块链 食品溯源 有机食品

百问百答第42期:应用性能探针监测原理-.net

博睿数据

智能运维 博睿数据 性能监测

打造“更懂电池”的充电桩 星云股份底气何来?

E科讯

【高并发】高并发环境下构建缓存服务需要注意哪些问题?

冰河

并发编程 多线程 高并发 异步编程 6月月更

java培训 | Mybatis的特性

@零度

mybatis JAVA开发

OpenHarmony 官网文档有哪些上新?上篇:应用开发文档上新

OpenHarmony开发者

OpenHarmony

大数据培训Table API 和 Flink SQL的整体介绍

@零度

flink 大数据开发

交友app源码未来的发展趋势是什么?

开源直播系统源码

直播倒计时1天!天翼云HPC解决方案助力企业腾飞

天翼云开发者社区

小程序IDE,快速配置让App具备“一码通”能力

Speedoooo

ide 二维码 一码通

面试官神级问题:DNS服务器是否可以加快我们的网络访问速度?

wljslmz

服务器 DNS 6月月更

理解异步

大熊G

JavaScript 前端 6月月更

如何使用 API 的方式消费 SAP Commerce Cloud 的订单服务

汪子熙

node.js SAP commerce 电商云 6月月更

从社恐到社牛,多亏了这款私人学习成长暗器!

博文视点Broadview

今天 3 点!Intel Arch 和高性能存储技术两大 SIG 核心成员在线分享|第 21-22 期

OpenAnolis小助手

容器 镜像 直播 内核 龙蜥大讲堂

TiDB 6.1 发版:LTS 版本来了

PingCAP

分布式

Push还是Pull,这是个问题么?

MatrixOrigin

push Pull MatrixOrigin MatrixOne 数据库·

EasyNLP带你玩转CLIP图文检索

阿里云大数据AI技术

数据挖掘 存储 算法框架/工具 机器学习/深度学习

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