一、简介
为了确保Android应用能够在所有兼容Android上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test Suite, CTS 兼容性测试包)来认证运行Android系统的设备是否完全兼容Android规范。这是一组用以测试的.apk程序之类的集合,它能够在官网(http://source.android.com/compatibility/downloads.html)上面免费下载,并且测试也非常简单——只是结果非常苛刻。运行CTS会把相应的测试用例(也就是一个APK文件)传送到设备上并通过instrumentation运行,然后记录运行结果,最后删除测试用例。所有的测试用例执行完毕后,可以参照测试结果重新调整或优化系统。CTS的测试包可以到:http://source.android.com/compatibility/downloads.html去下载。
CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也可以创建自己的plan
CTS是开源的测试框架,使用它来测试你的设备是否具备兼容性。CTS主要包含两个组件:
运行在PC上的测试框架组件。主要用来管理测试用例(test case)的执行。
运行在设备或模拟器上的测试用例。这些用例用Java写成的APK文件。
CTS的版本跟android是对应的,每个平台有部同的CTS版本,CTS7.0之前的版本为 :CTS V1。CTS7.0以及之后的版本为:CTS V2
1. 下载兼容性测试用例包,并解压并命名为“android-cts”。
CTS国内的下地址:http://source.android.youdaxue.com/compatibility/cts/downloads。
windows选择Android4.4 R3 Compatibility Test Suite (CTS) - ARM下载
解压后的目录结构如下:
repository目录后,会有四个文件
logs:存放case执行过程中的log文件或者截图
plans:配置plan的xml文件存放处,自带以下plan
results:结果文件
testcases:case存放目录,自带如下case
tools 工具的执行目录,包含了所需的jar包和一个linux下可执行的shell文件。
工具想要在windows下执行,需要在tools下添加一个windows下可执行的文件:cts-tradefed.bat
@echo off setlocal enabledelayedexpansion setlocal ENABLEEXTENSIONS ::设置cts根目录,更改当前目录为批处理本身的目录 set CTS_ROOT=%~dp0\..\.. ::设置支持的jar包的根目录 set JAR_DIR=%CTS_ROOT%\android-cts\tools ::支持的jar包,一下项目中引用的jar包都要在启动的时候包含进来 set JARS=ddmlib-prebuilt.jar tradefed-prebuilt.jar hosttestlib.jar cts-tradefed.jar tradefed-prebuilt-orgin.jar jsoup-1.7.3.jar gson-2.2.4.jar commons-compress-1.8.1.jar mail.jar javacsv.jar RXTXcomm.jar set JAR_PATH=. for %%i in (%JARS%) do ( set JAR_PATH=!JAR_PATH!;%%i ) java %RDBG_FLAG% -cp %JAR_PATH% -DCTS_ROOT=%CTS_ROOT% com.android.cts.tradefed.command.CtsConsole %* pause
2、插上手机,点击cts-tradefed.bat文件启动cts,会出现如下界面:
3、运行一个测试试试:
现在你回头去看之前的respository目录的logs和results目录里会多了一个文件:
4、等收集完手机信息后会启动测试,如下图:
5、结束后去repository/results/下查看结果,点击testResult.xml文件,会在浏览器里打开统计数据
二、常用命令
与host相关的部分常用命令:
help: CTS命令一览表
exit:退出cts终端
与run相关的部分常用命令:
cts-tf>run cts --plan <test_plan_name> 执行一个测试计划
cts-tf>run cts --package <package_name> 单独运行cts测试中的一个包
cts-tf>run cts -c <package name> -m <testcase_name> 单独测试某个用例
cts-tf>run cts --continue-session <session_ID> 继续运行指定session上状态为not executed 的case
cts-tf>run cts [option] --serial/-s <device_ID> 在指定device_ID上run cts [option]
与java包相关的部分常用命令:
cts-tf>list devices: 列出所有连接的设备和设备的状态
cts-tf>list packages: 列出CTS所有的测试包
cts-tf>list plan: 列出CTS所有的测试计划
与测试计划相关的部分常用命令:
cts-tf>add derivedplan --plan plan_name --session/-s session_id –r [pass/fail/notExecuted/timeout]:从指定session id中根据case的各种状态产生一个新的测试计划
与option相关的命令:
cts-tf>run cts --disable-reboot [option]: 在测试过程中不需要重启手机
三、测试流程
----------------------------------------------
第一部分:准备工作
----------------------------------------------
1.在手机上安装android-cts/repository/testcases目录下的两个APK:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk
2. 进入settings打开Wi-Fi并连接AP (AP需要连外网)
3.进入settings->Security->Screenlock设为None
4.进入settings->Security->EnableUnknown sources
5.进入settings->Security->Deviceadministrators->Enable两个选项
6.进入Language&input->language设为English(UnitedStates)
7.进入settings->Display->Sleep设为30minutes或None
8.进入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock locations
9.进入settings->Accessibility->EnableDelegating Accessibility Service(设置-》安全-》设备管理器中生成下图,把这三项选中)
----------------------------------------------
第二部分:开始CTS测试(每次输入后加回车)
----------------------------------------------
1.平台用USB线连接电脑
2.打开终端切换到root用户,cd到tools目录下, 输入 ./cts-tradefed (linux平台)
2.点击cts-tradefed.bat文件启动cts (Windows平台)
3.输入run cts --plan CTS显示如下,则表明开始测试CTS
cts-tf > run cts --plan CTS
cts-tf> 01-16 15:45:34 I/TestInvocation: Starting invocation for \'cts\' on build\'4.0.3_r1\' on device 0123456789ABCDEF
01-16 15:45:35I/0123456789ABCDEF: Created result dir 2012.01.16_15.45.34
不同版本测试计划基本一样,可分七种
CTS:运行所有的兼容性测试用例,目前暂时不包括性能测试用例
Signature:对签名的所有的公共接口进行验证
Android:对Android的接口进行测试
Java:对Java核心库进行测试
VM:对Dalvik虚拟机进行测试
RefAPP:对参考应用进行测试
Performance:对性能进行测试
----------------------------------------------
第三部分:关于CTS4.0测试报告
----------------------------------------------
1.CTS测试报告是自动生成一个xml报表,并自动填写的,不需要测试人员干预
2.当一个CTS测试任务开始时,会在/repository/results中为这个任务建立一个存放测试报告的文件夹,文件名以任务开始的日期和时间命名。
3.CTS4.0生成测试报告的速度比CTS2.3/2.2要慢不少,特别是在测试过程中中断测试,CTS4.0需要70秒才会开始生成报告。如果你在此过程中按ctrl+c终止CTS进程,测试报告就无法生成,以后也无法继续测试未完成的计划。
4.CTS测试任务完成后,会生成testResult.xml和2012.01.12.zip打开这个文件夹中的testResult.xml(用firefox或IE浏览器打开),查看报表是否完全。
----------------------------------------------
第四部分:继续测试未完成的计划
----------------------------------------------
CTS4.0对未完成的测试计划不会生成xml报告,这个和CTS2.3/2.2不同。但是,这并不意味测试中断后无法继续未完成的测试。
1. 前提条件是有未完成的测试计划
2. 平台用USB线连接电脑
3. 进入的CTS状态(cts-tf >)
6.输入l r终端会显示(l和r中间有空格)
Session Pass Fail Not Executed Start time Planname
0 7 0 0 2012.01.16_16.09.19 NA
1 13 0 0 2012.01.16_16.13.01 NA
2 19 19 17120 2012.01.18_13.43.56 CTS
(根据start time时间,确定你要的任务的session编号)
7. 输入 run cts –continue-session session_id (session编号)
----------------------------------------------
第五部分:单独对fail/notExecuted/timeout的测试项进行测试
----------------------------------------------
1.前提条件是已经有完成的测试结果testResult.xml文件
2.平台用USB线连接电脑
3. 进入的CTS状态(cts-tf >)
4.输入l r
Session Pass Fail Not Executed Start time Plan name
0 7 0 0 2012.01.16_16.09.19 NA
1 13 0 0 2012.01.16_16.13.01 NA
5.输入addderivedplan --plan plane_name(新建一个测试计划) --session/-s session_id -r[pass/fail/notExecuted/timeout] (只能选择其中一项)
6.输入run cts –plan plane_name(新建的测试计划名称) 开始测试
7.测试完成后,CTS会自动生成一个新测试报表文件夹
----------------------------------------------
第六:单独测试某个Case
----------------------------------------------
1.单个Case每单独测试一次,就会生成一个Session(和测试报告xml)。
2.平台用USB线连接电脑
3. 进入的CTS状态(cts-tf >)
6.从CTS测试报告XML文件中查找需要测试的Case的packagename 和 method name
按上方的例子:android.acceleration.cts.HardwareAccelerationTest是package name,testIsHardwareAccelerated是method name
7.输入runcts -c android.acceleration.cts.HardwareAccelerationTest --m testIsHardwareAccelerated开始测试这个Case
8. 测试完成后,CTS会自动生成一个新测试报告文件夹
四、注意点
1. 如果需要执行可访问性方面的兼容性测试,则安装“CtsDelegatingAccessibilityService.apk”,并将Settings->Accessibility->Delegating Accessibility Service选项打开。一般情况下是没有的。
2. 如果需要执行设备管理方面的兼容性测试,则安装“CtsDeviceAdmin.apk”,并将Setting->Security->Devices Administrators->android.devicesadmin.cts.CtsDevicesAdmin等选项打开。
3. 如果需要执行多媒体方面的兼容性测试,则需要:
1)从http://source.android.com/compatibility/downloads.html 下载android- cts-media-X.Y.zip并解压。
2)进入解压后的文件夹,并执行bash copy_media.sh, 把测试所需文件copy到手机中,否则会影响后边android.media等与media相关测试包的执行。
4. 保证手机处于home界面,即按下“Home”键。CTS测试正式开始之后出现“cts_host >”测试默认CTS,其中包括所有的packages,可以输入如下命令 :run cts --plan CTS 或者
run cts –disable -reboot --plan CTS (跑测试过程中,手机不会reboot,这样可以方便接adb logcat),跑起来时先根据日期和时间创建测试结果的文件夹,然后出现“start test run of xx packages, containing xx tests”说明测试已经开始跑了,此时尽量再多观察十分钟,出现“Installing prerequisites”并且之后有显示case pass,则确保cts确实开始run了。
5.CTS每次执行run cts –plan CTS时,CTS会搜索android-cts-4.0.3_r#-linux_x86-arm/android-cts/repository/results中的历史报表文件夹。如果文件有很多,启动速度会非常慢。所以,请定期清理results文件夹中的历史报表(直接删除报表文件夹即可)
6.每次测试保证把CTS测试case全部跑完,用 “l r”查看,本次CTS测试是否全部run完,即not executed一列的数值是0,如果数值不为0,则表示还剩下没有run完的case,有可能是手机冻结或者reset导致adb 识别不了设备,所以后边的case都为not executed状态。如果手机离线了,即adb devices 状态为offline,这时需要重新连接手机,后使用命令“run cts --continue-session session_id” 就可以继续上面not executed的case了,session_id用命令l r就可以看见。
7.如果测试过程中需要跑指定的几个packages,而不是full CTS, 则可修改plan文件夹中的CTS.xml文件。