android CTS测试之TV智能电视总结笔记



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测试都能通过









你可能感兴趣的:(android)