前言
- 最权威的文档当然是参考:链接: 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系统的碎片化。
那么问题来了:
- 一旦系统改出问题,无法确定是谷歌本身的逻辑缺陷,还是手机厂自己DIY出的问题,排查问题的时候有着各种不确定的因素。
- 运行在系统上的应用可能会因为Android底层的改动发生运行时崩溃、闪退、功能无法使用等问题,影响用户体验。
鉴于以上原因,Google 推出了CTS测试,将各种定制系统的底层Android接口API统一规范,来兼容Android原生底层的API。这是一套包含了上万个自动运行 测试用例的测试框架 。CTS测试主要用来测试OEM厂商设计的Android平台是不是符合Android的API接口定义。通过 CTS 测试不仅可以保证Android设备具有良好的用户体验 ,而且可保证大量优质的应用在Android设备上正常运行,同时,也能够让应用开发者能够放心地制作高质量的应用程序。
Google官方文档也提到,按以下三个步骤操作即可打造与 Android 兼容的移动设备:
- 使用 AOSP 在您的设备上实现 Android。
- 确保您的设备符合 Android 兼容性定义文档的要求 。CDD 列出了与 Android 兼容的设备应遵循的软件和硬件要求。
- 通过兼容性测试套件 (CTS)测试。在开发过程中可随时借助 CTS 评估兼容性。
实现兼容性后,您的设备会被视为与 Android 兼容,您可以考虑获得 Google 移动服务 (GMS) 许可并准备好使用 Android 商标。如需查看品牌推广指南,请参阅合作伙伴营销中心的 Android 部分。
针对CTS的常见的一些疑问,也可以在兼容性常见问题解答 (FAQ)查看。正如其中的解答,CTS并非强制性的,如果你的设备是个行业定制化的设备,并不是个传统意义的手机,也不需要获得GMS许可,只需要把你关注的部分CTS跑通即可。
2 CTS的测试内容
测试用例涵盖以下领域,以确保兼容性:
- 签名测试:每一个 Android 版本的释放,都会有一些 XML 配置文件用于描述公有 API 的签名。CTS 会检查设备这些公有的 API 签名情况;
- 平台 API 测试:测试 SDK 中的核心库和 Android 应用框架的 API 正确性,保证类、方法、参数等正确性;
- Dalvik 测试:重点测试 Dalvik 的可执行格式;
- 平台数据模型:CTS 会测试通过 content provider(如 SDK android.provider 软件包中所述)提供给应用开发者的核心平台数据模型(包括通讯录、浏览器和设置)
- 平台 Intent 测试:测试 Intent 相关是否符合要求;
- 平台权限测试:测试平台 Permission 相关是否符合要求;
- 平台资源测试:测试设备是否可以正确地处理核心平台资源类型,如 SDK 中提到的动画资源、布局资源、等等。
CTS 重点测试的是 App 和 Framework 之间的兼容性。这样做的目的,至少可以确保 App 开发者编写的同一应用可以运行在不同的 Android 版本(向前兼容)、不同的硬件平台、不同的厂商制造的设备上。
3 如何获取CTS呢?
-
从兼容性测试套件下载获得对应Android版本的CTS。
-
从 AOSP platform/cts源码中编译获得(在Android源码目录中执行:make cts ,之后会在out/host/linux-x86/cts/下生成android-cts文件夹)。
4 测试设备预置条件
可参考: 设置 CTS 自动化测试,其中有针对被测设备的,也有针对测试服务器的。
4.1 设置PC和被测设备之外的物理环境
参考:设置物理环境。
4.2 PC端预置条件
参考:设置您的桌面设备。
4.3 测试机端预置条件
参考:准备DUT(被测设备)
5 运行自动化CTS测试
5.1 CTS命令
参考:CTS v2 命令控制台
6 CTS测试结果分析
分析测试报告和Log
添加Log分析
如果缺少log,CTS测试源码添加log,环境编译,编译apk替换原有APK进行分析