對於運行 Android 6 或 Android 7 的設備,您可以使用 Android Enterprise (AE) 測試工具來測試設備配置,這是一個用於驗證 Android 設備的企業兼容性的測試套件。該工具包括支持應用程序、測試用例、配置文件和基於cts-tradefed
構建的測試運行器 ( afw-test-tradefed
)。在設置 AE 測試工具之前,請務必完成設備管理的配置。
對於運行 Android 8 或更高版本的設備,不推薦使用AE 測試工具。
設置開發環境
AE Test Harness 的開發環境類似於 Android 操作系統。按照要求中的步驟設置開發機器。
下載源代碼
使用下載源代碼中的步驟下載AE 測試工具源代碼。 AE 測試工具源代碼位於./test/AfwTestHarness
項目中。分支名稱決定了要下載的 AE Test Harness 版本(每個 Android 平台都有單獨的 AE Test Harness 版本)。例如,Android 7.0 Nougat 的分支名稱是afw-test-harness-nougat-dev
。要為此分支初始化 repo 並下載源代碼,請使用以下命令:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
repo init -u https://android.googlesource.com/platform/manifest -b afw-test-harness-nougat-dev
repo sync -j24
要查看不同版本的源代碼,請使用相應的標籤指定分支。可用的分支包括:
分店名稱 | 支持的安卓平台 |
---|---|
afw-test-harness-nougat-dev | 安卓7.0 |
afw-test-harness-2.1 | 安卓7.0 |
afw-test-harness-marshmallow-dev | 安卓6.0 |
afw-test-harness-1.5 | 安卓6.0 |
構建線束所需的其他依賴項目也與源代碼一起下載。
在 Android Studio 中查看
在 Android Studio 中查看和編輯源代碼:
- 運行以下命令
make idegen
development/tools/idegen/idegen.sh
- 在 Android Studio 中,打開
android.ipr
。
AE 測試工具源代碼位於test/AfwTestHarness
中。
配置 AE 測試工具
您可以通過配置test/AfwTestHarness/afw-test.props
定義線束。要成功運行線束,請完成以下步驟:
- 使用以下屬性在
afw-test.props
中配置 Wi-Fi 網絡:wifi_ssid wifi_password (optional) wifi_security_type (optional, available options are: NONE, WEP or WPA)
- 從綁定到 Test DPC 作為其設備策略控制器的域中獲取至少一個帳戶。使用以下屬性在
afw-test.props
中指定詳細信息:work_account_username work_account_password
AE 測試工具使用測試 DPC 來測試供應流,因此帳戶必須綁定到測試 DPC 才能運行測試工具。
構建 AE 測試工具
使用以下命令初始化構建配置:
source build/envsetup.sh
lunch
選擇設備類型並按Enter 。
使用以下方法構建線束:
make afw-test-harness -j32
這將創建一個目錄 ( out/host/linux-x86/afw-th/android-cts
),其中包含運行測試工具所需的所有二進製文件、配置文件和工具。該目錄也被壓縮到一個文件 ( out/host/linux-x86/afw-th/android-afw-test-harness.zip
) 以供分發。
運行 AE 測試工具
使用以下步驟運行 AE 測試工具:
- 在您的構建環境中,使用以下命令啟動測試運行程序:
afw-test-tradefed
這將啟動cts-tf
控制台,從out/host/linux-x86/afw-th/android-cts
加載測試計劃、測試用例和afw-test.props
test.propsout/host/linux-x86/afw-th/android-cts
- 從
android-afw-test-harness.zip
的解壓縮文件夾中,使用以下命令啟動測試運行程序:cts-tf> ./android‐cts/tools/afw-test‐tradefed
這會從android-cts
目錄加載測試計劃、測試用例和afw-test.props
。確保./android‐cts/repository/testcases/afw-test.props
具有工作帳戶和 Wi-Fi 配置。 - 運行測試計劃。每個測試計劃都是一個 XML 文件,其中包含一組來自
AfwTestHarness/tests
測試包目錄的測試包。常見的計劃包括:-
afw-userdebug-build
。包含需要 userdebug 構建的所有測試包。 -
afw-user-build
。在用戶版本上運行,但需要正確設置測試設備,包括完成初始設置和啟用 USB 調試。
要運行測試計劃afw-userdebug-build
,請使用:cts-tf> run cts --plan afw-userdebug-build
要查看所有測試計劃,請使用命令list plans
。要查看計劃定義,請參閱out/host/linux-x86/afw-th/android-cts/repository/plans
。 -
- 運行測試包。要運行單個測試包,請使用
cts-tf> run cts --package com.android.afwtest.NfcProvisioning
要查看所有包,請使用命令list packages
。如需更多選項,請使用命令run cts --help
。
調試 AE 測試工具
在 afw-test-tradefed 控制台 ( cts-tf
) 中運行所有命令,您可以通過運行afw-test-tradefed
來啟動該控制台。
- 使用
-l INFO
或-l DEBUG
標誌顯示更多信息。示例:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG
- 使用
-s
標誌在特定設備上運行測試工具。示例:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG -s device_sn
- 使用
--all-devices
標誌在所有連接的設備上運行測試工具。示例:cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG --all-devices
- 使用
list invocations
或li
查看當前正在運行的執行。 - 使用
list results
或lr
查看過去測試執行的摘要。 - 使用
help list
查看其他list
命令。 - 使用
afwtest
使用過濾器監控實時 logcat,然後打開另一個終端並使用以下命令啟動 logcat:adb logcat | grep afwtest
。測試完成後:- 在
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
查看日誌。完整的設備 logcat 和主機日誌(afw-test-tradefed
日誌)保存在單獨的 zip 文件中。 - 通過在設備 logcat 中搜索afwtest來查找相關信息。示例:
zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /device_logcat_ random-number .zip | grep afwtest
- 要查看完整的 afw-test-tradefed 日誌,請使用:
zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /host_log_ random-number .zip
- 在
- 測試包通過瀏覽 UI 頁面並在每個頁面的設備 logcat 文件中記錄導航日誌來自動化企業配置流程。示例:
afwtest.AutomationDriver: Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage
測試包com.android.afwtest.NfcProvisioning
的 UI 頁麵包括:-
com.android.afwtest.uiautomator.pages.managedprovisioning.NfcProvisioningPage
-
com.android.afwtest.uiautomator.pages.PageSkipper
-
com.android.afwtest.uiautomator.pages.LandingPage
-
- 如果在provisioning過程中測試失敗,logcat會出現類似:
TestRunner: java.lang.RuntimeException: Failed to load page: com.android.afwtest.uiautomator.pages.packageinstaller.DeviceAccessPage
的錯誤,這通常是由於之前的UI頁面錯誤或者加載失敗的頁面導致的,所以嘗試在這個錯誤之前在logcat中查找其他錯誤信息,然後嘗試按照配置流程手動複製它。 - 如果測試包失敗:
- 使用以下語法將屏幕截圖保存到
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
:screenshot-test_ test_class_full_name _ test_case_name - random_number .png
。此信息也記錄在主機日誌中。 - 錯誤報告保存到
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
為:bug- test_class_full_name _ test_case_name - random_number .zip
。
- 使用以下語法將屏幕截圖保存到
- 在所有測試包執行後,截取屏幕截圖並保存到
out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time
為:screenshot- random_number .png
。此信息也記錄在主機日誌中。
常問問題
我可以在刷有用戶構建的設備上運行測試計劃afw-userdebug-build
build 嗎?
否。 afw-userdebug-build
計劃中的測試包在運行實際測試流程之前出廠重置測試設備,並且需要自動啟用adb
調試。使用用戶構建,只能通過手動更改開發人員選項中的設置來啟用adb
調試。
我可以在使用 userdebug build 閃爍的設備上運行測試計劃afw-user-build
build 嗎?
是的,但我們建議您在用戶構建上運行此測試計劃。
有時我的測試會失敗,因為 UI 加載需要太多時間。我怎樣才能解決這個問題?
在./android-cts/repository/testcases/afw-test.props
中配置timeout_size
設置。有效設置為:S、M、L、XL、XXL。
測試包com.android.afwtest.NfcProvisioning
(或SuwDoProvisioning
)在我的設備上失敗,因為安裝的初始設置在配置完成後顯示自定義 UI(例如條款和條件)。如何跳過此自定義 UI?
在配置過程之後應該有最少的 UI。如果 UI 的按鈕具有有意義的文本或內容描述,其中包含以下任何單詞:Skip、Finish、Done、Accept、Agree、Next、Continue 或 Proceed,則測試工具將自動跳過此類 UI。或者,您可以在afw-test.props
中定義一個按鈕來配置測試工具以跳過您的 UI。例子:
oem_widgets=your_btn your_btn.text=your_customized_text your_btn.package=your_package your_btn.action=click
要定義多個小部件,請使用逗號分隔。
測試包com.android.afwtest.NfcProvisioning
(或SuwDoProvisioning
)失敗,最後一個 UI 屏幕是“驗證您的帳戶”。為什麼會發生這種情況,如何恢復測試設備?
出現此故障是因為之前的測試包未能在測試結束時清除出廠重置保護。您必須手動輸入帳戶才能解鎖設備。
我的設備需要更多時間才能恢復出廠設置。我可以延長出廠重置超時嗎?
是的。在afw-test.props
中配置factory_reset_timeout_min
設置。有效設置以分鐘為單位;您可以設置為適用於您的設備的任意分鐘數。