1、简介html
为了确保Android应用可以在全部兼容Android的设备上正确运行,而且保持类似的用户体验,在每一个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test Suite, CTS)来认证运行Android系统的设备是否彻底兼容Android规范。CTS(全称“Compatibility Test Suite”,即“兼容性测试包”)的认证,这是一组用以测试的.apk程序之类的集合,它可以在官网(http://source.android.com/compatibility/downloads.html)上面免费下载,而且测试也很是简单——只是结果很是苛刻。CTS的目的就是让Android设备(如:手机)开发商可以开发出兼容性更好的Android设备java
CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也能够建立本身的planlinux
CTS是开源的测试框架,使用它来测试你的设备是否具有兼容性。CTS主要包含两个组件:
运行在PC上的测试框架组件。主要用来管理测试用例(test case)的执行。
运行在设备或模拟器上的测试用例。这些用例用Java写成的APK文件。android
CTS的版本跟android是对应的,每一个平台有部同的CTS版本
CTS7.0以前的版本为 :CTS V1
CTS7.0以及以后的版本为:CTS V2
shell
运行CTS会把相应的测试用例(也就是一个APK文件)传送到设备上并经过instrumentation运行,而后记录运行结果,最后删除测试用例。全部的测试用例执行完毕后,能够参照测试结果从新调整或优化系统。而后继续运行CTS测试。CTS的测试包能够到:http://source.android.com/compatibility/downloads.html去下载,选择对应Android版本的CDD文档(介绍CTS测试),CTS测试包下载(测试包会不断更新),如:android-cts-verifier-4.0.3_r1-linux_x86-arm.zip,android-cts-media-1.0.zip;将下载的CTS测试包解压到相应文件夹里面应包含:android-cts文件夹里面包含Docs、Repository、Tools三个文件夹。须要配置好SDK相关的环境变量,最好是在Ubuntu下进行,搭建好Android的开发环境就能够了。关于环境变量如何配置能够去找下相关的资料。windows
1. 下载兼容性测试用例包,并解压并命名为“android-cts”。浏览器
CTS国内的下地址:http://source.android.youdaxue.com/compatibility/cts/downloads。安全
windows选择Android4.4 R3 Compatibility Test Suite (CTS) - ARM下载bash
解压后的目录结构以下:session
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
插上手机,点击cts-tradefed.bat文件启动cts,会出现以下界面:
运行一个测试试试:
如今你回头去看以前的respository目录的logs和results目录里会多了一个文件:
等收集完手机信息后会启动测试,以下图:
结束后去repository/results/下查看结果,点击testResult.xml文件,会在浏览器里打开统计数据
2、经常使用命令
与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]: 在测试过程当中不须要重启手机
3、测试流程
----------------------------------------------
第一部分:准备工做
----------------------------------------------
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会自动生成一个新测试报告文件夹
4、注意点
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文件。