android-CTS调试方法

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测试步骤
在本地执行命令:
cdandroidcts/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 之后的打印信息,例如下图
android-CTS调试方法_第1张图片

从图中可以发现异常是从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)
原因一般是由于程序运行效率问题导致的偏差,不用解决。
测试程序设定一个期望值,然后和实际运行结果相对比。
测试项不过有的是不支持,相关代码就没编译,有的是底层不支持,例如采样率。

你可能感兴趣的:(Android-问题集锦)