本指南介紹如何使用gcloud CLI運行儀器、Robo 或遊戲循環測試。
有關可在測試實驗室中與 Android 應用程式一起使用的gcloud
命令的完整列表,請訪問gcloud firebase test android
的參考文檔。
在你開始之前
如果您尚未將 Firebase 新增至您的 Android 專案中,請將其新增至您的 Android 專案中。
步驟 1. 設定 gcloud CLI
- 下載Google雲端SDK
- 確保您的安裝是最新的:
gcloud components update
- 使用您的 Google 帳戶登入 gcloud CLI:
gcloud auth login
- 在 gcloud 中設定您的 Firebase 項目,其中PROJECT_ID是您的 Firebase 項目的 ID:
gcloud config set project PROJECT_ID
這包括 gcloud CLI 工具。
步驟 2. 檢查可用的測試設備
使用以下 gcloud 指令查看可用於測試的測試設備和區域設定。
作為一個選項,您也可以下載範例記事本應用程式以立即開始執行命令。使用二進位檔案app-debug-unaligned.apk
和儀器測試檔案app-debug-test-unaligned.apk
,它們位於NotePad/app/build/outputs/apk/
中。
models list
:取得可供您測試的 Android 裝置的目前清單。gcloud firebase test android models list
在命令輸出中:
-
MODEL_ID
欄位包含稍後可用於在裝置型號上執行測試的識別碼。 -
OS_VERSION_ID
列包含裝置支援的作業系統版本。
輸出範例
-
models describe
:取得有關特定 AndroidMODEL_ID
的更多資訊。gcloud firebase test android models describe MODEL_ID
輸出包含設備型號的品牌、製造商、作業系統版本、支援的 API 等級、支援的應用程式二進位介面 (ABI)、發布日期以及設備是實體設備還是虛擬設備。
versions list
:取得目前可用的作業系統版本清單以進行測試。gcloud firebase test android versions list
您可以使用命令輸出前兩列中的任一列(
OS_VERSION_ID
和VERSION
)中的標識符,以便稍後針對 Android 作業系統版本執行測試。如果您沒有指定要測試的 Android 作業系統版本,則會使用TAGS
列下註明的預設版本。輸出範例
locales list
:取得可用於測試的目前區域設定清單。gcloud firebase test android versions list
命令輸出的第一列
LOCALE
包含稍後可用於針對區域設定執行測試的識別碼。如果您未指定要測試的區域設置,則英文將用作預設區域設定。
步驟 3. 執行測試
現在您已經了解了可用於測試應用的裝置型號、區域設定和作業系統版本的範圍,您可以使用gcloud firebase test android run
命令和--device
標誌來指定裝置來執行 Robo 或儀器測試。
運行 Robo 測試
即使您沒有任何儀器測試,您仍然可以在應用程式中找到錯誤。使用 Robo 測試對應用程式的使用者介面執行自動審查。 Robo 測試透過對應用程式使用者介面的各種路徑進行靜態分析來測試應用程序,然後爬行應用程式以查找崩潰和其他潛在問題。
若要執行 Robo 測試,請執行下列範例命令:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- 如果未指定
--type
值,則--type robo
參數是隱含的。 - 為了協助您在 Firebase 控制台中識別和定位測試矩陣,您可以使用可選的
--client-details matrixLabel="Example matrix label"
標誌來標記您的測試矩陣。 - 您可以透過鍵入以下內容來查看用於運行測試的完整命令列選項:
gcloud help firebase test android run
。
作為在命令列上指定這些參數的替代方法,您可以選擇在 YAML 格式的參數檔案中指定參數。執行gcloud topic arg-files
以了解如何使用此功能。
若要了解如何調查 Robo 測試的測試結果,請參閱分析測試結果。
運行儀器測試
現在,使用gcloud
命令列工具在指定的 Android 裝置設定上執行記事本應用程式的Espresso測試。使用instrumentation
測試類型執行app-debug-test-unaligned.apk
中的測試,如下所示:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- 如果使用
--test
指定測試 APK,則--type
Instrumentation 參數是隱式的。 - 為了協助您在 Firebase 控制台中識別和定位測試矩陣,您可以使用可選的
--client-details matrixLabel="Example matrix label"
標誌來標記您的測試矩陣。 - 您可以透過輸入
gcloud help firebase test android run
來查看用於執行測試的完整命令列選項集。
作為在命令列上指定這些參數的替代方法,您可以選擇在 YAML 格式的參數檔案中指定參數。執行gcloud topic arg-files
以了解如何使用此功能。
gcloud CLI 支援Android Test Orchestrator 。 Orchestrator 需要 AndroidJUnitRunner v1.1 或更高版本。要啟用它,請使用gcloud firebase test android run
和--use-orchestrator
標誌。若要停用它,請使用--no-use-orchestrator
標誌。
您也可以使用上面未顯示的其他標誌來控制測試實驗室如何運行儀器測試。例如,您可以使用--test-targets
標誌來測試測試 APK 使用的單一類別或類別方法。您也可以使用--num-flaky-test-attempts
標誌來確定失敗的測試是否確實不穩定,該標誌指定如果一個或多個測試案例出現問題,則應重新嘗試測試執行的次數因任何原因失敗。要了解更多信息,請參閱gcloud firebase test android run 。
儀器測試的程式碼覆蓋率報告
測試實驗室支援程式碼覆蓋率報告工具EMMA和JaCoCo 。如果您將任一工具整合到應用程式的建置中,則可以透過執行帶有一些附加參數的gcloud firebase test android run
取得測試實驗室測試的程式碼覆蓋率報告。如果未啟用 Android Test Orchestrator,請使用下列命令:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
如果您在使用 Android Test Orchestrator 的同時產生程式碼覆蓋率報告,請如下所示修改環境變數:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
當測試實驗室完成執行測試後,請在 Google Cloud Storage 中找到您的程式碼覆蓋率報告:
- 開啟
gcloud
工具在終端機的測試結果表上方列印的 Firebase 控制台連結。 - 按一下該連結清單中的測試執行可開啟該執行的詳細資訊頁面。
- 按一下「測試結果」可前往包含該執行的測試結果的 Cloud Storage 儲存分區。
- 開啟
artifacts/coverage.ec
查看您的程式碼覆蓋率報告。
分析您的測試結果
幾分鐘後,gcloud 工具將列印測試結果的基本摘要:
命令列測試運行的輸出還包括用於查看測試結果的連結。若要詳細了解如何解釋這些結果,請參閱分析 Firebase Android 結果測試實驗室。
使用 Robo 測試自訂登入和文字輸入
Robo 測試會自動完成使用 Google 帳戶進行驗證的登入畫面,除非您使用--no-auto-google-login
參數。它還可以使用您提供的測試帳戶憑證來完成自訂登入畫面。您也可以使用此參數為應用程式使用的其他文字欄位提供自訂輸入文字。
要填寫應用程式中的文字字段,請使用--robo-directives
參數並提供以逗號分隔的key-value
對列表,其中key
是目標 UI 元素的 Android 資源名稱, value
是文字字串。您也可以使用此標誌告訴 Robo 忽略特定的 UI 元素(例如「登出」按鈕)。支援EditText
字段,但不支援WebView
UI 元素中的文字字段。
例如,您可以使用下列參數進行自訂登入:
--robo-directives username_resource=username,password_resource=password
可用命令和標誌
測試實驗室 gcloud CLI 提供了多個可用命令和標誌,可讓您執行不同規範的測試:
Android Test Orchestrator 標誌:啟用Orchestrator 的標誌,該工具可讓您在自己的
Instrumentation
呼叫中執行每個應用程式的測試。測試實驗室始終運行最新版本的 Orchestrator。遊戲循環測試標誌:一組配置標誌,用於啟用和控制「演示模式」以模擬遊戲應用程式中的玩家操作。了解有關使用測試實驗室運行遊戲循環測試的更多資訊。
統一分片標誌(測試版) :指定要均勻分佈測試案例的分片數量的標誌。分片在不同的設備上並行運作。
手動分片標誌(測試版) :指定在分片(一組測試案例)中執行的一組套件、類別和/或測試案例的標誌。分片在不同的設備上並行運作。
網路流量設定檔標誌(測試版) :指定測試對實體設備使用哪個網路設定檔的標誌。網路設定檔模擬各種網路條件,讓您在不可靠或不可預測的網路上測試應用程式的效能。
使用測試實驗室編寫 gcloud 命令腳本
您可以使用 shell 腳本或批次檔來自動執行行動應用程式測試命令,否則您將使用 gcloud 命令列執行這些命令。以下範例 bash 腳本運行具有兩分鐘超時的儀器測試,並報告測試運行是否成功完成:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
腳本退出程式碼
測試實驗室提供了多個退出程式碼,您可以使用它們來更好地了解使用腳本或批次檔案執行的測試的結果。
為測試實驗室編寫退出程式碼腳本
退出代碼 | 筆記 |
---|---|
0 | 所有測試執行均已通過。 |
1 | 發生了一般故障。可能的原因包括:檔案名稱不存在或 HTTP/網路錯誤。 |
2 | 由於提供了未知的命令或參數,測試已退出。 |
10 | 測試執行中的一個或多個測試案例(測試的類別或類別方法)未通過。 |
15 | 由於發生意外錯誤,Firebase 測試實驗室無法確定測試矩陣是通過還是失敗。 |
18 | 由於測試維度不相容,不支援此測試執行的測試環境。如果所選裝置類型不支援所選的 Android API 級別,則可能會發生此錯誤。 |
19 | 測試矩陣已被使用者取消。 |
20 | 發生測試基礎架構錯誤。 |