您的位置:首页 > 移动开发 > Android开发

android-CTS调试方法

2015-12-22 20:10 597 查看
1、解决cts问题,在执行测试过程中,需要把logcat打开,单凭cts测试中从cts测试app的源代码报出的异常是无法定位问题所在的。

主要还是依赖adb logcat 捕捉的错误log.e信息来定位问题。

2、有些测试项可能需要联网或者其他测试条件,条件不满足会报错。在android的源码目录CTS中,grep 测试方法名,找到具体的测试源代码,可判断出是否走http联网测试。(想了解某项测试具体是测什么的,可看测试源代码)

3、有些测试项单独测试可能会通过。

4、有些fail项报的错误信息是一类的,解决一个,可能其它全部通过。

(跟踪代码时,可能需要从framework层跟到hal层,代码量有时候很大)

在android源码中执行命令:

$ make cts -j16

会生成android-cts.zip文件,将其拷贝到本地并解压。

在本地执行命令:

$ adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk

手动点击进入android系统界面上的Settings中,依次进入

security > Select device administrators 并选中前两个。

2、打开WIFI设备并连接上网络。

3、手动点击Settings 依次

(Settings > Security > Screen Lock = ‘None’

4、Settings > About tablet 手动连续点击Build number 选项 5次,即可获取开发者选项。进入以下路径并选上

Settings > Developer options > USB debugging

Settings > Developer options > Stay Awake

Settings > Developer options > Allow mock locations

2测试步骤

在本地执行命令:

cdandroid−cts/tools/ cd android-cts/tools/
./cts-tradefed

2.1全部测试:

执行命令:

cts-tf > run cts –plan CTS

(提示:测试项列表在android-cts/repository/plans/CTS.xml文件里,如果不想测试某一项,可以通过方法注释掉,根据以前的测试现象发现Android.host.security、Android.media、Android.mediastress、android.os这几项测试中会中断,建议注释掉)

2.2单项测试:

1、如果想单测package,class,method之类的,可以依次执行命令:

cts-tf > run cts -p packageName

cts-tf > run cts -c className

cts-tf > run cts -c className -m methodName

2、如果测试结果中在某一项断了之后会出现很多Not Executed项,这时你只要在使用命令:

cts-tf >run cts –continue-session session_id 就可以继续上面的运行了

session_id用命令l r就可以看见。

cts-tf > l r

Session Pass Fail Not Executed Start time Plan name Device serial(s)

0 38333 239 0 2015.03.13_14.44.55 CTS unknown

1 59924 302 2 2015.03.14_10.05.20 CTS2 unknown

3、如果想测试一个package中的某些className,可以通过修改

android-cts/repository/testcases/下的相应的xml文件。

例如packageName 是android.media,对应的可以修改CtsMediaTestCases.xml文件,

使用方法注释掉不测的className。

如果想单独测一个className中的某些methodName,可以在CtsMediaTestCases.xml文件中使用方法注释掉不测的methodName。

保存并退出,执行命令:

cts-tf > run cts -c className -m methodName 即可。

测试报告结果生成在android-cts/repository/results/路径下。

3fail项解决方法

对于最终的测试报告中的fail项,解决方法有以下几种:

(1)参考报告中的Details 一栏信息。

(2)可以执行 run cts -c className -m methodName 并通过adb logcat 查看测试某个methodName时,参考具体的log信息,重点看log.e的信息,然后去android源码中跟踪相关代码。

(3)参考运行run cts -c className -m methodName 之后的打印信息,例如下图



从图中可以发现异常是从AudioTrackTest.java 中的1959行报出来的,可以进入android的源码中cts目录,执行命令:

$find -name AudioTrackTest.java

找到AudioTrackTest.java文件,并vim 打开查看1959行代码,了解具体测试方法测的是什么,以及异常是什么。

(4)尝试单独测试某个方法,有些测试项单独测试可以通过。

(5)常见fail信息如:expected:<96000> but was:<95851> at junit.framework.Assert.fail(Assert.java:50)

原因一般是由于程序运行效率问题导致的偏差,不用解决。

测试程序设定一个期望值,然后和实际运行结果相对比。

测试项不过有的是不支持,相关代码就没编译,有的是底层不支持,例如采样率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: