Android 平台测试

AOSP 提供了多种工具和测试套件 (test suite),用于测试实现的各个部分。在继续学习本部分之前,您应该熟悉以下术语:

与 Android 兼容的设备
可运行由第三方开发者使用 Android SDK 和 NDK 编写的任何第三方应用的设备。与 Android 兼容的设备必须遵守兼容性定义文档 (CDD) 中的要求,并通过兼容性测试套件 (CTS) 的测试。与 Android 兼容的设备有资格加入 Android 生态系统,其中包括获得 Google Play 商店和 Google 移动服务 (GMS) 应用和 API 套件的潜在许可,以及对 Android 商标的使用。我们欢迎任何人使用 Android 源代码,但要成为 Android 生态系统的一部分,设备必须与 Android 兼容。
工件
工件是与 build 相关的日志,用于支持本地问题排查。
兼容性定义文档 (CDD)
一种文档,列出了与 Android 兼容的设备应遵循的软件和硬件要求。
兼容性测试套件 (CTS)

一个免费的商业级测试套件,可以下载二进制文件版本,也可以在 AOSP 中下载源代码版本。CTS 是一组单元测试,旨在集成到您的日常工作流程中。CTS 的目的是发现不兼容性,并确保软件在整个开发过程中保持兼容性。

CTS 和平台测试并不互斥。下面列出了一些一般准则:

  • 如果测试断言框架 API 函数或行为的正确性,并且应该在 OEM 合作伙伴之间强制执行,那么它应该在 CTS 中。
  • 如果测试的意图是在平台开发期间捕捉回归,并且可能需要特许权限来执行,还可能依赖于实现细节(如 AOSP 中所发布),那么它应为平台测试。
Google 移动服务 (GMS)

可在设备上预安装的一系列 Google 应用和 API。

GoogleTest (GTest)

GTest 是一个 C++ 测试和模拟框架。GTest 二进制文件通常会访问较低级别的抽象层,或针对各种系统服务执行原始 IPC。GTest 的测试方法通常与接受测试的服务密切相关。CTS 包含 GTest 框架。

插桩测试

插桩测试提供了一种通过 am instrument 命令启动的特殊测试作业环境,其中目标应用进程会重启并使用基本的应用上下文进行初始化,并在应用进程虚拟机内启动插桩线程。CTS 包含插桩测试。

Logcat

Logcat 是一个命令行工具,用于创建系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用使用 Log 类写入的消息。

日志记录

日志记录是指使用日志来记录计算机系统事件,例如错误。由于在 Logcat tool 中合并使用了多个标准,Android 中的日志记录较为复杂。

提交后测试

Android 提交后测试在新的补丁提交到通用内核分支后执行。通过输入 aosp_kernel 作为部分分支名称,您会看到具有结果的内核分支列表。例如,可以在 https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid 上找到 android-mainline 的结果。

提交前测试

提交前测试用于防止在通用内核中引入故障。

Trade Federation

Trade Federation(也称为 Tradefed)是一种连续的测试框架,专门用于在 Android 设备上运行测试。例如,Tradefed 可用于运行兼容性测试套件和供应商测试套件测试。

供应商测试套件 (VTS)

Android 供应商测试套件 (VTS) 提供了大量用于进行 Android 测试的功能,能够促进由测试驱动的开发流程,并自动执行 HAL 和 OS 内核测试。

平台测试类型

平台测试通常与一个或多个 Android 系统服务或硬件抽象层 (HAL) 交互、执行受测对象的功能,并断言测试结果的正确性。平台测试可能会:

  • (类型 1)使用 Android 框架来锻炼框架 API。执行的特定 API 可能包括:
    • 用于第三方应用的公共 API
    • 用于特权应用的隐藏 API,即系统 API 或私有 API(@hide, or受保护的,软件包私有)
  • (类型 2)直接使用原始 binder 或 IPC 代理调用 Android 系统服务。
  • (类型 3)使用低级别 API 或 IPC 接口直接与 HAL 交互。

类型 1 和 2 的测试通常是插桩测试,而类型 3 的测试通常是 GTest。

延伸阅读

下面列出了您后续可以参阅的文档: