Android兼容性測試CTS


 一、簡介

為了確保Android應用能夠在所有兼容Android的設備上正確運行,並且保持相似的用戶體驗,在每個版本發布之時,Android提供了一套兼容性測試用例集合(Compatibility Test Suite, CTS)來認證運行Android系統的設備是否完全兼容Android規范。CTS(全稱“Compatibility Test Suite”,即“兼容性測試包”)的認證,這是一組用以測試的.apk程序之類的集合,它能夠在官網(http://source.android.com/compatibility/downloads.html)上面免費下載,並且測試也非常簡單——只是結果非常苛刻。CTS的目的就是讓Android設備(如:手機)開發商能夠開發出兼容性更好的Android設備

 

CTS采用XML配置文件的方式將這些測試用例分組成多個測試計划(plan),第三方也可以創建自己的plan

CTS是開源的測試框架,使用它來測試你的設備是否具備兼容性。CTS主要包含兩個組件:
運行在PC上的測試框架組件。主要用來管理測試用例(test case)的執行。
運行在設備或模擬器上的測試用例。這些用例用Java寫成的APK文件。

CTS的版本跟android是對應的,每個平台有部同的CTS版本
CTS7.0之前的版本為 :CTS V1
CTS7.0以及之后的版本為:CTS V2

運行CTS會把相應的測試用例(也就是一個APK文件)傳送到設備上並通過instrumentation運行,然后記錄運行結果,最后刪除測試用例。所有的測試用例執行完畢后,可以參照測試結果重新調整或優化系統。然后繼續運行CTS測試。CTS的測試包可以到:http://source.android.com/compatibility/downloads.html去下載,選擇對應Android版本的CDD文檔(介紹CTS測試),CTS測試包下載(測試包會不斷更新),如:android-cts-verifier-4.0.3_r1-linux_x86-arm.zip,android-cts-media-1.0.zip;將下載的CTS測試包解壓到相應文件夾里面應包含:android-cts文件夾里面包含Docs、Repository、Tools三個文件夾。需要配置好SDK相關的環境變量,最好是在Ubuntu下進行,搭建好Android的開發環境就可以了。關於環境變量如何配置可以去找下相關的資料。

1. 下載兼容性測試用例包,並解壓並命名為“android-cts”。

CTS國內的下地址:http://source.android.youdaxue.com/compatibility/cts/downloads。

windows選擇Android4.4 R3 Compatibility Test Suite (CTS) - ARM下載

解壓后的目錄結構如下:

repository目錄后,會有四個文件

logs:存放case執行過程中的log文件或者截圖

plans:配置plan的xml文件存放處,自帶以下plan

results:結果文件

testcases:case存放目錄,自帶如下case

 

tools 工具的執行目錄,包含了所需的jar包和一個linux下可執行的shell文件。

工具想要在windows下執行,需要在tools下添加一個windows下可執行的文件:cts-tradefed.bat
@echo off
setlocal enabledelayedexpansion
setlocal ENABLEEXTENSIONS

::設置cts根目錄,更改當前目錄為批處理本身的目錄
set CTS_ROOT=%~dp0\..\..
::設置支持的jar包的根目錄
set JAR_DIR=%CTS_ROOT%\android-cts\tools
::支持的jar包,一下項目中引用的jar包都要在啟動的時候包含進來
set JARS=ddmlib-prebuilt.jar tradefed-prebuilt.jar hosttestlib.jar cts-tradefed.jar tradefed-prebuilt-orgin.jar jsoup-1.7.3.jar gson-2.2.4.jar commons-compress-1.8.1.jar mail.jar javacsv.jar RXTXcomm.jar

set JAR_PATH=.
for %%i in (%JARS%) do (
set JAR_PATH=!JAR_PATH!;%%i
)
java %RDBG_FLAG% -cp %JAR_PATH% -DCTS_ROOT=%CTS_ROOT% com.android.cts.tradefed.command.CtsConsole %*
pause

 

插上手機,點擊cts-tradefed.bat文件啟動cts,會出現如下界面:

運行一個測試試試:

現在你回頭去看之前的respository目錄的logs和results目錄里會多了一個文件:

等收集完手機信息后會啟動測試,如下圖:

結束后去repository/results/下查看結果,點擊testResult.xml文件,會在瀏覽器里打開統計數據

 

 

二、常用命令

與host相關的部分常用命令:

help: CTS命令一覽表

exit:退出cts終端

與run相關的部分常用命令:

cts-tf>run cts --plan <test_plan_name> 執行一個測試計划

cts-tf>run cts --package  <package_name> 單獨運行cts測試中的一個包

cts-tf>run cts -c <package name> -m <testcase_name> 單獨測試某個用例

cts-tf>run cts --continue-session  <session_ID> 繼續運行指定session上狀態為not executed 的case

cts-tf>run cts [option] --serial/-s  <device_ID> 在指定device_ID上run cts [option]

與java包相關的部分常用命令:

cts-tf>list devices: 列出所有連接的設備和設備的狀態

cts-tf>list packages: 列出CTS所有的測試包

cts-tf>list plan: 列出CTS所有的測試計划

與測試計划相關的部分常用命令:

cts-tf>add derivedplan --plan plan_name --session/-s session_id –r [pass/fail/notExecuted/timeout]:從指定session id中根據case的各種狀態產生一個新的測試計划

與option相關的命令:

cts-tf>run cts --disable-reboot [option]: 在測試過程中不需要重啟手機

 

 

三、測試流程

----------------------------------------------

第一部分:准備工作

----------------------------------------------

1.在手機上安裝android-cts/repository/testcases目錄下的兩個APK:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk

2. 進入settings打開Wi-Fi並連接AP (AP需要連外網)

3.進入settings->Security->Screenlock設為None

4.進入settings->Security->EnableUnknown sources

5.進入settings->Security->Deviceadministrators->Enable兩個選項

6.進入Language&input->language設為English(UnitedStates)

7.進入settings->Display->Sleep設為30minutes或None

8.進入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock locations

9.進入settings->Accessibility->EnableDelegating Accessibility Service(設置-》安全-》設備管理器中生成下圖,把這三項選中)

 

 

----------------------------------------------

第二部分:開始CTS測試(每次輸入后加回車)

----------------------------------------------

1.平台用USB線連接電腦

2.打開終端切換到root用戶,cd到tools目錄下, 輸入 ./cts-tradefed (linux平台)

2.點擊cts-tradefed.bat文件啟動cts (Windows平台)

3.輸入run cts --plan CTS顯示如下,則表明開始測試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:運行所有的兼容性測試用例,目前暫時不包括性能測試用例

Signature:對簽名的所有的公共接口進行驗證

Android:對Android的接口進行測試

Java:對Java核心庫進行測試

VM:對Dalvik虛擬機進行測試

RefAPP:對參考應用進行測試

Performance:對性能進行測試

 

----------------------------------------------

第三部分:關於CTS4.0測試報告

----------------------------------------------

1.CTS測試報告是自動生成一個xml報表,並自動填寫的,不需要測試人員干預

2.當一個CTS測試任務開始時,會在/repository/results中為這個任務建立一個存放測試報告的文件夾,文件名以任務開始的日期和時間命名。

3.CTS4.0生成測試報告的速度比CTS2.3/2.2要慢不少,特別是在測試過程中中斷測試,CTS4.0需要70秒才會開始生成報告。如果你在此過程中按ctrl+c終止CTS進程,測試報告就無法生成,以后也無法繼續測試未完成的計划。

4.CTS測試任務完成后,會生成testResult.xml和2012.01.12.zip打開這個文件夾中的testResult.xml(用firefox或IE瀏覽器打開),查看報表是否完全。

 

----------------------------------------------

第四部分:繼續測試未完成的計划

----------------------------------------------

CTS4.0對未完成的測試計划不會生成xml報告,這個和CTS2.3/2.2不同。但是,這並不意味測試中斷后無法繼續未完成的測試。

1. 前提條件是有未完成的測試計划

2. 平台用USB線連接電腦

3. 進入的CTS狀態(cts-tf >)

6.輸入l r終端會顯示(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編號)

 

----------------------------------------------

第五部分:單獨對fail/notExecuted/timeout的測試項進行測試

----------------------------------------------

1.前提條件是已經有完成的測試結果testResult.xml文件

2.平台用USB線連接電腦 

3. 進入的CTS狀態(cts-tf >)

4.輸入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 

5.輸入addderivedplan --plan plane_name(新建一個測試計划) --session/-s session_id -r[pass/fail/notExecuted/timeout] (只能選擇其中一項)  

6.輸入run cts –plan plane_name(新建的測試計划名稱) 開始測試

7.測試完成后,CTS會自動生成一個新測試報表文件夾

 

----------------------------------------------

第六:單獨測試某個Case

----------------------------------------------

1.單個Case每單獨測試一次,就會生成一個Session(和測試報告xml)。

2.平台用USB線連接電腦

3. 進入的CTS狀態(cts-tf >)

6.從CTS測試報告XML文件中查找需要測試的Case的packagename 和 method name

clip_image026_thumb[1]

按上方的例子:android.acceleration.cts.HardwareAccelerationTest是package name,testIsHardwareAccelerated是method name

7.輸入runcts -c android.acceleration.cts.HardwareAccelerationTest --m testIsHardwareAccelerated開始測試這個Case

8. 測試完成后,CTS會自動生成一個新測試報告文件夾

 

四、注意點

1. 如果需要執行可訪問性方面的兼容性測試,則安裝“CtsDelegatingAccessibilityService.apk”,並將Settings->Accessibility->Delegating Accessibility Service選項打開。一般情況下是沒有的。

2. 如果需要執行設備管理方面的兼容性測試,則安裝“CtsDeviceAdmin.apk”,並將Setting->Security->Devices Administrators->android.devicesadmin.cts.CtsDevicesAdmin等選項打開。

3. 如果需要執行多媒體方面的兼容性測試,則需要:

1)從http://source.android.com/compatibility/downloads.html 下載android- cts-media-X.Y.zip並解壓。

2)進入解壓后的文件夾,並執行bash copy_media.sh, 把測試所需文件copy到手機中,否則會影響后邊android.media等與media相關測試包的執行。

4. 保證手機處於home界面,即按下“Home”鍵。CTS測試正式開始之后出現“cts_host >”測試默認CTS,其中包括所有的packages,可以輸入如下命令 :run cts --plan CTS 或者

run cts –disable -reboot --plan CTS (跑測試過程中,手機不會reboot,這樣可以方便接adb logcat),跑起來時先根據日期和時間創建測試結果的文件夾,然后出現“start test run of xx packages, containing xx tests”說明測試已經開始跑了,此時盡量再多觀察十分鍾,出現“Installing prerequisites”並且之后有顯示case pass,則確保cts確實開始run了。

5.CTS每次執行run cts –plan CTS時,CTS會搜索android-cts-4.0.3_r#-linux_x86-arm/android-cts/repository/results中的歷史報表文件夾。如果文件有很多,啟動速度會非常慢。所以,請定期清理results文件夾中的歷史報表(直接刪除報表文件夾即可)

6.每次測試保證把CTS測試case全部跑完,用 “l r”查看,本次CTS測試是否全部run完,即not executed一列的數值是0,如果數值不為0,則表示還剩下沒有run完的case,有可能是手機凍結或者reset導致adb 識別不了設備,所以后邊的case都為not executed狀態。如果手機離線了,即adb devices 狀態為offline,這時需要重新連接手機,后使用命令“run cts --continue-session session_id” 就可以繼續上面not executed的case了,session_id用命令l r就可以看見。

7.如果測試過程中需要跑指定的幾個packages,而不是full CTS, 則可修改plan文件夾中的CTS.xml文件。

clip_image048_thumb[3]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM