NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

评论 1 条评论

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

Linguist for Mac(mac菜单栏语言翻译工具)v3.2激活版下载

iMac小白

如何使用 NFTScan NFT API 在 Fantom 网络上开发 Web3 应用

NFT Research

API NFT\ NFTScan

软件测试/测试开发/全日制 |理解Web应用性能优化的关键技术

测吧(北京)科技有限公司

测试

14代酷睿亮相!华硕天选5 Pro新配置开售,比13代贵500元值吗

E科讯

Snagit for mac(最强大的屏幕截图软件)v2023.2.6中文版下载

iMac小白

Solidity之旅(十八)内联汇编 [inline assembly]

BSN研习社

QuickLinks for Mac(菜单栏快捷命令)v3.2激活版

iMac小白

低代码与小程序开发:简化创新,加速应用开发

EquatorCoco

小程序 低代码 程序开发

Boxy SVG for Mac(矢量图编辑器)v4.21.1免激活版

iMac小白

Navicat Premium 16 for Mac(数据库管理软件)v16.3.5中文激活版

iMac小白

拼多多根据ID取商品详情原数据 API 实现实时数据获取的完整指南

Noah

getIRC-IRC Client for Mac( IRC 聊天客户端工具) v1.5直装版下载

iMac小白

软件测试/测试开发/全日制/测试管理丨自动化测试框架UI Automator

测试人

EzyCal for Mac(日历管理和提醒工具)v2.3激活版

iMac小白

2024 爱分析 · AI 与大模型高峰论坛:和鲸喜获两项殊荣!

ModelWhale

人工智能 大数据 数据智能 大模型 前沿

软件测试/测试开发/全日制/测试管理丨移动自动化测试框架Appium

测试人

软件测试

游戏被攻击,有没有什么好的解决办法

德迅云安全杨德俊

DDoS

软件测试/测试开发/全日制/测试管理丨Appium Server

测试人

软件测试

软件测试/测试开发/全日制 | 使用Vue.js构建单页应用(SPA)

测吧(北京)科技有限公司

测试

打造自主品牌的体育赛事直播平台,无需开发源码搭建

软件开发-梦幻运营部

软件测试开发/全日制/测试管理丨Web、App 测试不同场景定位方式

测试人

软件测试

软件测试/测试开发/全日制 |理解CORS与跨域资源共享的应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |构建基于机器学习的实时推荐系统

测吧(北京)科技有限公司

测试

Alarm Clock Pro for mac(闹钟和时间管理工具) v15.6激活版下载

iMac小白

软件测试/测试开发/全日制 |理解JavaScript的异步编程模型

测吧(北京)科技有限公司

测试

JavaFx项目至安装程序

alexgaoyh

JavaFx exe4j 桌面应用 Inno Setup Compiler jre运行环境

Ronin 与 Footprint Analytics 宣布合作,探索使用数据赋能 Web3 游戏

Footprint Analytics

区块链 加密货币

亚马逊API:快速查询全球商品数据的技巧!

技术冰糖葫芦

API

必须知道了解的40个SEO专业术语!

九凌网络

MetaImage for Mac(图像元数据编辑器)v2.6.3中文激活版

iMac小白

一文解析Web缓存代理

不在线第一只蜗牛

Web 前端开发 web开发

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