CTS 测试细节
一.說到細節,首先介紹一下流程。然后再從流程的項目來講。
(現在假設Host端環境已經架設好,準備進行測試,基本流程如下)
Created with Rapha?l 2.1.0https://source.android.com/compatibility/?hl=zh-cn開始https://source.android.com/compatibility/?hl=zh-cn1.確認目標Image2.下載并解壓縮目標Image3.可以正常開機?4.基本功能正常?5.進行手機環境準備6.確保USB連接正常7.Host輸入命令,運行CTS測試8.等待生成CTS報告9.報告結果符合預期?11.發出CTS報告http://www.google.com Endhttp://www.google.com 10.調試環境,進行retryyesnoyesnoyesno二.下面根據流程,來分析細節
1. 確認目標Image
這個來源比較多。可以是:
- 上級安排
- 定期測試
- 有特定的change需要驗證
- 等等
可以根據來源不同,來判斷優先級。
2.下載,并解壓縮目標Image
這個沒有太多好說的,主要注意以下兩條:
- 不同項目的Image,最好放在不同的文件夾下,避免混淆
- Image 一般比較大,最好準備1T以上的硬盤
3.可以正常開機?
由于有些版本的Image,自身問題。
導致:開機卡logo;開機進fastboot;卡機進android無限重啟等現象。
如果無法正常開機,就需要先debug,再換版測試。
4.基本功能正常?
在項目初期進行測試的時候,容易出現基本功能,比如Bluetooth,WiFi,Camera等功能不可用的情況。
刷完機后,最好進行基本功能驗證后再測試。
如果有問題,就再換版測試。
5.進行手機環境準備
這個前面提過,官方寫的非常詳細。我粘貼一下:
Android設備設置
警告:這將清除設備中的所有用戶數據。
* 注意:在Android 4.2及更高版本上,默認情況下隱藏開發人員選項。要使它們可用,請轉到設置>關于手機,然后點擊構建號碼 七次。返回上一個屏幕以查找開發人員選項。有關其他詳細信息,請參閱啟用設備上開發人員選項。*
注意:此模擬位置設置僅適用于Android 5.x和4.4.x.
注意: Android 4.2中需要驗證應用步驟。
注意:將運行Android 4.2.2或更高版本的設備連接到計算機時,系統會顯示一個對話框,詢問是否接受允許通過此計算機進行調試的RSA密鑰。選擇允許USB調試。
注意:對于CTS版本2.1 R2至4.2 R4,請設置您的設備(或仿真器)以運行輔助功能測試:
adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
在設備上,啟用:設置>輔助功能>輔助功能>委托輔助功能服務
注意:對于7.0之前的CTS版本,在聲明的設備上 android.software.device_admin,將您的設備設置為運行設備管理測試:
adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk
在設置>安全>選擇設備管理員,啟用兩個 android.deviceadmin.cts.CtsDeviceAdminReceiver*設備管理員。確保 android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver和任何其他預裝設備管理員保持禁用
注意:對于CTS 2.3 R12及更高版本,如果設備支持視頻編解碼器,則必須將CTS媒體文件復制到設備。
cd到媒體文件下載并解壓縮到的路徑。
更改文件權限: chmod u+x copy_media.sh
運行copy_media.sh:
要將剪輯復制到720x480的分辨率,請運行: ./copy_media.sh 720x480
如果您不確定最大分辨率,請嘗試./copy_media.sh all復制所有文件。
如果adb下有多個設備,請將-s(serial)選項添加到末尾。例如,要使用串行1234567將設備復制到720x480,請運行:./copy_media.sh 720x480 -s 1234567
6.確保USB連接正常
這個確實很重要。
因為USB供電和數據線本身的原因,會導致設備offline,進而導致測試失敗。
所以建議如下:
使用比較新的,正規的USB數據線;
使用電腦的后置USB口連接數據線;
使用USB-hub時,選擇自帶電源功率大的類型。
7.Host輸入命令,運行CTS測試
參考如下:
鏈接: https://pan.baidu.com/s/1nv1JPot 密碼: 6hw5
8.等待生成CTS報告
根據以往經驗,在Android 7.0上3臺測試機shared CTS測試需要2天,也就是2x3=6。4臺機器大概是1.5天。其他情況下,自己評估一下吧。
在Android 7.0以下的版本,3臺測試機shared CTS測試只需要1天。其他情況下,自己算一下吧。
9.報告結果符合預期?
首先介紹幾個概念:
-CTS理論上需要所有的測項全部Pass,才能獲得Google的approve,允許Android 手機出貨。
-實際上,由于CTS tool檢查機制,以及security path的更新,會導致一些信息不同步的問題。簡單的說,就是可能上了Google提供的新版security path,而CTS檢查的是舊的值。就會造成與預期不符的CTS Fail。這一類fail會得到Google waive。
-除了上面提到的情況,開發過程中的修改,也會與CTS要求不符,導致fail,這種fail就需要進行測試,及時發現,及時解決。
那么怎么樣是符合預期呢?
1.測完所有的測試項目。比如說CTS 7.1r9有443486項,295個Moudle。這些需要全部執行。
2.fail項只能包含如上提到的,經過Google waive 的fail。
10.調試環境,進行retry
實際執行CTS測試的時候往往狀況比較多,比如說會出現如下情況:
- 測試機掉線(自動關機,USB 連結超時,設備被上鎖等等)
- 測試執行到一半停下來了
- 網絡中斷
- 等等
遇到這類情況,就需要認為的進行USB重連和調試網絡的操作。
給測試機做factory reset和重燒 syestem.img是比較常用的方法。
11.發出CTS報告
得到符合預期的CTS報告,就可以準備打包送給Google了,這里補充兩點:
- 發出之前確認報告的完整性
- Google只接受 .zip 格式的報告
開發初期的CTS測試:
開發初期由于android系統和CTS框架的穩定性問題,往往會碰到一些問題,比如說:
- 測試機在測試過程中關機
- USB斷線
- 測試機不足
- CTS 不能retry
- 項目初期Image更新速度快
鑒于有上面這些問題,所以在開發初期的時候,建議采取一些策略:
拿一版基本功能ready的Image進行測試,直到跑出完整的report。順便也能直到這一版CTS tool的測項數量。并在今后的版本上對failed項目進行retry,直到結果的failed項目少于100時,再去整測CTS。
CTS測試bug復驗:
CTS測試項目數量龐大,整測消耗的時間也比較長。
在舊版本的fail項目,修復后需要在新版上驗證,再進行送測。
在復驗的時候,一般有兩種情況:
1.別人跑了一版CTS,結果有fail項。自己再測試一下,排除環境問題。
這時候需要拿到跑fail生成的report,復制到對應CTS環境的results路徑下,并解壓。
然后,刷好對應Image,進行retry。
retry命令介紹如下:
-r, –retry [session ID] retry a previous session.
–retry-type used with retry, retry tests of a certain status. Possible values include “failed”, “not_executed”, and “custom”. Valid values: [FAILED, NOT_EXECUTED, CUSTOM]
2.舊版結果有fail項。新版需要確認是否修復。
對于這種情況,因為版本號不一樣所以retry命令不再適用了,當然非得用retry命令也是可以的,但是需要改reprot里的build-fingerprint。
不過不建議這么做。因為有更方便的方法,就是用add subplan 命令。
add subplan命令介紹如下:
Add:
a/add s/subplan: create a subplan from a previous session
Options:(–是兩個-,這里有顯示問題,也可以在tradefed下敲help add查看幫助)
–session : The session used to create a subplan.
–name/-n : The name of the new subplan.
–result-type : Which results to include in the subplan. One of passed, failed, not_executed. Repeatable.
按照上面的方法新建subplan,然后使用: run cts –subplan <剛才創建的subplan name> 即可。是不是非常方便呢。
總結
- 上一篇: 使用VScode调试与编写bash脚本
- 下一篇: 竞品分析思维导图