本指南介绍了如何使用 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 都会自动将其复制到 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 \
--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=(以分钟为单位或 1h)和 --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
您应该会看到最终输出,其中显示运行了 3 个作业:
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- 为智能分片指定每个分片的预期执行时间(例如 2 分钟、10 分钟、1 小时)。有效范围为 2 分钟到 1 小时。当值为--sharding-option=smart时,必须设置此参数。--smart-sharding-record-name=SMART_SHARDING_RECORD_NAME- 指定智能分片记录文件的名称,不包括文件扩展名。当 --sharding-option=smart 时,此参数为必需参数。此 YAML 文件位于--bucket-name指定的 Google Cloud存储桶中的smart-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
后续步骤
接下来,我们将查找和分析日志。