01、何為CTS
相信小夥伴們都有用過各種款式的Android手機,如小米、魅族、華為、oppo、vivo,雖然他們的頁面長的都不太一樣,比如小米的長這樣:
魅族的:
oppo的:
還有垂死掙扎的錘子...
但是這些手機其實都是搭載的Android系統,只不過國內的手機廠商在原生Android的基礎上進行修改/定製。其實原生的Android長這樣:
這麼多手機廠商都要改造成自己的UI,甚至要對Android底層進行改動,難免不會改出什麼問題。所以Google為了這些定製的系統能夠符合統一的規範、兼容Android底層的API,就引入了CTS測試。
以下是其官方介紹
Compatibility Test suite系列兼容測試,Google定義了一個兼容性規範(Compatible Definition),而CTS就是為了確保某個測試符合該規範。從而基於Android的應用程式能在基於同一個api版本的設備上面運行。通過CTS測試的device可以獲得android的商標,並且享受android market的權限。
02、為什麼需要CTS
通過CTS測試,可以保證
- 讓APP提供更好的用戶體驗,用戶可以選擇更多的適合自己設備的APP;
- 讓開發者設計更高質量的APP;
- 通過CTS的設備可以運行Android market;
03、CTS配置
下載和配置CTS
官網:http://source.android.com/compatibility/downloads.html
注意:此網站需要FQ
下載文件:(Android 4.4為例)
- Android 4.4 Compatibility Definition Document (CDD)
- Android 4.4 R3 Compatibility Test Suite (CTS) - ARM
- Android 4.4 R3 Compatibility Test Suite (CTS) - x86
- Android 4.4 R3 CTS Verifier - ARM
- Android 4.4 R3 CTS Verifier - x86
- Compatibility Test Suite (CTS)
- User Manual CTS Media 1.1
配置CTS
- 解壓Compatibility Test Suite對應的壓縮包
- 將解壓出來的android-cts文件夾,複製到SDK根目錄中
04、CTS目錄結構說明
05、CTS測試流程
測試準備
step1:測試環境:
- linux系統(最好是64位的ubuntu)
- 需正確配置JAVA JDK , android SDK
step2:工具準備:
- 將下載的CTS包解壓到/data目錄
- 下載需要進行測試的軟體版本(ROM)
- 插入可用的SD卡,容量最好是大於1G
- 插入可用的Sim卡,如果為雙卡版本,需確保卡一的卡槽有可用的Sim卡.
- 寫入合法的IMEI號
step3:手機配置:
- 手機恢復出廠設置(Settings→Backup and reset→Factory data reset)
- 確保SD中有足夠的空間(大於1G),可將SD格式化清空。
- 確保手機里沒有Google帳號或者其他帳號存在
- 確保日期和時間的正確(開了Wifi或者數據連接以後會自動更新時間,時區選默認的)
- 設置螢幕為常亮(Settings→Display→Sleep→Never)
- 設置無鎖屏(Settings→Security→Set up screen lock→None)安裝CtsDeviceAdmin.apk,(在android-cts/repository/testcases下,可用adb install CtsDeviceAdmin.apk),並進入Settings→Security→Device
administrators開啟裡面的兩個包
測試執行
進入到/android-cts/tools目錄輸入:./ cts-tradefed
進入測試環境
再執行run cts --plan CTS進行整體測試:
run cts -c android.app.cts.SystemFeaturesTest
測試過程持續時間超過10+小時
測試結果會生成在android-cts/repository/results目錄中的 testResult.xml
Log日誌文件位於android-cts/repository/logs目錄下
06、CTS操作基本命令
07、CTS測試結果分析
測試報告的fail項分為兩類:
- 一類是可以waive的,可以waive的項是谷歌自身的原因,經谷歌同意可以不用處理的項。另一類是需要我們分析修復的。 關於可以waive的選項,可以waive的選項一般會有一個表格維護,這個表格會不定時更新,可主動向相關人員索取。
- 如果不是google waive項,請查看log,在異常log的附近會有一些相關的信息,看能否找到原因 如果在之前的版本上測試PASS,可定位一下OK版本和fail版本之間的代碼提交,進而縮小排除範圍 ,有些時候想在測試包裡面加一些LOG信息,可以自行編譯工程代碼的CTS,用來測試調試。 若實在不能分析,可向平台商(如MTK/Qualcomm)尋求幫助。