本指南說明如何使用 gcloud CLI 執行 XCTest 或遊戲迴圈測試。
步驟 1:設定本機 Google Cloud SDK 環境
- 下載 Google Cloud SDK
- 請確認安裝的是最新版本,且包含
gcloud firebase指令:gcloud components update - 使用 Google 帳戶登入 gcloud CLI:
gcloud auth login - 在 gcloud 中設定 Firebase 專案,其中 PROJECT_ID 是 Firebase 專案的 ID:
gcloud config set project PROJECT_ID
包括 gcloud CLI 工具。
步驟 2:執行測試
執行 XCTest
執行下列指令,上傳測試的 .zip 檔案 (如果您尚未封裝應用程式,請參閱「封裝 XCTest」):
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
選擇測試維度。
Test Lab 可讓您在各種 iOS 版本、裝置、螢幕方向和語言代碼上執行測試。這些設定稱為測試的「測試維度」。如要查看各維度的選項 (例如裝置 iOS 版本支援的 Xcode 版本),請在下列指令中將
dimension替換為models、versions或locales:gcloud firebase test ios dimension list
螢幕方向較為簡單,因為只有
portrait和landscape兩個選項。查看測試維度清單,然後選取幾個要執行測試的組合。請前往定價方案,查看每天可執行的組合數量上限。
選擇一組測試維度後,您可以使用
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。
- 推播通知
apns-environment - 個人 VPN
com.apple.developer.networking.vpn.api
如要授權推播通知要求,使用者可以建立 JSON 網頁權杖,方法是使用私密簽署金鑰,以及金鑰 ID C7FD9DJAA8 和團隊 ID 9CKCGNNUQN。產生的權杖有效期限為一小時,且每 60 分鐘必須更新一次。進一步瞭解如何建立與 APN 的權杖連線
應用程式群組應用程式群組 ID 具有通用唯一性。也就是說,當我們重新簽署使用者應用程式時,只能使用與 Test Lab 開發人員帳戶相關聯的應用程式群組 ID。如果測試依賴應用程式群組,測試就會失敗。
執行遊戲迴圈測試
執行 gcloud beta firebase test ios run 指令,並使用下列旗標設定執行作業:
| 遊戲迴圈測試旗標 | |
|---|---|
--type
|
必要:指定要執行的 iOS 測試類型。您可以輸入測試類型 |
--app
|
必要:應用程式 IPA 檔案的絕對路徑 (GCS 或檔案系統)。這個旗標僅適用於執行遊戲迴圈測試。 |
--scenario-numbers
|
您要在應用程式中執行的迴圈 (又稱為情境)。您可以輸入一個迴圈、迴圈清單或迴圈範圍。預設循環次數為 1。
舉例來說, |
--device-model
|
要執行測試的實體裝置 (瞭解可使用的裝置)。 |
--timeout
|
測試執行的時間長度上限。您可以輸入整數來代表時間長度 (以秒為單位),也可以輸入整數和列舉,以較長的時間單位代表時間長度。 例如:
|
舉例來說,下列指令會執行遊戲迴圈測試,在 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:調查測試結果
測試開始後,您會收到「Test Results」(測試結果) 頁面的連結。測試可能需要幾分鐘才能執行完畢,具體時間取決於您選取的不同設定數量,以及為測試設定的測試逾時時間長度。測試執行完畢後,您可以查看測試結果。請參閱「分析 Firebase Test Lab 結果」,進一步瞭解如何解讀測試結果。
下一步
請參閱 Google Cloud SDK 說明文件,瞭解正式發布或Beta 版的測試選項。