Android 平台测试

Android 开源项目 (AOSP) 提供了多种工具和测试套件,用于测试实现的各个部分。在参阅本部分中的页面之前,您应该熟悉以下术语:

与 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)

一个 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

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

供应商测试套件 (VTS)

一组用于 Android 测试的丰富功能,能够促进由测试驱动的开发流程,并自动执行硬件抽象层 (HAL) 和 OS 内核测试。

平台测试类型

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

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

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

后续操作

若要了解更多详细信息,请参阅下面列出的文档: