欢迎光临
我们一直在努力

Android出海系列-CTS测试介绍

1. 什么是 CTS,为什么它是出海必修课

CTS(Compatibility Test Suite)是 Android 兼容性测试套件。对希望接入 GMS 生态的设备(手机、平板等)来说,CTS 是基础门槛之一:
通过 CTS,意味着设备行为与 Android 兼容性要求对齐,标准 Android 应用在该设备上的运行一致性更高。

从出海项目视角看,CTS 的价值主要体现在三点:

  • 降低应用兼容性风险,减少上线后的区域性故障。
  • 为 GMS 认证链路提供关键测试凭证。
  • 在多机型并行开发时,建立统一的质量基线。

2. 物理测试环境:先把“外部条件”搭对

很多 CTS 失败并非代码问题,而是环境不满足测试前提。建议优先把物理环境一次性搭齐。

2.1 Bluetooth LE

  • 若设备支持 BLE,执行 BLE scan 相关测试时,设备周边约 5 米范围内建议至少放置 3 个 Beacon。

2.2 Camera

  • Camera 测试建议在正常照明下进行,并准备测试图表(如棋盘格)。
  • 若设备支持外置摄像头能力,测试时需接入外置 Camera,否则相关用例可能失败。

2.3 GPS/GNSS

  • 若设备支持 GPS/GNSS,需提供符合要求的信号源(如卫星模拟器、转发器或足够良好的室外信号条件)。

2.4 Wi-Fi 与 IPv6

  • 推荐使用支持 IPv4/IPv6、DNS、组播能力的 Wi-Fi 网络,并可访问互联网。
  • 若现场无法直接提供 IPv6,可通过可用的 IPv6 VPN 补齐部分能力。

2.5 Wi-Fi RTT(Android 9+)

  • 建议准备可用于 RTT 场景的 AP,设备与 AP 距离建议在 12 米内。
  • RTT 场景下 AP 供电开启即可,不强制要求连网。

3. 测试设备配置:PC 与 DUT 双线准备

3.1 PC 端配置要点

  • 建议使用 64-bit Linux(Android 11+ 建议 Ubuntu 14.04 及以上)。
  • Android 14+ 需要 FFmpeg 5.1.3 或更高版本。
  • 安装并配置最新 ADB / AAPT;Android 14+ 还需单独配置 AAPT2。
  • JDK 建议按 Android 版本匹配:
    • Android 11+:OpenJDK 11
  • 首次运行对应 CTS 版本时,Mainline 相关文件可能触发动态下载,建议提前准备,减少首跑时长。

3.2 DUT(待测设备)配置要点

  • 必须使用 User GMS 构建版本执行 CTS。
  • Android 13+ 重点关注 Device ID 与 CSR 部署;缺失会导致部分用例失败。
  • Keybox:文档指出 Android 16 开始不再需要部署。
  • 若设备具备卡槽/外设能力,需按要求插入并激活 SIM/SD 卡,必要时准备支持特权规则的 Developer UICC。
  • 无内置屏幕设备需外接显示器。

3.3 Android 14+ 辅助设备

  • 建议准备支持 CDP 协议的 Hub 参与辅助测试。

4. 开测前 Checklist:把高频失败点提前清零

建议每轮正式跑测前做一次“5 分钟体检”:

  • 系统语言切换为 English (United States)。
  • 打开 Location,连接可用 IPv6 Wi-Fi 并联网。
  • 关闭锁屏密码;开启 USB Debugging 与 Stay Awake。
  • Android 13+ 设备开启 Allow Mock Modem(如项目涉及相关 Telephony 测试)。
  • USB 连接后确认调试授权(RSA)已允许。
  • 媒体能力设备执行 copy_media.sh all(适用对应 CTS 版本要求)。

这一步做得细,通常可以显著减少“非代码型失败”。


5. CTS 执行策略:单机、分布式与精细化运行

5.1 单机测试(基础模式)

cd android-cts/tools
./cts-tradefed
run cts

也可按模块或单用例精准运行:

run cts -m <ModuleName>
run cts -m <ModuleName> -t <TestCaseName>

5.2 分布式测试(提速模式)

多台设备并行可显著缩短总时长,例如 3 台设备:

run cts –shard-count 3


6. Token Sharding:降低资源门槛的并行测试方案

Token Sharding 的核心价值在于“按能力分配任务”:

  • 将对 SIM/UICC/SE 有特殊依赖的测试项,自动匹配到满足条件的设备。
  • 避免所有设备都必须插同规格 SIM 卡,降低实验室准备成本。
  • 同时支持首次测试与重试测试(retry)场景。

启用方式示例:

run cts –enable-token-sharding <...other flags...>

若设备不支持 Modem,可按文档建议忽略该模式。


7. 测试结果与日志分析:从“跑完”到“可交付”

CTS 结束后,重点关注以下输出:

  • android-cts/results/:按时间戳生成结果目录及 zip 包。
  • test_result.xml:最关键的结构化测试结果。
  • android-cts/logs/host_log:主机侧执行日志(tradefed/终端输出)。
  • android-cts/logs/device_log:设备侧日志(system/main)。

建议团队内部建立统一归档规范:
“版本号 + 设备型号 + 构建号 + 测试日期 + 结果摘要 + 问题单链接”,方便后续复测与审计。


8. CTS-on-GSI、PAB 与调试闭环

8.1 CTS-on-GSI

  • 与常规 CTS 在环境与前置条件上基本一致。
  • 关键差异在镜像要求,命令为:

run cts-on-gsi

8.2 PAB 包策略

  • 正式 CTS 版本更新节奏相对稳定,短期修复常通过 PAB 包在 Android CI 发布。
  • 若正式版失败但最新 PAB 验证通过,通常可按流程提交通过报告,无需额外豁免(以当期认证规则为准)。

8.3 Debug 建议路径

  • 对齐到对应 CTS Tag/Branch 代码后再分析问题。
  • 必要时在 CTS 代码中加日志并重编译对应 APK。
  • 用替换后的测试 APK 做最小复现场景验证。
  • 区分“平台问题 / 用例问题 / 环境问题”,再决定是本地修复、cherry-pick 还是向上游提交 patch。

  • 9. 一套可复用的出海 CTS 执行方法论

    最后给出一个实践顺序,供团队落地:

  • 先环境,后跑测:先把物理与网络条件固化。
  • 先单机,后分布式:先验证基线稳定,再用分布式提速。
  • 先归因,后修复:先定位失败类别,再决定修复路径。
  • 先沉淀,再复制:把每次踩坑转成 Checklist,缩短下一机型导入周期。
  • 赞(0)
    未经允许不得转载:171主机测评 » Android出海系列-CTS测试介绍
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址