CTS是Compatibility Test Suite的简称,是android的兼容性测试套件,定制了andoird后,必须通过最新的CTS检测,以保证标准的APK能在平台上安装运行,通过了CTS后,将测试报告给Google,以取得android market认证,CTS的测试框架如下图:
CTS的官方网站是http://source.android.com/compatibility/index.html, 上面有详细的说明。
详细的说明见官方网站,本文章只说下总结的测试步骤。
在官方网站有CTS的使用手册和测试套件及校验工具。最新版本关注<<android-cts-manual-rX.pdf>>
CTS有两种方式,一种是自己编译CTS,另一种是直接使用从官网上下载的编译好的。
自己编译则:
$ . build/envsetup.sh
$ make cts
编译好后的的文件是 out/host/linux-x86/cts/android-cts.zip,如果你的代码是最新的,则这个文件和官方网站的放的编译好的文件是一样的。如果要自己修改CTS的测试代码,在android代码根目录下的cts目录下
CTS的makefile: build/core/tasks/cts.mk
CTS的程序文件: out/host/linux-x86/bin/cts
CTS的测试计划: out/host/linux-x86/cts/android-cts/repository/plans
CTS的测试用例: out/host/linux-x86/cts/android-cts/repository/testcases
CTS的测试结果: out/host/linux-x86/cts/android-cts/repository/results
CTS的配置: out/host/linux-x86/cts/tools/utils/host_config.xml
一. 搭建CTS测试环境
首先在LINUX机器上安装android的SDK环境,既然已经开始关注CTS了,LINUX SDK环境这部分应该很熟悉了,这里省略。可以参考http://developer.android.com/sdk/index.html
修改~/.bashrc 加入SDK的工具目录
export PATH=$PATH:~/android-sdk-linux/platform-tools:~/android-sdk-linux/tools
保存退出后运行下面语句使修改的环境变量在当前终端生效
$source ~.bashrc
打开终端输入命令:adb devices ,连接上这会显示设备ID,
如果未连接上则会以???????代替,此时可以通过输入以下命令进行连接
$ adb kill-server
$ sudo adb start-server
$ adb devices
还有问题的话参考另外一篇文章Android SDK USB配置
二. 设备端的设置
1. 在Android4.0及以上版本,手机必须是用户(user)模式, 不是工程(eng)模式,通过adb shell进去看一下,如果提示符号是#则为eng模式,如果是$则为用户模式。把手机设置为英文语言。
2. 安装TTS,Android4.0进Settings > Speech synthesis > Install voice data, Android 2.3.5
Settings > Voice input & output > Text-to-speech settings > Install voice data
这一步是为了保证安装了Android Market, 如果没有安装需要用adb手动安装.
3. 插入一张空白的SD卡,测试过程中会擦除修改SD卡上的数据
4. 恢复出厂设置。Settings > Privacy > Factory data reset
5. “USB调试”被选中. Settings > Applications > Development > USB debugging
6. 允许模拟地点. Settings > Applications > Development > Allow mock locations
7. 保持唤醒状态 Settings > Applications > Development > Stay Awake
8. 去掉锁屏 Settings > Security & location &security>Set up screen lock>none
9. 设置屏幕超时为最长时间30分钟(Settings>Display>Screen timeout>30minutes)
10. 运行时让屏幕是home主界面上
11. 链接到一个WiFi网络 Settings > WiFi
12. 手机上的时间设置正确
13. 运行CTS的过程中不能有按键和触屏等操作手机的动作
14. 安装辅助测试
adb install android-cts/repository/testcases/CtsDelegatingAccessibilityServices.apk
允许服务Settings > Accessibility > Delegateing Accessibility Services
15. 设备管理测试
adb install android-cts/repository/testcases/CtsDeviceAdmin.apk
允许设备管理,
Settings > Security > Device Administrators > android.deviceadmin.cts.CtsDeviceAdmin
16. 媒体压力测试
把官网下载的android-cts-media-x.y.zip解压,在保证用adb可以连上手机后,进入解压后的目录,
$chmod 544 copy_media.sh
$./copy_ media.sh
如果是 $./copy_ media.sh 1920x1080则拷贝所有分辨率的文件
三. 运行CTS
在连上USB线后,进android-cts\tools目录,运行
$startcts
如果权限不够,则运行sudo ./startcts
之后提示
$ startcts
Android CTS version 2.3_r4
Device(emulator-5544) connected
cts_host>
此时输入 help 将会列出cts所有的操作。
cts_host> ls --plan 查看测试计划
cts_host> ls -p 查看测试包
cts_host>start -plan [plan name] 运行VM测试计划
cts_host>start -plan [plan_name]-p [package_name] 运行测试计划下的测试包
cts_host>start –plan [test plan name] –t[package_name].[class_name]#[plan_package_test_name]
其实打开android-cts/repository/plans目录,可以看到有哪些test plan
RefApp.xml
Signature.xml
VM.xml
AppSecurity.xml
Java.xml
Android.xml
CTS.xml
那些xml文件打开后可以看到一些uri,指定了要测试哪些东西
ls –plan其实就是列出那些xml文件名(去掉.xml这四个字母)
运行VM测试计划 cts_host > start --plan VM |
运行Java计划下的android.core.tests.archive包 cts_host > start --plan Java -p android.core.tests.archive |
运行Java计划下android.core.tests.archive包下的test_tostring测试项 cts_host > start --plan Java -t android.core.tests.archive .java.Util.jar.AttributesNamesTest#test_toString |
在指定设备上运行测试计划中的测试包 cts_host > start --plan VM -d 23232326 |
查看测试结果
cts_host > ls -r
查看某个session的测试结果
ls –r –s sessionid
比如
ls -r -s 4
CTS测试会自动生成相应的测试包,该包位于如下目录:
android-cts/repository/results
用IE浏览器打开里面的 testResult.xml文件,可以知道哪些是通过CTS测试的。
测试通过以后,可以把CTS生成的结果(就是result下面那个以测试时间命名的.zip文件)提交给cts@android.com
四. 解决测试中的问题
知道哪个包失败后,可以单独对该包测试,比如签名不过
$adb install android-cts/repository/testcases/SignatureTest.apk
$adb shell pm list instrumentation
$adb shell am instrument w android.tests.sigtest/.InstrumentationRunner
五. 在Windows下运行CTS
在windows下运行CTS,则需要分析下startcst里的实际内容,可以把它翻译成dos的批处理,或者如果装了cygwin的话,在cygwin下运行startcts。 或者看看startcts里是如果调Java去做测试的,直接在cmd命令行输入java命令去测试
六. 其它
如果最新的测试包和本文章有出入,可以参考官方网站的测试手册,按里面的操作进行。
按里面的操作进行
在测试过程中会碰到自动重启手机的情况,可以修改android-cts/repository/host_config.xml文件,
其中测试次数改为-1<IntValue name="maxTestCount" value="-1" />