3. CTS 测试执行流程:连接设备、运行测试计划、生成测试报告

CTS(Compatibility Test Suite)测试的执行流程是 Treble 框架下设备认证的核心环节。一个标准、可复现的测试流程能够有效降低环境差异带来的误报,确保测试结果的权威性。本章将详细拆解从设备连接到最终报告生成的完整操作链路。

3.1 测试环境准备与设备连接

在启动 CTS 测试之前,必须确保测试主机与 Android 设备之间的物理连接和数据链路稳定可靠。以下是标准连接步骤:

  1. 启用开发者选项和 USB 调试:在设备上连续点击“关于手机”中的“版本号”7 次,返回“设置” > “系统” > “开发者选项”,开启“USB 调试”和“仅充电模式下允许 ADB 调试”。
  2. 连接 USB 线缆:建议使用设备原装 USB 线缆,直接连接至主机 USB 2.0/3.0 端口,避免使用前置面板或 USB Hub。
  3. 授权 RSA 密钥:在主机终端执行 adb devices,设备屏幕会弹出 RSA 密钥指纹确认对话框,勾选“始终允许”,点击“确定”。
  4. 验证连接状态:执行 adb devices -l,确认设备状态为 device,并显示产品型号和传输 ID。
关键检查点:如果 adb devices 显示 unauthorized,请重新插拔 USB 线缆并再次确认 RSA 授权;如果显示 offline,则需重启 ADB 服务(adb kill-server 后 adb start-server)。

以下 SVG 图展示了 CTS 测试主机与 Android 设备之间的标准连接拓扑:

CTS 测试连接拓扑 CTS 测试主机 Linux / Windows / macOS USB 3.0 Android 设备 ADB 授权状态: device Wi-Fi / 以太网 CTS 结果 服务器 说明: ADB 连接是 CTS 测试的基础。必须确保 USB 调试已授权,且设备未被其他进程占用。 建议在测试前执行 adb root 和 adb remount(仅限 userdebug 版本)以获取完整权限。

3.2 运行测试计划

CTS 测试计划(Test Plan)定义了需要执行的测试模块、测试用例及其执行顺序。在 Treble 框架下,测试计划通常以 XML 格式组织,并通过 cts-tradefed 命令行工具加载执行。

3.2.1 常用测试计划类型

测试计划名称 适用场景 执行时间(参考)
cts 完整 CTS 认证测试,包含所有模块 8–24 小时
cts-on-gsi 在 GSI(通用系统映像)上运行 CTS,验证 Treble 兼容性 6–18 小时
cts-x86 针对 x86 架构设备的 CTS 测试 6–20 小时
cts-instant 快速验证核心模块,用于开发阶段快速回归 30–60 分钟

3.2.2 执行测试命令

以下是在 CTS 测试目录下执行完整测试计划的标准命令:

# 进入 CTS 测试目录
cd <cts-install-dir>/android-cts/tools

# 运行完整 CTS 测试计划
./cts-tradefed run cts --plan cts

# 运行 GSI 兼容性测试计划
./cts-tradefed run cts --plan cts-on-gsi

# 运行指定模块(如 Camera)
./cts-tradefed run cts --module CtsCameraTestCases

# 运行单个测试用例
./cts-tradefed run cts --module CtsCameraTestCases --test android.hardware.camera2.cts.CameraTest#testCameraDevice
注意:在运行测试计划之前,请确保设备已解锁屏幕(建议使用 adb shell input keyevent 82 唤醒并解锁),且设备电量高于 80%。测试过程中不要断开 USB 连接或操作设备,否则可能导致测试中断或结果无效。

3.2.3 测试执行流程示意图

以下 SVG 图展示了 CTS 测试计划从加载到执行完成的完整流程:

CTS 测试计划执行流程 加载测试计划 XML 解析测试模块列表 分发测试任务 执行测试用例 A 执行测试用例 B 收集结果 A 收集结果 B

3.3 生成测试报告

CTS 测试执行完成后,系统会自动生成结构化的测试报告。报告以 XML 格式存储,同时提供 HTML 格式的可视化摘要,便于人工审查。

3.3.1 报告目录结构

测试报告默认保存在 android-cts/results/ 目录下,每个测试会话生成一个以时间戳命名的子目录:

android-cts/results/
├── 2025_03_15_10_30_00/          # 测试会话时间戳
│   ├── test_result.xml           # 主结果文件(XML 格式)
│   ├── test_result.html          # HTML 可视化报告
│   ├── logs/                     # 详细日志目录
│   │   ├── host_log_*.txt        # 主机端日志
│   │   ├── device_log_*.txt      # 设备端日志(logcat)
│   │   └── bugreport_*.zip       # 设备 bugreport
│   ├── tests/                    # 各模块测试结果
│   │   ├── CtsCameraTestCases/
│   │   │   ├── test_result.xml
│   │   │   └── test_details.xml
│   │   └── CtsMediaTestCases/
│   │       ├── test_result.xml
│   │       └── test_details.xml
│   └── summary/                  # 汇总信息
│       ├── module_summary.csv
│       └── test_summary.csv

3.3.2 报告关键指标解读

指标 含义 认证要求
Total Tests 执行的测试用例总数 —
Passed 通过的测试用例数 —
Failed 失败的测试用例数 必须为 0
Not Executed 未执行的测试用例数(因依赖失败或跳过) 允许,但需说明原因
Module Pass Rate 模块级别通过率(通过模块数 / 总模块数) 100%
Test Pass Rate 用例级别通过率(通过用例数 / 总用例数) 100%

3.3.3 生成报告的命令

CTS 测试完成后,报告会自动生成。如果需要手动重新生成 HTML 报告,可以使用以下命令:

# 进入 CTS 工具目录
cd <cts-install-dir>/android-cts/tools

# 重新生成指定会话的 HTML 报告
./cts-tradefed generate-report --session <session_id> --output <output_dir>

# 查看所有测试会话列表
./cts-tradefed list results
最佳实践:在提交 CTS 认证结果前,务必检查 test_result.html 中的 Failed 列是否为 0。如果存在失败项,请先排查故障并修复后重新测试,直到所有测试用例通过为止。

3.4 测试执行常见问题与排查

以下表格总结了 CTS 测试执行过程中最常见的故障及其快速排查方法:

故障现象 可能原因 排查步骤
设备连接后显示 unauthorized ADB RSA 密钥未授权 重新插拔 USB,在设备上确认授权对话框;或执行 adb kill-server && adb start-server
测试执行中途断开 USB 线缆接触不良或供电不足 更换原装线缆,使用主机背板 USB 端口,避免使用延长线
测试计划加载失败 CTS 安装目录损坏或权限不足 重新解压 CTS 包,确保 android-cts 目录具有读写权限
报告生成后 Failed > 0 设备系统存在兼容性问题 查看 logs/device_log_*.txt 中的异常堆栈,定位具体失败模块
测试执行时间过长 设备性能不足或测试计划包含过多模块 使用 --plan cts-instant 快速验证,或分模块执行

通过以上流程,测试工程师可以系统性地完成 CTS 测试的执行与报告生成,为后续的故障排查和认证提交奠定基础。