iOS 裝置的 Developer Device Platform 裝置執行

本指南說明如何使用 gcloud beta device-run CLI 執行 iOS XCTest,並在 Google Cloud 控制台中查看結果。假設您已有 Google Cloud 帳戶和專案。

如要使用 device-run CLI,您必須提供專案 ID。 Google Cloud如需指令摘要,請參閱 gcloud beta device-run

事前準備

這些步驟假設您已完成下列事項:

  1. 建立專案。 Google Cloud
  2. 按照快速入門導覽課程設定 Developer Device Platform。
  3. 在終端機中透過 gcloud 進行驗證。
  4. 查看裝置執行總覽,瞭解一般資訊。
  5. 編譯測試並將其封裝為 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 中開啟專案,然後建構應用程式和測試目標以進行測試:

  1. 請確認 Xcode 中已為應用程式目標和測試執行器目標正確設定程式碼簽署 (指定有效的佈建設定檔和開發人員身分)。
  2. 使用 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 驗證套件簽章:

  1. 驗證應用程式套件:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app
    

    預期輸出內容:YourApp.app: valid on disk

  2. 如果執行 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 (有效範圍為 1m1h,預設為 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

後續步驟

接下來,請尋找及分析記錄