【CTS测试环境搭建】
一、PC端
1、系统版本:ubuntu10.04
2、安装jdk
3、安装adb、并配置环境变量,确保在终端中输入adb devices后可以识别到设备
4、下载cts测试包.下载地址:http://source.android.com/compatibility/downloads.html
注意:根据手机系统版本下载对应版本的cts包,否则将无法运行测试
我的手机系统版本为android 4.2.2 ,因此我下载的是 android-cts-4.2_r4-linux_x86-arm.zip
除了下载测试包外,还需要下载测试资源包,android-cts-media-1.0.zip,下载地址同上,找到CTS Media Files即可。
5、将android-cts-4.2_r4-linux_x86-arm.zip、android-cts-media-1.0.zip解压到工作目录。
二、手机端
1.手机先下载后待测试的版本,并插入SIM卡和T卡,T卡最好是1G以上的
2.进入setting->privacy->factory data reset 回复出厂设置并且格式化T卡
3.安装CtsDelegatingAccessibilityService.apk
apk在android-cts/repository/testcases目录下
连接手机,进入android-cts目录,执行adb install -r repository/testcases/CtsDelegatingAccessibilityService.apk
4.安装CtsDeviceAdmin.apk
adb install -r repository/testcases/CtsDeviceAdmin.apk
5.打开Wi-Fi,并连接可用网络,保证可以上网
6.Setting->Display->Sleep设置为30minutes
7.Settings->Security->Screen lock设置为None
8.Settings->Security->Devices administrators,勾选里面的两项
9.Settings->Language & input,语言设置为English,默认输入法为Android keyboard(AOSP)
10.Settings->Date & time,取消自动时区,设置时区为GMT+0:00
11.Setting->Accessibility->Delegating Accessibility打勾
12.Settings->Developer options->Stay awake打勾
13.Setting->About phone->Status->SIM status->My phone number是否可以看见
注意:如不能看见需要存入,需要用一部FP编辑Owner number
14..IMEI号需要写上,否则会有测试不通过的测试用例
【CTS测试】
1.连接需要测试手机,打开终端,输入adb devices后可以显示出设备
2.进入android-cts/tools目录,输入./cts-tradefed,进入cts测试
3.输入help后 可以查看帮助文档
常用命令:
run cts --plan test_plan_name: run a test plan
run cts --package/-p : run a CTS test package
run cts --class/-c [--method/-m] : run a specific test class and/or method
run cts --continue-session session_ID: run all not executed tests from a previous CTS session
4.执行完整测试,输入run cts --plan CTS --disable-reboot,这是手机就开始进入自动测试
执行完整测试需要花费很长时间,所有一般执行修改后fail的case
5.测试一个包,输入run cts -p android.media(包名)
6.测试一个类,输入run cts -c android.media.cts.MediaCodecListTest(如bug 41704)
7.测试一个方法,输入run cts -c android.media.cts.MediaCodecListTest -m testComponentInstantiation
8.测试结果在android-cts/repository/results目录下,找到testResult.xml文件,使用浏览器打开可以查看pass或fail,及其fail原因
9.测试时所产生的log信息在android-cts/repository/logs目录下
【bug修改】
误区:很多人会认为修改cts的bug时去修改cts testcase的代码,其实不是这样的。过cts的目的是为了让系统可以兼容更多的app,当cts某条case fail时,说明系统存在问题,需要修改系统代码去让cts pass。
修改cts bug时,可以通过查看android-cts/repository/results目录下的testResult.xml文件,找到fail原因,一般testResult.xml文件中会标示出fail的test class 所在行,如:bug 41695,提示信息为:
-- testGetMemoryClass fail junit.framework.AssertionFailedError: Expected to have at least 128mb of memory for screen density 480 at android.app.cts.ActivityManagerMemoryClassTest.assertMemoryForScreenDensity(ActivityManagerMemoryClassTest.java:102)
这是就去查看ActivityManagerMemoryClassTest.java的102行。
说明:在有的项目根目录下有cts目录,其中就包含有cts的源码。当你发现以上提示时,可以在cts目录下找到相应的类来查看fail原因,但有时候你的这个cts代码可能和你进行测试的代码不一致,这是你可以查看在线源码,地址:https://android.googlesource.com/platform/cts/+refs,找到对应的cts 版本即可。
对于android.hardware.cts.CameraTest项,如何手机的前置和后置摄像头焦距不一致的话会导致
android.hardware.cts.CameraTest#testJpegExif FAIL
android.hardware.cts.CameraTest#testVideoSnapshot FAIL
这是cts的问题,并非系统问题。如果不是为了过cts的话,建议不要修改。
修改完成后,编译相应的修改模块或编译systemimage或重新编译整个项目,烧录,验证。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
有不正确的地方,欢迎指出。