本指南介紹如何使用gcloud CLI運行檢測、Robo 或遊戲循環測試。
有關可在測試實驗室中與 Android 應用程序一起使用的gcloud
命令的完整列表,請訪問gcloud firebase test android
的參考文檔。
在你開始之前
如果您還沒有,請將 Firebase 添加到您的 Android 項目中。
第 1 步:設置 gcloud CLI
- 下載谷歌云 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 命令查看可用於測試的測試設備和區域設置。
作為一個選項,您還可以下載示例記事本應用程序以立即開始運行命令。使用位於NotePad/app/build/outputs/apk/
中的二進製文件app-debug-unaligned.apk
和儀器測試文件app-debug-test-unaligned.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 工具會打印出測試結果的基本摘要:
命令行測試運行的輸出還包括一個用於查看測試結果的鏈接。要了解有關如何解釋這些結果的更多信息,請參閱分析 Android 結果的 Firebase 測試實驗室。
使用 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 的標誌,Orchestrator是一種工具,允許您在自己的
Instrumentation
調用中運行應用程序的每個測試。測試實驗室始終運行最新版本的 Orchestrator。遊戲循環測試標誌:一組配置標誌,用於啟用和控制“演示模式”以模擬玩家在遊戲應用程序中的操作。了解有關使用測試實驗室運行遊戲循環測試的更多信息。
Uniform Sharding flag (in beta) :指定要將測試用例均勻分佈到的分片數量的標誌。分片在不同的設備上並行運行。
手動分片標誌(測試版) :指定一組包、類和/或測試用例以在分片(一組測試用例)中運行的標誌。分片在不同的設備上並行運行。
Network traffic profiles flag (in beta) :一個標誌,指定您的測試使用物理設備的網絡配置文件。網絡配置文件模擬各種網絡條件,使您可以在不可靠或不可預測的網絡上測試您的應用程序的性能。
使用測試實驗室編寫 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 | 發生測試基礎結構錯誤。 |