本指南說明如何使用 gcloud 指令列介面執行 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-iphoneosYOUR_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
如要授權推送通知要求,使用者可以搭配私密簽署金鑰、金鑰 ID - C7FD9DJAA8 和團隊 ID - 9CKCGNNUQN,建立 JSON Web Token。產生的權杖有效期限為一小時,每 60 分鐘需要重新整理一次。如要進一步瞭解如何建立與 APNs 的權杖式連線,請參閱 這篇文章。
應用程式群組應用程式群組 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:調查測試結果
測試開始後,您會收到「測試結果」頁面的連結。測試可能需要幾分鐘才能完成,具體時間取決於您選取的不同設定數量,以及為測試設定的測試逾時時間長度。測試執行完畢後,您可以查看測試結果。如要進一步瞭解如何解讀測試結果,請參閱「分析 Firebase Test Lab 結果」。
後續步驟
請參閱 Google Cloud SDK 說明文件,瞭解正式版或 Beta 版的測試選項。