原文网址:http://blog.csdn.net/bboyliaoye/article/details/17299259

公司客户的产品要过google GMS认证,首先要过的就是兼容性测试(CTS),还有GTS,verify,ACT等测试项。

在这里我简单介绍下测试流程,内容较多也比较乱,但我对遇到的问题进行了简单分析和解决,有部分内容是借鉴前人的总结。CTS测试其实很简单,关键是在于你修改了android后导致CTS某些测试项通不过能够修正过来。

android 4.1 的CTS总共有18000余项,在国内主要网络不方便需要FQ。下面简单介绍测试流程,欢迎讨论。

一,下载CTS测试工具

CTS的获取方式:
(由Google提供)
1.1.打开浏览器输入连接: http://source.android.com/compatibility/downloads.html
1.2.下载所需文件
    选择对应Android版本的CDD文档(介绍CTS测试),CTS测试包下载(测试包会不断更新),android-cts-verifier-4.1.2_r6-linux_x86-arm.zip,android-cts-media-1.0.zip。
1.3.基本文件结构
    将下载的CTS测试包解压到相应文件夹里面:android-cts文件夹里面包含Docs、Repository、Tools三个文件夹。
1.4. SDK准备

在Google提供的Android源码中是包含CTS测试的,源码下可以看到有一个CTS文件夹,里面就是CTS的测试源码。
在Android项目源码下使用命令:
(切换分支,并保证自己的项目源码最新)
./source build/envsetup.sh
choosecombo 1 18 1(仅针对公司自己的产品,我们这儿选择Variant choices :user模式)
make cts
来得到,生成的android-cts包在~/<源码目录>/out/host/linux-x86/cts中

二、RUN CTS 前期准备工作
2.1.先确定Linux 系统的adb path是否设置正确(我是在虚拟机Ubuntu下模拟的)
Shell 命令:(配置环境变量)
android@ubuntu:$ cd ~
android@ubuntu:$ gedit .bashrc
在.bashrc文件中添加
PATH=$PATH:/home/sspemail/tools/java/jdk1.6.0_35/bin:
PATH=$PATH:/home/sspemail/tools/android-sdk-linux/platform-tools:
PATH=$PATH:/home/sspemail/tools/android-sdk-linux/tools:
(根据你自己的实际的文件路径来配置)

2.2.确保你所配置的环境变量都正确
android@ubuntu:$ java
android@ubuntu:$ adb
查看信息是否正确,如果没有配置好,会有提示
(例如adb: command not found)

2.3.确保手机已正确连接上
android@ubuntu:$ adb devices
有的时候会出现这种情况

??????  no permissions

解决办法:权限问题,给予root权限并在root权限下重启adb server即可。
具体步骤:
android@ubuntu:$ cd sdk/android-sdk-4.0.3/platform-tools
android@ubuntu:~/sdk/android-sdk-4.0.3/platform-tools$ sudo su
[sudo]password for sspemail: (输入密码,回车,root权限)

然后再输入 adb devices ,你会发现一切OK了。

注:若切换至root用户时,使用adb命令时提示adb: command not found之类的一大堆提示,解决办法:
输入:source /etc/profile

三、调整系统状态,CTS测试准备工作
(正式开始测试工作)
3.1.执行系统重置,恢复为出厂状态
3.2.测试前需要安装apk:
adb install android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
然后在设置里面的辅助功能中会多一个Delegating Accessibility Service选项,将这个选项打开
3.3.测试前需要安装apk:adb install android-cts/repository/testcases/CtsDeviceadmin.apk
3.4.测试前需要安装apk:adb install CtsVerifier.apk
(之前下载下来的android-cts-verifier-4.0.3_r1-linux_x86-arm.zip解压有)
然后在设置安全->选择设备管理器对多出三个选项,将这三个选项勾选并激活
3.5.测试Media相关项需要用到官方提供的一个media包,有三种方式:
a).在SD卡中建目录test, 将android-cts-media-1.0.zip解压到test目录中,将SD卡插入设备中。确定SD卡为可读可写状态。
b).在Ubuntu环境下,可以再android-cts-media-1.0.zip解压出来的文档中放在一个新建的test文件夹汇中,直接运行文件夹下的
source  ./copy_media.sh  all
即可。
它会自动把这些media文件拷贝到你的sd卡中。

c).当知道自己的设备适应的视频分辨率,使用
. copy_media.sh 1280x720
将该分辨率及以下的分辨率的视频复制到手机的SD卡中进行测试。
Google一共提供了五种分辨率的视频文件,176x144、480x360、720x480、1280x720、1920x1080。根据自己设备的具体情况添加,公司手机最大支持1080p的视频,但是超过720p之后的视频播放都会很卡,所以我暂定为选择720p的视频来测试。

setting的設置。

3. setting的設置。插入SIM卡並Disable SIM lock (此項只有手機要做)插入SD卡並要format過 (此項只有手機要做)做一次factory reset,清掉所有東西開機進Home screenSettings -> 連上Wi-FiSettings -> Display -> Font size -> Normal (Keep Large if project isB1-A71/Mango/ManU/KIWI)

Settings -> Date & time -> Select time zone -> 選擇 Central Time GMT-5:00

Settings -> Date & time -> Automatic date & time 打勾 (此項只有"不含GMS的project”要做,ex: China sku, 有GMS的project請忽略這個動作)

Settings -> Date & time -> Automatic time zone 打勾 (此項只有"不含GMS"的project要做, ex:China sku, 有GMS的project請忽略這個動作)

Settings -> Language & input -> Default -> Choose input method (選擇 Android keyboard)

Settings -> Language & input -> Langugae & input -> Select “English(United States)”

Settings -> Developer options -> USB debugging 打勾

Settings -> Developer options -> Stay awake 打勾

Settings -> Developer options -> Allow mock locations 打勾

Settings -> Call settings -> My Phone Number -> 輸入SIM卡的電話號碼 (此項只有手機要做)

Install CtsDelegatingAccessibilityService.apk (in folder /android-cts/repository/testcase/)

Install CtsDeviceAdmin.apk (in folder /android-cts/repository/testcase/)

Setting -> Accessibility -> Delegating Accessibility Service -> ONS

ettings -> Security -> Set lock screen as "None"

Settings -> Security -> Select device administrators,enable all the android.deviceadmin.cts.*device administrators 看到的每一個item通通打勾

Make sure no lock pattern is set on the device (Settings > Security > Screen Lock should be'None').

Back to Home screen and don't do anything while testin

四、RUN CTS
4.1.打开终端,进入android-cts/tools目录
执行命令:
android@ubuntu:$ cd android-cts/tools
4.2.进入CTS,执行cts-tradefed脚本
执行命令:
android@ubuntu:~/android-cts/tools$: ./cts-tradefed
  终端显示 :  
01-16 15:44:05 I/DeviceManager: Detected newdevice 0123456789ABCDEF(如果没有这行,说明设备没有和PC联通)
Android CTS 4.1_r1
cts-tf >

当设备连接好的时候,执行该命令,会显示出Android设备的ID, 如果没有这句话,说明设备没有和PC连通。调整设备和PC的连接,连接好了之后,就重复第二步里面的内容并给与手机权限:输入 adb remount
之后再重复之前的步骤就可以看见Android设备的ID了
注:有时候进入CTS测试状态后无法出现cts-tf >,此时电脑按一个回车键就可以了。这算是CTS的一个小bug。

4.3开始整个CTS测试

1,我们可以用cts -help命令来查看所有的具体命令。

4.3.2.开始执行命令
a) 执行一个plan:run cts --plan <plan名称>

b) 仅测试一个包:run cts -p <测试包名称>
例如:run cts -p android.acceleration
c) 因为是基于JUnit测试,属于白盒测试,所有基本上我们都知道它的内部是如何运行的,所以我们也可以根据某个测试包中某一个具体的类或者方法进行测试:
run cts –p <packages name> –c <class name> [-m  <method name>]
d) 多台Android设备同时测试:
run cts –s 设备名称 -plan <plan名称>

全部测试一遍命令:
run cts --plan CTS

大概過4~5個小時,看到console沒有再跑了,就打開CTS Server的"網路磁碟機",位置如下面這個檔案(建議用IE開),

就可以看到幾個fail、幾個timeout和幾個pass。

cts/android-cts-4.2_r4-linux_x86-arm/android-cts/repository/results/(以你開始跑CTS的時間當做資料夾名稱)/testResult.xml檢查testResult.xml,

若是fail項目和timeout項目當中,只要有一個以上不為0,則繼續以下步驟,否則測試完美結束:)

1. 跑完第一次完整測試後"先不要按ctrl+c斷掉連線",在console mode裡面打上:cts-tf > list r

2. 找到你正在跑的session的session id(通常會是0或1),我們這裡假設是0

如果完整測試的fail不為0,要打以下紅色指令做記錄:

cts-tf > add derivedplan --plan failureRetry -s 0 -r fail

如果完整測試的timeout不為0,還要再打以下紅色指令做記錄:

cts-tf > add derivedplan --plan  timeoutRetry -s 0 -r timeout

3. 現在可以按ctrl+c中斷你的device,檢查第一次完整測試的log在不在,並且做好備份。

14. 接下來要retry所有fail和timeout的項目,進入console裡面打以下紅色指令:

cts-tf > run cts --plan failureRetry

如果一開始的timeout結果也不為0,跑完fail的測項後,還要再跑timeout的測項:

cts-tf > run cts --plan timeoutRetry

如果重測後全過關,就可以送"兩份"report給Google,一個是第一次完整測試的log,一個是failureRetry產生的log。

如果一開始的timeout結果不為0,要送"三份"report給Google,一個是第一次完整測試的log,一個是failureRetry產生的log,一個是timeoutRetry產生的log。

如果重測後還是有fail或timeout存在,請把failureRetry或timeoutRetry產生的log給刪除(第一次完整測試的log一定要保留著)。然後再次執行run cts --plan failureRetry或run cts --plan timeoutRetry,重複步驟14,多跑幾次直到fail和timeout的項目全部過關。

一個IMG的CTS測完後,請一定要到repository/plans的目錄裡面把failureRetry.xml和timeoutRetry.xml刪除,以利其他IMG進行測試。

【注意事項】

1. 要測cts前,請先注意 {cts目錄}/repository/results 裡面"不要有舊的log檔案",並且檢查repository/plans裡面"不要有舊的failureRetry.xml或timeoutRetry.xml",請把它刪除。如果要備份log檔案,在{cts目錄}/tools/下執行ccc,就可以把log備份到cts/backup裡面。

2. 目前的RD owner是Steven Huang (Steven.Huang@acer.com)

3. 測試時,最好是下班時間放著給他跑,他們會做"撥音樂"或"打電話"等音量的測試,會很吵。

4. Debuggable.apk的問題細節請看如下link:http://woodstock.acer.com.tw/trac/rd3sw6/wiki/CTS_debuggable_check5.

測出來有fail項目,請先檢查【CTS waived issue list】文件,如果是在文件裡面的,代表Google同意waived此項目,不是issue。

【转】android4.1.2 CTS测试总结的更多相关文章

  1. Android CTS 测试总结【转】

    Android CTS 测试总结[转] 最近一直在做Android兼容性测试,根据Android官网给出的android-cts-manual 配置好了device后,开始测试. 首先配置软件环境: ...

  2. [转]h5页面测试总结

    转自http://www.blogjava.net/qileilove/archive/2014/07/24/416154.html?utm_source=tuicool H5页面测试总结 其实经过几 ...

  3. ubuntu13.04下载android4.0.1源码过程

    最初我参考的是老罗的博客http://blog.csdn.net/luoshengyang/article/details/6559955 进行下载安装的,但弄着弄着就发现不太对劲了.这里记录下详细过 ...

  4. android4.4短信新概念

    android4.4对短信引入了一个全新的概念:默认短信应用.即android用户可以在系统设置里面选择一个默认的短信应用,只有这个应用才能进行手机的基本短信操作.按照google自己的解释这样做的原 ...

  5. 【转】android4.1.1系统编译全过程

    原文网址:http://blog.csdn.net/hudan2714/article/details/7926924 一.编译环境: 首先介绍编译中使用的工具: 虚拟机:    vmare 9 下载 ...

  6. Ubuntu12.04下载Android4.0.1源码全过程,附若干问题解决[转]

    学校里一直在做应用层开发,考虑到日后就业问题,这次决定研究源码和驱动,并进行编译.没想到就下载源码这一步折腾了我整整两天,期间遇到很多问题,哎,记录于此,希望日后再下源码的人不要再走无谓的弯路了.事实 ...

  7. 【转】兼容性测试套件(CTS)框架用户手册

    原文网址:http://blog.sina.com.cn/s/blog_416166e90102v6bi.html 兼容性测试套件(CTS)框架用户手册 1.为什么需要兼容性测试(以下称CTS)? 2 ...

  8. Android4.2.2源码目录结构分析

    撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40897277#t17 导读: 关于的Android目录分析,网上有很多资料,在此不 ...

  9. 在Ubuntu14.04上编译Android4.0.1出现的几个问题

    一. 工具 sudo apt-get install git-core gnupg flex bison gperf build-essential \       zip curl libc6-de ...

随机推荐

  1. bzoj1619[Usaco2008 Nov]Guarding the Farm 保卫牧场

    Description The farm has many hills upon which Farmer John would like to place guards to ensure the ...

  2. ibatis学习之道:ibatis的<[CDATA]>dynamic属性跟#$的应用

    ibatis的<![CDATA]>,dynamic属性和#,$的应用 <![CDATA[   ]]>的正确使用 ibatis作为一种半自动化的OR Mapping工具,其灵活性 ...

  3. Hibernate中Session的几个方法的简单说明

    Hibernate对普通JDBC的操作进行了轻量级的封装,使得开发人员可以利用Session对象以面向对象的思想来实现对关系数据库的操作. 一般通过Configuration对象读取相应的配置文件来创 ...

  4. java多个listener监听

    java 多个listener 监听方法 在class 名称上一行添加@Listeners 括号中用逗号隔开 @Listeners({com.example.MyListener.class,com. ...

  5. Java学习笔记——IO操作之对象序列化及反序列化

    对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...

  6. vmware下给linux添加硬盘

    http://blog.csdn.net/robbie1314520/archive/2010/08/10/5802724.aspx 创建虚拟硬盘 1.关闭VM中正在运行的虚拟系统: 2.EDIT V ...

  7. RMAN常用备份恢复命令汇总

    RMAN命令 1.独立命令  RMAN>shutdown immediate  RMAN>startup  RMAN>backup format 'd:\backup\%d_%s.b ...

  8. 关于sys、system、sysman等在EM中登录的问题

    1.sysman要先在SQL*Plus上解锁: (1)以"sysdba"的身份登录 conn system/密码 as sysdba; (2)解锁 alter user sysma ...

  9. jedis处理redis cluster集群的密码问题

    环境介绍:jedis:2.8.0 redis版本:3.2 首先说一下redis集群的方式,一种是cluster的 一种是sentinel的,cluster的是redis 3.0之后出来新的集群方式 本 ...

  10. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

    作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...