运行 CTS 测试

CTS tradefed 使用入门

您可以参阅 Trade Federation 概述,了解有关 Trade Federation(简称 tradefed 或 TF)持续测试框架的说明。

运行测试计划的方法如下:

  1. 至少连接一个设备。
  2. 在开始运行 CTS 时,按主屏幕按钮将设备设置为显示主屏幕。
  3. 当设备在运行测试时,它不能用于执行任何其他任务,并且必须保持静止状态(以免触发传感器活动),同时要让相机指向某个可以聚焦的对象。
  4. 在运行 CTS 时,不要按设备上的任何键。按测试设备上的键或触摸其屏幕会干扰正在运行的测试,并且可能导致测试失败。
  5. 通过运行解压缩 CTS 包所得的文件夹中的 cts-tradefed 脚本(例如 $ ./android-cts/tools/cts-tradefed)来启动 CTS 控制台。
  6. 通过附加以下命令启动默认测试计划(包含所有测试包):run cts --plan CTS。这将启动测试兼容性所需的所有 CTS 测试。
    • 对于 CTS v1(Android 6.0 及更早版本),您可以输入 list plans 来查看存储区中的测试计划列表,也可以输入 list package 来查看存储区中的测试包列表。
    • 对于 CTS v2(Android 7.0 及更高版本),您可以输入 list modules 来查看测试模块的列表。
  7. 或者,您可以使用以下命令,从命令行中运行所选择的 CTS 计划:cts-tradefed run cts --plan

    注意:仅在运行 Android 6.0 (Marshmallow) CTS 时,我们建议您使用 --skip-preconditions 选项来跳过在执行 CTS 测试时可能导致问题且存在前提条件的实验性功能测试。

  8. 查看控制台中报告的测试进度和结果。
  9. 如果您的设备运行的是 Android 5.0 或更高版本,并且声明支持 ARM 和 x86 ABI,则应运行 ARM 和 x86 CTS 包。

使用 CTS v1 控制台

对于 Android 6.0 或更早版本,您将使用 CTS v1。

选择计划

您可以选择以下测试计划:

  • CTS - 兼容性所需的所有测试。
  • Signature - 所有公开 API 的签名验证
  • Android - 针对 Android API 的测试
  • Java - 针对 Java 核心库的测试
  • VM - 针对 ART 或 Dalvik 的测试
  • Performance - 针对实施的性能测试

您可以使用 run cts 命令执行这些测试。

CTS v1 控制台命令参考

表 1. 该表总结了用于各种用途的 CTS v1 控制台命令。

主机 说明
help 显示最常用命令的摘要
help all 显示可用命令的完整列表
exit 正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭
运行 说明
run cts 运行指定的测试并显示进度信息。需要指定 --plan--package--class--continue-session 中的一个。

在测试过程中,CTS 控制台可以接受其他命令

如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试

如果连接了多台设备,则 CTS 主机将自动选择一台设备

--plan <test_plan_name> 运行指定的测试计划
--package/-p <test_package_name>  [--package/-p <test_package2>...] 运行指定的测试包
--class/-c <class_name> [--method/-m <test_method_name> 运行指定的测试类和/或方法
--continue-session 运行上一个 CTS 会话中所有未执行的测试;会话 testResult.xml 将会更新成最新结果
--shards <number_of_shards> 将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行
--serial/-s <deviceID> 在特定设备上运行 CTS
-t <class_name>#<test_method_name> 运行特定测试方法
--force-abi 32|64 在 64 位设备上,仅对 32 位或 64 位 ABI 运行测试
列表 说明
list packages 列出存储区中的所有可用测试包
list plans 列出存储区中的所有可用测试计划
list invocations 列出设备上当前正在执行的“运行”命令
list commands 列出当前在队列中等待分配给设备的所有“运行”命令
list results 列出当前存储在存储区中的 CTS 结果
list devices 列出当前连接的设备及其状态

“可用”设备是可正常运行的空闲设备,可用于运行测试

“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试

“已分配”设备是当前正在运行测试的设备

添加 说明
add derivedplan --plan <plan_name>
--result/-r
[pass | fail | timeout | notExecuted]
[--session/-s <session_id>]
创建从给定结果会话衍生的计划;使用此选项可重新运行报告并验证测试问题

使用 CTS v2 控制台

对于 Android 7.0 或更高版本,您将使用 CTS v2。

选择计划

您可以选择以下测试计划:

  • cts - 从预装的 CTS 运行 CTS。
  • cts-camera - 从预装的 CTS 运行 CTS-camera。
  • cts-java - 从预装的 CTS 运行核心 Java 测试。
  • cts-pdk - 运行有助于验证与 PDK 融合的产品的测试。
  • everything - 兼容性套件的通用配置。

其他可用配置如下:

  • basic-reporters - 基本 CTS 报告程序的配置。
  • collect-tests-only - 从现有 CTS 安装运行 CTS。
  • common-compatibility-config - 兼容性套件的通用配置。
  • cts-filtered-sample - 兼容性套件的通用配置。
  • cts-known-failures - CTS 已知故障的配置。
  • cts-preconditions - CTS 前提条件配置。
  • host - 在现有设备上运行单个基于主机的测试。
  • instrument - 在现有设备上运行单个 Android 工具测试。
  • native-benchmark - 在现有设备上运行原生压力测试。
  • native-stress - 在现有设备上运行原生压力测试。
  • recharge - 等待电量接近耗尽的设备并将它们保持在充电状态的虚设测试。
  • testdef - 在现有设备上运行包含在 test_def.xml 文件中的测试。
  • util/wifi - 用于在设备上配置 WLAN 的实用程序配置。
  • util/wipe - 擦除设备上的用户数据。

所有这些计划和配置都可以使用 run cts 命令执行。

CTS v2 控制台命令参考

表 1. 该表总结了用于各种用途的 CTS V2 控制台命令。

主机 说明
help 显示最常用命令的摘要
help all 显示可用命令的完整列表
version 显示版本。
exit 正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭。
运行 说明
run cts

运行默认的 CTS 计划(即完整的 CTS 调用)。

在测试过程中,CTS 控制台可以接受其他命令。

如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试。

如果连接了多台设备,则 CTS 主机将自动选择一台设备。

--plan <test_plan_name> 运行指定的测试计划。
--module/-m <test_module_name>  [--module/-m <test_module2>...] 运行指定的测试类和/或方法。例如,run cts --module CtsGestureTestCases 会执行手势测试模块(该命令可以简化为 run cts -m Gesture)。
run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes 会运行指定的包、类或测试。
--subplan <subplan_name> 运行指定的子计划。
-- module/-m <test_module_name> -- test <test_name>  运行指定的模块并进行测试。例如,run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes 会运行指定的包、类或测试。
--retry 重新尝试运行在以前的会话中失败或未执行的所有测试。 使用 list results 获取会话 ID。
--shards <number_of_shards> 将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行。
--serial/-s <deviceID> 在特定设备上运行 CTS。
--include-filter <module_name>  [--include-filter <module2>...] 仅使用指定的模块运行。
--exclude-filter <module_name>  [--exclude-filter <module2>...] 运行时排除指定的模块。
--log-level-display/-l <log_level> 以显示给 STDOUT 的最小指定日志级别运行。有效值:[VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]。
--abi <abi_name> 强制要求测试在给定的 ABI(32 或 64)上运行。默认情况下,CTS 会为设备支持的每个 ABI 运行一次测试。
--logcat--bugreport--screenshoot-on-failure 显示更详尽的故障信息并帮助进行诊断。
--device-token 指定具有给定令牌的给定设备,例如 --device-token 1a2b3c4d:sim-card.
--skip-device-info 跳过收集设备相关信息的过程。注意:运行 CTS 以寻求批准时,请勿使用此选项。
--skip-preconditions 绕过对设备配置的验证和设置,例如推送媒体文件或检查 WLAN 连接。
列表 说明
list modules 列出存储区中的所有可用测试模块。
list planslist configs 列出存储区中的所有可用测试计划(配置)。
list subplans 列出存储区中的所有可用子计划。
list invocations 列出设备上当前正在执行的“运行”命令。
list commands 列出当前在队列中等待分配给设备的所有“运行”命令。
list results 列出当前存储在存储区中的 CTS 结果。
list devices 列出当前连接的设备及其状态。

“可用”设备是可正常运行的空闲设备,可用于运行测试。

“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试。

“已分配”设备是当前正在运行测试的设备。

转储 说明
dump logs 为所有正在运行的调用转储 tradefed 日志。
添加 说明
add subplan --name/-n <subplan_name>
--result-type
[pass | fail | timeout | notExecuted]
[--session/-s <session_id>]
创建从上一会话衍生的子计划;此选项会生成可用于运行测试子集的子计划。

只有 --session 是必选的选项。其他选项都是可选的,但如果选用这些选项,必须后跟一个值。--result-type 选项是可重复使用的;例如 add subplan --session 0 --result-type passed --result-type failed 是有效的。