QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

  • 2020-02-26
  • 本文字数:2464 字

    阅读完需:约 8 分钟

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

一、PreMTL 的由来

阿里巴巴各 BU 的客户端打包构建通常是基于摩天轮(MTL)平台来完成的,它可以满足大部分的通用性需求,但对部分个性化需求难以及时响应。因此,优酷技术质量团队建设了 PreMTL 体系——意在摩天轮(MTL)打包之前的检查,快速服务优酷在打包构建环节的验证需求。

二、PreMTL 核心能力简介

在 PreMTL 体系中,我们重点建设了三个能力:静态代码扫描、包大小健康度检查、苹果审核预查。

1. 静态代码扫描

如果 Code Review 做的足够到位可以解决大部分编码问题的。但考虑到效率和覆盖范围,需要引入高自动化程度的静态代码扫描。优酷线上有相当一部分问题是由空指针引起的,如果通过客户端整包验证来发掘这类问题,好比大海捞针,即使是出现频度较高的 NPE 问题也难以发掘。静态扫描可以发挥巨大的功效,但也存在挑战:


第一是直接应用服务端扫描的工具和模式,未必适合客户端的情况;


第二是如何长效化的落地静态扫描的能力,避免短期的战役形式的推进。


为有效的应对上述挑战,我们明确了静态扫描方案的具体要求:


  1. 准确度高,保证扫描结果和效率的最基本的要求;

  2. 执行效率高,以满足高执行频度下快速获取结果的需求;

  3. 配置简单、灵活,支持自定义规则,以满足不同业务个性化的需求;

  4. 持续集成友好度高,与测试平台和流程集成成本低;

  5. 最好提供双端(Android/IOS)一致的体验和方案。


基于这几个维度的筛选,我们最终选定了 Facebook 开源的静扫工具 Infer 作为主力工具进行接入。同时利用客户端测试平台的服务化能力,将用户的上手成本降到最低。



经过平台化建设的静态扫描的配置界面如上图所示,需要用户输入和选择的信息非常少,需要的内容也非常明确,上手成本比较低。一旦用户实际触发了静态扫描,平台会有机整合结果以及附加的操作,方便用户对结果进行筛选和处理。客户端测试平台静态扫描的综述结果页和详情结果页如下图所示:




[染画 1]客户端测试平台除了提供非常详尽的结果指示、查询和操作能力,还提供了对比扫描、自定义规则录入等能力,大大降低了使用成本并方便用户实现个性化测试需求。基于平台服务化,静态扫描具备了被其他平台和系统调用的能力,可以很好的集成到任何业务或团队的平台或流程中,快速发挥作用。


经优酷技术质量团队牵头,优酷在 2019 年对历史存留的空指针问题进行了集中治理,达到了 Android 端核心模块 90%+零存量 NPE,iPhone 端核心模块 80%+ 零存量 NPE 的成果,极大的解除了版本质量隐患。同时,通过多平台有效对接和联动,静态扫描已经变成了优酷客户端版本发布过程中的必经环节,实现了版本质量的常态化保障。

2. 包大小健康度检查

包大小健康度是一项比较重要但是可能被忽略的质量指标。臃肿繁杂的应用安装包不光存在更高的质量和稳定性隐患,使得问题排查的复杂度相对更大、成本更大;另一方面,安装包大小直接影响着用户的下载或保留应用的意愿。


单纯的关注整包大小并不能解决实际问题。很多版本发布流程或平台对应用整包大小都会有一些限制,从实际情况看发挥的效果非常有限,即便超过阈值也常常会因为业务需求开绿灯。如果没有一个有效的方案对应用包中存留以及新增的代码和资源的合理性进行检查和评估,并给出准确的判断结果指导业务方进行优化,应用包体积控制就会变成一个痛苦的反复讨论、对比的过程,甚至会常态化的挣扎在包体积大小的阈值线上面。为此优酷技术质量部推出了包大小检查能力,取得了不错的效果。


所谓包大小检查,是根据影响包体积大小的现实问题分别列出对应的指标,例如资源文件的大小和引用情况,PNG 图片的使用情况,代码混淆情况,或者各个模块在线上被访问的热度等等。优酷通过这种检查方式避免了对应用体积简单粗暴的一刀切式管理方法,转为数据驱动、以事实说话的方式,让新的需求可以合理的集成进来,同时又最大限度的保持了应用体积处在一个健康的状态。下图展示了客户端测试平台进行一次包大小健康度检查的结果界面,读者可以参考。





通过以上多维度的数据展示,开发团队可以有效的对存在问题的部分进行优化,决策方可以快速的判断体积增加的合理性。经过一段时间的集中推广,包大小健康度检查也已经成为了优酷客户端版本发布过程中的一个必须的检查项目,安装包的体积大小得到了较大的优化并有效控制在了一定的浮动范围内,整体效果符合项目建设的预期。优酷多个版本的包体积大小走势示意(安卓端)如下图所示。


3. 苹果审核预检查

苹果对于在应用商店发布的应用都有详细的上线前审核,优酷在应对苹果审核的检查保障手段上积累了一些经验并沉淀了一些方法:


  1. 苹果的审核分为自动审核和人工审核两部分,人工审核阶段更多是关注基础功能、展示和内容方面的合规情况,对应的保障工作主要在整包验证阶段进行;

  2. 自动审核部分更多的是关注应用本身的合规情况,主要是在构建打包阶段通过自动化能力来保障的。例如,如果应用代码中,诸如类名、方法名或者全局变量等关键位置有类似于“Alipay”这样的敏感字眼,苹果是非常容易怀疑提审的应用中支付方式没有符合苹果的要求,从而大概率会造成拒审。所以对于某些敏感关键字在符号级别、甚至是字符串级别的扫描是非常必要的。通过客户端测试平台的 IOS 审核检查能力,进行关键符号检查的一个结果 DEMO 如下图所示。




检查逻辑的实现机制并不复杂,但是执行的效果比较理想,配合类别同名查找等扫描能力,利用平台化的支持,优酷在 2019 年的苹果审核过程中整体顺利,一次通过率相比 2018 年上升了 50%+。

三、构建打包阶段验证能力的拓展和规划

在构建打包阶段,通过合理的能力调整和部署、针对性的解决执行环节和实现常态化的痛点,可以实现质量控制能力的有效落实。


基于已经完成的能力,我们正在开展更进一步的建设,例如:


  1. 依赖关系检查,优化多模块集成效果;

  2. 拓展静态扫描能力,覆盖跨模块检查;

  3. 强化包大小健康度检查,发掘影响包体积大小的更多因素。


PreMTL 的建设对提升优酷客户端版本质量起到了很大的作用,希望对读者有所启发。


作者简介


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


相关阅读


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


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


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


2020-02-26 14:112054

评论

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

前缀和算法练习集

timerring

前缀和

别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”

Alter

百度 大模型 ChatGPT 文心一言

机器学习算法(六)基于天气数据集的XGBoost分类预测

汀丶人工智能

数据挖掘 数据分析 XGBoost

狼来了

俞凡

人工智能

压缩解压工具:Keka中文版

真大的脸盆

Mac Mac 软件 压缩工具 解压缩软件 解压软件

软件测试/测试开发丨app自动化测试之Andriod WebView如何测试

测试人

软件测试 自动化测试 测试开发

软件测试/测试开发丨app自动化之如何参数化用例

测试人

软件测试 自动化测试 测试开发

Gestures(手势)

芯动大师

Activity 手势 gesturelistener

隐式等待、显示等待和强制等待

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

测试

QQ截图图片不够清晰解决方法

源字节1号

微信小程序 开源 软件开发

面试官:如何保证接口幂等性?一口气说了9种方法!

程序员大彬

Java 接口幂等

【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)

洛神灬殇

Java JVM 3月月更

SaaS 软件搞定客户的关键环节分析

产品海豚湾

产品经理 SaaS 产品运营 B 端产品 互联网产品

为什么大家都喜欢“人天”作为估算单位?

Bruce Talk

Scrum 敏捷开发 Agile

往往排查很久的问题,最后发现都非常简单。。。

艾小仙

Java kafka spring

关于chatGPT是否会干掉程序员的一次专业评估

深清秋

ChatGPT 程序员发展

Spring中PropertyPlaceholderConfigurer替换占位符的问题

石臻臻的杂货铺

spring-boot

设计模式之美––依赖反转

GalaxyCreater

设计模式

机器学习算法(五):基于企鹅数据集的决策树分类预测

汀丶人工智能

数据挖掘 机器学习 决策树

Kotlin 学习笔记(二)—— 数据类、密闭类、循环写法以及常用集合操作符

修之竹

android kotlin

照片肖像美容软件:ON1 Portrait AI 2023.1 激活版

真大的脸盆

Mac Mac 软件 照片处理工具 肖像美容软件

adb的常用命令

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

测试

电商秒杀系统

Geek_7d539e

华为云ECS/HECS:中小企业上云第一步

IT科技苏辞

架构蓝图--软件架构的“4+1”视图模型

涛哥 数字产品和业务架构

软件架构 模型

解决 Font '宋体' is not available to the JVM

源字节1号

微信小程序 开源 软件开发

华为P系列,雪夜梅花开,似是故人来

脑极体

华为

【Redis源码分析】Server启动过程

零点999

redis Redis 协议 Redis 核心技术与实战 Redis 数据结构 redis 底层原理

零代码零距离,明道云开放日北京站圆满结束

明道云

pdf编辑工具:PDF Expert 中文激活版

真大的脸盆

Mac PDF Mac 软件 PDF编辑 pdf编辑工具

如何编写测试用例?

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

测试

优酷客户端打包构建阶段的质量评估解决方案——PreMTL_软件工程_阿里巴巴文娱技术_InfoQ精选文章