Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

使用 gcloud 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 版本),請在以下命令中替換modelsversionslocalesdimension

    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

測試特殊權利

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

推送通知

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

運行遊戲循環測試

運行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 的更多信息,請參閱參考文檔

第 4 步(可選) :自動化您構建的未來測試

使用測試實驗室編寫 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發生測試基礎架構錯誤。

第 5 步:調查測試結果

測試開始時,您會收到一個指向“測試結果”頁面的鏈接。測試可能需要幾分鐘才能運行,具體取決於您選擇的不同配置的數量以及為測試設置的測試超時持續時間。測試運行後,您可以查看測試結果。請參閱分析 Firebase 測試實驗室結果以了解有關如何解釋測試結果的更多信息。

下一步

閱讀 Google Cloud SDK 文檔以探索普遍可用beta 的測試選項。