CTS 兼容性测试

来源:互联网 发布:淘宝平价彩妆店铺 编辑:程序博客网 时间:2024/06/01 08:29

CTS :Compatibility Test Suite兼容性测试工具。当电子产品开发出来,并定制了自己的Android系统后,必须要通过最新的CTS检测,以保证标准的android application能运行在该平台下。通过了CTS验证,需要将测试报告提交给Google,以取得android market的认证。

一、CTS测试环境搭建

1、可通过如下两种方式获取Compatibility Test Suite

  • 通过如下地址下载CTS包

 http://source.android.com/compatibility/cts-intro.html

  • 通过编译Android源代码的方式获得

在android源代码的CTS目录下,执行:

source ../build/envsetup.shmm

之后会在out/host/linux-x86/cts/下生成android-cts文件夹。这个文件夹就是 Compatibility Test Suit。

2、下载相对应的sdk工具

3、配置startcts文件

进入android-cts/tools目录下,修改startcts文件。 将脚本中的SDK_ROOT改成自己的android SDK路径,如:

if [ -z "${SDK_ROOT}" ]; then# CONFIGURATION# Set this variable to the root of your Android SDK installation.SDK_ROOT=NOT_CONFIGURED    //将NOT_CONFIGURED改为自己PC上android-sdk的路径,如:~/android-sdkfi;

二、测试前准备工作

1、测试前需要安装一个apk:

adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk 然后在设置里面的辅助功能中会多一个Delegating Accessibility Service选项,勾选 “Accessibility” 和” Delegating Accessibility Service“ (Settings->Accessibility)

2、将设备语言设置为英语(Settings->Locale and text-Select language)。

3、Wi-Fi设置:

确保wifi处于连接状态(Settings->Wireless and network->Wi-Fi),

且”Wi-Fi sleep policy”设为“Never”(Settings->Wireless and network->Wi-Fi settings->Menu->Advanced->Wi-Fi sleep policy)。

4、蓝牙设置:

确保蓝牙处于打开状态。(Settings->Wireless and network->Bluetooth)

5、屏幕超时设为最大。(Setting->Display settings->Screen timeout)

6、勾选"Stay Awake", "Allow mock locations" and "User Debugging"。(Settings->Application->Development)

7、CTS测试开始前,android设备在主界面状态。

8、勾选 "Use wireless networks " (Settings->Location and security->Use wireless networks )

以下设置待确认是否必要:TODO...

1、Make sure “turn off USB”

2、Copy the “svox” file to the device,make sure the “English(United States)”and “English (United Kingdom)”has been Installed.(Settings->Voice input and output settings->Text-to-speech settings->Pico TTs)

3、 Set the Date and Time.(Settings -> Date&time ->Set date / Set time),set the “Select time zone” to “Beijing”(Setting->Select time zone).

4、Clear browser cache and history (Internet->Menu->Settings)

5、SD card and have enough space and copy smaple audio and video media files

6、 Make sure no lock pattern is set on the device. 7、 Do not press any keys on the device while CTS is running.

8、 Click the voice Recorder application,to record and save.

9、Make sure My location is Located on “Maps”

三、测试执行

1、进入目录android-cts,在android-cts目录下会有3个文件夹,其中一个是tools。进入tools目录,输入

sudo ./startcts //启动CTS;加sudo,是为防止权限不足,导致异常

运行成功,出现如下信息,进入CTS测试命令行。

Android CTS version 2.2_r8Device(19761202) connectedcts_host >

2、常用测试命令介绍

  • help,显示cts下的命令。
  • exit,退出
  • ls -p,列出所有的测试包
  • ls --plan,命令显示google自带的测试方案,如:Java、Signature、Android、CTS、VM、RefApp?、Performance、AppSecurity?。其中Performance这个方案是google暂不要求的。Java、Signature、Android、VM、RefApp?、Appsecurity方案都是CTS方案的子集。
  • ls -d,来查看已连接的设备,CTS测试之前我们必须保证至少有一个设备连接上。
  • start --plan,运行一个执行的测试方案。如:start --plan CTS,执行CTS测试方案,该方案有两万多条测试项目,需要很长时间(因此除了第一次测试之外,不建议这么做)。大部分做的都是针对某些包的测试。如果连接了多个设备的话需加上-d参数,后面跟上设备id来告诉CTS需要测试的设备。
  • start --plann CTS –p 包名,运行一个特定的测试包,推荐用这种方法来进行针对性的测试。如: start --plan CTS -p android.bluetooth
  • start --plan CTS –test 类名#方法名,针对单独一个case进行测试。如:start --plan CTS -t android.app.cts.AlertDialogTest#testAlertDialog? //只运行某个用例包中的某个用例
  • ls -r timeout -s [session ID],列出所有timeout的测项
  • ls -r fail -s [session ID],列出所有fail的测项

四、查看测试结果

运行测试时,在CTS运行界面能看到测试报告与运行状况。测试生成的log在\android-cts\repository目录下以log+测试时间.txt命名。测试报告在android-cts\repository\results目录下,也是以测试时间命名。其中用日期和时间命名的文件夹下为所有的测试结果,同时文件夹也会被打成一个对应的.zip包方便提交。用浏览器打开.xml文件(默认就是,直接双击)就可以查看所用的测试报告。

Q&&A

可能发生的问题

1、如果出现对设备操作没有权限问题可用$sudo ./startcts,这时可能会出现找不到java命令的错误,将startcts脚本文件中的最后一行的运行java命令添加上自己的java绝对路径就可以了,如可改成:android/jdk1.5.0_19/bin/java ${JAVA_OPTS} -cp ${JARS}…

2、出现如下异常,应该是CTS与SDK版本不符造成,使用自己编译出的sdk,或者替换sdk中ddmlib.jar库可解决。

1、 Exception in thread "Thread-116" com.android.ddmlib.ShellCommandUnresponsiveExceptionat com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:408)at com.android.ddmlib.Device.executeShellCommand(Device.java:311)at com.android.cts.TestDevice$1.run(TestDevice.java:1718)2、android.content.cts.ContextWrapperTest#testSendOrderedBroadcast1...Exception in thread "Thread-379" java.lang.NullPointerException

原创粉丝点击