本指南說明如何使用 gcloud CLI 執行檢測、Robo 或遊戲迴圈測試。
如需可在 Test Lab 中與 Android 應用程式搭配使用的 gcloud 指令完整清單,請參閱gcloud firebase test android 的參考文件。
事前準備
如果您尚未將 Firebase 新增至 Android 專案,請先新增。
步驟 1:設定 gcloud CLI
- 下載 Google Cloud 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欄包含 ID,您稍後可以使用這個 ID 在裝置型號上執行測試。OS_VERSION_ID欄包含裝置支援的作業系統版本。
輸出內容範例

models describe:進一步瞭解特定 AndroidMODEL_ID。gcloud firebase test android models describe MODEL_ID輸出內容包含裝置型號的品牌、製造商、OS 版本、支援的 API 級別、支援的應用程式二進位檔介面 (ABI)、推出日期,以及裝置是實體還是虛擬。
versions list:取得目前可用的 OS 版本清單,以便進行測試。gcloud firebase test android versions list您可以使用指令輸出前兩欄 (
OS_VERSION_ID和VERSION) 的 ID,針對 Android 作業系統版本執行測試。如未指定要測試的 Android 作業系統版本,系統會使用TAGS欄下方註明的預設值。輸出內容範例

locales list:取得目前可供測試的語言代碼清單。gcloud firebase test android locales list指令輸出的第一欄
LOCALE包含 ID,您稍後可以使用這個 ID 針對語言代碼執行測試。如未指定要測試的語言代碼,系統會使用英文做為預設語言代碼。
步驟 3:執行測試
現在您已瞭解可用於測試應用程式的裝置型號、語言代碼和 OS 版本範圍,可以使用 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參數。 - 您可以使用選用的
--client-details matrixLabel="Example matrix label"旗標為測試矩陣加上標籤,以便在 Firebase 控制台中識別及找出測試矩陣。 - 如要查看執行測試的完整指令列選項,請輸入:
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檢測設備參數為隱含。 - 如要在 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 1.1 以上版本。如要啟用,請使用 gcloud firebase test android run 並加上 --use-orchestrator 旗標。如要停用,請使用 --no-use-orchestrator 旗標。
您也可以使用上表未列出的其他旗標,控制 Test Lab 執行檢測設備測試的方式。舉例來說,您可以使用 --test-targets 旗標,測試測試 APK 使用的單一類別或類別方法。您也可以使用 --num-flaky-test-attempts 旗標,指定測試執行作業因任何原因失敗時,應重新嘗試執行的次數,藉此判斷失敗的測試是否確實不穩定。詳情請參閱「gcloud firebase test android run」。
檢測設備測試的程式碼涵蓋率報表
Test Lab 支援程式碼涵蓋率報表工具 EMMA 和 JaCoCo。如果已將任一工具整合至應用程式建構作業,只要執行 gcloud firebase test android run 並加上一些額外引數,即可取得 Test Lab 測試的程式碼涵蓋率報表。如果未啟用 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
Test Lab 完成測試後,請在 Google Cloud Storage 中找出程式碼涵蓋率報表:
- 在終端機中,開啟
gcloud工具在測試結果表格上方顯示的 Firebase 控制台連結。 - 按一下該連結清單中的測試執行,開啟該執行的詳細資料頁面。
- 按一下「Test results」(測試結果),前往含有該執行作業測試結果的 Cloud Storage bucket。
- 開啟
artifacts/coverage.ec即可查看程式碼涵蓋率報表。
分析測試結果
幾分鐘後,gcloud 工具會列印測試結果的基本摘要:

指令列測試執行的輸出內容也包含查看測試結果的連結。如要進一步瞭解如何解讀這些結果,請參閱「分析 Firebase Test Lab for Android 結果」。
使用 Robo 測試自訂登入和文字輸入
除非您使用 --no-auto-google-login 參數,否則 Robo 測試會自動完成使用 Google 帳戶驗證的登入畫面。此外,檢索器也能使用您提供的測試帳戶憑證,完成自訂登入畫面。您也可以使用這個參數,為應用程式使用的其他文字欄位提供自訂輸入文字。
如要填寫應用程式中的文字欄位,請使用 --robo-directives 參數,並提供以半形逗號分隔的 key-value 配對清單,其中 key 是目標 UI 元素的 Android 資源名稱,value 則是文字字串。您也可以使用這個旗標,指示 Robo 忽略特定 UI 元素 (例如「登出」按鈕)。系統支援 EditText 欄位,但不支援 WebView UI 元素中的文字欄位。
舉例來說,您可以使用下列參數自訂登入:
--robo-directives username_resource=username,password_resource=password
可用的指令和旗標
Test Lab gcloud CLI 提供多個指令和旗標,可讓您執行不同規格的測試:
Android Test Orchestrator 旗標: 用於啟用 Orchestrator 的旗標,這項工具可讓您在應用程式叫用
Instrumentation時,個別執行每項測試。Test Lab 一律會執行最新版本的 Orchestrator。遊戲迴圈測試旗標:一組設定旗標,可啟用及控制「展示模式」,模擬遊戲應用程式中的玩家動作。進一步瞭解如何使用 Test Lab 執行遊戲迴圈測試。
Uniform Sharding 旗標 (Beta 版): 這個旗標可指定要將測試案例平均分配到多少個 shard。這些 shard 會在不同裝置上平行執行。
手動資料分割旗標 (Beta 版):這個旗標會指定要在資料分割 (一組測試案例) 中執行的一組套件、類別和/或測試案例。在不同裝置上並行執行。
網路流量設定檔旗標 (Beta 版):這個旗標會指定測試在實體裝置上使用的網路設定檔。網路設定檔會模擬各種網路狀況,讓您在不穩定或無法預測的網路上測試應用程式效能。
使用 Test Lab 編寫 gcloud 指令碼
您可以使用殼層指令碼或批次檔,自動執行原本要透過 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
指令碼結束代碼
Test Lab 提供多個結束代碼,可協助您進一步瞭解使用指令碼或批次檔案執行的測試結果。
Test Lab 的指令碼結束代碼
| 結束代碼 | 附註 |
|---|---|
| 0 | 所有測試執行作業均已通過。 |
| 1 | 發生一般錯誤。可能的原因包括:檔案名稱不存在或發生 HTTP/網路錯誤。 |
| 2 | 提供不明指令或引數,因此測試已結束。 |
| 10 | 測試執行作業中有一或多個測試案例 (測試的類別或類別方法) 未通過。 |
| 15 | 發生未預期的錯誤,因此 Firebase Test Lab 無法判斷測試矩陣是否通過。 |
| 18 | 測試維度不相容,因此不支援這項測試執行的測試環境。如果所選裝置類型不支援所選 Android API 級別,就可能發生這項錯誤。 |
| 19 | 使用者已取消測試矩陣。 |
| 20 | 發生測試基礎架構錯誤。 |