本指南說明如何使用 gcloud beta
device-run CLI 執行 iOS XCTest,並在 Google Cloud 控制台中查看結果。假設您已有 Google Cloud 帳戶和專案。
如要使用 device-run CLI,您必須提供專案 ID。 Google Cloud如需指令摘要,請參閱 gcloud beta device-run。
事前準備
這些步驟假設您已完成下列事項:
- 建立專案。 Google Cloud
- 按照快速入門導覽課程設定 Developer Device Platform。
- 在終端機中透過
gcloud進行驗證。 - 查看裝置執行總覽,瞭解一般資訊。
- 編譯測試並將其封裝為 ZIP 檔案。
步驟 1:選擇裝置類型
使用 device-run CLI,即可在可用的實體裝置上執行 iOS 測試。如要查看可用裝置的完整清單,請前往互動式裝置目錄,或執行下列指令:
gcloud beta device-run devices list
輸出內容範例:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
請參閱裝置目錄,瞭解如何篩選這份清單。如要指定特定裝置執行測試,請使用對應的 ID (例如 iphonese3-18-4) 在提交指令中。
步驟 2:準備及封裝 XCTest
執行測試前,您必須先編譯測試、確保測試已簽署、驗證程式碼簽章,並將產生的構件封裝成 ZIP 檔案,其中包含 .xctestrun 設定和應用程式測試套件。
1. 為實體 iOS 裝置建構測試
在 Xcode 中開啟專案,然後建構應用程式和測試目標以進行測試:
- 請確認 Xcode 中已為應用程式目標和測試執行器目標正確設定程式碼簽署 (指定有效的佈建設定檔和開發人員身分)。
使用 Xcode (依序點選「Product」>「Build For」>「Testing」) 或
xcodebuild建構測試版本。工作區:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"如果是獨立專案:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
這會在 ./build/Build/Products 下方產生建構產品:
2. 驗證建構產品和簽章
建構完成後,請確認應用程式、執行器和 .xctestrun 資訊清單是否已在 ./build/Build/Products/ 下產生。如果是在本機簽署,可以使用 codesign 驗證套件簽章:
驗證應用程式套件:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app預期輸出內容:
YourApp.app: valid on disk如果執行 XCUITest,請一併驗證測試執行器套件:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app預期輸出內容:
YourApp-Runner.app: valid on disk
3. 建立 ZIP 封存檔
將 Debug-iphoneos 目錄和建構輸出產品資料夾中的 .xctestrun 檔案,壓縮成單一 ZIP 封存檔案。
從建構產品目錄執行下列指令:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
這會建立封裝的 MyTests.zip,可搭配 --test 旗標使用。
步驟 3:執行 XCTest
請注意,這些旗標為必填:
- 裝置:使用
--device指定裝置:--device iphonese3-18-4 - 測試:使用
--test指定測試 zip 檔案:--test ./MyTests.zip
如要執行 XCTest,請使用 gcloud beta device-run sessions submit xctest 指令。您必須提供在上一個步驟中編譯的測試 ZIP 檔案 (MyTests.zip)。
如要執行基本測試工作階段,請按照下列步驟操作:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
執行開始後,CLI 會顯示建立的工作階段 ID,以及儲存結果的 Cloud Storage 目的地:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
步驟 4:設定測試執行
您可以使用下列選用旗標自訂測試執行作業 (但至少需要一個 --device 旗標執行個體):
- 多部裝置:多次指定
--device標記,即可在多部裝置上同時執行相同測試:--device iphonese3-18-4 --device iphonese3-26-3或--device iphonese3-18-4,iphonese3-26-3 - 其他應用程式:使用
--additional-apps啟動測試前,請先安裝一或多個額外的.ipa套件:--additional-apps=/path/to/AdditionalApp.ipa - 自訂
.xctestrun檔案:使用--xctestrun-file傳遞自訂設定檔:--xctestrun-file=/path/to/CustomTests.xctestrun - 測試逾時:限制執行時間:
--xctest-timeout=10m(有效範圍為1m至1h,預設為5m)。 - 標籤:將使用者定義的中繼資料附加至工作階段:
--labels=env=staging,owner=my-team - 將檔案推送至裝置:在執行測試前,將檔案推送至應用程式資料容器:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - 從裝置提取檔案:在測試執行後,從應用程式資料容器提取檔案:
--paths-to-pull=com.example.app:/Documents/output.txt - 不穩定測試重試:設定重新執行不穩定測試的次數上限:
--flaky-test-attempts=3(預設為 1 次)。 - 自訂 Cloud Storage bucket:指定自訂 Cloud Storage bucket 做為輸入和輸出:
--bucket-name=my-custom-bucket(預設為PROJECT_ID-devicerun)。 - 上傳大型 ZIP 或 IPA 檔案可能需要一段時間,因此您可以直接使用檔案的 Cloud Storage
gs://路徑參照檔案,節省上傳時間。
步驟 5:探索及管理測試執行
您可以使用下列指令追蹤進行中的執行作業,以及管理歷來的工作階段:
- 描述工作階段:查詢工作階段的即時進度或最終結果:
gcloud beta device-run sessions describe SESSION_ID新增--full即可查看完整詳細資料,包括裝置分配情形、執行 ID 和 Cloud Storage 構件路徑。 - 列出工作階段:查看最近執行的作業:
gcloud beta device-run sessions list --limit=10 - 取消工作階段:停止執行中的測試工作階段:
gcloud beta device-run sessions cancel SESSION_ID - 取消作業:停止待處理或進行中的作業:
gcloud beta device-run operations cancel OPERATION_ID
後續步驟
接下來,請尋找及分析記錄。