使用 Google Cloud CLI 進行測試

本指南說明如何使用 gcloud 指令列介面執行 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 Token。產生的權杖有效期限為一小時,每 60 分鐘需要重新整理一次。如要進一步瞭解如何建立與 APNs 的權杖式連線,請參閱 這篇文章。

應用程式群組

應用程式群組 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 提供多種結束代碼,可協助您進一步瞭解使用指令碼或批次檔執行的測試結果。

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

步驟 4:調查測試結果

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

下一步

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