Android CTS環境配置及基礎命令介紹(僅針對8.0)
環境配置
物理環境
藍芽 LE 信標
如果 DUT 支援藍芽 LE 功能,則應在與 DUT 的距離不超過五米的範圍內放置至少三個藍芽 LE 信標,以進行藍芽 LE 掃描測試。這些信標可以為任何型別,不需要進行配置或發射任何特定訊號,並且可以包括 iBeacon、Eddystone,甚至模擬 BLE 信標的裝置。
GPS/GNSS
如果 DUT 支援全球定位系統 (GPS)/全球導航衛星系統 (GNSS) 功能,需將 DUT 放在距離視窗足夠近的位置以使其可以直接接收到足夠強的 GPS/GNSS 訊號即可。
Tips:在進行 GPS 測試時,請確保網際網路連線設定未遮蔽 supl.google.com 的 7276 埠的連線。該埠將用於下載 GPS 輔助資料,以便在本地裝置上測試位置計算。
WLAN 和 IPv6
CTS 測試需要滿足以下要求的 WLAN 網路:支援 IPv6,可以將被測裝置 (DUT) 視為隔離客戶端,並可以連線到網際網路(Google)。隔離客戶端是一種配置,可使 DUT 無法接收子網路上的廣播/多網訊息;這種配置可通過 WLAN AP 配置或通過在未連線其他裝置的隔離子網路上執行 DUT 來實現。
如果您無法訪問原生 IPv6 網路、IPv6 運營商網路或 IPv6 VPN,以致無法通過基於 IPv6 的一些測試,則可以改為使用 WLAN 接入點和 IPv6 隧道。請參閱維基百科 IPv6 隧道代理列表。
PC設定
1.1.1 ADB和AAPT
安裝最新的adb和aapt,並將這些工具的位置新增到計算機的環境變數中。
例如
export PATH=$PATH:$HOME/android-sdk-linux/build-tools/<version>
1.1.2 JDK
現在要求安裝jdk8,openjdk和sunjdk都可以
1.1.3 CTS檔案
下載CTS測試套件
下載CTS媒體檔案,Media相關測試需要用(日常使用1.4版本)
Android裝置設定
請注意正式送測版本一定是user版本(定位問題可使用userdebug版本)
準備UICC
a. 將裝置恢復出廠設定:設定 > 備份和重置 > 恢復出廠設定(刷機後的機器不用再次恢復出廠設定)
b. 將裝置的語言設定為英語(美國):設定 > 語言和輸入法 > 語言
c. 如果裝置具有 GPS 或 WLAN/行動網路功能,則開啟位置資訊設定:設定 > 位置資訊 > 開啟 (選擇高精度)
d. 插入sd卡,推薦class10且大於8GB(只有內部儲存可不插)
e. Settings > Display > Sleep should be set to “30 minutes” or the largest value
f. 測試前,手機應該回到Home介面
g. 寫入IMEI
h. 插入SIM卡並開啟資料流量
i. Settings > About phone > Status > My phone number檢視SIM卡號碼,如果看不到,需要將SIM卡號碼寫入到SIM中,目前知道小米手機可以直接寫入。
j. 連線到滿足以下要求的 WLAN 網路:支援 IPv6,能夠訪問Google網路(梯子)
k. 關閉鎖螢幕圖案或密碼:設定 > 安全 > 螢幕鎖定 > 無
l. 在裝置上啟用 USB 除錯:設定 > 開發者選項 > USB 除錯
m. 設定 > 日期和時間 > 使用 24 小時制 > 關閉(使用12小時制)
n. 設定 > 開發者選項 > 不鎖定螢幕 > 開啟
o. 啟動瀏覽器並關閉任何啟動/設定螢幕。
p. 將 CTS 媒體檔案複製到裝置上,
i. 執行 copy_media.sh:
l 要複製解析度不超過 720x480 的剪輯,請執行:./copy_media.sh 720x480
l 如果您不確定最大解析度,請嘗試執行 ./copy_media.sh all,以便複製所有檔案。
ii. 執行 copy_images.sh(建議在測試機內建儲存新建cts資料夾,講bbb_full和bbb_short)
執行CTS
解壓縮下載的CTS壓縮檔案
執行 ./android-cts/tools/cts-tradefed 進入cts命令列
下面是從android官網上摘抄下來的命令參考
主機 | 說明 |
---|---|
help | 顯示最常用命令的摘要 |
help all | 顯示可用命令的完整列表 |
version | 顯示版本。 |
exit | 正常退出 CTS 控制檯。所有當前正在執行的測試完成後,控制檯將關閉。 |
執行 | 說明 |
run cts | 執行預設的 CTS 計劃(即完整的 CTS 呼叫)。 在測試過程中,CTS 控制檯可以接受其他命令。 如果沒有連線任何裝置,CTS 桌上型電腦(或主機)將等待連線裝置後再開始測試。 如果連線了多臺裝置,則 CTS 主機將自動選擇一臺裝置。 |
--plan <test_plan_name> | 執行指定的測試計劃。 |
--module/-m <test_module_name> [--module/-m <test_module2>...] | 執行指定的測試類和/或方法。例如,run cts --module CtsGestureTestCases 會執行手勢測試模組(該命令可以簡化為 run cts -m Gesture)。 run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes會執行指定的包、類或測試。 |
--subplan <subplan_name> | 執行指定的子計劃。 |
-- module/-m <test_module_name> -- test <test_name> | 執行指定的模組並進行測試。例如,run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes 會執行指定的包、類或測試。 |
--retry | 重新嘗試執行在以前的會話中失敗或未執行的所有測試。 使用 list results 獲取會話 ID。 |
--shards <number_of_shards> | 將 CTS 執行分為指定數量的獨立塊,以便在多臺裝置上並行執行。 |
--serial/-s <deviceID> | 在特定裝置上執行 CTS。 |
--include-filter <module_name> [--include-filter <module2>...] | 僅使用指定的模組執行。 |
--exclude-filter <module_name> [--exclude-filter <module2>...] | 執行時排除指定的模組。 |
--log-level-display/-l <log_level> | 以顯示給 STDOUT 的最小指定日誌級別執行。有效值:[VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]。 |
--abi <abi_name> | 強制要求測試在給定的 ABI(32 或 64)上執行。預設情況下,CTS 會為裝置支援的每個 ABI 執行一次測試。 |
--logcat、--bugreport 和 --screenshoot-on-failure | 顯示更詳盡的故障資訊並幫助進行診斷。 |
--device-token | 指定具有給定令牌的給定裝置,例如 --device-token 1a2b3c4d:sim-card.。 |
--skip-device-info | 跳過收集裝置相關資訊的過程。注意:執行 CTS 以尋求批准時,請勿使用此選項。 |
--skip-preconditions | 繞過對裝置配置的驗證和設定,例如推送媒體檔案或檢查 WLAN 連線。 |
列表 | 說明 |
list modules | 列出儲存區中的所有可用測試模組。 |
list plans 或 list configs | 列出儲存區中的所有可用測試計劃(配置)。 |
list subplans | 列出儲存區中的所有可用子計劃。 |
list invocations | 列出裝置上當前正在執行的“執行”命令。 |
list commands | 列出當前在佇列中等待分配給裝置的所有“執行”命令。 |
list results | 列出當前儲存在儲存區中的 CTS 結果。 |
list devices | 列出當前連線的裝置及其狀態。 “可用”裝置是可正常執行的空閒裝置,可用於執行測試。 “不可用”裝置是可通過 adb 檢視但不響應 adb 命令的裝置,不會分配用於測試。 “已分配”裝置是當前正在執行測試的裝置。 |
轉儲 | 說明 |
dump logs | 為所有正在執行的呼叫轉儲 tradefed 日誌。 |
新增 | 說明 |
add subplan --name/-n <subplan_name> --result-type pass | fail | timeout |notExecuted | 建立從上一會話衍生的子計劃;此選項會生成可用於執行測試子集的子計劃。 唯一的必選項是 --session。其他選項都是可選的,但如果選用這些選項,必須後跟一個值。--result-type 選項可重複使用;例如 add subplan --session 0 --result-type passed --result-type failed 是有效的。 |
一些命令示例
Tips:
我們測試的時候有兩個引數比較重要
a. -–skip-preconditions 跳過一些預置條件的檢查,可以減少測試的時間
b. –-skip-device-info 跳過手機資訊的收集,可以減少測試的時間
c.--disable-reboot 忽略手機重啟
- 完整的跑一遍CTS測試
run cts --plan CTS
- 單獨跑一個模組
run cts --m CtsAppSecurityHostTestCases --skip-preconditions --disable-reboot
- 單獨跑某一個測試方法
run cts -m 模組名 -t 測試方法 --skip-preconditions --disable-reboot
- 執行以前的會話中失敗或未執行的所有測試
run cts --retry --skip-preconditions --disable-reboot
(如果測試機版本切換了是不能夠使用retry命令的)
- 建立從上一會話衍生的子計劃
參照表中add subplan命令
- 檢視所有的subplan
list subplans
- 執行子計劃
run cts --subplan <subplan_name>
Reference:
轉載自:Terryho 連結:https://www.jianshu.com/p/a6feab7b468a 來源:簡書