【转】android4.1.2 CTS测试总结

时间:2023-03-09 13:03:48
【转】android4.1.2 CTS测试总结

原文网址:http://blog.****.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。