1. CTS 测试环境设置
1.1. CTS 介绍
Android 兼容性测试简称 CTS - Compatibility Test Suite, 是一套开源的测试框架, 使用它来验证
你的设备是否具备兼容性。让 APP 提供更好的用户体验,让开发者设计更高质量的 APP
1.2. CTS 环境搭建
Operating System: Ubuntu 10.04 64bit(or later)
JDK: On Ubuntu, use OpenJDK 8
SDK: android-sdk-r24.0.1-linux(or later)
在 run cts 时,请确保 adb 与 aapt 在系统中能正常使用,如若不行,请在 SDK 包中找到 adb 与
aapt,并在系统环境变量中配置路径
1.3. Android 设备设置
在进行 cts 测试前,需要先 对 android 设备进行设置,确保测试环境配置正确
- 恢复出厂设置: Settings > Backup & reset > Factory data reset
- 设置系统语言为 English (United States): Settings > Language & input > Language
- 打开定位功能: Settings > Location > On
- 连接 wifi: Settings > Wi-Fi
- 使能 USB debugging: Settings > Developer options > USB debugging
- 确保设备上没有密码锁或者锁屏界面: Settings > Security > Screen lock > None
- Select: Settings > Developer options > Stay Awake > On
- Select: Settings > Developer options > Allow mock locations > On
- 设置系统亮屏时间: Settings > Display > Sleep > 30 minutes
1.4. CTS 测试包下载
根据设备当前系统软件版本 , 可以从 google 官 网 上 下 载 相 应 的 cts 测试包:
http://source.android.com/compatibility/cts/downloads.html
2. Running CTS tests
2.1. 执行 cts 测试
连接至少一台设备,打开 cts 控制台,在解压好的 cts 目录中,执行如下命令
$ ./android-cts/tools/cts-tradefed
开始执行 cts 默认测试项
run cts --plan CTS
对于 android6.0 或者更早的版本,使用的是 cts v1 console.
对于 android7.0 或者最新的版本,使用的是 cts v2 console.
cts v1 与 cts v2 在执行 cts 测试时所使用的命令以及执行内容有所不同
2.2. CTS V1 Console 测试命令
1、测试完整 cts plan
run cts --plan <test_plan_name>
e.g. run cts –plan cts 跑一次完整 CTS,所有测试项都需要兼容
可以通过执行 l/list p/plans 列出当前所有可执行的 plan
2、测试 cts 中某个单独的 package
run cts --package/-p <test package name>
e.g. run cts –p android.app 测试 android.app 包中所有测试项
可以通过执行 l/list packages 列出当前所有可执行的 packages
3、 测试 cts 中某个单独的 class 或者指定 class 中的某个特定的方法
run cts --class/-c <class name> [--method/-m] <test method name>
e.g. run cts -c android.security.cts.StagefrightTest -m testStagefright_cve_2015_6604
测试 android.security.cts.StagefrightTest 中的 testStagefright_cve_2015_6604 方法
4、执行 64 位 cts 测试或者 32 位 cts 测试 ,可以在 cts 测试用例后面增加
option “--force-abi 32|64”
e.g. run cts -c android.security.cts.StagefrightTest -m testStagefright_cve_2015_6604
--force-abi 32
2.3. CTS V2 Console 测试命令
(1)测试完整 cts plan
run cts --plan <test_plan_name>
e.g. run cts –-plan cts 跑一次完整 cts,所有测试项都需要兼容
可以通过执行 l/list p/plans 列出当前所有可执行的 plan
(2)测试 cts 中某个单独的 mudule
run <plan> --module/-m <module>
e.g. run cts --module CtsGestureTestCases(或者 Gesture)
测试 CtsGestureTestCases 模块中所有的测试项,CtsGestureTestCases 可以简写成 Gesture
可以通过执行 l/list mudules 列出当前所有可执行的 mudules
(3)测试 cts 中某个单独的 class 或者指定 class 中的某个特定的方法
run cts -- module/-m <test_module_name> -- test <test_name>
Test name 可以是 <package>.<class>, <package>.<class>#<method> 或者 <native_name>
e.g. run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes
测试 Gesture 模块中的 testGetStrokes 方法
(4)执行 64 位 cts 测试或者 32 位 cts 测试 ,可以在 cts 测试用例后面增加 option “--abi/-a
<abi_name>
2.4. 其他常用测试命令
(1)CTS 测试可以在一台 PC 上同时测试多台设备,通过指定设备 device_id 就可以在不影响
其他设备测试 cts 的情况下单独测试 cts
e.g. run cts –plan cts --serial/-s <device_id>
可以通过执行 l/list d/devices 获取当前设备的 device_id
(2)--skip-preconditions
加上这个 option 可以在 cts 测试时不去检验设备的环境配置。例如不去检查 wifi 是否连接
或者 media 文件是否在测试设备中等
2.5. CTS 测试结果
CTS 测试执行完成后,测试结果会保存在下面这个文件中.
$ CTS_ROOT/android-cts/repository/results/<start_time>.zip
测试 log 保存在下面这个文件中
$ CTS_ROOT/android-cts/repository/logs/<start_time>
(1) CTS 测试结果分析
根据使用的 CTS 版本不同,CTS 测试结果在显示上也有所差异
CTS v1 for Android 6.0 and earlier
CTS v2 for Android 7.0 and later
Test Summary 中提供设备信息,执行的 test 项内容,执行开始时间和执行结束时间, 同时也会显示当前测试有多少项 pass,多少项 fail,有哪些项超时没执行等信息。 Test Report 中会提供每一个测试 package 中的每一项测试 case 的测试结果。根据执行 的结果,报告中会列出测试 package 名字,测试单元名字,测试具体 case 名字,同时会显 示该项测试结果----pass,fail,timed out, 还是 not excuted. 如果执行 fail,报告中会显示 具体 fail 的 log 信息 CTS v1 测试结果如下图.
CTS 测试 log 分析
CTS 测试完成后,测试 log 中会保存 PC 端执行的 log 以及被测试设备的 log。
device_logcat_XXXXXXX.zip 是被测设备的 log
host_log_XXXXXXX.zip 是 PC 端执行 cts 的 log