CTS兼容性测试的使用方法

在Android的设备开发中无法绕开的一个话题就是CTS测试,上一篇中我们简单的了解了CTS 测试是什么。

这一篇我们来说一下如何进行CTS测试。

1.搭建环境

首先获取CTS测试安装包,可以从谷歌官网获取https://source.android.google.cn

需要注意的是,需要根据设备的安卓版本来选择不同的CTS 测试包。

理论上,谷歌提供了linux和window的安装环境,但是一般情况均在linux下执行测试。

另:window环境下的Android 12以上的版本需要连接外网操作才可以完成环境配置,Android 11的版本在window环境下可以使用 cts-tradefed,即可在window环境下打开CTS的控制台进行测试。

但是,不要紧,最后会介绍一种简单快捷的测试方法。

将测试包(包名中带 -ARM)在linux环境下解压,在连接外网的状态下,在 android-cts/tools/目录下执行 ./cts-tradefed

安装过程中可能出现的几个问题:

(1)JDK版本不匹配

使用 wget 命令安装对应版本JDK;

在 bash_profile 文件中配置环境变量;

使用 source ~/.bash_profile,将JDK生效;

通过 java --version 查看安装版本。

(2)JDK 相关bin文件和cts-tradefed权限不够

通过提示信息,在对应的文件目录下,执行 chmod 777 +对应的文件,即可获取文件的全部权限。

配置好CTS环境后,连接Android设备,将CTS测试所需要的设备要求打开,例如打开保持常亮,连接wifi等等,即可进行CTS测试了!

2.测试手法

在cts-tradefed控制台下,执行 run cts -plan CTS 进行整体测试。

也可以对某一类某一项进行测试,执行 run cts –c CName –m MName进行单项测试(CName表示类名,MName表示方法名)

例如: run cts -m CtsCameraTestCases ,表示camera类的全部cts

对失败项进行重复测试,执行 run retry -r id ,即可重新测试失败case ,id 可以通过执行 l r 命令来查看当前 session id。

在执行完成测试后,在 android-cts/results 下会生成结果,查看对应网页文件,在网页端即可看到本次测试中fail和pass项。

3.便捷测试

大家发现没有,如果一个测试工程师来配置CTS环境进行测试,使用谷歌提供的标准方式是很正规快捷的,但是对于一个研发人员,譬如测试工程师发现了一个CTS fail的问题,研发还需要本地配置环境来进行测试验证,这将大大降低了研发的解决效率,这不是一个切实可行的方法。

不要急,本人还有一套针对研发的同学进行快捷高效的CTS测试方法。

研发的同学往往不会需要对CTS整体的测试,只需要某个类或者某个模块的结果。

可以通过安装cts测试包 + am命令行,进行测试。

首先下载 x86的CTS安装包,在android-cts/testcases目录下,有对应的CTS 测试apk,将其安装到Android设备上。

安装完成后,将apk的权限全部打开。

再执行am命令:

am instrument -w -r -e newRunListenerMode true -e class android.media.cts.CameraProfileTest android.media.cts/androidx.test.runner.AndroidJUnitRunner

标注的位置表示测试的某个类或某个某个模块,甚至可以测试某类下的单独一个case。例如,测试camera类下的RobustnessTest模块的testMandatoryOutputCombinations测试项,只需要在类后添加#即可。

am instrument -w -r -e newRunListenerMode true -e class android.hardware.camera2.cts.RobustnessTest#testMandatoryOutputCombinations android.camera.cts/androidx.test.runner.AndroidJUnitRunner

执行后的测试结果,会显示执行时间和是否pass。

这样,就通过安装测试apk,再执行am命令就可以完成一个简单的CTS测试了,这种是不是比上面标准的测试方法简单很多。

大家可以快去试试吧!