CTS 常见问题解答

Android 兼容性计划是维持 Android 生态系统获得正面反馈的重要驱动因素。CTS 是用于在大规模范围内确保兼容性质量的重要工具。Android 团队会继续改进 CTS 工具并提高测试覆盖率。定期添加测试用例可显著提升兼容设备的质量。

常见问题

本部分提供了 CTS 常见问题的解答。

兼容性测试套件会测试哪些类型的项目?

兼容性测试套件会测试所有受支持的 Android 强类型 API 是否存在以及行为是否正常。此外,CTS 还会测试其他非 API 系统行为,例如应用生命周期和性能。

兼容性测试套件采用哪种许可方式?

兼容性测试套件是根据大部分 Android 代码使用的 Apache Software License 2.0 授权用户使用。

编解码器需要通过兼容性测试套件验证吗?

需要。所有必需的编解码器都要通过兼容性测试套件验证。

与测试有关的问题

本部分提供了常见问题解答,可帮助您更高效地运行 CTS 测试。

CTS 分片和 TF 分片之间有何区别?

CTS 分片和 TF 分片是完全不同的测试计划,由不同的测试基础架构代码库提供支持。虽然不同版本的运行命令是相同的,但分片结果的行为有所不同。 CTS 分片将测试用例静态分配给被测设备 (DUT),如下所示:

TF 分片将测试用例动态分配给可用的 DUT,如下所示:

对支持多个 ABI 的设备有何要求?

对于声称支持的每种 ABI 模式,设备必须通过所有 CTS 和 CTS 验证程序测试。因此,必须针对特定 ABI 执行应用。关于多个 ABI 的指南如下所示:

  • 对于 CTS 和 CTS 验证程序,每个架构都有 ARM 和 x86 版本。它们均支持 32 位或 64 位模式。
  • 对于 CTS 测试,如果设备同时支持 ARM 和 x86,必须分别运行 ARM 和 x86 CTS 测试并通过这两种测试。

如需了解与 ABI 有关的 CDD 要求,请参阅 CDD 3.3.1. 应用二进制接口

仅在主 ABI(例如 64 位)上运行测试是否足以缩短测试执行时间?

。Android 应用在自己的 32 位或 64 位运行时上运行。 32 位和 64 位的实际机器代码、代码路径和状态存在差异。如果您跳过一种模式,就只能覆盖一半的设备 ABI。

为什么被报告为“未执行”的测试用例如此之多?

您应该检查模块已完成数量,而不是未执行数量。

在旧版本中,CTS 模块还未完成就会被系统激进地报告为模块已完成。因此,即使某些设备出现问题,系统也会在有些测试用例尚未完成的情况下报告模块已完成数量。全新自动化测试框架更为保守,出现问题时,该框架将报告更多数量的未执行测试。

在以下情况下,运行完成的模块在最近一次调用时在报告中显示模块未完成 (done="false"):

  • 模块的测试运行因设备连接问题而中断。
  • 模块的部分预期测试运行未执行。
  • 使用其他过滤选项进行了重试(使用选项 -r/--retry),例如:

    • --include-filter
    • --exclude-filter
    • -t/--test(重试尚不支持该选项)
    • --retry-type failed
    • --subplan

如需使这些模块达到模块已完成 (done="true") 状态,请针对最近一次调用重试以下命令:

run retry --retry <session_id> for Android 9 and later versions
run cts --retry <session_id> for Android 8.1 and previous versions

如果模块在执行时未出现任何上述问题(即使剩余 0 个测试),系统会在新报告中将其标记为模块已完成

异常

  • 由于 linux/OS 的参数限制,CtsNNAPITestCases 存在一个已知问题。您可以直接通过 run cts -m CtsNNAPITestCases 单独重新运行该模块。

如何在企业防火墙下避免测试准备失败?

所有自动测试套件都会尝试在运行时下载 CTS 媒体文件或业务逻辑文件。在许多企业环境中,防火墙和代理服务很常见,这会导致测试准备失败。请执行以下行或将其添加到 .profile(在 Ubuntu 上)。

export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'

针对安全元件的 CTS 测试是否需要 SIM 卡?

测试是否需要 SIM 卡取决于测试设备是否支持该功能。

  • 如果您的设备需要支持访问安全元件(位于移动网络运营商 [运营商] 分发的 UICC [例如 SIM 卡] 中,或嵌入在设备中)的 Android 应用,您可以将 HIDL 清单配置为不包含 android.hardware.secure_element HAL 元素。在这种情况下,android.se.omapi.SEService.getReaders() API 将报告空列表,CTS 测试将自动通过并将 CTS 报告为通过。
  • 如果您的设备确实需要支持访问安全元件(位于移动网络运营商 [运营商] 分发的 UICC [例如 SIM 卡] 中,或嵌入在设备中)的 Android 应用,您需要正确地实施安全元件并进行内部测试。针对安全元件的 CTS 测试概述了如何准备运行 CTS 测试,以确保 Android 9 中添加的 android.se.omapi API 软件包正常运行。由于 CTS 测试覆盖范围极小,因此我们还建议您自行进行额外的测试。

在哪里可以获得适用于安全元件 CTS 的 SIM 卡?

您可以与首选 SIM 卡供应商联系。

为什么在通过令牌分片执行 CTS 测试期间锁定屏幕上显示橙色 SIM 卡?

由于测试 SIM 卡已锁定,因此测试用例无法启动。在通过令牌分片执行 CTS 测试之前,请先停用 **SIM 卡锁定设置中的锁定 SIM 卡选项。