Android 兼容性计划是维持 Android 生态系统积极反馈的关键驱动力。 CTS是保证量表兼容质量的关键工具。 Android 团队不断完善 CTS 工具和测试覆盖率。定期添加测试用例对兼容设备的质量有显着提升。
本文提供常见问题解答以更有效地运行 CTS 测试。
CTS Sharding 和 TF Sharding 有什么区别?
CTS Sharding 和 TF Sharding 是完全不同的测试计划,由不同的测试基础设施代码库提供支持。虽然不同版本的运行命令相同,但分片结果的行为不同。 CTS Sharding 将测试用例静态分配给被测设备 (DUT),如下所示:
- 命令:运行cts
- Android 8.1 及更低版本的配置: /tools/cts-tradefed/res/config/cts.xml
TF Sharding 动态地将测试用例分配给可用的 DUT,如下所示:
- 命令:运行cts
- Android 9 的配置:/platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/ cts-suite.xml
支持多个 ABI 的设备有什么期望?
设备必须通过它声称支持的每种 ABI 模式的所有 CTS/验证程序。因此,有必要为特定的 ABI 执行应用程序。多个 ABI 的指南如下:
- 对于 CTS/Verifier,每种架构都有ARM 和 x86 版本。它们中的每一个都可以支持 32 位或 64 位模式。
- 对于 CTS 测试,如果设备同时支持 ARM 和 x86,则它必须分别运行并通过 ARM 和 x86 CTS 测试。
见CDD 3.3.1。用于 ABI 上 CDD 要求的应用程序二进制接口。
仅在主要 ABI(例如 64 位)上运行测试是否足以减少测试执行时间?
不会。Android 应用程序在其自己的 32 位或 64 位运行时上运行。实际机器码、代码路径和状态在 32 和 64 之间是不同的。如果你跳过一种模式,你只覆盖了 50% 的设备 ABI。
为什么有这么多测试用例报告为未执行?
您应该检查Module Done编号而不是Not Executed编号。
在旧版本中,CTS 模块在完成之前被报告为Module Done过于激进。因此,即使某些设备出现问题,也没有完成所有测试用例就报告了Modules Done编号。新的测试工具更加保守,并在出现问题时报告更多的未执行测试。
模块运行到完成在报告中的最近调用中报告模块未完成(done="false") 在以下期间:
- 模块的测试运行因设备连接问题而中断。
- 并未执行该模块的所有预期测试运行。
使用其他过滤选项重试(使用选项
-r/--retry
),例如:- --include-filter
- --排除过滤器
- -t/--test(重试时尚不支持该选项)
- --重试类型失败
- --子计划
要获得这些模块的Module Done (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 个测试)执行的模块在新报告中被标记为Module Done 。
例外
- 由于 linux/OS 对 args 的限制,CtsNNAPITestCases 存在一个已知问题。该模块可以通过直接
run cts -m CtsNNAPITestCases
单独重新运行。
如何避免企业防火墙后的测试准备失败?
所有自动化测试套件都尝试在运行时下载 CTS 媒体文件或业务逻辑文件。在许多公司环境中,防火墙/代理是典型的,这会导致测试准备失败。执行以下行或将其添加到 .profile(在 Ubuntu 上)。
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'
我是否需要用于 CTS for Secure Element 的 SIM 卡?
测试是否需要 SIM 卡取决于对测试设备是否支持该功能的了解。
- 如果您的设备不需要支持访问安全元素的 Android 应用程序(无论是在移动网络运营商(运营商)分发的UICC (例如 SIM 卡)中还是嵌入在设备中),您可以将 HIDL 清单配置为不包括
android.hardware.secure_element
HAL 元素。在这种情况下, android.se.omapi.SEService.getReaders() API 将报告一个空列表,CTS 测试将自动通过并报告 CTS 通过。 - 如果您的设备确实需要支持访问安全元素的 Android 应用程序——无论是在移动网络运营商(运营商)分发的UICC (例如 SIM 卡)中还是嵌入在设备中——您需要正确实施安全元素并对其进行测试内部。安全元素的 CTS 测试概述了如何准备运行 CTS 测试以确保 Android 9 中添加的android.se.omapi API 包正常运行。我们还建议您自行执行其他测试,因为 CTS 测试覆盖率极低。
我在哪里可以获得 CTS for Secure Element 的 SIM 卡?
您可以联系您首选的 SIM 供应商。
为什么在使用令牌分片的 CTS 执行期间,Orange SIM 在锁定屏幕上?
测试用例没有启动,因为测试 SIM 卡被锁定。在使用令牌分片执行 CTS 之前,禁用“SIM 卡锁定设置”中的“锁定 SIM 卡”选项。