Android—— ubuntu下【CTS】測試TV真機

來源:互聯網
上載者:User

標籤:cts   adb   testresult   testcases   

    最近接觸到CTS,據傳不懂CTS就不算一個合格的android開發人員,我之前一直沒見周邊誰用過,作為一個產品開發的android人員,我還是太年輕~



                                            撰寫不易,轉載請註明出處:http://blog.csdn.net/jscese/article/details/40650001#t11


概念:

    Compatibility Test Suite (CTS)  相容性測試組,是由google提供的一套測試架構,含有很多測試案例,

架構用於管理測試案例在真機裝置或者模擬器上的執行,那些用例全是用java寫的apk,通過運行這些apk得到的結果來測試系統平台的相容性與穩定性.

    Compatibility Definition Document (CDD)  一個定義標準,系統需要符合軟體以及硬體相關參數.

你可以把測試結果發送給[email protected]。當你提交了一個CTS報告時,你還可以要求訪問Android Market。



配置:

    有android源碼的可以直接在源碼下 make cts ,最後會產生 /out/host/linux-x86/cts/android-cts

還可以去 http://source.android.com/compatibility/downloads.html 上面下載google提供的各個版本的 CTS組件,解壓出來android-cts目錄需要版本對應!

目錄結構如下:



其中docs為空白,

repository目錄下有plans . testcases

tools 目錄下就是啟動 cts console 的工具包,由 cts-tradefed 指令碼啟動!其中有個README

網上的配置五花八門,直接看這個簡單明了:

Configuring cts-tradefed------------------------1. Ensure 'adb' is in your current PATH. adb can be found in theAndroid SDK available from http://developer.android.comExample:  PATH=$PATH:/home/myuser/android-sdk-linux_x86/platform-tools2. Follow the 'Setting up your device' steps documented in theCTS User Manual. The CTS User Manual can be downloaded athttp://source.android.com/compatibility/downloads.html3. Connect the device to the host machine.4. Ensure device is visible via 'adb devices'Using cts-tradefed-------------------To run a test plan on a single device:1. Make sure you have at least one device connected2. Launch the cts-tradefed console by running the 'cts-tradefed' script atandroid-cts/tools/cts-tradefed3. Type:'run cts --plan CTS' to run the default CTS planSome other useful commands areTo run a test package:'run cts --package <packagename>'To run a test class:'run cts --class <full test class name>'To shard a plan test run on multiple devices'run cts --plan CTS --shards <number of shards>note: all connected devices must be running the same buildFor more options:'run cts --help'CTS Tradefed Development------------------------See http://source.android.com for instructions on obtaining the Androidplatform source code and setting up a build environment.The source for the CTS extensions for tradefed can be found at<android source root>/cts/tools/tradefed-hostThe source for the tradefed framework can be found on the 'tradefed' branch.Perform these steps to build and run cts-tradefed from the developmentenvironment:cd <path to android source root>make ctscts-tradefed

google的README寫的很明白了,需要終端能夠使用  adb  這個在google提供的SDK中是有的,還給出來了下載連結,然後設定到環境變數PATH中!

可以看下cts-tradefed 這個指令碼:

checkPath adbcheckPath java# check java versionJAVA_VERSION=$(java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')if [ "${JAVA_VERSION}" == "" ]; then    echo "Wrong java version. 1.6 is required."    exitfi

可以看到 是需要 jdk 1.6 以上的支援的!

android源碼下的 cts 可能不是最新的,所以最好是去上面提到的google官網去下載對應的 cts 組件!


使用:
啟動:

首先開啟TV的adb調試開關,ubuntu通過adb connect TV_IP 串連,android-cts下執行cts-tradefed指令碼進入cts控制台:



可以看到在cts-tf下使用 l d 命令查看到了 裝置的相關資訊.


命令:

使用help查看:


可以看到支援的命令集

其中版本為4.2_r4,定義在/cts/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java

使用 l p 查看可測試的計劃:

cts-tf > l pCTS-TFCTSVM-TFAppSecurityPDKJavaAndroidSignature

這些都是存在 android-cts/repository/plans

一個plan中包含多個package ,每一次執行 run cts 都會分配一個 Session 號,從 0開始..

l d 顯示串連的裝置, l packages 顯示可測試的包  , l r 顯示記錄結果


run cts -p package_name 單獨測試package_name包


run cts --continue-session sessionID --disable-reboot 

根據sessionID 繼續進行測試,不重啟 ,因為重啟 adb就斷掉了!


run cts -c com.class_name -m methmod_name 單獨測試某個類的方法 -c 後面跟類名全路徑 –m 後面跟方法名


其它命令可以看注釋,不多做解釋!


準備:

如果需要測試media相關的包,可在google官網下載 CTS Media 1.0 放到sdcard的test目錄.

另外需要做的準備有:

安裝cts測試需要的apk到目標板:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk
(這兩個APK可以在cts源碼目錄的testcase中找到)

系統setting的配置
(如果項目刪除了預設的setting或者深度修改了,可以用google的原生setting替代原有的setting來進行設定)
進入settings開啟Wi-Fi並串連AP (AP需要連外網)
進入settings->Security->Screenlock設為None
進入settings->Security->Deviceadministrators->Enable兩個選項
進入Language&input->language設為English(UnitedStates)
進入settings->Display->Sleep設為30minutes或None
進入settings->Accessibility->EnableDelegating Accessibility Service
進入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock locations
手動設定時間,並將時區調為北京,設定國家為china

這樣就可以運行 run cts * 進行測試啦!



結果:

 測試完之後的結果儲存在 /android-cts/repository/results/2014.10.31_11.53.42/testResult.xml

可以看到結果就四種:[pass/fail/notExecuted/timeout]

如果我們的硬體上並不支援某個功能模組的時候,我們可以在testResult.xml中修改 result="fail" 為 result="notExecuted"

如果是fail的肯定還有這樣的附加資訊:

 <Test name="testPlay00" result="fail" starttime="星期五 十月 31 12:01:24 CST 2014" endtime="星期五 十月 31 12:01:26 CST 2014">              <FailedScene message="junit.framework.AssertionFailedError: playback /mnt/sdcard/test/bbb_short/176x144/3gp_h263_libfaac/bbb_short.ffmpeg.176x144.3gp.h263_300kbps_12fps.libfaac_mono_24kbps_11025Hz.3gpat android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlayback(MediaPlayerStressTest.java:161)">                <StackTrace>junit.framework.AssertionFailedError: playback /mnt/sdcard/test/bbb_short/176x144/3gp_h263_libfaac/bbb_short.ffmpeg.176x144.3gp.h263_300kbps_12fps.libfaac_mono_24kbps_11025Hz.3gpat android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlayback(MediaPlayerStressTest.java:161)at android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlaybackShort(MediaPlayerStressTest.java:165)at android.mediastress.cts.H263QcifShortPlayerTest.testPlay00(H263QcifShortPlayerTest.java:49)at java.lang.reflect.Method.invokeNative(Native Method)at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)</StackTrace>              </FailedScene>            </Test>

可以看到還有堆棧資訊,可用於尋找定問fail原因!



添加testcase:

   我們可以在源碼/cts/tests/tests/下面看到所有的testcase

網上的方法,這裡借用記錄如下:

配置Testcase結構如下:example├── AndroidManifest.xml├── Android.mk└── src   └── android        └── example            ├── cts步驟:1、    在cts/tests/tests/目錄下建立一個自己的用例集(檔案夾)名稱XXX;2、    在該檔案夾中構建如下結構:XXX├──AndroidManifest.xml(可以拷貝example下該檔案)├── Android.mk(可以拷貝example下該檔案)└── src   └── android        └──XXX            └── cts3、    編寫測試代碼具體操作:在src/android/XXX/cts目錄下添加自己的用例;(XXX為自己的測試案例集的名稱,例如:test)細節說明:1、google官方cts測試案例中,對一個類進行測試時,並沒有對該類的所有方法進行測試,而是測試了該類中使用最頻繁的一些方法;所以我們自己編程測試案例時,也可以按照這樣的原則進行操作;2、對於“視窗控制項類”中使用的的res資源檔的目錄在source_android4\cts\tests\res3、最好是在eclipse中編寫,需要res檔案的,可以先拷貝到當前工程下,這樣可以通過eclipse檢查編程中的語法錯誤;4、包名的格式:package android.XXX.cts;4、    修改XXX/目錄下的Android.mk檔案LOCAL_PACKAGE_NAME:= CtsXXXTestCases(這個變數是定義自己的測試案例集的名稱;編譯後會產生同名的APK檔案)LOCAL_INSTRUMENTATION_FOR:= CtsTestStubs(這個變數定位的是一些涉及到虛擬機器的測試案例,使用junit架構;TestStubs這個類在目錄cts\tools\vm-tests-tf\src\dot\junit\opcodes下)5、修改XXX/目錄下的AndroidManifest.xml檔案
<manifestxmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.cts.XXX">    <uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD" />    <application>        <uses-libraryandroid:name="android.test.runner" />    </application>    <instrumentationandroid:name="android.test.InstrumentationCtsTestRunner"                    android:targetPackage="com.android.cts.stub"                     android:label="CTStests of android.XXX"/></manifest>


6、修改source_android4.2/cts目錄下的 CtsTestCaseList.mk;( 重要)在該檔案中給變數cts_test_packages追加自己測試案例集名稱CtsXXXTestCases說明:該檔案在編譯的時候會被build/core/tasks/cts.mk調用,產生最終的CTS包。對CtsTestCaseList.mk檔案說明:CTS_COVERAGE_TEST_CASE_LIST(核心變數)├── cts_support_packages(該變數包含的是測試依賴的一些用例,其對於代碼目錄為cts/hostsidetests)           ├──CtsAccelerationTestStubs \├──CtsDelegatingAccessibilityService \├──CtsDeviceAdmin \├──CtsMonkeyApp \├──CtsMonkeyApp2 \├──CtsSomeAccessibilityServices \├──CtsTestStubs \├──SignatureTest \├──TestDeviceSetup \├──$(cts_security_apps_list)├── cts_test_packages(該變數對應的是cts/tests/tests/目錄下的測試案例)


編譯自己的cts包執行make  cts  -j4


在真機上進行測試由於完整進行cts測試要很長時間,所以我們可以自己建立一個測試計劃,步驟如下:1、將cts包解壓,在android-cts\repository\plans下建立一個名為XXX的xml檔案;2、這個xml檔案格式為:  <?xmlversion="1.0" encoding="UTF-8"?><TestPlan version="1.0">       <Entry uri="android.XXX"/></TestPlan>3、進行cts測試時執行run  cts  -- plan XXX










Android—— ubuntu下【CTS】測試TV真機

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.