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

相关推荐
鸿蒙布道师1 分钟前
鸿蒙NEXT开发正则工具类RegexUtil(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
Anger重名了28 分钟前
🌟 一篇文章搞懂Kotlin协程:比线程更轻量的并发神器
android
缘来的精彩32 分钟前
adb常用的20个命令
android·adb·kotlin
tangweiguo030519871 小时前
Android kotlin通知功能完整实现指南:从基础到高级功能
android·kotlin
KimLiu1 小时前
适合Android开发者的Flutter学习指南 : 一、搭建Flutter环境
android·前端·flutter
我最厉害。,。1 小时前
PHP 反序列化&原生类 TIPS&字符串逃逸&CVE 绕过漏洞&属性类型特征
android·开发语言·php
二流小码农2 小时前
鸿蒙开发:如何更新对象数组
android·ios·harmonyos
Billy_Zuo2 小时前
Android Studio中创建第一个Flutter项目
android·flutter·android studio
RabbitYao2 小时前
Google TextToSpeech apk 添加离线语音包再重新编译
android
w23617346014 小时前
Android四大核心组件
android·四大组件