Android 系统的兼容性测试 - CTS

前言

  • 最权威的文档当然是参考:链接: Google文档-兼容性。
  • 作为Android系统开发工程师,CTS(Compatibility Test Suite)一直都是发布版本前的关键测试,CTS一旦不通过,那就意味着今天该加班了。
  • 此专栏,用于记录我对CTS的总结(注意:其中也包含对其他同行的经验文章的参考)。
  • 另外,还有 CTS Verifier、GTS、VTS、STS 等。我们把它们统称为 XTS 或者 *TS。
  • 通篇我以 AOSP anroid-9.0.0_r61 系统为例。

1 Google为何要搞一个CTS呢?

Google发布了AOSP版的Android源码,很多手机厂商会在AOSP的基础上做自己的定制化(小米、OPPO、VIVO等厂商),尽管很多都是针对底层的修改,不管他叫MIUI或者ColorOS,其实依然还是Android系统,越来越多的厂商导致了Android系统的碎片化。

那么问题来了:

  1. 一旦系统改出问题,无法确定是谷歌本身的逻辑缺陷,还是手机厂自己DIY出的问题,排查问题的时候有着各种不确定的因素。
  2. 运行在系统上的应用可能会因为Android底层的改动发生运行时崩溃、闪退、功能无法使用等问题,影响用户体验。

鉴于以上原因,Google 推出了CTS测试,将各种定制系统的底层Android接口API统一规范,来兼容Android原生底层的API。这是一套包含了上万个自动运行 测试用例的测试框架 。CTS测试主要用来测试OEM厂商设计的Android平台是不是符合Android的API接口定义。通过 CTS 测试不仅可以保证Android设备具有良好的用户体验 ,而且可保证大量优质的应用在Android设备上正常运行,同时,也能够让应用开发者能够放心地制作高质量的应用程序。

Google官方文档也提到,按以下三个步骤操作即可打造与 Android 兼容的移动设备:

  1. 使用 AOSP 在您的设备上实现 Android。
  2. 确保您的设备符合 Android 兼容性定义文档的要求 。CDD 列出了与 Android 兼容的设备应遵循的软件和硬件要求。
  3. 通过兼容性测试套件 (CTS)测试。在开发过程中可随时借助 CTS 评估兼容性。

实现兼容性后,您的设备会被视为与 Android 兼容,您可以考虑获得 Google 移动服务 (GMS) 许可并准备好使用 Android 商标。如需查看品牌推广指南,请参阅合作伙伴营销中心的 Android 部分。

针对CTS的常见的一些疑问,也可以在兼容性常见问题解答 (FAQ)查看。正如其中的解答,CTS并非强制性的,如果你的设备是个行业定制化的设备,并不是个传统意义的手机,也不需要获得GMS许可,只需要把你关注的部分CTS跑通即可。

2 CTS的测试内容

测试用例涵盖以下领域,以确保兼容性:

  1. 签名测试:每一个 Android 版本的释放,都会有一些 XML 配置文件用于描述公有 API 的签名。CTS 会检查设备这些公有的 API 签名情况;
  2. 平台 API 测试:测试 SDK 中的核心库和 Android 应用框架的 API 正确性,保证类、方法、参数等正确性;
  3. Dalvik 测试:重点测试 Dalvik 的可执行格式;
  4. 平台数据模型:CTS 会测试通过 content provider(如 SDK android.provider 软件包中所述)提供给应用开发者的核心平台数据模型(包括通讯录、浏览器和设置)
  5. 平台 Intent 测试:测试 Intent 相关是否符合要求;
  6. 平台权限测试:测试平台 Permission 相关是否符合要求;
  7. 平台资源测试:测试设备是否可以正确地处理核心平台资源类型,如 SDK 中提到的动画资源、布局资源、等等。

CTS 重点测试的是 App 和 Framework 之间的兼容性。这样做的目的,至少可以确保 App 开发者编写的同一应用可以运行在不同的 Android 版本(向前兼容)、不同的硬件平台、不同的厂商制造的设备上。

3 如何获取CTS呢?

  1. 从兼容性测试套件下载获得对应Android版本的CTS。

  2. 从 AOSP platform/cts源码中编译获得(在Android源码目录中执行:make cts ,之后会在out/host/linux-x86/cts/下生成android-cts文件夹)。

4 测试设备预置条件

可参考: 设置 CTS 自动化测试,其中有针对被测设备的,也有针对测试服务器的。

4.1 设置PC和被测设备之外的物理环境

参考:设置物理环境。

4.2 PC端预置条件

参考:设置您的桌面设备。

4.3 测试机端预置条件

参考:准备DUT(被测设备)

还需要网络可以链接到www.google.com

5 运行自动化CTS测试

5.1 CTS命令

参考:CTS v2 命令控制台

6 CTS测试结果分析

分析测试报告和Log

解释 CTS 结果

添加Log分析

如果缺少log,CTS测试源码添加log,环境编译,编译apk替换原有APK进行分析

相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui