使用 Google Cloud CLI 進行測試

本指南介紹如何使用 gcloud CLI 執行 XCTest 或遊戲循環測試。

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

  1. 下載Google雲端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. 選擇您的測試尺寸。

    測試實驗室可讓您在各種 iOS 版本、裝置、螢幕方向和區域設定上執行測試。這些配置稱為測試的測試尺寸。若要查看每個維度的選項(例如,裝置 iOS 版本支援的 Xcode 版本),請在以下命令中以modelsversionslocales取代dimension

    gcloud firebase test ios dimension list

    螢幕方向稍微簡單一些,因為它唯一的選項是portraitlandscape

    查看測試維度列表,然後選擇您想要執行測試的一些組合。請造訪定價計劃,查看每天可以運行的最大組合數。

  3. 選擇一組測試維度後,您可以讓測試實驗室使用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...

    由於建置測試所使用的 Xcode 版本與測試實驗室使用的預設 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標誌來執行此操作。測試實驗室使用新的捆綁包識別碼對應用程式進行重新簽名,以支援特殊權利,因此請確保 zip 檔案中沒有包含對應用程式捆綁包識別碼的直接引用的資源。

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

為了授權推播通知請求,使用者可以使用私有簽署金鑰以及金鑰 ID - C7FD9DJAA8和團隊 ID - 9CKCGNNUQN建立 JSON Web 令牌。產生的令牌有效期為一小時,需要每 60 分鐘刷新一次。了解有關建立基於令牌的 APN 連線的更多資訊。

應用組

應用程式群組 ID 是普遍唯一的。這意味著,當我們重新簽署使用者應用程式時,我們只能使用與測試實驗室開發人員帳戶關聯的應用程式群組 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強制測試在運行長達一小時時終止。

例如,以下指令執行遊戲循環測試,在 iPhone 8 Plus 上執行循環 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(可選) :自動化您建立的未來測試

使用測試實驗室編寫 gcloud 命令腳本

您可以使用 shell 腳本或批次檔來自動執行行動應用程式測試命令,否則您將使用 gcloud 命令列執行這些命令。此範例 bash 腳本運行 XCTest,逾時時間為兩分鐘,並報告測試運行是否成功完成:

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

腳本退出程式碼

測試實驗室提供了多個退出程式碼,您可以使用它們來更好地了解使用腳本或批次檔案執行的測試的結果。

退出代碼筆記
0所有測試執行均已通過。
1發生了一般故障。可能的原因包括:檔案名稱不存在或 HTTP/網路錯誤。
2由於提供了未知的命令或參數,測試已退出。
10測試執行中的一個或多個測試案例(測試的類別或類別方法)未通過。
15由於發生意外錯誤,Firebase 測試實驗室無法確定測試矩陣是通過還是失敗。
19 號測試矩陣已被使用者取消。
20發生測試基礎架構錯誤。

第 4 步:調查測試結果

測試開始後,您會收到一個指向「測試結果」頁面的連結。測試可能需要幾分鐘的時間才能運行,具體取決於您選擇的不同配置的數量以及為測試設定的測試逾時持續時間。測試運行後,您可以查看測試結果。請參閱分析 Firebase 測試實驗室結果,以詳細了解如何解釋測試結果。

下一步

閱讀 Google Cloud SDK 文檔,探索一般可用測試版的測試選項。