关于ctsandroid的信息

如何通过Android CTS测试

Android的CTS测试,英文为Compatibility Test Suite,意为兼容性测试。只有通过CTS测试的设备才有可能获得Android的商标和享受Android Market的权限。以下分享我对Android CTS的认识。

创新互联建站是一家专业的成都网站建设公司,我们专注网站制作、网站设计、网络营销、企业网站建设,友情链接一元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。

一、取得Compatibility Test Suite的两种方法:

(1)可以从下载最新版本的Compatibility Test Suit;

(2)也可以通过编译Android源代码的方式获得。在android源代码目录下输入make cts命令来编译CTS,之后会在out/host/linux-x86/cts/下生成android-cts文件夹。这个文件夹就是Compatibility Test Suit。

二、运行CTS的方法,步骤如下:

(1)进入目录android-cts,该目录是通过上面那两种方法获得的。在android-cts目录下会有3个文件夹,其中一个是tools。

(2)进入tools目录,输入./startcts来启动CTS。

(3)如果运行成功会出现Android CTS version 2.3_r1的字样(我的android的版本是2.3的)。如果有连接设备到PC上还会出现Device(设备ID)connected的字样。这里设备可以是连接PC的android的机器,也可以是模拟器。

三、CTS测试的方法:

(1)在cts_host下敲入help,会显示cts下的许多命令。ls –plan命令显示google自带的测试方案,如:Java、Signature、Android、CTS、VM、RefApp、Performance、AppSecurity。其中Performance这个方案是google暂不要求的。Java、Signature、Android、VM、RefApp、Appsecurity方案都是CTS方案的子集。

(2)用命令ls -d来查看已连接的设备,CTS测试之前我们必须保证至少有一个设备连接上。

(3)输入命令start –plan CTS来执行CTS测试方案,该方案有两万多条测试项目,需要很长时间,因此除了第一次测试之外,不建议这么做。我做的都是针对某些包的测试。如果连接了多个设备的话需加上-d参数,后面跟上设备id来告诉CTS需要测试的设备。

(4)对单独一个包进行测试的方法:start –plan CTS –p 包名;推荐用这种方法来进行针对性的测试。需要知道有哪些包名,可以输入命令:ls –plan CTS

(5)也可以针对单独一个case进行测试:start –plan CTS –test 类名#方法名

四、查看测试的结果:

测试生成的log在\android-cts\repository目录下以log+测试时间.txt命名。测试报告在android-cts\repository\results目录下,也是以测试时间命名。

五、注意事项:

(1)测试前需要安装一个apk:adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk 然后在设置里面的辅助功能中会多一个Delegating Accessibility Service选项,将这个选项勾起。

(2)在android设备设置中:显示-屏幕超时-选取30分钟

(3)在android设备设置中:应用程序-开发-勾选保持唤醒状态。

(4)保证测试前,android设备在主界面状态。

(5)将android设备的语言设置为英文。

如何进行android兼容性测试cts

1.Android兼容性测试(CTS)和连带的兼容性定义文档(CDD),是一个确保终端设备与特定版本Android(比如Android2.2,2.3,3.0)兼容的自管理程序。CTS测试集包含大约24,000个在Android设备上运行的测试用例,这些用例分别针对电话、图形、相机、GPS、触摸屏、无线网等功能。Google针对每个主要Android版本公布了CDD文档,其中指出了对CTS中每类测试的具体要求。

2 CTS简介

CTS拥有兼容性测试包。CTS是一个自动化的测试工具,其中包括两个主要的软件组件:CTS测试工具可以运行在您的台式机和管理测试执行。连接的移动设备或模拟器上执行个别测试案例。作为JUnit测试,并打包为Android是用Java编写测试用例。apk文件运行在实际设备上的目标。手机设备需要通过Android的兼容性测试(CTS),以确保在android上开发的程序在手机设备上都能运行。你的设备只有满足CDD的规定并且通过CTS,才有可能获得Android的商标和享受Android Market的权限。这里有可能指的是需要你自己去向google申请的。

3 CTS在android软件兼容性测试的意义

通过CTS测试之后便允许在设备上使用Android商标,它标志着该设备能够良好兼容软件市场中的数十万应用程序。

4 CTS在终端上的测试详解

5 CTS 终端需求

Android 2.1 的 Compatibility Definition,它定义了一些需求:

数据:必须实现一种无线连接, 速率达到 200Kbit/Sec

Camera: 至少 2M pixels

重力加速: 必须有, 3维, 50Hz

指南针:必须有, 3纬, 10Hz

GPS: 必须有

内存:至少 92M (不包括专用内容)

Nand: /data 分区至少 290M

性能:启动时间: 浏览器 1300ms

MMS/SMS 700ms

AlarmClock 650ms

第二次启动一个应用的时间不能超过第一次启动时间。

CTS 测试: 必须通过最新的 CTS

升级:必须有一种办法可以升级全系统。

可以为:OTA USB SD卡

6 运行CTS方法的步骤(linux环境下)

1进入目录android-cts,该目录是通过上面那两种方法获得的。在android-cts目录下会有3个文件夹,其中一个是tools。

2进入tools目录,输入./startcts来启动CTS。

3如果运行成功会出现Android CTS version 2.3_r1的字样(我的android的版本是2.3的)。如果有连接设备到PC上还会出现Device(设备ID)connected的字样。这里设备可以是连接PC的android的机器,也可以是模拟器。

7 CTS测试的方法(linux环境下)

1在cts_host下敲入help,会显示cts下的许多命令。ls –-plan命令显示google自带的测试方案,如:Java、Signature、Android、CTS、VM、RefApp、Performance、 AppSecurity。其中Performance这个方案是google暂不要求的。Java、Signature、Android、VM、 RefApp、Appsecurity方案都是CTS方案的子集。

2用命令ls --d来查看已连接的设备,CTS测试之前我们必须保证至少有一个设备连接上。

3输入命令start –-plan CTS来执行CTS测试方案,该方案有两万多条测试项目,需要很长时间,因此除了第一次测试之外,不建议这么做。我做的都是针对某些包的测试。如果连接了多个设备的话需加上-d参数,后面跟上设备id来告诉CTS需要测试的设备。

4对单独一个包进行测试的方法:start –-plan CTS –p 包名;推荐用这种方法来进行针对性的测试。需要知道有哪些包名,可以输入命令:ls –plan CTS

start --plan CTS -p android.content.cts.ContextWrapperTest

5也可以针对单独一个case进行测试:start –plan CTS –test 类名#方法名

start --plan CTS -t android.media.cts.MediaPlayerStreamingTest#testRTSP_MPEG4SP_AAC_Video2

8 查看测试的结果:

测试生成的log在\android-cts\repository目录下以log+测试时间.txt命名。测试报告在android-cts\repository\results目录下,也是以测试时间命名。

9 CTS兼容性测试常见注意事项:

1测试前选装一个apk,然后在设置里面的辅助功能中会多一个Delegating Accessibility Service选项,将这个选项勾起。

2在android设备设置中:显示-屏幕超时-选取30分钟

3在android设备设置中:应用程序-开发-勾选保持唤醒状态。

4保证测试前,android设备在主界面状态。

5将android设备的语言设置为英文。

6 CTS测试集有不同版本,对应不同的终端。cts2.3的包无法安装到2.2终端上。

7 在执行paln时,执行一段时间后会抛异常,异常如下:

CTS_INFO Restarting device ...

Device(HC09MPL00037) disconnected

Exception in thread "Thread-17" com.android.ddmlib.AdbCommandRejectedException: insufficient permissions for device

at com.android.ddmlib.AdbHelper.setDevice(AdbHelper.java:736)

at com.android.ddmlib.SyncService.openSync(SyncService.java:164)

at com.android.ddmlib.Device.getSyncService(Device.java:253)

at com.android.cts.DeviceManager$DeviceServiceMonitor.run(DeviceManager.java:217)

是因为权限不够,提升至root权限可解决,命令如下$sudo ./startcts

8 输入./adb shell 出现如下异常:

error: insufficient permissions for device

输入:

$ sudo -s

./adb kill-server

./adb devices

9 出现如下异常:Unable to locate android-sdk-linux_86/tools/adb.

是因为android-sdk-linux_86的tools目录下没有adb文件

注:现在编译出的SDK不会出现此问题。

10 error: device not found。

1)请确认你的手机是否连接电脑,(2)以连接PC,重新拔下来,在连一次(3)如果2操作后还不行,看下USB连接方式是否为默认(仅充电),选USB连接。

11 写入测试结果时报Too many open files的错误,这是因为网络请求过多,也就导致了系统打开的文件过多。每一个连接都会当成“文件”看待的。

用ulimit –a 命令查看每个用户允许打开的最大文件数,看到是的1024,把它改大点,用命令:ulimit -n 4096

注:在测试过程中最好不要查看结果日志

如何判断 cts android

CTS是什么?

资料:CDD、CTS官网、android-cts-manual-r4;

CTS是什么我就不多费话了,看上面官方的说法就行了。不过有一点需要明确,你的设备只有满足CDD的规定并且通过CTS,才有可能获得Android的商标和享受Android Market的权限。这里有可能指的是需要你自己去向google申请的,不是说兼容了,这些东西就自然而然有了。

怎么用:

资料: android-cts-manual-r4、宋立新_Android CTS测试研究;

安装与配置:

下载或自己编译;修改startcts中SDK_ROOT;在板子或emulator上装一个apk;设置setting;

各种命令的用法:

注意:start --plan –p以及start --plan –t的用法,-t要指定一个具体的测试方法

方法1:一般使用的方法

$ ./startcts 注意如果用手机设备调试,用root权限执行

cts_host ls --plan 列出所有plan

out/host/linux-x86/cts/android-cts/repository/plans中有plan的具体内容

cts_host start --plan VM 运行某个plan

测试结果在out/host/linux-x86/cts/android-cts/repository/results目录下,用浏览器看时间目录下的xml文件即可

注意在改动cts后,还要make cts重新编译,若只在cts目录中编译不能生效

cts_host ls -p 看当前可用的用例包

cts_host start --plan Android -p android.app 只运行某个用例包,节约时间

cts_host start --plan Android -p android.app -t android.app.cts.AlertDialogTest#testAlertDialog

只运行某个用例包中的某个用例

方法2:遇到问题时方便调试的方法

$ adb install out/target/product/xxxx/data/app/SginatureTest.apk 安装某个用例包

$ adb shell pm list instrumentation pm用于管理package,看当前机器安装了什么用例

$ adb shell am instrument -w android.tests.sigtest/.InstrumentationRunner am用于管理activity 运行某一用例

$ adb shell am instrument -e class android.app.cts.AlertDialogTest#testAlertDialog -w com.android.cts.app/android.test/InstrumentationCtsTestRunner 单独运行一个小case

如果在一个时间很长的plan(如Android)中,某处错了,而错误信息又不全,需要单独跑一个小case,用-e指明class明就可以节约很多时间

用完后结果的分析:

结果在repository/results中,放在一个文件夹里,名字是你测试开始的时间。

分析的方法有两种:

1、可以直接从Failure Details找原因;(个人感觉应该难度较大)

2、结合源代码以及Failure Details的信息找原因

第二种方法牵扯到找测试源代码的问题,这就要对CTS源码目录以及相应生成物的命名有一定的了解。

了解CTS这个工程:

资料:宋立新同学的Android CTS测试研究二、android build system、CTS源码、makefile以及shell基本知识

了解Linux工程最好的入手点,就是从它的编译系统入手。

这个涉及到Linux的makefile以及android的编译系统的基本知识,具体内容还是挺多的,不过看懂了android编译系统,以后看其他Android工程应该都会得心应手。

在android CTS上增加自己的test package

资料:CTS命令的用法、Erin Yueh的两篇文章

有两种方法:

1、完美利用自带命令(已验证)

2、用Erin Yueh的方法

用这个方法的前提也是要彻底弄懂CTS的内部结构,不然也只能照猫画虎

如何写test case

资料:JUnit、SDK/docs下面的五篇文章、android open source官网/porting/Instrumentation Testing

这又是另外一门学问了

这个test case 可以涉及各个层次,Android 平台相关的测试的写法可以参考官方的那五篇文章,如何运行可参考上面资料三,其他的可能会涉及到JUnit以及其他一些知识,目前还没实地考察。

接下来要弄明白的

1、android的编译系统(学习下makefile以及shell基本知识)

2、CTS这个工程(看看测试包XML生成器的假设成不成立,能不能提取出来)

3、众多层次test case 的写法


网页题目:关于ctsandroid的信息
标题链接:http://myzitong.com/article/phhssh.html