CTS是什嗎?
資料:CDD、CTS官網、android-cts-manual-r4;
CTS是什麼我就不多費話了,看上面官方的說法就行了。不過有一點需要明確,你的裝置只有滿足CDD的規定並且通過CTS,才有可能獲得Android的商標和享受Android Market的許可權。這裡有可能指的是需要你自己去向google申請的,不是說相容了,這些東西就自然而然有了。
怎麼用:
資料: android-cts-manual-r4、宋立新_Android CTS測試研究;
安裝與配置:
下載或自己編譯;修改startcts中SDK_ROOT;在板子或emulator上裝一個apk;設定setting;
各種命令的用法:
注意:start --plan –p以及start --plan –t的用法,-t要指定一個具體的測試方法
方法1:一般使用的方法
$ ./startcts 注意如果用手機裝置調試,用root許可權執行
cts_host > ls --plan 列出所有plan
out/host/linux-x86/cts/android-cts/repository/plans中有plan的具體內容
cts_host > start --plan VM 運行某個plan
測試結果在out/host/linux-x86/cts/android-cts/repository/results目錄下,用瀏覽器看時間目錄下的xml檔案即可
注意在改動cts後,還要make cts重新編譯,若只在cts目錄中編譯不能生效
cts_host > ls -p 看當前可用的用例包
cts_host > start --plan Android -p android.app 只運行某個用例包,節約時間
cts_host > start --plan Android -p android.app -t android.app.cts.AlertDialogTest#testAlertDialog
只運行某個用例包中的某個用例
方法2:遇到問題時方便調試的方法
$ adb install out/target/product/xxxx/data/app/SginatureTest.apk 安裝某個用例包
$ adb shell pm list instrumentation pm用於管理package,看當前機器安裝了什麼用例
$ adb shell am instrument -w android.tests.sigtest/.InstrumentationRunner am用於管理activity 運行某一用例
$ adb shell am instrument -e class android.app.cts.AlertDialogTest#testAlertDialog -w com.android.cts.app/android.test/InstrumentationCtsTestRunner 單獨運行一個小case
如果在一個時間很長的plan(如Android)中,某處錯了,而錯誤資訊又不全,需要單獨跑一個小case,用-e指明class明就可以節約很多時間
用完後結果的分析:
結果在repository/results中,放在一個檔案夾裡,名字是你測試開始的時間。
分析的方法有兩種:
1、可以直接從Failure Details找原因;(個人感覺應該難度較大)
2、結合原始碼以及Failure Details的資訊找原因
第二種方法牽扯到找測試原始碼的問題,這就要對CTS源碼目錄以及相應產生物的命名有一定的瞭解。
瞭解CTS這個工程:
資料:宋立新同學的Android CTS測試研究二、android build system、CTS源碼、makefile以及shell基本知識
瞭解Linux工程最好的入手點,就是從它的編譯系統入手。
這個涉及到Linux的makefile以及android的編譯系統的基本知識,具體內容還是挺多的,不過看懂了android編譯系統,以後看其他Android工程應該都會得心應手。
在android CTS上增加自己的test package
資料:CTS命令的用法、Erin Yueh的兩篇文章
有兩種方法:
1、完美利用內建命令(已驗證)
2、用Erin Yueh的方法
用這個方法的前提也是要徹底弄懂CTS的內部結構,不然也只能照貓畫虎
如何寫test case
資料:JUnit、SDK/docs下面的五篇文章、android open source官網/porting/Instrumentation
Testing
這又是另外一門學問了
這個test case 可以涉及各個層次,Android 平台相關的測試的寫法可以參考官方的那五篇文章,如何運行可參考上面資料三,其他的可能會涉及到JUnit以及其他一些知識,目前還沒實地考察。
接下來要弄明白的
1、android的編譯系統(學習下makefile以及shell基本知識)
2、CTS這個工程(看看測試包XML產生器的假設成不成立,能不能提取出來)
3、眾多層次test case 的寫法