一、简介

为了确保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. \include\configs\mx6q_sabresd.h

    /* * Copyright (C) 2012 Freescale Semiconductor, Inc. * * Configuration settings for the MX6Q Sabre ...

  2. python中os模块讲解

    本文主要介绍一些os模块常用的方法: 先看下我的文件目录结构 D:\LearnTool\pycode\part1 在此目录下的文件如下: abcd.py demo1.1.py demo1.2.py z ...

  3. windows中阿里的自动化测试macaca安装配置

    一.环境配置 node cnpm环境安装 安卓环境配置 参考文档https://macacajs.github.io/zh/environment-setup 全局安装macaca-cli macac ...

  4. luogu1129 [ZJOI2007]矩阵游戏

    其实,只用考虑某一行能否放到某一行就行了 #include <iostream> #include <cstring> #include <cstdio> usin ...

  5. Python基础数据类型之集合

    Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...

  6. 集群高可用之lvs

    集群: 随着互联网的发展,大量的客户端的请求,服务器的负载越来越大,单台服务器的负载有限,会导致服务器响应客户端请求的时间越长,甚至产生拒绝服务的情况.目前网站是24小时不间断提供网络服务,仅采用单点 ...

  7. CSS相对布局和绝对布局

    relative 相对布局,正常的,从上到下.绝对布局absolute,就像不占位置,透明了一样,会和别的重合

  8. 洛谷P2351 [SDOi2012]吊灯 【数学】

    题目 Alice家里有一盏很大的吊灯.所谓吊灯,就是由很多个灯泡组成.只有一个灯泡是挂在天花板上的,剩下的灯泡都是挂在其他的灯泡上的.也就是说,整个吊灯实际上类似于[b]一棵树[/b].其中编号为 1 ...

  9. [BZOJ4776] [Usaco2017 Open]Modern Art(差分 + 思维?)

    传送门 可以预处理出每种颜色的上下左右的位置,这样就框出来了一个个矩形,代表每种颜色分别涂了哪里. 然后用二维的差分. 就可以求出来每个位置至少涂了几次,如果 > 1 的话,就肯定不是先涂的, ...

  10. [luoguP3110] [USACO14DEC]驮运Piggy Back(SPFA || BFS)

    传送门 以 1,2,n 为起点跑3次 bfs 或者 spfa 那么 ans = min(ans, dis[1][i] * B + dis[2][i] * E + dis[3][i] * P) (1 & ...