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进行分析

相关推荐
安东尼肉店6 小时前
Android compose屏幕适配终极解决方案
android
2501_916007476 小时前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun8 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
用户20187928316712 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子12 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜822712 小时前
安卓接入Max广告源
android
齊家治國平天下12 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO12 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel12 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢12 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱