android CTS测试

                  Android 4.0 CTS 测试方法

    这段时间公司做CTS测试,下面是一些总结,以android4.0.3为例,希望对大家有所帮助!

 CTS测试简介

The Android compatibility program makes it easy for mobile device manufacturers to develop compatible Android devices

   CTS具体的介绍,大家可以参考google的官方网站,大家可以详细的了解CTS测试的目的和环境,我们一般的疑惑都能在该网站上找到答案。

官方网站: http://source.android.com/compatibility/overview.html

1.1为什么需要兼容性测试(以下称CTS)? 

1.1.1、让APP提供更好的用户体验。用户可以选择更多的适合自己设备的APP。让APP更稳定。 

1.1.2、让开发者设计更高质量的APP。 

1.1.3、通过CTS的设备可以运行Android market。 

1.2怎么样才能让我的设备变成兼容的。

 

1.2.1、与Android Compatibility Definition文档(以下简称ACD)匹配 

先看一下与你的系统版本相匹配的ACD,文档中描述了你需要具备的软件和硬件参数。 

1.2.2、通过CTS测试 

CTS是开源的测试框架,使用它来测试你的设备是否具备兼容性。 

1.2.3、提交报告 

你可以把测试结果发送给[email protected]。当你提交了一个CTS报告时,你还可以要求访问Android Market

    如果是google的合作伙伴,需要将CTS测试报告、机器、以及软件一共寄给google进行测试,取得googleapproval以后,手机才能上市,这是后话,相信好多人都是用不到的。

1.3 CTS测试原理

CTS主要包含两个组件: 

运行在PC上的测试框架组件。主要用来管理测试用例(test case)的执行。 

运行在设备或模拟器上的测试用例。这些用例用JAVA写成的APK文件。 

1.4工作流程 

  1)可以从源码编译CTS,也可以从网站下载编译好的CTS 

    http://source.android.com/compatibility/downloads.html 

  2)安装配置CTS。 

  3)把设备连接到PC上。 

  4)运行CTSCTS会把相应的测试用例(也就是一个APK文件)传送到设备上并通过instrumentation运行,然后记录运行结果,最后删除测试用例。 

所有的测试用例执行完毕后,可以参照测试结果重新调整或优化系统。然后继续运行CTS测试。 

1.5、测试通过以后,你可以把CTS生成的结果(就是result下面那个以测一、取得Compatibility Test Suite的两种方法:

1)可以从http://source.android.com/compatibility/downloads.html下载最新版本的Compatibility Test Suit

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

     注意:但是源码中的代码可能不是最新的,所以建议冲网站上下载最新的,需要用gitgoogle的网站上下载,网上有好多例子,这里就不再重复了。

二 测试用例的范围

1Signature

对每个Android产品,都有一些XML文件来描述所有的公开APICTS包含了一个工具来检测这些API签名中包含的API是否都在系统中被支持。

2Platform

测试SDK文档中描述的平台API,比如core libraries,Android Application Framework等。要求这些API可以提供:

正确的类、属性、方法签名、方法行为、错误参数处理方式

3Dalvik VM

专门针对Dalvik Vm的测试。

4Platform Data Model

平台通过ContentProvider提供给开发者使用的数据,比如:Contacts,Browser,Settings等。

5Platform Intents

平台提供的用于核心功能的Intent

6Platform permission

平台提供的一些重要APP权限

7Platform Resources

simple values,drawables,nine-patch,animations,layouts,styles and themesloading alternate resources

三 如何搭配环境

目前cts没有提供windows版本,只能在Linux下测试。

1 PC机配置环境

  PC端网上有好多资料可以供参考,这里就省略了。

手机设置

1) 进入settings->Privacy->Factorydata reset,对平台进行reset一次

2) 平台插入一张空的TF

3) 平台安装两个APKCtsDelegatingAccessibilityService.apkCtsDeviceAdmin.apk

4) 进入settings打开Wi-Fi并连接AP (AP需要连外网)

5) 进入settings->Security->Screenlock设为None

6) 进入settings->Security->EnableUnknown sources

7) 进入settings->Security->Deviceadministrators->Enable两个选项

8) 进入Language&input->language设为English(UnitedStates)

9) 进入settings->Display->Sleep设为30minutesNone

10) 进入settings->Accessibility->EnableDelegating Accessibility Service

11) 进入settings->Developeroptions->Enable USB debuggingStay awakeAllowmock locations

12) PCcopyandroid-cts-media-1.0”,在android-cts-media-1.0文件下输入./copy_copy_media.sh运行脚本,将media文件copy进平台。成功后会在平台的内存中看到test文件夹。(此条适用于CTS4.0 R2R3R1上无需使用)

四 测试方法 

1.平台用USB线连接LinuxPC (连通后平台左上方会显示usbdebug icon

2.打开终端

3.输入sudosu -

      输入root密码

4.输入cd ../..

      输入 cd /home/linux/cts/android-cts-4.0.3_r1-linux_x86-arm/android-cts/tools  (这个是cts-tradefed文件所在路径,各位需要输入实际路径)

      输入 ./cts-tradefed

      终端显示   01-16 15:44:05 I/DeviceManager: Detected newdevice 0123456789ABCDEF(如果没有这行,说明设备没有和PC联通)

Android CTS 4.0.3_r1

cts-tf >

5.输入run cts --plan 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

五 关于CTS4.0测试报告

1.CTS测试报告是自动生成一个xml报表,并自动填写的,不需要测试人员干预

2.当一个CTS测试任务开始时,会在android-cts-4.0.3_r1-linux_x86-arm/android-cts/repository/results中,为这个任务建立一个存放测试报告的文件夹,文件名以任务开始的日期和时间命名。

   例如:2012.01.12_13.00.03

3.CTS4.0生成测试报告的速度比CTS2.3/2.2要慢不少,特别是在测试过程中中断测试,CTS4.0需要70秒才会开始生成报告。如果你在此过程中按ctrl+c终止CTS进程,测试报告就无法生成,以后也无法继续测试未完成的计划。

下方是中途断开后生成报告的例子:

01-1813:50:19I/0123456789ABCDEF: android.accounts.cts.AccountManagerTest#testHasFeature FAIL

Testfailed to run to completion. Reason: 'Test run failed to complete. Expected 1tests, received 0'. Check device logcat for details

01-1813:51:29I/0123456789ABCDEF: android.accounts package complete: Passed 20, Failed 2, NotExecuted 6

01-1813:51:29 I/0123456789ABCDEF: -----------------------------------------

01-1813:51:29 I/0123456789ABCDEF: Test package android.admin started

01-1813:51:29 I/0123456789ABCDEF: -----------------------------------------

……

01-1813:51:30 I/0123456789ABCDEF: -----------------------------------------

01-1813:51:30 I/0123456789ABCDEF: Test package android.widget started

01-1813:51:30 I/0123456789ABCDEF: -----------------------------------------

01-1813:51:30 I/0123456789ABCDEF: Saved log device_logcat_8558243668624894128.zip

01-1813:51:30 I/0123456789ABCDEF: Saved log host_log_6087775957743010530.zip

01-1813:51:30 I/0123456789ABCDEF: android.widget package complete: Passed 0, Failed0, Not Executed 988

01-1813:51:30 I/0123456789ABCDEF: Created xml report file at 

file:///home/linux/cts/android-cts-4.0.3_r1-linux_x86-arm/android-cts/tools/./../../android-cts/repository/results/2012.01.18_13.43.56/testResult.xml

01-1813:51:31 I/0123456789ABCDEF: XML test result file generated at2012.01.18_13.43.56. Passed 28, Failed 20, Not Executed 17110

01-1813:51:31 I/0123456789ABCDEF: Time: 2m 45s

01-1813:51:33 W/DeviceManager: Freed device 0123456789ABCDEF is unavailable.Removing from use.

01-1813:52:38 E/BackgroundDeviceAction: Device 0123456789ABCDEF not online

3.CTS测试任务完成后,会生成testResult.xml2012.01.12.zip打开这个文件夹中的testResult.xml(用firefoxIE浏览器打开),查看报表是否完全。

六 继续测试未完成的计划

CTS4.0对未完成的测试计划不会生成xml报告,这个和CTS2.3/2.2不同。但是,这并不意味测试中断后无法继续未完成的测试。

1. 前提条件是有未完成的测试计划

2. 平台用USB线连接LinuxPC   (连通后平台右下方会显示usbdebugicon

3. 打开终端

4. 输入sudo su 

     输入root密码

5. 输入cd ../..

     输入cd /home/linux/cts/android-cts-4.0.3_r1-linux_x86-arm/android-cts/tools(这个是startcts文件所在路径,各位需要输入实际路径)

     输入 ./cts-tradefed

      终端显示   01-16 15:44:05 I/DeviceManager: Detected newdevice 0123456789ABCDEF(如果没有这行,说明设备没有和PC联通)

Android CTS 4.0.3_r1

cts-tf >

6.输入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编号)

   终端显示

cts-tf> 01-18 13:48:45 I/TestInvocation: Starting invocation for 'cts' on build'4.0.3_r1' on device 0123456789ABCDEF

01-1813:49:59 I/0123456789ABCDEF: Collecting device info

01-1813:50:00 I/0123456789ABCDEF: -----------------------------------------

01-1813:50:00 I/0123456789ABCDEF: Test package android.accounts started

01-1813:50:00 I/0123456789ABCDEF: ----------------------------------------- 

第五部分:单独对fail/notExecuted/timeout的测试项进行测试

1.前提条件是已经有完成的测试结果testResult.xml文件 add derivedplan --plan plane_name --session/-s session_id-r [pass/fail/notExecuted/timeout]

2.平台用USB线连接LinuxPC    (连通后平台左上方会显示usbdebugicon

3.打开终端

4.输入sudosu -

      输入root密码

5.输入cd ../..

      输入 cd /home/linux/cts/android-cts-4.0.3_r1-linux_x86-arm/android-cts/tools  (这个是startcts文件所在路径,各位需要输入实际路径)

      输入 ./cts-tradefed

      终端显示   01-16 15:44:05 I/DeviceManager: Detected newdevice 0123456789ABCDEF(如果没有这行,说明设备没有和PC联通)

                         Android CTS 4.0.3_r1

                         cts-tf > 

6.输入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 

   (根据start time时间,确定你要的任务的session编号)

7.输入addderivedplan --plan plane_name(新建一个测试计划) --session/-s session_id -r[pass/fail/notExecuted/timeout] (只能选择其中一项)  

8.输入run cts plan plane_name(新建的测试计划名称) 开始测试

9.测试完成后,CTS会自动生成一个新测试报表文件夹

六:单独测试某个Case

1.目前对单个Case每单独测试一次,就会生成一个Session(和测试报告xml)。所以,一般在有需求的情况下才会进行测试。

2.平台用USB线连接LinuxPC    (连通后平台左上方会显示usbdebugicon

3.打开终端

4.输入sudosu -

      输入root密码

5.输入cd ../..

      输入 cd /home/linux/cts/android-cts-4.0.3_r1-linux_x86-arm/android-cts/tools  (这个是startcts文件所在路径,各位需要输入实际路径)

      输入 ./cts-tradefed

      终端显示   01-16 15:44:05 I/DeviceManager: Detected newdevice 0123456789ABCDEF(如果没有这行,说明设备没有和PC联通)

Android CTS 4.0.3_r1

cts-tf > 

6.CTS测试报告XML文件中查找需要测试的Casepackagename 和 method name

例如:

按上方的例子:android.acceleration.cts.HardwareAccelerationTestpackage nametestIsHardwareAcceleratedmethod name

7.输入runcts -c android.acceleration.cts.HardwareAccelerationTest --m testIsHardwareAccelerated开始测试这个Case

8. 测试完成后,CTS会自动生成一个新测试报告文件夹

七:注意事项:

1.CTS4.0的命令和CTS2.3完全不同,所以在进入CTS后,先输入help看看命令的格式和意思。

2.CTS要求测试平台的硬件和Android内置APK功能完好

3.正常测试一次CTS,需要8小时。所以,测试时请接上电源,并尽量在晚上测试,不会影响平台的使用

4.CTS是自动化测试,测试过程中一般不需要人的干预。如果在上班时间,每12小时观察下即可

5.CTS4.0在测试过程中断开、终止都不会生成测试报告,所以,测试前要保证USB连接稳定和平台设置

6.CTS每次执行run cts plan CTS时,CTS会搜索android-cts-4.0.3_r#-linux_x86-arm/android-cts/repository/results中的历史报表文件夹。如果文件有很多,启动速度会非常慢。所以,请定期清理results文件夹中的历史报表(直接删除报表文件夹即可)

你可能感兴趣的:(android CTS测试)