一、简介

为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test Suite, CTS)来认证运行Android系统的设备是否完全兼容Android规范,并附带有相关的兼容性标准文档(Compatibility Definition Document, CDD)。大部分是基于Junit和仪表盘技术编写的。还扩展了自动化测试过程,可以自动执行用例,自动收集和汇总测试结果。CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也可以创建自己的plan

CTS是开源的测试框架,使用它来测试你的设备是否具备兼容性。CTS主要包含两个组件:
运行在PC上的测试框架组件。主要用来管理测试用例(test case)的执行。
运行在设备或模拟器上的测试用例。这些用例用Java写成的APK文件。

CTS的版本跟android是对应的,每个平台有部同的CTS版本
CTS7.0之前的版本为 :CTS V1
CTS7.0以及之后的版本为:CTS V2

运行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的开发环境就可以了。关于环境变量如何配置可以去找下相关的资料。

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

插上手机,点击cts-tradefed.bat文件启动cts,会出现如下界面:

运行一个测试试试:

现在你回头去看之前的respository目录的logs和results目录里会多了一个文件:

等收集完手机信息后会启动测试,如下图:

结束后去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文件。

 

Android兼容性测试CTS的更多相关文章

  1. android 兼容性测试 CTS 测试过程(实践测试验证通过)

    source: http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明 ...

  2. 【转】android 兼容性测试 CTS 测试过程(实践测试验证通过)

    原文网址:http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方 ...

  3. 【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析

    原文网址:http://www.cnblogs.com/zh-ya-jing/p/4396918.html 为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体 ...

  4. Android兼容性测试CTS --环境搭建、测试执行、结果分析

    为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test S ...

  5. 【转】Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析

    原文网址:http://www.cnblogs.com/zh-ya-jing/p/4452675.html CTS Verifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测 ...

  6. Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析

    CTS Verifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测试的功能,比如相机.传感器等.由于硬件配置或其他原因,不同手机上部分测试项目被隐藏,也就是说CTS Veri ...

  7. 简析Android 兼容性测试框架CTS使用

    一.什么是兼容性测试? 1)为用户提供最好的用户体验,让更多高质量的APP可以顺利的运行在此平台上 2)让程序员能为此平台写更多的高质量的应用程序 3)可以更好的利用Android应用市场 二.CTS ...

  8. Android兼容性测试GTS-环境搭建、测试执行、结果分析

    GTS的全称是Google Mobile Services Test Suite,所谓的Google Mobile Services即谷歌移动服务,是谷歌开发并推动Android的动力,也是Andro ...

  9. 手机APP测试如何进行兼容性测试?

    Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...

随机推荐

  1. spring mvc3 配置<mvc:resources/> @Controller失效

    因为配置了:<mvc:resources  location=" "  mapping=""  /> ,@Controller失效访问404 这里还 ...

  2. PAT Basic 1053

    1053 住房空置率 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为“可能 ...

  3. PYDay3-初识python

    Python 种类 c.j.iron.ruby等,主要有三类:cpython.xxxpython.pypy 种类繁多我们精通一种即可 编译流程: py代码->字节码->机器码->计算 ...

  4. c++ string char* 获取输入值的区别

    #include <iostream> #include <string> using namespace std; void reverseStr(string &s ...

  5. 信息安全试验-DES加密!

    信息安全试验二--DES加密算法 本渣表示没有理解原理,照着书上敲了一发,运行无误! 吐槽:手动S盒简直丧心病狂,扩展置换表全是手动输入,加密原理还是很好理解,两次异或,先混淆. 此代码数据由老师给出 ...

  6. Quartz与Terracotta的集成

    Quartz与Terracotta的集成 博客分类: Java&Socket 企业应用面临的问题 开源组件的应用 quartz任务集群数据库任务调度Terracotta  Quartz与Ter ...

  7. xmpp 常见错误 一

    #pragma mark - 密码错误,身份验证失败 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement ...

  8. BZOJ 1443 [JSOI2009]游戏Game ——博弈论

    好题. 首先看到棋盘,先黑白染色. 然后就是二分图的经典模型. 考虑最特殊的情况,完美匹配,那么先手必胜, 因为无论如何,先手走匹配边,后手无论走哪条边,总有对应的匹配边. 如果在不在最大匹配中出发, ...

  9. BZOJ 1072 [SCOI2007]排列perm ——状压DP

    [题目分析] 没什么好说的,水题. 代码比较丑,结果需要开long long 时间爆炸 [代码] #include <cstdio> #include <cstring> #i ...

  10. 【gets getline的用法 char[]转化为str】poj 2418

    http://poj.org/problem?id=2418 [注意] 1. 输入有空格,用 char str[maxn]; while(gets(str)){ str[]!='\0'; } 或 st ...