使用 Google Cloud CLI 進行測試

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

步驟 1:設定本機 Google Cloud SDK 環境

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

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

步驟 2:執行測試

執行 XCTest

  1. 執行下列指令,上傳測試的 .zip 檔案 ( 尚未打包應用程式,請參見 封裝 XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. 選擇測試維度。

    Test Lab 可讓您在各種 iOS 版本、裝置和螢幕上執行測試 方向和語言代碼這些設定稱為 測試維度。如要查看每個維度的選項 (舉例來說,裝置的 iOS 版本最好使用支援的 Xcode 版本), modelsversionslocalesdimension

    gcloud firebase test ios dimension list

    螢幕方向比較簡單,因為唯一的選項是 portraitlandscape

    瀏覽測試維度清單,然後選取幾種您想要使用的組合 執行測試請前往定價方案頁面,查看 單日可執行的組合數量上限。

  3. 選擇一組測試維度後,即可讓 Test Lab 執行 測試使用 firebase test ios run 指令。對於每項 您想要測試的測試維度組合,請加上獨立的 --device 標記:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    您的測試可能會失敗是因為 以及 Test Lab 使用的預設 Xcode 版本。 如要指定測試支援的 Xcode 版本,請使用 --xcode-version 標記:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    為了協助您找出並找出測試矩陣, Firebase 控制台,您可以選擇使用 --client-details matrixLabel="<label>" 旗標:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

測試特殊授權

如要測試需要明確應用程式 ID 的授權,做法如下: 設定 --test-special-entitlements 旗標。Test Lab 使用新的 bundle-ID 重新簽署應用程式,以便支援 授權,因此請確認 ZIP 檔案中不含任何資源 直接參照應用程式的軟體包 ID。

支援的授權:
  1. 推播通知 apns-environment
  2. 個人 VPN com.apple.developer.networking.vpn.api
推播通知

如要授權推播通知要求,使用者可以建立 JSON 網路 取得符記 簽署金鑰 以及金鑰 ID:C7FD9DJAA8 和團隊 ID: 9CKCGNNUQN。產生的權杖有效期限 且每 60 分鐘重新整理一次。閱讀更多 建立和 APN 的權杖式連線。

應用程式群組

應用程式群組 ID 普遍不會重複。這表示當我們 重新簽署使用者應用程式,我們只能使用 。如果測試 測試就會失敗

執行遊戲迴圈測試

執行 gcloud beta firebase test ios run 指令,並使用下列指令 設定執行作業的旗標:

遊戲迴圈測試旗標
--type

必要:指定要執行的 iOS 測試類型。您可以輸入 測試類型 xctest (預設) 或 game-loop

--app

必要:應用程式 IPA 檔案的絕對路徑 (GCS 或檔案系統)。 此標記只有在執行遊戲迴圈測試時才會生效。

--scenario-numbers

您想在應用程式中執行的迴圈 (即情境)。 您可以輸入一個迴圈、清單/迴圈,或是範圍迴圈。預設迴圈為 1。

舉例來說,--scenario-numbers=1-3,5 會執行迴圈 1、2、3 和 5。

--device-model

要執行測試的實體裝置 (查看可用的裝置 可以使用)。

--timeout

測試的執行時間上限。您可以輸入整數 以秒數或列舉/列舉的方式呈現 做為較長的時間單位

例如:

  • --timeout=200 會在測試執行結果達到 200 以下時強制終止測試 秒內請求驗證碼。
  • --timeout=1h 會在執行一小時後強制終止測試。

舉例來說,下列指令會執行會執行迴圈的遊戲迴圈測試 1、4、6、7 和 8:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

如要進一步瞭解 gcloud CLI,請參閱 參考說明文件

步驟 3 (選用):自動執行日後建立的測試

使用 Test Lab 編寫 gcloud 指令

您可以使用殼層指令碼或批次檔案,自動執行行動應用程式測試指令 否則就必須使用 gcloud 指令列執行這個範例 bash 指令碼會執行逾時的 XCTest,並在 2 分鐘內回報 已完成:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

指令碼結束代碼

Test Lab 提供多個結束代碼,可協助您進一步瞭解 使用指令碼或批次檔案執行的測試結果。

結束代碼 附註
0 已通過所有測試執行作業。
1 發生一般錯誤。可能的原因包括:檔案名稱 不存在或 HTTP/網路錯誤。
2 測試結束,因為提供了未知的指令或引數。
10 測試中的一或多個測試案例 (測試的類別或類別方法) 未結束執行作業。
15 Firebase Test Lab 無法判斷測試矩陣是否通過 失敗,因為發生未預期的錯誤。
19 使用者已取消測試矩陣。
20 發生測試基礎架構錯誤。

步驟 4:調查測試結果

測試開始後,您會收到「測試結果」頁面的連結。測試 需要幾分鐘的執行時間,視您測試容器的 以及為 測試。測試執行完畢後,您可以查看測試結果。詳情請見 詳情請參閱分析 Firebase Test Lab 結果。 說明如何解讀測試結果

下一步

閱讀 Google Cloud SDK 說明文件,瞭解有哪些測試選項 正式發布Beta 版