- 资源:TestMatrix
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ClientInfo
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ClientInfoDetail
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- TestSpecification
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 测试设置
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- DeviceFile
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ObbFile
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 文件引用
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 常规文件
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- APK
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 账号
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- GoogleAuto
- 环境变量
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- SystraceSetup
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosTestSetup
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosDeviceFile
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AndroidInstrumentationTest 接口中的方法
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AppBundle
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- OrchestratorOption
- ShardingOption
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- UniformSharding(统一分片)
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 手动分片
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- TestTargetsForShard
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 智能分片
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AndroidRoboTest
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- RoboDirective
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- RoboActionType
- RoboMode
- RoboStartingIntent
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- LauncherActivityIntent
- StartActivityIntent
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- NoActivityIntent
- AndroidTestLoop
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosXcTest
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosTestLoop
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosRoboTest
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 环境矩阵 (EnvironmentMatrix)
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AndroidMatrix
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AndroidDeviceList
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosDeviceList
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- IosDevice
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- TestExecution
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 分片
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 环境
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- TestState
- ToolResultsStep
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- TestDetails
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ResultStorage
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- GoogleCloudStorage
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ToolResultsHistory
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ToolResultsExecution
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- InvalidMatrixDetails
- MatrixErrorDetail
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- OutputSummary(结果摘要)
- 方法
资源:TestMatrix
TestMatrix 可捕获有关测试的所有详细信息。它包含环境配置、测试规范、测试作业以及总体状态和结果。
JSON 表示法 |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
字段 | |
---|---|
testMatrixId |
仅限输出。由服务设置的唯一 ID。 |
projectId |
测试矩阵所属的 Cloud 项目。 |
clientInfo |
对测试进行调用的客户端的相关信息。 |
testSpecification |
必需。如何运行测试。 |
environmentMatrix |
必需。执行测试的设备。 |
testExecutions[] |
仅限输出。服务为此矩阵创建的测试作业列表。 |
resultStorage |
必需。写入矩阵结果的位置。 |
state |
仅限输出。指示测试矩阵的当前进度。 |
timestamp |
仅限输出。此测试矩阵最初创建的时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
invalidMatrixDetails |
仅限输出。描述矩阵被视为无效的原因。仅适用于处于 INVALID 状态的矩阵。 |
extendedInvalidMatrixDetails[] |
仅限输出。有关矩阵被视为无效原因的详细信息。如果可以安全地执行多项检查,系统会报告这些检查,但不应对此列表的长度做任何假设。 |
flakyTestAttempts |
当 TestExecution 的一个或多个测试用例因任何原因而失败时,应重新尝试运行该 TestExecution 的次数。允许的重新运行次数上限为 10 次。 默认值为 0,表示不会重新运行。 |
outcomeSummary |
仅限输出。测试的总体结果。仅在测试矩阵状态为“FINISHED”时设置。 |
failFast |
如果为 true,则系统最多只会尝试运行一次矩阵中的每个执行/分片。不稳定的测试尝试不会受到影响。 通常,如果检测到潜在的基础架构问题,系统会尝试 2 次或更多次。 此功能适用于对延迟时间敏感的工作负载。快速失败矩阵的执行失败发生率可能会显著增加,因此支持也更为有限。 |
ClientInfo
对测试进行调用的客户端的相关信息。
JSON 表示法 |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
字段 | |
---|---|
name |
必需。客户名称,例如 gcloud。 |
clientInfoDetails[] |
客户端相关详细信息的列表。 |
ClientInfoDetail
对测试进行调用的客户端的相关详细信息的键值对。例如:{'Version', '1.0'}, {'Release Track', 'BETA'}。
JSON 表示法 |
---|
{ "key": string, "value": string } |
字段 | |
---|---|
key |
必需。客户端详细信息的键。 |
value |
必需。客户端详细信息的值。 |
TestSpecification
有关如何运行测试的说明。
JSON 表示法 |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
字段 | |
---|---|
testTimeout |
在自动取消测试作业之前允许其运行的最长时间。默认值为 5 分钟。 该时长以秒为单位,最多包含九个小数位,以“ |
disableVideoRecording |
停用录像功能。可以缩短测试延迟时间。 |
disablePerformanceMetrics |
停用效果指标记录功能。可以缩短测试延迟时间。 |
联合字段 setup 。测试设置要求。setup 只能是下列其中一项: |
|
testSetup |
针对 Android 的测试设置要求,例如引导脚本 |
iosTestSetup |
针对 iOS 的测试设置要求。 |
联合字段 test 。必需。要运行的测试的类型。test 只能是下列其中一项: |
|
androidInstrumentationTest |
Android 插桩测试。 |
androidRoboTest |
Android Robo 测试。 |
androidTestLoop |
一个带有测试循环的 Android 应用。 |
iosXcTest |
iOS XCTest(通过 .xctestrun 文件)。 |
iosTestLoop |
具有测试循环的 iOS 应用。 |
iosRoboTest |
iOS Robo 测试。 |
TestSetup
有关如何在运行测试之前设置 Android 设备的说明。
JSON 表示法 |
---|
{ "filesToPush": [ { object ( |
字段 | |
---|---|
filesToPush[] |
在开始测试之前推送到设备的文件列表。 |
directoriesToPull[] |
列出设备上要在测试结束时上传到 GCS 的目录;它们必须是 /sdcard、/storage 或 /data/local/tmp 下的绝对路径。路径名称只能包含字符 a-z A-Z 0-9 _ - 。+ 和 / 注意:系统将提供路径 /sdcard 和 /data 并将其视为隐式路径替代项。例如,如果特定设备上的 /sdcard 未映射到外部存储空间,则系统会将其替换为该设备的外部存储路径前缀。 |
initialSetupApks[] |
可选。在安装被测应用之前要安装的初始设置 APK。目前的数量上限为 100。 |
additionalApks[] |
除了直接测试的 APK 之外,还要安装的 APK。这些将在被测应用后安装。目前的数量上限为 100。 |
account |
在测试期间,设备会使用此账号登录。 |
networkProfile |
用于运行测试的网络流量配置文件。在调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。 |
environmentVariables[] |
要为测试设置的环境变量(仅适用于插桩测试)。 |
systrace |
运行的 Systrace 配置。已废弃:Systrace 使用的是已于 2020 年 1 月 1 日弃用的 Python 2。Cloud Testing API 不再支持 Systrace,并且结果中不会提供 Systrace 文件。 |
dontAutograntPermissions |
是否禁止在安装应用时授予所有运行时权限 |
DeviceFile
单个设备文件说明。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 device_file 。必需。device_file 只能是下列其中一项: |
|
obbFile |
对不透明二进制 blob 文件的引用。 |
regularFile |
对常规文件的引用。 |
ObbFile
在测试开始之前要安装到设备上的不透明二进制 blob 文件。
JSON 表示法 |
---|
{
"obbFileName": string,
"obb": {
object ( |
字段 | |
---|---|
obbFileName |
必需。OBB 文件名必须符合 Android 指定的格式,例如 [main|patch].0300110.com.example.android.obb,此文件将安装到设备上的 <shared-storage>/Android/obb/<package-name>/ 中。 |
obb |
必需。要安装到设备上的不透明二进制 Blob (OBB) 文件。 |
FileReference
对文件的引用,用于用户输入。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 file 。必需。文件引用。file 只能是下列其中一项: |
|
gcsPath |
指向 Google Cloud Storage 中文件的路径。示例:gs://build-app-1414623860166/app%40debug-unaligned.apk 这些路径预计将进行网址编码(百分号编码) |
RegularFile
在测试开始之前要安装到设备上的文件或目录。
JSON 表示法 |
---|
{
"content": {
object ( |
字段 | |
---|---|
content |
必需。源文件。 |
devicePath |
必需。将内容放在设备上的位置。必须是列入许可名单的绝对路径。如果文件存在,则予以替换。以下设备端目录及其所有子目录已列入许可名单: ${EXTERNAL_STORAGE}、/sdcard 或 /storage ${ANDROID_DATA}/local/tmp 或 /data/local/tmp 如果指定的路径在这些目录树之外,则属无效。 系统将提供路径 /sdcard 和 /data 并将其视为隐式路径替代项。例如,如果特定设备上的 /sdcard 未映射到外部存储空间,则系统会将其替换为该设备的外部存储路径前缀并将文件复制到外部存储路径。 强烈建议您在应用和测试代码中使用 Environment API,从而以可移植方式访问设备上的文件。 |
APK
要安装的 Android 软件包文件。
JSON 表示法 |
---|
{
"location": {
object ( |
字段 | |
---|---|
location |
在测试开始之前要在设备上安装的 APK 的路径。 |
packageName |
要安装的 APK 的 Java 软件包。可通过检查应用的清单来确定值。 |
账号
标识账号以及如何登录账号。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 account_type 。必需。账号类型,基于账号用途(例如 Google)和登录机制(例如用户名和密码)。account_type 只能是下列其中一项: |
|
googleAuto |
自动登录 Google 账号。 |
GoogleAuto
此类型没有字段。
启用 Google 账号自动登录功能。如果已设置,该服务会在执行测试之前自动生成 Google 测试账号并将其添加到设备。请注意,测试账号可能会重复使用。当设备上存在账号时,很多应用才能提供完整的功能集。使用这些生成的账号登录设备可以测试更多功能。
EnvironmentVariable
作为环境变量传递给测试的键值对。
JSON 表示法 |
---|
{ "key": string, "value": string } |
字段 | |
---|---|
key |
环境变量的键。 |
value |
环境变量的值。 |
SystraceSetup
JSON 表示法 |
---|
{ "durationSeconds": integer } |
字段 | |
---|---|
durationSeconds |
Systrace 时长(以秒为单位)。应介于 1 到 30 秒之间。0 表示停用 Systrace。 |
IosTestSetup
有关如何在运行测试之前设置 iOS 设备的说明。
JSON 表示法 |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
字段 | |
---|---|
networkProfile |
用于运行测试的网络流量配置文件。在调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。 |
additionalIpas[] |
除了直接测试的 iOS 应用之外,还可以安装这些应用。 |
pushFiles[] |
在开始测试之前推送到设备的文件列表。 |
pullDirectories[] |
设备上的目录列表,用于在测试结束时上传到 Cloud Storage。 应将目录放在共享目录(例如 /private/var/mobile/Media)中,或位于应用文件系统内的可访问目录(例如 /Documents)中,方法是指定软件包 ID。 |
IosDeviceFile
在测试开始之前要安装到设备上的文件或目录。
JSON 表示法 |
---|
{
"content": {
object ( |
字段 | |
---|---|
content |
源文件 |
bundleId |
此文件所在应用的软件包 ID。 iOS 应用会对自己的文件系统进行沙盒化处理,因此应用文件必须指定设备上安装的是哪个应用。 |
devicePath |
文件在设备上沙盒化文件系统中的位置 |
AndroidInstrumentationTest
Android 应用测试,可以独立于 Android 组件的正常生命周期控制该组件。Android Instrumentation 测试可在虚拟或真机 AndroidDevice 上的同一进程内运行应用 APK 和测试 APK。测试运行程序类还会指定测试运行程序类,例如 com.google.GoogleTestRunner,该类可能会因所选的特定插桩框架而异。
如需详细了解 Android 测试的类型,请参阅 https://developer.android.com/training/testing/fundamentals。
JSON 表示法 |
---|
{ "testApk": { object ( |
字段 | |
---|---|
testApk |
必需。包含要执行的测试代码的 APK。 |
appPackageId |
正在测试的应用的 Java 软件包。您可以通过检查应用的清单来确定默认值。 |
testPackageId |
要执行的测试的 Java 软件包。您可以通过检查应用的清单来确定默认值。 |
testRunnerClass |
InstrumentationTestRunner 类。您可以通过检查应用的清单来确定默认值。 |
testTargets[] |
每个目标都必须使用软件包名称或类名称进行完全限定,并采用以下格式之一:
如果为空,系统将运行模块中的所有目标。 |
orchestratorOption |
此选项可确定是否使用 Android Test Orchestrator 在每个测试各自的 Instrumentation 调用中运行该测试。** Orchestrator 仅与 AndroidJUnitRunner 版本 1.1 或更高版本兼容!** Orchestrator 具有以下优势:
如需详细了解 Android Test Orchestrator,请参阅 https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator。 如果未设置,则将在不使用 Orchestrator 的情况下运行测试。 |
shardingOption |
在多个分片中并行运行测试的选项。 |
联合字段 app_under_test 。必需。app_under_test 只能是下列其中一项: |
|
appApk |
正在测试的应用的 APK。 |
appBundle |
正在测试的应用的多 APK App Bundle。 |
AppBundle
Android App Bundle 文件格式,包含 BundleConfig.pb 文件、基本模块目录,以及零个或零个以上的动态功能模块目录。
有关如何构建 App Bundle 的指导,请参阅 https://developer.android.com/guide/app-bundle/build。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 bundle 。必需。软件包位置信息。bundle 只能是下列其中一项: |
|
bundleLocation |
表示受测 app bundle 的 .aab 文件。 |
OrchestratorOption
指定如何执行测试。
枚举 | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED |
默认值:由服务器来选择模式。目前,此选项暗示将在不使用 Orchestrator 的情况下运行测试。将来,所有 Instrumentation 测试都将使用 Orchestrator 运行。由于 Orchestrator 提供诸多好处,因此强烈建议使用。 |
USE_ORCHESTRATOR |
使用 Orchestrator 运行测试。** 仅与 AndroidJUnitRunner 版本 1.1 或更高版本兼容!** 推荐。 |
DO_NOT_USE_ORCHESTRATOR |
在不使用 Orchestrator 的情况下运行测试。 |
分片选项
用于启用分片的选项。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段
|
|
uniformSharding |
根据分片总数,将测试用例均匀分片。 |
manualSharding |
将测试用例分成指定的软件包、类和/或方法组。 |
smartSharding |
分片测试基于之前的测试用例计时记录。 |
统一分片
根据分片总数,将测试用例均匀分片。
对于插桩测试,此值将转换为“-e numShard”和“-e shardIndex”AndroidJUnitRunner 参数。启用统一分片后,通过 environmentVariables
指定这两个分片参数中的任何一个都是无效的。
根据 AndroidJUnitRunner 使用的分片机制,无法保证测试用例会在所有分片中均匀分布。
JSON 表示法 |
---|
{ "numShards": integer } |
字段 | |
---|---|
numShards |
必需。要创建的分片总数。此值必须始终为正数,且不得大于测试用例的总数。当您选择一个或多个物理设备时,分片数必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须小于等于 200。如果仅选择 x86 虚拟设备,则它必须小于等于 500。 |
手动分片
将测试用例分成指定的软件包、类和/或方法组。
启用手动分片后,通过环境变量或在 InstrumentationTest 中指定测试目标无效。
JSON 表示法 |
---|
{
"testTargetsForShard": [
{
object ( |
字段 | |
---|---|
testTargetsForShard[] |
必需。要针对每个手动创建分片运行的软件包、类和/或测试方法组。如果此字段存在,您必须指定至少一个分片。当您选择一个或多个实体设备时,重复的 testTargetsForShard 数量必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须小于等于 200。如果仅选择 x86 虚拟设备,则它必须小于等于 500。 |
TestTargetsForShard
分片的测试目标。
JSON 表示法 |
---|
{ "testTargets": [ string ] } |
字段 | |
---|---|
testTargets[] |
要针对每个分片运行的软件包、类和/或测试方法组。目标需要以 AndroidJUnitRunner 参数格式指定。例如,“package com.my.packages”“class com.my.package.MyClass”。 testTarget 的数量必须大于 0。 |
智能分片
分片测试基于之前的测试用例计时记录。
JSON 表示法 |
---|
{ "targetedShardDuration": string } |
字段 | |
---|---|
targetedShardDuration |
分片中的测试应花费的时间。 默认值:300 秒(5 分钟)。所允许的最短时间间隔:120 秒(2 分钟)。 系统会根据时间动态设置分片数,最高分片数量上限(如下所述)。为了保证每个分片至少有一个测试用例,分片数不会超过测试用例数。在以下情况下,将超出分片时长:
由于智能分片使用测试用例历史记录和默认时长,因此无法保证分片时长。查找测试用例计时记录的规则如下:
由于实际分片时长可以超过目标分片时长,因此我们建议您将目标值设置为至少比允许的测试超时上限小 5 分钟(真机设备为 45 分钟,虚拟设备为 60 分钟),或者使用您设置的自定义测试超时值。此方法可避免在所有测试完成之前取消分片。 请注意,分片数量上限有限制。当您选择一个或多个物理设备时,分片数必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须小于等于 200。如果仅选择 x86 虚拟设备,则它必须小于等于 500。为了保证每个分片至少有一个测试用例,分片数不会超过测试用例数。创建的每个分片都会计入每日测试配额。 该时长以秒为单位,最多包含九个小数位,以“ |
AndroidRoboTest
Android 应用测试,该测试可探索应用在虚拟或真机 Android 设备上的运行情况,并在此过程中发现引起问题的原因和崩溃情况。
JSON 表示法 |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
字段 | |
---|---|
appPackageId |
正在测试的应用的 Java 软件包。您可以通过检查应用的清单来确定默认值。 |
appInitialActivity |
应该用于启动应用的初始 activity。 |
maxDepth |
Robo 可探索的遍历堆栈的最大深度。此深度至少需要为 2,Robo 才能探索第一个 Activity 之外的应用内容。默认值为 50。 |
maxSteps |
Robo 可以执行的步骤数上限。默认值为没有限制。 |
roboDirectives[] |
Robo 在抓取过程中应应用的一组指令。这允许用户自定义抓取。例如,可以提供测试账号的用户名和密码。 |
roboMode |
Robo 应以何种模式运行。大多数客户端都应允许服务器自动填充此字段。 |
roboScript |
一个 JSON 文件,包含 Robo 作为抓取序言时应执行的一系列操作。 |
startingIntents[] |
用于启动应用以进行抓取的 intent。如果未提供,则启动主启动器 Activity。如果已提供,则仅启动所提供的那些 Activity(必须明确提供主启动器 Activity)。 |
联合字段 app_under_test 。必需。app_under_test 只能是下列其中一项: |
|
appApk |
正在测试的应用的 APK。 |
appBundle |
正在测试的应用的多 APK App Bundle。 |
RoboDirective
指示 Robo 在抓取期间遇到特定界面元素时与其交互。目前,Robo 可以执行文本输入或元素点击。
JSON 表示法 |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
字段 | |
---|---|
resourceName |
必需。目标界面元素的 Android 资源名称。例如,在 Java 中:R.string.foo;在 xml 中:@string/foo。只需要“foo”部分。参考文档:https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText |
指示 Robo 设置的文本。如果保留为空,则该指令将视为对与 resourceName 匹配的元素执行 CLICK 操作。 |
actionType |
必需。Robo 应对指定元素执行的操作类型。 |
RoboActionType
Robo 可对界面元素执行的操作。
枚举 | |
---|---|
ACTION_TYPE_UNSPECIFIED |
请勿使用。仅适用于 Proto 版本控制。 |
SINGLE_CLICK |
指示 Robo 点击指定的元素。如果指定的元素不可点击,则不执行任何操作。 |
ENTER_TEXT |
指示 Robo 在指定的元素上输入文本。如果指定的元素未启用或不允许输入文本,则不执行任何操作。 |
IGNORE |
指示 Robo 忽略与特定元素的交互。 |
机器人模式
Robo 应以何种模式运行。
枚举 | |
---|---|
ROBO_MODE_UNSPECIFIED |
这意味着,服务器应选择模式。推荐。 |
ROBO_VERSION_1 |
在 UIAutomator-only 模式下运行 Robo,无需为应用重新签名 |
ROBO_VERSION_2 |
使用 UIAutomator 回退在标准 Espresso 中运行 Robo |
RoboStartingIntent
用于指定要抓取的启动 Activity 的消息。
JSON 表示法 |
---|
{ "timeout": string, // Union field |
字段 | |
---|---|
timeout |
每个意图的超时(以秒为单位)。 该时长以秒为单位,最多包含九个小数位,以“ |
联合字段 starting_intent 。必需。用于启动 activity 的 intent 详细信息。starting_intent 只能是下列其中一项: |
|
launcherActivity |
用于启动主启动器 activity 的 intent。 |
startActivity |
用于启动包含特定详细信息的 activity 的 intent。 |
noActivity |
跳过启动 activity |
LauncherActivityIntent
此类型没有字段。
指定用于启动主启动器 Activity 的 Intent。
StartActivityIntent
由操作、URI 和类别指定的启动 Intent。
JSON 表示法 |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
字段 | |
---|---|
action |
操作名称。对于 START_ACTIVITY 为必需。 |
uri |
操作的 URI。 |
categories[] |
要在 intent 上设置的 intent 类别。 |
NoActivityIntent
此类型没有字段。
跳过启动 activity
AndroidTestLoop
对带有测试循环的 Android 应用进行的测试。系统将隐式添加 Intent <intent-name>,因为目前此 API 的唯一用户是 Games。
JSON 表示法 |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
字段 | |
---|---|
appPackageId |
正在测试的应用的 Java 软件包。您可以通过检查应用的清单来确定默认值。 |
scenarios[] |
应在测试期间运行的场景列表。默认值为从应用的清单派生的所有测试循环。 |
scenarioLabels[] |
应在测试期间运行的场景标签的列表。场景标签应映射到应用清单中定义的标签。例如,player_experience 和 com.google.test.loops.player_experience 会将清单中标记为 com.google.test.loops.player_experience 名称的所有循环都添加到执行中。还可以在场景字段中指定场景。 |
联合字段 app_under_test 。必需。要测试的 Android 软件包。app_under_test 只能是下列其中一项: |
|
appApk |
正在测试的应用的 APK。 |
appBundle |
正在测试的应用的多 APK App Bundle。 |
IosXcTest
对使用 XCTest 框架的 iOS 应用的测试。Xcode 支持“构建以用于测试”(Build for testing) 选项,该选项可生成包含测试规范(参数、测试方法等)的 .xctestrun 文件。此测试类型接受包含 .xctestrun 文件的 zip 文件以及 Build/Products 目录(包含运行测试所需的所有二进制文件)中的相应内容。
JSON 表示法 |
---|
{ "testsZip": { object ( |
字段 | |
---|---|
testsZip |
必需。此 .zip 文件包含 .xctestrun 文件和 DerivedData/Build/Products 目录的内容。如果指定了 xctestrun 字段,则会忽略此 zip 文件中的 .xctestrun 文件。 |
xctestrun |
一个 .xctestrun 文件,该文件将替换测试 zip 中的 .xctestrun 文件。由于 .xctestrun 文件包含环境变量以及要运行和/或忽略的测试方法,因此这对于分片测试很有用。默认值取自测试 zip 文件。 |
xcodeVersion |
应该用于测试的 Xcode 版本。请使用 TestEnvironmentDiscoveryService 获取支持的选项。默认为 Firebase 测试实验室支持的最新 Xcode 版本。 |
appBundleId |
仅限输出。正在测试的应用的软件包 ID。 |
testSpecialEntitlements |
用于测试特殊应用授权的选项。设置此属性会使用明确的应用标识符为具有特殊权限的应用重新签名。目前支持测试 aps 环境权限。 |
IosTestLoop
对实现一个或多个游戏循环场景的 iOS 应用的测试。此测试类型接受归档应用(.ipa 文件)以及将按顺序对该应用执行的整数场景列表。
JSON 表示法 |
---|
{
"appIpa": {
object ( |
字段 | |
---|---|
appIpa |
必需。要测试的应用的 .ipa。 |
scenarios[] |
应在测试期间运行的场景列表。如果未指定,则默认为单个场景 0。 |
appBundleId |
仅限输出。正在测试的应用的软件包 ID。 |
IosRobo 测试
用于探索 iOS 设备上的 iOS 应用的测试。
JSON 表示法 |
---|
{ "appIpa": { object ( |
字段 | |
---|---|
appIpa |
必需。应使用存储在此文件中的 IPA 运行测试。 |
appBundleId |
被测应用的软件包 ID。可通过检查该应用的“Info.plist”文件。 |
roboScript |
用于自定义抓取的可选 Roboscript。如需详细了解 Roboscript,请参阅 https://firebase.google.com/docs/test-lab/android/robo-scripts-reference。 |
EnvironmentMatrix
要在其中执行测试的环境矩阵。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 environment_matrix 。必需。环境矩阵。environment_matrix 只能是下列其中一项: |
|
androidMatrix |
Android 设备矩阵。 |
androidDeviceList |
Android 设备列表;该测试将仅在指定设备上运行。 |
iosDeviceList |
iOS 设备列表。 |
AndroidMatrix
一组 Android 设备配置排列由给定轴的叉积定义。在内部,给定的 AndroidMatrix 将展开为一组 AndroidDevice。
系统仅会实例化受支持的排列。无效的排列(例如,不兼容的型号/版本)将被忽略。
JSON 表示法 |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
字段 | |
---|---|
androidModelIds[] |
必需。要使用的 Android 设备集的 ID。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
androidVersionIds[] |
必需。要使用的 Android 操作系统版本集的 ID。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
locales[] |
必需。测试设备将为测试启用的语言区域集。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
orientations[] |
必需。要用于测试的方向集。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
AndroidDeviceList
要在其中执行测试的 Android 设备配置列表。
JSON 表示法 |
---|
{
"androidDevices": [
{
object ( |
字段 | |
---|---|
androidDevices[] |
必需。Android 设备列表。 |
IosDeviceList
要在其中执行测试的 iOS 设备配置列表。
JSON 表示法 |
---|
{
"iosDevices": [
{
object ( |
字段 | |
---|---|
iosDevices[] |
必需。iOS 设备列表。 |
IosDevice
单个 iOS 设备。
JSON 表示法 |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
字段 | |
---|---|
iosModelId |
必需。要使用的 iOS 设备的 ID。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
iosVersionId |
必需。要使用的 iOS 主要软件版本的 ID。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
locale |
必需。测试设备用于测试的语言区域。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
orientation |
必需。测试期间设备的屏幕方向。请使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
TestExecution
在单个环境中执行的单个测试。
JSON 表示法 |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
字段 | |
---|---|
id |
仅限输出。由服务设置的唯一 ID。 |
matrixId |
仅限输出。所属 TestMatrix 的 ID。 |
projectId |
仅限输出。测试作业所属的 Cloud 项目。 |
testSpecification |
仅限输出。如何运行测试。 |
shard |
仅限输出。有关分片的详细信息。 |
environment |
仅限输出。如何配置主机。 |
state |
仅限输出。指示测试作业的当前进度(例如,FINISHED)。 |
toolResultsStep |
仅限输出。写入此作业结果的位置。 |
timestamp |
仅限输出。此测试作业最初创建的时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
testDetails |
仅限输出。有关正在运行的测试的其他详细信息。 |
分片
仅限输出。有关分片的详细信息。
JSON 表示法 |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
字段 | |
---|---|
shardIndex |
仅限输出。所有分片中分片的索引。 |
numShards |
仅限输出。分片总数。 |
testTargetsForShard |
仅限输出。测试每个分片的目标。仅适用于手动分片。 |
estimatedShardDuration |
仅限输出。基于之前的测试用例计时记录(如果有)的估算分片时长。 该时长以秒为单位,最多包含九个小数位,以“ |
环境
运行测试时所处的环境。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 environment 。必需。环境。environment 只能是下列其中一项: |
|
androidDevice |
必须与 Android 测试搭配使用的 Android 设备。 |
iosDevice |
必须与 iOS 测试搭配使用的 iOS 设备。 |
TestState
测试作业或矩阵的状态(即进度)。
枚举 | |
---|---|
TEST_STATE_UNSPECIFIED |
请勿使用。仅适用于 Proto 版本控制。 |
VALIDATING |
正在验证作业或矩阵。 |
PENDING |
作业或矩阵正在等待资源变为可用。 |
RUNNING |
作业目前正在处理中。 只有作业可处于此状态。 |
FINISHED |
作业或矩阵已正常终止。 对于矩阵,这意味着矩阵层级的处理已正常完成,但单个作业可能处于 ERROR 状态。 |
ERROR |
作业或矩阵已停止,因为它遇到基础架构故障。 |
UNSUPPORTED_ENVIRONMENT |
作业未运行,因为它对应于不受支持的环境。 只有作业可处于此状态。 |
INCOMPATIBLE_ENVIRONMENT |
作业未运行,因为提供的输入与请求的环境不兼容。 例如:请求的 AndroidVersion 低于 APK 的 minSdkVersion 只有作业可处于此状态。 |
INCOMPATIBLE_ARCHITECTURE |
作业未运行,因为提供的输入与请求的架构不兼容。 例如:请求的设备不支持运行所提供的 APK 中的原生代码 只有作业可处于此状态。 |
CANCELLED |
用户取消了作业。 只有作业可处于此状态。 |
INVALID |
作业或矩阵未运行,因为提供的输入无效。 例如:输入文件不是预期类型、格式错误/已损坏或被标记为恶意软件 |
ToolResultsStep
表示工具结果步骤资源。
这包含 TestExecution 的结果。
JSON 表示法 |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
字段 | |
---|---|
projectId |
仅限输出。工具结果步骤所属的 Cloud 项目。 |
historyId |
仅限输出。工具结果历史记录 ID。 |
executionId |
仅限输出。工具结果执行 ID。 |
stepId |
仅限输出。工具结果步骤 ID。 |
TestDetails
有关所运行测试的进度的更多详细信息。
JSON 表示法 |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
字段 | |
---|---|
progressMessages[] |
仅限输出。有关测试进度的人类可读详细说明。例如:“预配设备”、“开始测试”。 在作业期间,新数据可能会附加到 progressMessages 的末尾。 |
errorMessage |
仅限输出。如果 TestState 是 ERROR,则此字符串将包含有关错误的人类可读详细信息。 |
ResultStorage
存储测试运行结果的位置。
JSON 表示法 |
---|
{ "googleCloudStorage": { object ( |
字段 | |
---|---|
googleCloudStorage |
必填。 |
toolResultsHistory |
包含向其中写入结果的工具结果作业的工具结果历史记录。 如果未提供,服务将选择适当的值。 |
toolResultsExecution |
仅限输出。向其中写入结果的工具结果作业。 |
resultsUrl |
仅限输出。指向 Firebase Web 控制台中结果的网址。 |
GoogleCloudStorage
Google Cloud Storage (GCS) 中的存储位置。
JSON 表示法 |
---|
{ "gcsPath": string } |
字段 | |
---|---|
gcsPath |
必需。GCS 中最终包含此测试结果的目录的路径。发出请求的用户必须对所提供的路径中的存储分区具有写入权限。 |
ToolResultsHistory
表示工具结果历史记录资源。
JSON 表示法 |
---|
{ "projectId": string, "historyId": string } |
字段 | |
---|---|
projectId |
必需。工具结果历史记录所属的 Cloud 项目。 |
historyId |
必需。工具结果历史记录 ID。 |
ToolResultsExecution
表示工具结果作业资源。
这包含 TestMatrix 的结果。
JSON 表示法 |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
字段 | |
---|---|
projectId |
仅限输出。工具结果作业所属的 Cloud 项目。 |
historyId |
仅限输出。工具结果历史记录 ID。 |
executionId |
仅限输出。工具结果执行 ID。 |
InvalidMatrixDetails
矩阵被视为 INVALID 的详细原因。
枚举 | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED |
请勿使用。仅适用于 Proto 版本控制。 |
DETAILS_UNAVAILABLE |
矩阵为 INVALID,但没有更多详细信息。 |
MALFORMED_APK |
输入应用 APK 无法解析。 |
MALFORMED_TEST_APK |
输入测试 APK 无法解析。 |
NO_MANIFEST |
找不到 AndroidManifest.xml。 |
NO_PACKAGE_NAME |
APK 清单未声明软件包名称。 |
INVALID_PACKAGE_NAME |
APK 应用 ID(又称为软件包名称)无效。另请参阅 https://developer.android.com/studio/build/application-id |
TEST_SAME_AS_APP |
测试软件包和应用软件包相同。 |
NO_INSTRUMENTATION |
测试 APK 未声明 Instrumentation。 |
NO_SIGNATURE |
输入应用 APK 没有签名。 |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE |
用户(或测试 APK 的清单文件中)指定的测试运行程序类与 Android Test Orchestrator 不兼容。Orchestrator 仅与 AndroidJUnitRunner 版本 1.1 或更高版本兼容。可以使用 DO_NOT_USE_ORCHESTRATOR OrchestratorOption 停用 Orchestrator。 |
NO_TEST_RUNNER_CLASS |
测试 APK 不包含用户指定的测试运行程序类或在清单文件中指定的测试运行程序类。这可能是由以下原因之一导致的:
|
NO_LAUNCHER_ACTIVITY |
找不到主要启动器 Activity。 |
FORBIDDEN_PERMISSIONS |
应用声明了一项或多项不允许使用的权限。 |
INVALID_ROBO_DIRECTIVES |
提供的 roboDirectives 存在冲突。 |
INVALID_RESOURCE_NAME |
提供的 robo 指令中至少有一个无效的资源名称 |
INVALID_DIRECTIVE_ACTION |
robo 指令中的操作定义无效(例如,点击或忽略操作包含输入文本字段) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND |
没有测试循环 intent 过滤器,或者提供的过滤器格式不正确。 |
SCENARIO_LABEL_NOT_DECLARED |
请求包含未在清单文件中声明的场景标签。 |
SCENARIO_LABEL_MALFORMED |
解析标签的值时出错。 |
SCENARIO_NOT_DECLARED |
请求包含未在清单文件中声明的场景编号。 |
DEVICE_ADMIN_RECEIVER |
不允许使用设备管理员应用。 |
MALFORMED_XC_TEST_ZIP |
压缩的 XCTest 格式不正确。zip 文件未包含 .xctestrun 文件和 DerivedData/Build/Products 目录中的内容。 |
BUILT_FOR_IOS_SIMULATOR |
压缩的 XCTest 是针对 iOS 模拟器(而不是真机设备)构建的。 |
NO_TESTS_IN_XC_TEST_ZIP |
.xctestrun 文件未指定任何测试目标。 |
USE_DESTINATION_ARTIFACTS |
.xctestrun 文件中定义的一个或多个测试目标指定了“UseDestinationArtifacts”,而系统不允许使用此属性。 |
TEST_NOT_APP_HOSTED |
在真机设备上运行的 XC 测试必须在 xctestrun 文件包含 "IsAppHostedTestBundle" == "true"。 |
PLIST_CANNOT_BE_PARSED |
无法解析 XCTest zip 文件中的 Info.plist 文件。 |
TEST_ONLY_APK |
APK 已标记为“testOnly”。此项已弃用且目前未使用。 |
MALFORMED_IPA |
无法解析输入 IPA。 |
MISSING_URL_SCHEME |
应用未注册游戏循环网址架构。 |
MALFORMED_APP_BUNDLE |
无法处理 iOS 应用软件包 (.app)。 |
NO_CODE_APK |
APK 不含任何代码。另请参阅 https://developer.android.com/guide/topics/manifest/application-element.html#code |
INVALID_INPUT_APK |
提供的输入 APK 路径格式错误,APK 文件不存在,或者用户无权访问 APK 文件。 |
INVALID_APK_PREVIEW_SDK |
APK 是为不受支持的预览版 SDK 而构建的 |
MATRIX_TOO_LARGE |
已展开矩阵,包含的执行作业过多。 |
TEST_QUOTA_EXCEEDED |
测试配额不足,无法运行此矩阵中的执行作业。 |
SERVICE_NOT_ACTIVATED |
所需的云服务 API 未激活。请参阅:https://firebase.google.com/docs/test-lab/android/Continuous#requirements |
UNKNOWN_PERMISSION_ERROR |
运行此测试时出现未知的权限问题。 |
矩阵错误详情
描述矩阵的单个错误或问题。
JSON 表示法 |
---|
{ "reason": string, "message": string } |
字段 | |
---|---|
reason |
仅限输出。错误的原因。这是 UPPER_SNAKE_CASE 中的常量值,用于标识错误的原因。 |
message |
仅限输出。有关 TestMatrix 中错误的直观易懂的消息。展开 |
结果摘要
已完成的测试矩阵的结果摘要。
枚举 | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED |
请勿使用。仅适用于 Proto 版本控制。 |
SUCCESS |
测试矩阵运行成功,例如:
|
FAILURE |
运行失败,例如:
|
INCONCLUSIVE |
发生意外错误。测试应仍被视为不成功,但这可能是暂时性问题,重新运行测试可能会成功。 |
SKIPPED |
已跳过所有测试,例如:
|
方法 |
|
---|---|
|
取消测试矩阵中未完成的测试作业。 |
|
根据给定的规范创建并运行测试矩阵。 |
|
在创建测试矩阵和执行后检查其状态。 |