最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

优酷客户端性能评估解决方案:通用性能测试

  • 2020-02-27
  • 本文字数:3618 字

    阅读完需:约 12 分钟

优酷客户端性能评估解决方案:通用性能测试

一、客户端性能测试的需求和重要性

客户端性能的重要性不言而喻,一方面影响着客户端整体质量稳定性,任何性能指标的越界都可能造成整个 APP 的崩溃,例如 CPU 使用过高导致应用 hang 住,内存占用过多导致 OOM 等等;另一方面,性能影响用户体验,例如页面加载的速度、划动浏览的流畅度等等,对于用户的使用和留存意愿有直接的影响。本文将详细介绍优酷通用性能测试解决方案的落地情况。

二、通用性能测试解决方案的建设

常见的性能数据采集方式是通过应用内置的接口进行数据上报,整体获取线上存量 APP 的数据,如启动时间、页面加载时间、页面 FPS 等等。但是以此作为版本发布的质量指标并指导性能优化的动作还不够细致。大盘数据更适合给出如 90%区间值等指标来指导整体性和方向性的调整动作,但是每个版本迭代中的微小变化,很难反映出来。同时对于有竞品及行业数据对比的情况,大盘数据也不适用。为此优酷技术质量部着手建设了性能测试解决方案。


第一步是确定需要满足哪些测试场景的性能测试需求。性能测试通常覆盖两种测试场景:


  1. 获取时间维度的数据,如启动时间、页面加载时间、播放起播时间等等;

  2. 获取基础性能数据,如 FPS、CPU、内存、IO 等等指标。


作为以视频播放为主的应用,优酷的性能测试还需要关注播放场景下的特定数据采集,例如卡顿次数和播放时长等。


基础性能数据通常可以直接从手机中获取,Android 及 IOS 均提供了一些命令行工具或者系统接口帮助获取这类信息。对于基础性能数据的采集,只需把自动化执行过程和数据采集过程有机的整合起来,做好数据同步的同时减少数据采集对性能的影响即可。


加载时间维度数据的获取要相对复杂一些。业界比较通行的做法是利用视频分帧和图像分析相结合的方式计算时间维度的数据。相较于通过应用内置接口上报数据或者分析日志的方式获取时间信息来说,这种方案更加复杂,但是更加接近真实用户的实际使用场景,因此数据更加准确。为了最大限度的保证用户体验,优酷的性能测试方案从一开始就确定使用视频分帧分析的方案。


实现视频采集分帧的自动化性能测试,需要具备 3 个条件:


  1. 稳定的自动化驱动能力;

  2. 准确的图像识别和强大的分析能力;

  3. 确保整个流程可以自动化运转的平台调度和服务能力。


除此之外,性能测试的能力若想真正发挥作用,被开发和测试团队所接纳,还需要制定一套切实可行的性能测试标准和执行流程。


在优酷技术质量部,客户端测试平台负责测试设备和自动化测试任务的管理和调度;魔镜服务负责视频的解析和图像计算。在性能测试早期的实现方式中,移动架构团队和研发效能团队配合来全权负责性能测试的需求,根据测试设备保有情况随机选择测试设备,覆盖少量加载时间验证场景,形成了如下的一种耦合方式。



很快我们发现这种配合方式并不理想。首先,整个流程没有业务方参与,测试效果和测试场景与业务需求脱节;其次,优酷客户端测试平台与魔镜服务耦合过深,双方在进一步建设过程中束手束脚,难以发挥各自特长;第三,缺少业务方的主导,整体能力缺少落地的保障,技术团队维护测试能力成本非常高。为此,我们特地协同业务需求方梳理了整体需求,重新制定了参与的各方和任务排布,形成了一套非常明确的配合机制(如下图所示)。



在这个配合模式中,业务方、客户端测试平台和魔镜服务各司其职,各自专注在自己擅长的领域,形成了 1+1+1>3 的协同发展模式。


基于这种模式,我们开启了通用性能测试的建设。这包括几部分内容:


  1. 测试驱动方法标准化,提供双端(Android 及 IOS)一致的自动化执行方案;

  2. 测试环境标准化,为保证性能测试的准确性,全部辅助测试手段采取外置化(例如视频采集不通过录屏而通过外部拍摄的方式),同时对测试环境温度、网络环境,以及视频拍摄所需的亮度、拍摄可控性等提出了严格的要求;

  3. 测试方案标准化,选用什么样的设备,测试哪些场景,以及执行过程和结果采集点的制定均实现标准化规范化;

  4. 测试流程服务化,整个测试的执行环节通过平台化的能力以服务的方式提供出来,可以和其他平台和流程服务对接,以便快速在业务平台和版本发布流程中落地。


不同业务方原本具有不同的自动化能力选择,整体驱动模式不统一,测试用例管理和适配比较困难,复用性非常不理想。推动测试驱动方式标准化,各方统一基于一套方案进行开发是推动整体性能测试标准化的基础。基于对测试需求的分析,我们选择了蚂蚁集团基于 Appium 改良而来的测试框架 Totoro,并对 Totoro 的接口按照优酷的测试需求进行了二次封装,实现了自己的自动化测试驱动框架。


在测试方案标准化上,我们优先确定了测试设备的配置。为了更好的量化不同机型上的性能表现,我们基于优酷在线上占比 TOP30 以内的机型,按照其性能打分的情况进行筛选,最终确定高、中、低端 3 款机型作为测试承载机;测试场景的选择和建设则参考用户核心使用场景进行筛选,确保用户体验得到最大化的保障。


测试环境标准化建设是通用性能测试方案投入较多的部分。我们知道温度对手机的性能影响比较大,有些机型甚至会在高温下出现降频保护以及充电保护等情况。测试温度的处理极大的影响着测试的可重入性,决定了一种测试方案是否可以被接受。考虑到外部拍摄的需求,测试环境需要是一个相对密闭的环境以确保环境亮度等符合拍摄需要,这就对散热控温提出了更高的要求。


在拍摄设备的选择上,需要同时考虑拍摄质量、拍摄的可控性及软硬件成本。拍摄质量不用赘述。拍摄的可控性是指拍摄设备可配置和调试的程度,因为被拍摄的场景和被摄机的型号众多,拍摄设备必须具备强大的灵活性并保持高质量的拍摄效果,例如:


  1. 最基本的拍摄参数例如分辨率、码率、比特率、编码格式等等需要可调;

  2. 高级设置如景别设置、曝光参数调整、对焦能力调整、曝光和对焦的锁定能力等;

  3. 合理的软硬件成本。


也许有读者会觉得这么复杂和麻烦,为什么不用录屏的方式,岂不方便。经我们测试,录屏方案在低端机型上会对性能数据带来 10%甚至更多的影响,而且这个偏差会跟着测试场景的变化出现浮动。这对于准确度要求较高的性能测试来说几乎是不可接受的。因此,优酷的通用性能测试从起步阶段就选择了外部拍摄的方案。


经过对测试环境和拍摄方案的调研,首批的通用性能测试环境基于硬板纸盒和千元级别的安卓手机搭建起来了,效果如下。



选用纸盒的原因是纸盒可以快速的完成测试环境的组装,并且可塑性非常好。选用安卓手机作为拍摄装置是在比较了多个摄像头、专业拍摄装置以及多款安卓手机的拍摄效果和可控性之后做出的选择。利用上面的这套环境,在实验室全程空调+风扇的照顾下,短时间内通用性能测试基本满足了业务测试的需求。然而,这套环境的缺点也非常明显:不够标准化,对外部环境依赖较高。为此,我们又开发并搭建了新的测试环境,提供了一套可插件化扩展的标准化测试支持装置。


测试设备和拍摄设备的部署在这套环境中均是标准化的,在环境装置内部散热组件的加持下,即便在外部环境温度 30 度以上的情况下,测试环境中的环境温度和被测设备的电池温度均保持在 30 度左右并且非常平稳。启动或停止散热装置情况下被测设备电池温度的变化情况可以参考下图,整套环境在温度保持方面的效果是非常明显的。



整个通用性能测试方案基于优酷客户端测试平台得到了比较好的平台服务化;魔镜也完成了从本地化工具到线上服务化的转化。通用性能测试解决方案以服务化的形态整体提供出来,非常易于被业务方的测试平台所调度。


通用性能测试可以实现的测试场景较多。加载时间类的测试可以按阶段细分。例如一次启动,从应用首页框架开始加载,到部分组件加载完成,到整体加载完成,把这个过程分阶段展示出来,可以有效帮助开发团队分析性能瓶颈问题。某个场景测试结果的效果样式如下:



对于基础数据相关的测试,优酷客户端测试平台提供了完善的图形化的展示形式,在数值维度提供了均值和标准差,便于业务方对结果进行综合判断。一个 DEMO 场景下 FPS 及丢帧率采集的示意结果如下图:



一个多次采样场景下明显出现内存泄露的内存采集效果如下图:


三、总结

目前优酷移动架构团队在建设性能测试和性能问题分析整合的项目,其目的是在完成性能测试的同时,给出潜在的性能问题建议,帮助开发快速定位和解决性能问题。同时我们在进一步完善平台化建设,争取提供更多维度的结果聚合、分析和展示。在标准化环境建设方面,我们还在进一步完善配套的插件环境与模型,争取让测试环境更加齐备、配置型更高、成本更低。


利用通用性能测试,开发和测试团队可以非常方便了解到性能验证的结果以问题。基于这套解决方案,优酷技术质量部支持了绝大多数业务的性能测试需求,包括优酷主客户端在双 11 前的性能专项优化和直播及各项配套业务的性能验证,发挥了巨大的作用。这套测试方案不仅仅适用于优酷,对各种客户端的性能验证均可以发挥作用。


作者简介


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


相关阅读


优酷播放测试体系构建及平台化整合方案


优酷如何构建覆盖全网的播放白盒测试体系


优酷大剧全链路技术保障探索和实践


优酷客户端打包构建阶段的质量评估解决方案——PreMTL


2020-02-27 14:002495

评论

发布
暂无评论
发现更多内容

软件测试 | 影响MySQL性能的重要参数

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

测试

软件测试 | table_cache的设置

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

测试

软件测试 | 源码包安装的性能考虑

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

测试

软件测试 | 升级MySQL

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

测试

基于YonGPT 的企业收入/利税经营分析,让企业经营决策更从容

用友BIP

百度APP iOS端包体积50M优化实践(五) HEIC图片和无用类优化实践

百度Geek说

ios 性能优化 企业号 8 月 PK 榜

企业诊断屋:服饰美妆电商如何用A/B测试赋能业务

字节跳动数据平台

大数据 A/B 测试 对比实验 企业号 8 月 PK 榜

小程序开发技术解析:事件系统设计

Onegun

小程序 事件 小程序开发

打通数据治理全链路,火山引擎DataLeap数据治理平台公有云版本正式发布

字节跳动数据平台

大数据 数据中台 数据研发 企业号 8 月 PK 榜

软件测试 | 什么时候使用表锁

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

git rebase介绍与可视化工具(sourceTree)提效

时常看看太阳

git git rebase sourcetree

从国内最早的开放银行浅聊技术创新

FinFish

技术创新 开放银行 小程序化 小程序技术

内网穿透之 ngrok

陈皮

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

大瞿科技

Linux系统下安装使用anaconda教程。

百度搜索:蓝易云

Python 云计算 Linux 运维 Anaconda

智慧消防大数据监控系统 城市火警智能监测

2D3D前端可视化开发

智慧城市 智慧消防 消防物联网云平台 消防云控平台

SpringCloud Gateway 在微服务架构下的最佳实践

阿里巴巴云原生

阿里云 云原生 Spring Cloud Gateway

全链路灰度的挑战、实现思路与解决方案

阿里巴巴云原生

阿里云 云原生 全链路灰度

代码随想录Day34 - 贪心算法(三)

jjn0703

深度解读陕西省国资委最新发文,聚焦国资国企建设一流司库

用友BIP

全球司库 国资国企

2023年开放原子校源行(清华大学站)成功举行

开放原子开源基金会

开源 开放原子开源基金会 清华大学

大文件传输的有效可用方式

镭速

大文件传输 传输大文件

免费MES系统:助力企业数字化转型的利器

万界星空科技

开源 数字化转型

构建高效物理计划:从逻辑查询到算子实现

KaiwuDB

KaiwuDB SQL编译 物理计划构建

5分钟get:Uni-App网络请求完美封装指南!

陇锦

微信小程序 uni-app 前端开发 uniapp 前端开发框架

企业税务管理为什么需要数智化转型

用友BIP

税务管理

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册

华为云PaaS服务小智

软件开发 低代码 数据可视化 华为云

CCIA数安委等组织发起“个人信息保护影响评估专题工作”,合合信息首批入选试点

合合技术团队

人工智能 信息安全 个人信息保护

Ubuntu 20.04系统安装Carla详细教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 Carla

【专家观点】贸易企业的数智化绩效管理

用友BIP

贸易

直播软件APP源码iOS提交到APP store系列之上架指南

山东布谷科技

软件 直播 源码搭建 iOS APP上架 app store

优酷客户端性能评估解决方案:通用性能测试_软件工程_阿里巴巴文娱技术_InfoQ精选文章