本指南說明如何執行檢測設備、Robo 或遊戲迴圈測試 使用 gcloud CLI。
如需可用 gcloud
指令的完整清單
連結您的 Android 應用程式,請前往
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 例如裝置型號 - 「
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
您可以使用指令前兩欄的 ID 輸出內容 (
OS_VERSION_ID
和VERSION
) 以便稍後針對 Android 執行測試 OS 版本。如果您沒有指定要用於測試的 Android 作業系統版本,則 預設會使用TAGS
欄。輸出內容示例
locales list
:取得目前的語言代碼清單,以便進行測試。gcloud firebase test android versions list
輸入指令輸出內容的第一欄
LOCALE
,其中包含 ID ,您稍後可以對語言代碼進行測試。如果沒有指定 要測試的語言代碼,則使用英文做為預設語言代碼。
步驟 3:執行測試
現在,您已瞭解可用的裝置型號、語言代碼和作業系統版本
測試應用程式時,您可以使用
gcloud firebase test android run
指令和
執行 Robo 或檢測設備測試的 --device
旗標。
執行 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
指令列工具執行記事本應用程式的
Espresso
測試指定的 Android 裝置設定。使用
要在 app-debug-test-unaligned.apk
中執行測試的 instrumentation
測試類型
如下所示:
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"
- 如果有指定測試 APK,則系統會隱含
--type
檢測參數--test
。 - 為協助您在 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 Lab 執行檢測設備測試的方式
加入上方未列出的其他旗標。舉例來說,您可以使用
--test-targets
旗標用於測試用於測試的單一類別或類別方法
APK。您也可以查看測試失敗的原因,是不是真的不穩定,
不是使用 --num-flaky-test-attempts
旗標,而是指定
次測試執行一次或多個測試案例時應該重新執行
失敗。詳情請參閱 gcloud firebase test android run。
檢測設備測試的程式碼涵蓋範圍報表
Test Lab 支援程式碼涵蓋範圍報表工具
EMMA 和
JaCoCo。如果您有這兩種工具
已整合至您的應用程式版本,您就可以取得程式碼涵蓋率報表
Test Lab 測試,方法是使用 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 測試時產生程式碼涵蓋率報表 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 執行測試完畢後,找出程式碼涵蓋率報表 :
- 開啟
gcloud
工具上方列印的 Firebase 控制台連結 終端機的測試結果資料表。 - 在連結的清單中按一下測試執行作業,即可開啟該執行作業 的詳細資料頁面。
- 按一下「測試結果」前往相應的 Cloud Storage 值區。 執行作業的測試結果。
- 開啟
artifacts/coverage.ec
即可查看程式碼涵蓋率報表。
分析測試結果
幾分鐘後,系統就會顯示測試結果的基本摘要 gcloud 工具:
指令列測試執行作業的輸出內容還包含查看測試的連結 也就是預測結果如要進一步瞭解如何解讀這些結果,請參閱 分析適用於 Android 結果的 Firebase Test Lab。
使用 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
可用的指令和旗標
Test Lab gcloud CLI 提供多種指令和標記 並以不同規格執行測試
Android Test Orchestrator 標記: 啟用 Orchestrator 的旗標 這項工具可用來執行 叫用
Instrumentation
自己的應用程式測試。Test Lab 一律為 就必須執行最新版的 Orchestrator遊戲迴圈測試標記: 一組設定旗標,用於啟用及控管「示範」 mode (模式)模擬玩家在遊戲應用程式中執行的動作。進一步瞭解執行中 透過 Test Lab 進行遊戲迴圈測試。
統一資料分割標記 (Beta 版): 此標記可指定您想要平均使用的資料分割數量 發布測試案例資料分割會在不同裝置上同時執行。
手動資料分割標記 (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 | 發生測試基礎架構錯誤。 |