3. CTS 测试执行流程:连接设备、运行测试计划、生成测试报告
CTS(Compatibility Test Suite)测试的执行流程是 Treble 框架下设备认证的核心环节。一个标准、可复现的测试流程能够有效降低环境差异带来的误报,确保测试结果的权威性。本章将详细拆解从设备连接到最终报告生成的完整操作链路。
3.1 测试环境准备与设备连接
在启动 CTS 测试之前,必须确保测试主机与 Android 设备之间的物理连接和数据链路稳定可靠。以下是标准连接步骤:
- 启用开发者选项和 USB 调试:在设备上连续点击“关于手机”中的“版本号”7 次,返回“设置” > “系统” > “开发者选项”,开启“USB 调试”和“仅充电模式下允许 ADB 调试”。
- 连接 USB 线缆:建议使用设备原装 USB 线缆,直接连接至主机 USB 2.0/3.0 端口,避免使用前置面板或 USB Hub。
- 授权 RSA 密钥:在主机终端执行
adb devices,设备屏幕会弹出 RSA 密钥指纹确认对话框,勾选“始终允许”,点击“确定”。 - 验证连接状态:执行
adb devices -l,确认设备状态为device,并显示产品型号和传输 ID。
关键检查点:如果
adb devices 显示 unauthorized,请重新插拔 USB 线缆并再次确认 RSA 授权;如果显示 offline,则需重启 ADB 服务(adb kill-server 后 adb start-server)。
以下 SVG 图展示了 CTS 测试主机与 Android 设备之间的标准连接拓扑:
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 测试计划从加载到执行完成的完整流程:
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 测试的执行与报告生成,为后续的故障排查和认证提交奠定基础。