开发者设备平台设备运行

本指南介绍了如何使用 gcloud beta device-run CLI 运行 Android 插桩测试,以及如何在 Google Cloud 控制台中查找结果。本指南 假设您拥有一个 Google Cloud 账号和项目。

如需使用此 Google Cloud CLI,您需要提供 Google Cloud 项目 ID。

准备工作

以下步骤假设您已创建 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 标志 ,例如 --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 后立即退出。您可以使用 operations wait 命令和操作 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 \
    --device 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 \
    --device shiba-35 \
    --device 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-max-shard-count: 指定要创建的分片数上限。在 --device 标志中指定的设备数必须小于或等于此值。

  • --smart-sharding-target-duration=SMART_SHARDING_TARGET_DURATION - 指定智能分片中每个分片的目标执行时间(例如 2m、10m、1h)。有效范围为 2m 到 1h。当 --sharding-option=smart 时,此标志是必需的。

  • --smart-sharding-record-name=SMART_SHARDING_RECORD_NAME - 指定智能分片记录文件的名称 ,不包括文件扩展名。当 --sharding-option=smart 时,此标志是必需的。此 YAML 文件位于 Google Cloud 下指定的存储桶中的 --bucket-namesmart-sharding/ 目录下。如果该文件不存在,系统会自动创建;否则,其内容会在会话完成后更新。

探索和管理测试运行

对于 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

如需取消正在运行的会话,请使用您的会话 ID 运行以下命令:

gcloud beta device-run sessions cancel your_session_id

后续步骤

接下来,查找和分析日志