開始透過 gcloud CLI 進行測試

本指南說明如何使用 gcloud CLI 執行檢測、Robo 或遊戲迴圈測試。

如需可用 gcloud 指令的完整清單 您可在 Test Lab中使用 Android 應用程式,請前往 gcloud firebase test android 的參考文件

事前準備

如果您尚未將 Firebase 新增至 Android 專案,請先完成這項操作。

步驟 1:設定 gcloud CLI

  1. 下載 Google Cloud SDK
  2. 包括 gcloud CLI 工具。

  3. 確認安裝的是最新版本:
    gcloud components update
    
  4. 使用 Google 帳戶登入 gcloud CLI:
    gcloud auth login
    
  5. 在 gcloud 中設定 Firebase 專案,其中 PROJECT_ID 是 Firebase 專案的 ID:
    gcloud config set project PROJECT_ID
    

步驟 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」欄包含日後可用於執行測試的 ID 例如裝置型號
    • OS_VERSION_ID」欄包含支援的作業系統版本 資料。

    輸出內容示例

    gcloud Firebase 測試 Android 模型清單輸出內容

  • models describe:進一步瞭解特定 Android MODEL_ID

    gcloud firebase test android models describe MODEL_ID

    輸出結果包含裝置型號的品牌、製造商、OS 版本、 支援的 API 級別、支援的應用程式二進位檔介面 (ABI), 發行日期,以及裝置為實體或虛擬。

  • versions list:取得目前可用的 OS 版本清單進行測試 下定決心

    gcloud firebase test android versions list

    您可以使用指令輸出內容的前兩個欄 (OS_VERSION_IDVERSION) 中的任一 ID,稍後針對 Android 作業系統版本執行測試。如果您未指定要測試的 Android 作業系統版本,系統會使用 TAGS 欄下所列的預設值。

    輸出內容示例

    gcloud android 版本清單

  • locales list:取得目前的語言代碼清單,以便進行測試。

    gcloud firebase test android versions list

    指令輸出的第 1 欄 (LOCALE) 包含 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 參數。
  • 如要輕鬆在 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 支援程式碼涵蓋率報表工具 EMMAJaCoCo。如果您有這兩種工具 已整合至您的應用程式版本,您就可以取得程式碼涵蓋率報表 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 完成執行測試後,請在 Google Cloud Storage 中查看程式碼涵蓋率報表:

  1. 開啟 gcloud 工具上方列印的 Firebase 控制台連結 終端機的測試結果資料表。
  2. 在連結的清單中按一下測試執行作業,即可開啟該執行作業 的詳細資料頁面。
  3. 按一下「測試結果」前往相應的 Cloud Storage 值區 執行作業的測試結果。
  4. 開啟 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

  • 遊戲迴圈測試標記:一組設定標記,可啟用及控制「示範模式」,用於模擬遊戲應用程式中的玩家動作。進一步瞭解執行中 使用 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 發生測試基礎架構錯誤。