google的cts详细说明网址:
http://source.android.com/compatibility/index.html
硬件厂商测试cts的目的
1.平台兼容性测试:不需要过google cts认证(国内一些厂商这样做的,海外产品必须过cts)
2.过google的兼容性测试:拿到google的cts认证,才具有Google Play的通行证
cts相关源码目录:
jb\cts
jb\cts\tests\tests
jb\libcore\luni\src --》测试android.core.test.libcore.*相应的测试源码路径
cts 测试设置步骤:
1.配置测试环境(测试电脑的环境要求及配置等,具体步骤和要求参考google说明)
2.cts所需测试资源:在sd卡下面创建test目录,放入如下网站下载的测试资料CTS Media Files,主要是视频播放片源等
http://source.android.com/compatibility/downloads.html -》CTS Media Files
3.目标设备的设置
1).安装cts测试需要的apk到目标板:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk
(这两个APK可以在cts源码目录的testcase中找到)
2).系统setting的配置
(如果项目删除了默认的setting或者深度修改了,可以用google的原生setting替代原有的setting来进行设置)
进入settings打开Wi-Fi并连接AP (AP需要连外网)
进入settings->Security->Screenlock设为None
进入settings->Security->Deviceadministrators->Enable两个选项
进入Language&input->language设为English(UnitedStates)
进入settings->Display->Sleep设为30minutes或None
进入settings->Accessibility->EnableDelegating Accessibility Service
进入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock locations
手动设置时间,并将时区调为北京,设置国家为china
4.连接要求
测试过程中:测试电脑和目标板通过adb连接,目标板连上wifi热点
我们的设备是智能电视,没有usb device接口,所以只能通过网络来连接adb。
为了保证测试过程中adb的稳定性,可以通过网线,路由在电脑和设备之间组成一个局域网络,并连接外网测试
5.目标板插上usb摄像头(设备没有自带的摄像头,部分测试用例需要camera功能),
6.执行cts测试命令
CTS测试步骤命令精简:
首先按上面步骤配置好相应环境,然后在电脑终端执行下面的命令
1. setprop sys.usb.config adb
在android设备终端串口输入这个命令,打开ADB功能 (若adb默认打开,不需要此步)
2. adb connect IP_address_android
在电脑命令终端输入adb connect 192.168.1.XX (android设备的IP地址,在串口中通过ifconfig命令可以查看到)
3. ./cts-tradefed android-cts/tools目录下面自带的执行文件,目的是用来进入CTS测试模式cts-tf >
4. l d 查看设备是否连接正常
5. run cts --plan CTS --disable-reboot
启动CTS测试,测试CTS的全部测试计划
加上--disable-reboot选项,防止设备重启(某些CTS测试项可能会使设别重启,不能继续测试,加上这个选项可以避免)
中断后重新启动测试:
6. l r 查看上次运行情况,获知 sessionID 号
7. run cts --continue-session sessionID --disable-reboot
继续运行上次的cts项 ,sessionID = 0, 1 ,2 。。。。。。
单独测试:
8.run cts -p package_name 单独测试package_name包
9.run cts -c com.class_name -m methmod_name 单独测试某个类的方法 -c 后面跟类名全路径 –m 后面跟方法名
单独对fail/notExecuted/timeout的测试项进行测试:
10. l r 获取上次测试的session ID
11. add derivedplan --plan plan_name --session/-s sessionID -r [pass/fail/notExecuted]
run cts --plan plan_name
例子:
add deriveplan --plan mycts -s 2 -r fail
run cts --plan mycts --disable-reboot
12.对整体测试完成后,单独测试fail项的一种简单方法:
1) .整体测试完成,生成result report 等xml文件 ,通过l r 查看session ID号,
2) .编辑result report 中的xml文件,把其中的fail项全部替换成not executed 项,
3) .使用run cts --continue-session session_ID 重新执行之前的fail项,得到新的result report xml
cts fail项处理
每次测试完一个CTS ID后,都会产生一个目录,里面有测试log及测试result report 的xml文件.
通过xml文件及log信息里面的错误信息,找到对应的cts 测试安排款源码,分析定位问题
cts fail项 log 关键字查找
TestRunner: started:
TestRunner: finished
TestRunner: passed
TestRunner: failed
智能电视cts测试的特点:
除了上述提到的adb连接和手机、平板有区别外,在外围设备上也有一些差别。
比如,一般智能电视android TV 都没有蓝牙等功能,所以在测试cts的蓝牙项时往往会失败,需要把系统的蓝牙配置功能关闭。如下:
1.删除etc/*xml下面蓝牙相关的xml配置文件
删除jb\frameworks\native\data\etc\tablet_core_hardware.xml的bluetooth feature
2.SystemServer.java 关掉buletoothmanagerserver
其他硬件功能相关的配置文件 :etc/*xml 或者 system/etc/*xml
系统xml文件源码路径:
/framework/base/data/etc ,jb\frameworks\native\data\etc
pm list features 可以查看当前的硬件支持信息
android智能电视设备没有phone等功能,在cts测试相关项时,要添加对应的服务或者provider才能测试通过
(这些服务等google一般默认打开,但是很多芯片厂商可能自己修改关闭了,所以要自己添加)
比如测试android.telephony项时,需要安装Phone.apk才能测试通过。
测试android.provider项需要安装 CalendarProvider.apk 。
至于没有gps等其他设备,通过上述思路,配置好后,android.location 等项的cts测试都能通过