本指南說明如何使用 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
指令會立即傳回,因為工作階段只會標示為取消。 取消作業會在後端以非同步方式執行。
如果工作階段已結束,系統只會列印目前狀態。 要求取消已完成的課程並非錯誤。
後續步驟
接下來,請尋找及分析記錄。