Android 开源项目 (AOSP) 提供了多种工具和测试套件,用于测试您实现的各个部分。在使用本部分中的页面之前,您应该熟悉以下术语
- Android 兼容设备
- 一种可以运行第三方开发者使用 Android SDK 和 NDK 编写的任何第三方应用的设备。Android 兼容设备必须遵守兼容性定义文档 (CDD)的要求,并通过兼容性测试套件 (CTS)。Android 兼容设备有资格参与 Android 生态系统,其中包括 Google Play 的潜在许可、Google 移动服务 (GMS)应用和 API 套件的潜在许可,以及 Android 商标的使用。任何人都可以随意使用 Android 源代码,但要被视为 Android 生态系统的一部分,设备必须与 Android 兼容。
- 工件
- 一种与构建相关的日志,可用于本地问题排查。
- 兼容性定义文档 (CDD)
- 一份列举了 Android 兼容设备的软件和硬件要求的文件。
- 兼容性测试套件 (CTS)
一个免费的商业级测试套件,可以二进制文件或 AOSP 源代码的形式下载。CTS 是一组单元测试,旨在集成到您的日常工作流程中。CTS 的目的是揭示不兼容性,并确保软件在整个开发过程中保持兼容。
CTS 和平台测试并非互斥。以下是一些通用指南
- 如果测试是断言框架 API 函数或行为的正确性,并且应在 OEM 合作伙伴中强制执行,则该测试应位于 CTS 中。
- 如果测试旨在捕获平台开发期间的回归问题,并且可能需要特许权限才能执行,并且可能依赖于实现细节(如 AOSP 中发布的),则该测试应为平台测试。
- Google 移动服务 (GMS)
可在设备上预安装的 Google 应用和 API 的集合。
- GoogleTest (GTest)
一个 C++ 测试和模拟框架。GTest 二进制文件通常访问较低级别的抽象层,或对各种系统服务执行原始 IPC。GTest 的测试方法通常与被测服务紧密耦合。CTS 包含 GTest 框架。
- Instrumentation 测试
一种由
am instrument
命令启动的特殊测试执行环境,其中目标应用进程会重启并使用基本应用上下文进行初始化,并且 instrumentation 线程在应用进程虚拟机内部启动。CTS 包含 instrumentation 测试。- Logcat
一个命令行工具,用于创建系统消息日志,包括设备抛出错误时的堆栈轨迹以及您使用
Log
类从应用中写入的消息。- 日志记录
使用日志来跟踪计算机系统事件(例如错误)。由于 Logcat 工具中混合使用了多种标准,因此 Android 中的日志记录非常复杂。
- 提交后测试
一种在将新补丁提交到通用内核分支时执行的 Android 测试。通过输入
aosp_kernel
作为部分分支名称,您可以查看包含可用结果的内核分支列表。例如,android-mainline
的结果可以在 https://ci.android.com/builds/branches/aosp_kernel-common-android-mainline/grid 中找到。- 预提交测试
一种用于防止将故障引入通用内核的测试。
- Trade Federation
也称为 Tradefed,一种持续测试框架,旨在在 Android 设备上运行测试。例如,Tradefed 用于运行兼容性测试套件和供应商测试套件测试。
- 供应商测试套件 (VTS)
一套用于 Android 测试的广泛功能,可促进测试驱动的开发流程,并自动化硬件抽象层 (HAL) 和操作系统内核测试。
平台测试类型
平台测试通常与一个或多个 Android 系统服务或 HAL 层交互,执行被测对象的功能,并断言测试结果的正确性。平台测试可能
- (类型 1)使用 Android 框架执行框架 API。正在执行的具体 API 可以包括
- 面向第三方应用的公共 API
- 面向特许应用的隐藏 API,即系统 API 或私有 API(
@hide
或protected
、package private
)
- (类型 2)直接使用原始 binder 或 IPC 代理调用 Android 系统服务。
- (类型 3)使用低级别 API 或 IPC 接口直接与 HAL 交互。
Type 1 和 Type 2 测试通常是 instrumentation 测试,而 type 3 测试通常是 GTests。
下一步是什么?
以下是您可以阅读以获取更详细信息的文档列表
如果您尚未学习 Android 架构,请参阅架构概览。
如果您正在创建与 Android 兼容的设备,请参阅Android 兼容性计划概览。
要将 instrumentation 测试、功能测试、指标测试和 JAR 主机测试集成到平台持续测试服务中,请参阅测试开发工作流程。
要检测设备漏洞并加强设备防御,请参阅安全测试。
要了解如何测试您的 HAL 和内核实现,请参阅供应商测试套件 (VTS) 和基础设施。
有关应用测试,请阅读Android 应用测试基础知识,并使用提供的示例进行Advanced Android in Kotlin 05.1:测试基础知识。
了解通过 repo 钩子提供的基本预提交测试。这些钩子可用于在继续操作(例如上传提交)之前运行 linters、检查格式和触发单元测试。默认情况下,这些钩子处于禁用状态。有关更多信息,请参阅AOSP 预上传钩子。
要了解有关日志记录的更多信息,请参阅了解日志记录。
要了解如何调试 Android 代码,请参阅调试原生 Android 平台代码。