開發人員裝置平台裝置執行

本指南說明如何使用 gcloud beta device-runCLI 執行 Android 檢測設備測試,並在 Google Cloud 控制台中查看結果。本文假設您已有 Google Cloud 帳戶和專案。

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

事前準備

這些步驟假設您已建立 Google Cloud 專案、完成「開發人員裝置平台快速入門」指南中的設定步驟,並在終端機中透過 gcloud 進行驗證。

此外,您也需要準備好要執行的 Android 檢測設備測試。 如需相關指引,請參閱「建構插樁測試」。

此外,您應該已識別要執行工作負載的裝置 ID。如需操作說明,請參閱「裝置目錄」。

執行測試

現在您已知道可用於測試應用程式的裝置 ID,可以透過 gcloud beta device-run sessions submit instrumentation 指令和 --device 標記指定裝置,執行插樁測試。

如要執行測試,請發出類似下列的指令,但須使用您自己的裝置 ID 和測試路徑:

gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--apps /path/to/app.apk \
--test /path/to/test.apk

工作結果報告資料夾位於 Cloud Storage 路徑,例如 gs://<your_project_id>/automation/sessions/session-id/。查看連結的測試輸出內容,類似於: https://console.cloud.google.com/storage/browser/your_project_id/automation/sessions/session-id/

設定測試執行

執行測試後,請瞭解一些設定選項:

  • 如要在多部裝置上執行相同測試,請提供 --device 標記,並以半形逗號分隔多個裝置 ID (例如 --device shiba-34,tokay-36),或提供多個 --device 標記,每個標記指定不同的裝置 ID (例如 --device shiba-34 --device tokay-36)。
  • 您可以使用 --apps=path1,path2,...,path_n 標記,視需要指定要在執行測試前安裝的一或多個 APK。系統會按照您指定的順序安裝這些應用程式。
  • 您必須使用 --test 標記指定測試 APK。
  • 使用 --apps--test 旗標指定本機路徑時,每次執行指令,Google Cloud CLI CLI 都會自動將該路徑複製到 Cloud Storage 儲存空間的 gs://my-project-id/automation/inputs/date_time_four_chars_suffix/ 下。
  • 上傳大型 APK 可能需要一段時間,因此您可以直接使用 APK 的 Cloud Storage gs:// 路徑參照 APK,節省上傳時間。

根據預設,sessions submit instrumentation 指令會封鎖工作階段結果,也就是等待測試執行完畢,並輸出類似下列內容的結果:

Using the default Cloud Storage bucket [gs://<my-project-id>] for input and result files. Will create the bucket if it does not exist.
Uploading [app.apk].
Uploading [test.apk].

Initiated long-running operation [operation-number] to create session.
Creating session [session-id] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/<my-project-id>/automation/sessions/session-id/].
Waiting for session [session-id] to complete....done.

Session [session-id] finished with result [FAILED].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   all             FAILED: 2 test cases failed, 5 passed

如要非同步執行指令,請加入 --async 旗標。這樣一來,指令就能在將檔案上傳至 Cloud Storage 並列印作業 ID 和工作階段 ID 後立即結束。您可以使用作業等待指令和作業 ID 等待執行作業。這項作業會遭到封鎖,直到工作完成為止:

gcloud beta device-run operations wait your_operation_id

使用分片

如要在持續整合和持續推送軟體更新 (CI/CD) 工作流程中納入開發人員裝置平台,請考慮將測試分片。測試資料分割會將一組測試分成多個子群組 (資料分割),這些子群組會個別執行。開發人員裝置平台會使用多部裝置,自動平行執行每個分片,並在較短時間內完成整組測試。

分片選項

如果作業只有少量測試案例,或所有測試案例的總執行時間不長,則不必使用分片。如果您有大量測試案例,或所有測試案例的總執行時間很長,建議使用分片。

開發人員裝置平台支援智慧和統一分片。決定如何將測試分片時,請考慮下列選項:

  • 如果所有測試案例所需時間相近,請使用統一分片,將所有測試案例分成 n 片。

  • 如果不同測試案例的執行時間差異很大,請使用智慧分片。開發人員裝置平台會使用歷來測試執行時間建立不同的分片,並嘗試在類似的時間內完成所有分片。

統一分片

如要使用一致分片將測試分片,請在 sessions submit instrumentation 指令中加入 --sharding-option=uniform--uniform-sharding-count= 標記,如下所示:

gcloud beta device-run sessions submit instrumentation \
    --test path/to/test.apk \
 --device shiba-34,tokay-36 \
    --sharding-option=uniform \
    --uniform-sharding-count=2

您應該會看到指出 Job status: 2 running 的輸出內容。這項服務會為每部裝置建立一個工作,由於這兩項工作的輸入內容相同,因此服務會集中驗證,只執行一次。

指令完成後,最終輸出內容會分別列出這兩項工作:

JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   PASSED
job-001   execution-000   PASSED

智慧分片

如要使用智慧分片功能將測試分片,請在 sessions submit instrumentation 指令中加入 --sharding-option=smart--smart-sharding-max-shard-count=--smart-sharding-target-duration= (以分鐘或 1 小時為單位) 和 --smart-sharding-record-name= 旗標,如下所示:

gcloud beta device-run sessions submit instrumentation \
    --test path/to/test.apk \
    --device shiba-34,shiba-35,tokay-36 \
    --sharding-option=smart \
    --smart-sharding-max-shard-count=3 \
    --smart-sharding-target-duration=5m \
    --smart-sharding-record-name=test.yaml

您應該會看到最終輸出內容,指出已執行三項工作:

Session [session-3cd0564a] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   PASSED
job-001   execution-000   PASSED
job-002   execution-000   PASSED

以下摘要說明這裡使用的智慧分片旗標:

  • --smart-sharding-max-shard-count=SMART_SHARDING_MAX_SHARD_COUNT:指定智慧分片要建立的分片數量上限。如果未設定或設為 0,系統會使用系統定義的上限。實體裝置的有效範圍為 0 至 20,虛擬裝置則為 0 至 200。

  • --smart-sharding-target-duration=SMART_SHARDING_TARGET_DURATION - Specify the targeted execution time (e.g., 2m, 10m, 1h) per shard for smart sharding. 有效範圍為 2 分鐘至 1 小時。如果 --sharding-option=smart,則為必要屬性。

  • --smart-sharding-record-name=SMART_SHARDING_RECORD_NAME:指定智慧分片記錄檔的名稱,不含副檔名。當 --sharding-option=smart 時為必填。這個 YAML 檔案位於 smart-sharding/ 目錄下,由 --bucket-name 指定的 Google CloudStorage bucket 中。如果檔案不存在,系統會自動建立;否則,檔案內容會在工作階段完成時更新。

探索及管理測試執行

無論是 sessions submit instrumentation 指令的非同步或同步模式,您都可以在執行期間使用 sessions describe 指令查詢工作狀態,或在工作完成後取得結果:

gcloud beta device-run sessions describe <session_id>

輸出內容會匯總測試結果,並連結至 Google Cloud 控制台中的結果。 例如:

Session [session-id] finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/your_project_id-devicerun/automation/sessions/session-id/].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   all             FAILED: 2 test cases failed, 5 passed

使用下列指令列出所有正在執行和已完成的工作階段:

gcloud beta device-run sessions list

您會收到輸出內容,其中包含專案中的工作階段清單,類似於:

SESSION_ID                                    START_TIME                STATE
session-4825e153                              2026-07-28T16:38:43.155Z  DONE
session-813ca602                              2026-07-28T22:40:32.415Z  DONE
session-67cd0570                              2026-07-16T08:25:55.474Z  DONE
session-17cc299c                              2026-07-14T14:31:33.649Z  DONE
session-911d0763                              2026-07-09T00:39:02.051Z  DONE
session-4e943fea                              2026-07-15T23:08:32.252Z  DONE
session-0132e458                              2026-08-20T18:33:19.751Z  DONE
session-1077f07b                              2026-07-28T22:35:43.848Z  DONE
session-71b054c6                              2026-07-15T01:15:41.643Z  DONE
session-4f8b2e45                              2026-08-06T23:11:56.161Z  DONE

sessions list 指令支援所有標準 gcloud 旗標選項。例如:

gcloud beta device-run sessions list --limit 5

這會產生類似下列的結果:

SESSION_ID                            START_TIME                STATE
session-4825e153                      2026-07-28T16:38:43.155Z  DONE
session-813ca602                      2026-07-28T22:40:32.415Z  DONE
93ec2df2-d5bf-4c36-b7f7-c2a4fb0dc3ce  2026-07-03T05:10:58.015Z  DONE
session-67cd0570                      2026-07-16T08:25:55.474Z  DONE
session-17cc299c                      2026-07-14T14:31:33.649Z  DONE

如要找出所有執行中的工作階段,請執行下列指令:

gcloud beta device-run sessions list --filter RUNNING

假設您有正在執行的工作階段,就會看到類似以下的結果:

SESSION_ID        START_TIME  STATE
session-d7ff8b81              RUNNING

否則你會收到 Listed 0 items.

如要取消執行中的工作階段,請使用工作階段 ID 執行下列指令:

gcloud beta device-run sessions cancel your_session_id

指令會立即傳回,因為工作階段只會標示為取消。 取消作業會在後端以非同步方式執行。

如果工作階段已結束,系統只會列印目前狀態。 要求取消已完成的課程並非錯誤。

後續步驟

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