使用 Google Cloud CLI 進行測試

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

步驟 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 版本),請將下列指令中的 dimension 替換為 modelsversionslocales

    gcloud firebase test ios dimension list

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

    查看測試維度清單,然後選取幾個您想執行測試的組合。如要瞭解每天可執行的組合數量上限,請前往定價方案

  3. 選擇一組測試維度後,即可使用 firebase test ios run 指令讓 Test Lab 執行測試。針對您要測試的每個測試維度組合,加入個別的 --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 版本與 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 會使用新的軟體包 ID 重新簽署應用程式,以便支援特殊授權,因此請確認 ZIP 檔案中沒有任何資源直接參照應用程式軟體包 ID。

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

如要授權推播通知要求,使用者可以使用私人簽署金鑰搭配金鑰 ID (C7FD9DJAA8) 和團隊 ID (9CKCGNNUQN) 來建立 JSON Web 權杖。產生的權杖在一小時內有效,且每 60 分鐘更新一次。進一步瞭解如何 建立以權杖為基礎的 APN 連線

應用程式群組

應用程式群組 ID 普遍不會重複。也就是說,在重新簽署使用者應用程式時,只能使用與 Test Lab 開發人員帳戶相關聯的應用程式群組 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 (選用):自動執行日後建立的測試

使用 Test Lab 編寫 gcloud 指令

對於原本會使用 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

指令碼結束代碼

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

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

步驟 4:調查測試結果

測試開始後,您會收到「測試結果」頁面的連結。執行測試可能需要幾分鐘的時間,視您選取的不同設定數量,以及為測試設定的測試逾時時長而定。測試執行完畢後,您可以查看測試結果。如要進一步瞭解如何解讀測試結果,請參閱「分析 Firebase Test Lab 結果」。

下一步

參閱 Google Cloud SDK 說明文件,瞭解正式發布Beta 版的測試選項。