使用 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 版本),請在以下命令中用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=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"

測試特殊權利

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

推送通知

為了授權推送通知請求,用戶可以使用私有簽名密鑰以及密鑰 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 文檔,探索一般可用測試版的測試選項。