Windows环境CTS测试实现

    这是2012年4-8月份左右写的,其实我不懂android、java,当时本想抽时间帖出来,但没多久离职,也不再从事测试工作,也就忘了这事,今晚没事翻翻以前的文档,想起来了,就把它贴出来。

    CTS原本是基于Linux平台命令终端下运行的测试套件,而我们平常的一些工作都是在Windows系统下完成的,当然我们可以使用虚拟机,但是对于不太熟悉Linux系统的同事来说,Linux下的CTS环境配置、测试操作、报告获取等都是另人头疼的事情,况且经常在虚拟机下无法发现被测设备,也就根本无法执行CTS测试。

    那CTS是否可以在Windows系统下执行测试呢?是否可以测试CTS测试包中所有测试项呢?答案是肯定的,目前我提供的Windows环境下CTS测试工具CtsTool(结束处附加了下载地址)已经完美实现android-cts-2.x.x、android-cts-4.0.x及android-cts-4.1的完整CTS测试(其中x在这里以及下文出现的x暂只表示4.0到4.1系列版本),并提供sync命令自动更新“CtsTool”工具。下面将针对该工具在实现Win环境CTS测试过程中所遇到问题的解决方法和大家分享,而这些问题也是所有试图在Windows环境下执行完整CTS测试所必须解决的问题,问题如下:

    1、 如何启动CTS控制台?只有启动了CTS控制台才能进行所谓的CTS测试。

    2、 android-cts-4.0.x及android-cts-4.1版本CTS套件中均存在android.core.vm-tests-tf 包无法测试,并抛出异常,导致无法生成测试报告。

    3、 android-cts-4.0.x版本中android.nativemeida 包执行时总会跳过测试(notExecuted),即无法测试。

    4、 android-cts-4.1版本中android.nativemedia.s1和android.nativemedia.xa 2个测试包无法测试,同问题3。

问题1 — 如何启动CTS控制台?

    CTS(兼容性测试套件)可简单分为2个部分:测试框架和测试用例。下面是android-cts-4.0.3_r3版本CTS测试套件的目录结构:

    —android-cts-4.0.3_r3

      |—android-cts

         |—docs                  // 空文件夹

         |—repository

         |  |—logs               // 存放工具(host)log及设备(devices)log

         |  |—plans // 测试计划存放目录

         |  |  |—Android.xml

         |  |  |—AppSecurity.xml

         |  |  |—CTS.xml            // 包含所有测试包,即对应run cts --plan CTS

         |  |  |—……(更多)             

         |  |—results             // 目录下存放的是测试结束后生成的测试报告

         |  |—testcases           // 目录下存放的是所有CTS测试用例

         |—tools                  // 测试框架文件目录

            |—cts-tradefed         // Linux下启动CTS控制台的bash文件

            |—cts-tradefed.jar // CTS命令执行、过程控制、结果生成的核心文件

            |—ddmlib-prebuilt.jar

            |—hosttestlib.jar

            |—junit.jar

            |—tradefed-prebuilt.jar

    在Linux下我们只需打开命令终端,通过cd命令进入如上测试包目录结构中的tools目录下,执行./cts-tradefed 命令即可打开CTS测试控制台,继而执行CTS测试。

而在Windows下该如何调用测试包tools目录下的java文件,从而来启动CTS测试控制台呢?cts-tradefed 这个bash文件的最后一段代码给了我们惊喜,代码如下:

java $RDBG_FLAG \

  -cp ${JAR_PATH} -DCTS_ROOT=${CTS_ROOT} com.android.cts.tradefed.command.CtsConsole "$@"

    根据这段代码,我们只需配置好${JAR_PATH}和${CTS_ROOT}变量对应的文件路径及修改Windows下批处理运行java文件的一些语法即可进行验证,首先在tools目录下新建cts-tradefed.bat的批处理文件,文件中输入如下代码:

@echo off

set CTS_ROOT=..\..

set CTS_DIR=%CTS_ROOT%\android-cts\tools\cts-tradefed.jar

set DDM_DIR=%CTS_ROOT%\android-cts\tools\ddmlib-prebuilt.jar

set TDF_DIR=%CTS_ROOT%\android-cts\tools\tradefed-prebuilt.jar

set HST_DIR=%CTS_ROOT%\android-cts\tools\hosttestlib.jar

set JAR_DIR=%CTS_DIR%;%DDM_DIR%;%TDF_DIR%;%HST_DIR%

call java %RDBG_FLAG% -cp %JAR_DIR% -DCTS_ROOT=%CTS_ROOT% com.android.cts.tradefed.command.CtsConsole

    运行cts-tradefed.bat批处理文件,惊喜的发现CTS控制台启动了!当然CTS测试相关命令都可正常执行,然而我们执行run cts -- plan CTS时,当执行到android.core.vm-tests-tf这个测试包时,程序会抛出异常错误,CTS无法继续进行下去,而android-cts-4.x.x版本测试套件在测试过程中若意外终断测试将不会生成测试报告,这让我们相当郁闷,毕竟我们最需要的是测试报告,后面我们还发现android-cts-4.0.x版本测试套件中android.nativemedia共9个测试用例也无法测试(只是不执行测试而已,不会中断测试),且android-cts-4.1版本测试套件中android.nativemedia.s1、android.nativemedia.xa2个包也无法测试。

    但我们想要的是在Windows环境下执行CTS测试能达到同Linux环境下测试一样的效果,这些问题将如何解决?下面将进入本文所要解决问题的重点,即解决部分测试包无法在Windows环境下执行测试的问题。

问题2 — android.core.vm-tests-tf包无法测试

问题原因:

    CTS工具在Windows环境下无法创建临时目录,同时也无法在设备的/data/local/tmp/vm-tests目录下创建dalvik-cache目录(vm-tests目录工具可创建)。

解决办法:

    android-cts-4.0.x版本、android-cts-4.1版本都存在android.core.vm-tests-tf测试包。这里以android4.0.4源码为例,源码根目录为source,首先找到VMHostTest.java文件,路径为source/cts/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java。

    对VMHostTest.java文件作如下2点修改:

    修改点1:从文件中找到代码createRemoteDir(device, VM_TEST_TEMP_DIR + "/dalvik-cache" ); ,将其复制到如下图所示的蓝色框部分,同时注释掉原代码。

    修改点2从文件中找到代码"/tmp/",并将其改为如图所示的蓝色框中代码。


    修改上面2点后,在source/cts/tools/目录下执行mmm tradefed-host命令编译出cts-tradefed.jar文件,文件生成在source/android-4.0.4_r2/out/host/linux-x86/framework目录下,当然需先在source目录下执行. /build/envsetup.sh命令才可使用mmm命令,现在我们要做的便只是将编译出的cts-tradefed.jar文件替换掉CTS测试套件中tools目录下的cts-tradefed.jar文件即可,此时执行run cts - p android.core.vm-tests-tf包便会顺利执行测试,当然执行run cts -- plan CTS测试命令也就没有任何问题了。

问题3 — android.nativemeida包无法测试 

问题原因:

    CTS工具在Windows环境下无法在设备/data/local/tmp/目录创建cts-native-tests目录同时无法传输测试相关文件到cts-native-tests目录下。

解决办法:

    同前文,源码根目录为source,首先找到GeeTest.java文件,路径为source/cts/tools/tradefed-host/src/com/android/cts/tradefed/testtype/ GeeTest.java。

GeeTest.java文件做如下图5点修改,即将“图一”中红色框中代码改为如“图二”蓝色框中代码,如下图一和图二:

 



 

 

    修改上面图示5点后,在source/cts/tools/目录下执行mmm tradefed-host命令编译出cts-tradefed.jar文件,然后替换CTS工具包中tools目录下的cts-tradefed.jar文件即可。

问题4 — android.nativemeida.s1和android.nativemeida.xa包无法测试

    Android-cts-4.1版本测试套件已不存在android.nativemedia包,与这个包相关的是android.nativemeida.s1和android.nativemeida.xa 2个包,由于4.1版本的CTS测试套件有更新,4.0.x版本编译出的cts-tradefed.jar文件替换掉android-cts-4.1版本中tools目录下的cts-tradefed.jar文件后,nativemedia相关的2个测试包仍然无法测试,实际上也确实如此,可以说是CTS工具的向下兼容性。

解决办法:

    在android4.1源码中找到VMHostTest.java和GeeTest.java文件做如上文相同修改,再重新编译出cts-tradefed.jar文件,用该cts-tradefed.jar文件替换CTS工具包中tools目录下的cts-tradefed.jar文件即可,经过验证,该cts-tradefed.jar文件也适用于4.0.x版本测试套件。

备注:由于我虚拟机中的系统是32位ubuntu,因此android4.1源码无法编译,我的解决办法是将android4.1源码下cts/tools目录复制到android4.0.x源码对应目录下,将原tools目录命名为tools_bk,然后再执行如上编译操作即可。

备注:

    文中提到的CtsTool下载地址:http://192.168.1.116/oppocts/index.php/Index/download

CtsTool说明:工具的实现是根据文中所讲解的方法将CTS工具部分源码进行修改后单独编译出cts-tradefed.jar文件,然后将cts-tradefed.jar文件独立存放在CtsTool/tools目录下,配置好环境变量及文件调用路径,因而执行CTS测试非常灵活方便,另人意想不到的是Windows环境下的CTS测试效率更高,就android-4.0.3版本来说,Windows下比linux下整整要快1.5小时左右。

   另外CtsTool还支持gts测试


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lziyanl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值