开发者驱动的 CTS

本页概述了开发者驱动的 CTS (CTS-D) 的使用指南。

测试覆盖率

CTS-D 与 CTS 和 CTS Verifier 一样,只能强制执行以下内容

  • 所有开发者 SDK (developer.android.com) 中针对特定 API 级别描述的公共 API。
  • Android 兼容性定义文档 (CDD) 中针对特定 API 级别包含的所有 MUST 要求。

非 MUST 要求(例如 STRONGLY RECOMMENDED、SHOULD、MAY)是可选的,并且无法使用 CTS 进行测试。

由于所有 API 和 CDD 要求都与特定的 API 级别相关联,因此所有 CTS 测试(CTS、CTS-D 和 CTS Verifier)都与其关联的 API 或要求绑定到相同的 API 级别。如果某个特定的 API 已弃用或更改,则其对应的测试也必须弃用或更新。

CTS 测试创建规则

  • 测试必须始终如一地产生相同的客观结果。
  • 测试必须通过对设备进行一次开箱即用的测试来确定设备是否通过或失败。
  • 测试创建者必须消除所有可能影响测试结果的因素。
  • 如果设备需要特定的硬件条件/环境/设置,则必须在提交消息中明确定义该设置。例如,有关设置说明,请参阅 设置 CTS
  • 测试的单次运行时间不得超过 6 小时。如果需要更长的运行时间,请在您的测试提案中说明原因,以便我们进行审核。

以下是用于测试应用限制的示例测试条件集

  • Wifi 连接稳定(对于依赖 Wifi 的测试)。
  • 设备在测试期间保持静止(或者不静止,具体取决于测试)。
  • 设备已从任何电源断开连接,电池电量为 X%。
  • 除 CTS 外,没有应用、前台服务或后台服务正在运行。
  • 运行 CTS 时屏幕处于关闭状态。
  • 设备不是 isLowRamDevice
  • 省电模式/应用限制尚未从“开箱即用”状态更改。

测试资格

我们接受强制执行现有 CTS、CTS Verifier 或 CTS-D 测试未测试的行为的新测试。任何检查超出我们的测试覆盖率范围的行为的测试都将被拒绝。

CTS 提交流程

  1. 编写测试提案:应用开发者使用 Google Issue Tracker 提交测试提案,描述已发现的问题并提出用于检查该问题的测试。提案必须包含关联的 CDD 要求 ID。Android 团队审核提案。
  2. 开发 CTS 测试:提案获得批准后,提交者在主分支 (AOSP/main) 上的 AOSP 上创建 CTS 测试。Android 团队审核代码。
  3. 发布测试:AOSP/main 上提交您的 CL,然后将其 cherry-pick 到最新的 androidx-tests-dev 分支。现在,该测试已公开可用。

CTS-D 测试编写指南

  • 遵循 Java 代码风格指南
  • 遵循 CTS 开发中描述的所有步骤。
  • 将您的测试添加到相应的测试计划
    • 使用 include-filters 将您的新测试添加到 CTS-D 测试计划:platform/cts/tools/cts-tradefed/res/config/cts-developer.xml
    • 使用 exclude-filters 从主 CTS 测试计划中排除您的新测试:platform/cts/tools/cts-tradefed/res/config/cts-developer-exclude.xml
  • 处理 build_error.log 中的所有 errorprone 警告和建议。
  • 将您的更改变基到 head。这包括 cts-developer.xmlcts-developer-exclude.xml 测试计划。
  • 与您的 Google 工程联系人合作,确定您的测试用例是否可以包含在现有的 CTS 模块中。如果不能,他们将帮助您创建新模块。
  • 对于创建的每个新测试模块,在新测试模块目录中创建一个 OWNERS 文件。
    • 您的 OWNERS 文件应包含以下信息,这些信息从您合作的 Google 测试负责人处获取
    • # Bug 组件:xxx
    • Google 测试负责人 ldap
  • AndroidTest.xml 中,指定以下参数。有关示例,请参阅示例文件 (1, 2)。
    • Instant_appnot_instant_app
    • secondary_usernot_secondary_user
    • all_foldable_statesno_foldable_states
  • 要指定正确的 minSDK,请参阅 <uses-sdk> 文档
  • 在检入新的测试方法、类或模块时,将它们添加到 CTS-D 测试计划中,并以与新测试相同的方式从主 CTS 测试计划中排除它们。

运行您的 CTS-D 测试

使用 run cts --plan cts-developer 从命令行运行 CTS-D 测试计划。

要运行特定的测试用例,请使用 run cts --include-filter "test_module_name test_name"

有关运行完整 CTS 的信息,请参阅 运行 CTS 测试

接受和发布

提交测试请求后,内部团队将对其进行审核,以确保其测试 CDD 要求或已记录的 API 行为。如果测试被确定为检查有效的要求或行为,团队会将此测试用例转发给 Google 工程师以进行进一步审核。Google 工程师将与您联系,提供有关如何在测试被 CTS 接受之前改进测试的反馈。

有关 CTS 发布计划的详细信息,请参阅 发布计划和分支信息