Catch up on highlights from Firebase at Google I/O 2023. Learn more

使用 Google Cloud CLI 進行測試

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

第 1 步:配置本地 Google Cloud SDK 環境

  1. 下載谷歌云 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 版本),請在以下命令中將dimension替換為modelsversionslocales設置:

    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=11.3

    為了幫助您在 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"

測試特殊權利

要測試需要顯式 App ID 的權利,您可以通過設置--test-special-entitlements標誌來實現。測試實驗室使用新的捆綁標識符重新簽署應用程序以支持特殊權利,因此請確保您的 zip 文件中沒有包含對應用程序捆綁 ID 的直接引用的資源。

推送通知

為了授權推送通知請求,用戶可以使用私有簽名密鑰以及密鑰 ID - C7FD9DJAA8和團隊 ID - 9CKCGNNUQN創建 JSON Web 令牌。生成的令牌有效期為一小時,需要每 60 分鐘刷新一次。閱讀有關建立與 APNs 的基於令牌的連接的更多信息。

應用組

應用程序組 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 文檔以探索普遍可用或處於測試階段的測試選項。