REST Resource: projects.testMatrices

资源:测试矩阵

TestMatrix 捕获有关测试的所有详细信息。它包含环境配置、测试规范、测试执行以及总体状态和结果。

JSON 表示
{
  "testMatrixId": string,
  "projectId": string,
  "clientInfo": {
    object (ClientInfo)
  },
  "testSpecification": {
    object (TestSpecification)
  },
  "environmentMatrix": {
    object (EnvironmentMatrix)
  },
  "testExecutions": [
    {
      object (TestExecution)
    }
  ],
  "resultStorage": {
    object (ResultStorage)
  },
  "state": enum (TestState),
  "timestamp": string,
  "invalidMatrixDetails": enum (InvalidMatrixDetails),
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
领域
testMatrixId

string

仅输出。由服务设置的唯一 ID。

projectId

string

拥有测试矩阵的云项目。

clientInfo

object ( ClientInfo )

有关调用测试的客户端的信息。

testSpecification

object ( TestSpecification )

必需的。如何运行测试。

environmentMatrix

object ( EnvironmentMatrix )

必需的。正在执行测试的设备。

testExecutions[]

object ( TestExecution )

仅输出。服务为此矩阵创建的测试执行列表。

resultStorage

object ( ResultStorage )

必需的。写入矩阵结果的位置。

state

enum ( TestState )

仅输出。指示测试矩阵的当前进度。

timestamp

string ( Timestamp format)

仅输出。最初创建此测试矩阵的时间。

RFC3339 UTC“Zulu”格式的时间戳,具有纳秒分辨率和最多九个小数位。示例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

invalidMatrixDetails

enum ( InvalidMatrixDetails )

仅输出。描述矩阵被视为无效的原因。仅对处于 INVALID 状态的矩阵有用。

flakyTestAttempts

integer

如果一个或多个测试用例因任何原因失败,则应重新尝试 TestExecution 的次数。允许的最大重新运行次数为 10。

默认值为 0,这意味着不重新运行。

outcomeSummary

enum ( OutcomeSummary )

仅输出。测试的总体结果。仅当测试矩阵状态为 FINISHED 时才设置。

failFast

boolean

如果为 true,则最多只会尝试一次来运行矩阵中的每个执行/分片。不稳定的测试尝试不受影响。

通常,如果检测到潜在的基础设施问题,则会进行 2 次或多次尝试。

此功能适用于延迟敏感的工作负载。对于快速失败矩阵,执行失败的发生率可能明显更高,并且由于这种期望,支持也更加有限。

客户信息

有关调用测试的客户端的信息。

JSON 表示
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
领域
name

string

必需的。客户端名称,例如 gcloud。

clientInfoDetails[]

object ( ClientInfoDetail )

有关客户的详细信息列表。

客户信息详情

有关调用测试的客户端的详细信息的键值对。示例:{'版本'、'1.0'}、{'发布轨道'、'BETA'}。

JSON 表示
{
  "key": string,
  "value": string
}
领域
key

string

必需的。详细客户信息的关键。

value

string

必需的。详细的客户信息的价值。

测试规范

如何运行测试的描述。

JSON 表示
{
  "testTimeout": string,
  "disableVideoRecording": boolean,
  "disablePerformanceMetrics": boolean,

  // Union field setup can be only one of the following:
  "testSetup": {
    object (TestSetup)
  },
  "iosTestSetup": {
    object (IosTestSetup)
  }
  // End of list of possible types for union field setup.

  // Union field test can be only one of the following:
  "androidInstrumentationTest": {
    object (AndroidInstrumentationTest)
  },
  "androidRoboTest": {
    object (AndroidRoboTest)
  },
  "androidTestLoop": {
    object (AndroidTestLoop)
  },
  "iosXcTest": {
    object (IosXcTest)
  },
  "iosTestLoop": {
    object (IosTestLoop)
  }
  // End of list of possible types for union field test.
}
领域
testTimeout

string ( Duration format)

在自动取消之前允许测试执行运行的最长时间。默认值为 5 分钟。

以秒为单位的持续时间,最多包含九个小数位,以“ s ”结尾。示例: "3.5s"

disableVideoRecording

boolean

禁用视频录制。可以减少测试延迟。

disablePerformanceMetrics

boolean

禁用性能指标记录。可以减少测试延迟。

联盟字段setup 。测试设置要求。 setup只能是以下其中一项:
testSetup

object ( TestSetup )

测试 Android 的设置要求,例如要安装的文件、引导脚本。

iosTestSetup

object ( IosTestSetup )

iOS 的测试设置要求。

联盟实地test 。必需的。要运行的测试的类型。 test只能是以下之一:
androidInstrumentationTest

object ( AndroidInstrumentationTest )

Android 仪器测试。

androidRoboTest

object ( AndroidRoboTest )

Android 机器人测试。

androidTestLoop

object ( AndroidTestLoop )

带有测试循环的 Android 应用程序。

iosXcTest

object ( IosXcTest )

iOS XCTest,通过 .xctestrun 文件。

iosTestLoop

object ( IosTestLoop )

具有测试循环的 iOS 应用程序。

测试设置

有关如何在运行测试之前设置 Android 设备的说明。

JSON 表示
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "additionalApks": [
    {
      object (Apk)
    }
  ],
  "account": {
    object (Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object (EnvironmentVariable)
    }
  ],
  "systrace": {
    object (SystraceSetup)
  },
  "dontAutograntPermissions": boolean
}
领域
filesToPush[]

object ( DeviceFile )

开始测试之前要推送到设备的文件列表。

directoriesToPull[]

string

测试结束时上传到 GCS 的设备上的目录列表;它们必须是 /sdcard、/storage 或 /data/local/tmp 下的绝对路径。路径名仅限于字符 az AZ 0-9 _ - 。 + 和 /

注意:路径 /sdcard 和 /data 将可用并被视为隐式路径替换。例如,如果特定设备上的 /sdcard 未映射到外部存储,系统会将其替换为该设备的外部存储路径前缀。

additionalApks[]

object ( Apk )

除了直接测试的 APK 之外还要安装的 APK。目前上限为 100。

account

object ( Account )

在测试期间,设备将使用此帐户登录。

networkProfile

string

用于运行测试的网络流量配置文件。调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时,可以使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。

environmentVariables[]

object ( EnvironmentVariable )

为测试设置的环境变量(仅适用于仪器测试)。

systrace
(deprecated)

object ( SystraceSetup )

运行的 Systrace 配置。已弃用:Systrace 使用 Python 2,该版本已于 2020 年 1 月 1 日停用。 Cloud Test API 不再支持 Systrace,并且结果中不会提供 Systrace 文件。

dontAutograntPermissions

boolean

是否阻止在应用程序安装时授予所有运行时权限

设备文件

单个设备文件描述。

JSON 表示
{

  // Union field device_file can be only one of the following:
  "obbFile": {
    object (ObbFile)
  },
  "regularFile": {
    object (RegularFile)
  }
  // End of list of possible types for union field device_file.
}
领域
联合字段device_file 。必需的。 device_file只能是以下之一:
obbFile

object ( ObbFile )

对不透明二进制 blob 文件的引用。

regularFile

object ( RegularFile )

对常规文件的引用。

OBB文件

在测试开始之前要在设备上安装的不透明二进制 blob 文件。

JSON 表示
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
领域
obbFileName

string

必需的。 OBB 文件名,必须符合 Android 指定的格式,例如 [main|patch].0300110.com.example.android.obb 将安装到 <shared-storage>/Android/obb/<package-name>/在设备上。

obb

object ( FileReference )

必需的。要安装在设备上的不透明二进制 Blob (OBB) 文件。

文件参考

对文件的引用,用于用户输入。

JSON 表示
{

  // Union field file can be only one of the following:
  "gcsPath": string
  // End of list of possible types for union field file.
}
领域
联盟现场file 。必需的。文件参考。 file只能是以下之一:
gcsPath

string

Google Cloud Storage 中文件的路径。示例: gs://build-app-1414623860166/app%40debug-unaligned.apk这些路径预计会进行 url 编码(百分比编码)

常规文件

测试开始前要安装在设备上的文件或目录。

JSON 表示
{
  "content": {
    object (FileReference)
  },
  "devicePath": string
}
领域
content

object ( FileReference )

必需的。源文件。

devicePath

string

必需的。将内容放置在设备上的位置。必须是绝对的、允许的路径。如果该文件存在,它将被替换。以下设备端目录及其任何子目录均已列入白名单:

${EXTERNAL_STORAGE}、/sdcard 或 /storage

${ANDROID_DATA}/local/tmp 或 /data/local/tmp

指定这些目录树之外的路径是无效的。

路径 /sdcard 和 /data 将可用并被视为隐式路径替换。例如,如果特定设备上的 /sdcard 未映射到外部存储,系统将用该设备的外部存储路径前缀替换它,并将文件复制到那里。

强烈建议在应用程序和测试代码中使用环境 API以便携式方式访问设备上的文件。

应用程序

要安装的 Android 包文件。

JSON 表示
{
  "location": {
    object (FileReference)
  },
  "packageName": string
}
领域
location

object ( FileReference )

测试开始前要安装在设备上的 APK 的路径。

packageName

string

要安装的APK的java包。值是通过检查应用程序的清单来确定的。

帐户

识别帐户以及如何登录该帐户。

JSON 表示
{

  // Union field account_type can be only one of the following:
  "googleAuto": {
    object (GoogleAuto)
  }
  // End of list of possible types for union field account_type.
}
领域
联合字段account_type 。必需的。帐户类型,基于其用途(例如 Google)及其登录机制(例如用户名和密码)。 account_type只能是以下之一:
googleAuto

object ( GoogleAuto )

自动谷歌登录帐户。

谷歌汽车

启用自动 Google 帐户登录。如果设置,该服务会在执行测试之前自动生成 Google 测试帐户并将其添加到设备。请注意,测试帐户可能会被重复使用。当设备上存在帐户时,许多应用程序会显示其全套功能。使用这些生成的帐户登录设备可以测试更多功能。

环境变量

键值对作为环境变量传递给测试。

JSON 表示
{
  "key": string,
  "value": string
}
领域
key

string

环境变量的键。

value

string

环境变量的值。

Systrace设置

JSON 表示
{
  "durationSeconds": integer
}
领域
durationSeconds
(deprecated)

integer

Systrace 持续时间(以秒为单位)。应介于 1 到 30 秒之间。 0 禁用系统跟踪。

Ios测试设置

有关如何在运行测试之前设置 iOS 设备的说明。

JSON 表示
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
领域
networkProfile

string

用于运行测试的网络流量配置文件。调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时,可以使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。

additionalIpas[]

object ( FileReference )

除了直接测试的应用程序外,还需要安装 iOS 应用程序。

pushFiles[]

object ( IosDeviceFile )

开始测试之前要推送到设备的文件列表。

pullDirectories[]

object ( IosDeviceFile )

测试结束时要上传到 Cloud Storage 的设备上的目录列表。

目录应该位于共享目录(例如 /private/var/mobile/Media)中,或者通过指定包 ID 位于应用程序文件系统内的可访问目录(例如 /Documents)中。

Ios设备文件

测试开始前要安装在设备上的文件或目录。

JSON 表示
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
领域
content

object ( FileReference )

源文件

bundleId

string

该文件所在应用程序的捆绑包 ID。

iOS 应用程序将其自己的文件系统沙箱化,因此应用程序文件必须指定设备上安装的应用程序。

devicePath

string

文件在设备上、应用程序的沙盒文件系统内的位置

Android仪器测试

对 Android 应用程序的测试,该应用程序可以独立于正常生命周期控制 Android 组件。 Android 仪器测试运行应用程序 APK 并在虚拟或物理 Android 设备上的同一进程内测试 APK。他们还指定一个测试运行器类,例如 com.google.GoogleTestRunner,该类可能因所选的特定检测框架而异。

有关 Android 测试类型的更多信息,请参阅https://developer.android.com/training/testing/fundamentals

JSON 表示
{
  "testApk": {
    object (FileReference)
  },
  "appPackageId": string,
  "testPackageId": string,
  "testRunnerClass": string,
  "testTargets": [
    string
  ],
  "orchestratorOption": enum (OrchestratorOption),
  "shardingOption": {
    object (ShardingOption)
  },

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
领域
testApk

object ( FileReference )

必需的。包含要执行的测试代码的 APK。

appPackageId

string

被测应用程序的 java 包。默认值是通过检查应用程序的清单来确定的。

testPackageId

string

要执行的测试的java包。默认值是通过检查应用程序的清单来确定的。

testRunnerClass

string

InstrumentationTestRunner 类。默认值是通过检查应用程序的清单来确定的。

testTargets[]

string

每个目标都必须使用包名称或类名称进行完全限定,采用以下格式之一:

  • “包包名”
  • “类包名.class_name”
  • “类包名.类名#方法名”

如果为空,则将运行模块中的所有目标。

orchestratorOption

enum ( OrchestratorOption )

是否使用 Android Test Orchestrator 在其自己的仪器调用中运行每个测试的选项。 ** Orchestrator 仅与 AndroidJUnitRunner 版本 1.1 或更高版本兼容! ** Orchestrator 具有以下优势:

  • 无共享状态
  • 崩溃是孤立的
  • 日志按测试划分范围

有关 Android Test Orchestrator 的更多信息,请参阅https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

如果未设置,测试将在没有协调器的情况下运行。

shardingOption

object ( ShardingOption )

在多个分片中并行运行测试的选项。

联合字段app_under_test 。必需的。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在测试的应用程序的 APK。

appBundle

object ( AppBundle )

用于被测应用程序的多 apk 应用程序包。

应用程序包

Android App Bundle 文件格式,包含 BundleConfig.pb 文件、基本模块目录、零个或多个动态功能模块目录。

有关构建应用程序包的指南,请参阅https://developer.android.com/guide/app-bundle/build

JSON 表示
{

  // Union field bundle can be only one of the following:
  "bundleLocation": {
    object (FileReference)
  }
  // End of list of possible types for union field bundle.
}
领域
联盟场bundle 。必需的。捆绑位置信息。 bundle只能是以下之一:
bundleLocation

object ( FileReference )

.aab 文件代表正在测试的应用程序包。

Orchestrator选项

指定如何执行测试。

枚举
ORCHESTRATOR_OPTION_UNSPECIFIED默认值:服务器将选择模式。目前意味着测试将在没有协调器的情况下运行。将来,所有仪器测试都将使用协调器运行。由于它提供的所有好处,我们强烈鼓励使用编排器。
USE_ORCHESTRATOR使用 Orchestrator 运行测试。 ** 仅与 AndroidJUnitRunner 1.1 或更高版本兼容! ** 受到推崇的。
DO_NOT_USE_ORCHESTRATOR不使用 Orchestrator 运行测试。

分片选项

启用分片的选项。

JSON 表示
{

  // Union field option can be only one of the following:
  "uniformSharding": {
    object (UniformSharding)
  },
  "manualSharding": {
    object (ManualSharding)
  },
  "smartSharding": {
    object (SmartSharding)
  }
  // End of list of possible types for union field option.
}
领域

联合字段option

option只能是以下之一:

uniformSharding

object ( UniformSharding )

给定分片总数,对测试用例进行统一分片。

manualSharding

object ( ManualSharding )

将测试用例分成指定的包、类和/或方法组。

smartSharding

object ( SmartSharding )

基于之前的测试用例计时记录进行分片测试。

统一分片

给定分片总数,对测试用例进行统一分片。

对于仪器测试,它将被转换为“-e numShard”和“-e shardIndex”AndroidJUnitRunner 参数。启用统一分片后,通过environmentVariables指定这些分片参数中的任何一个都是无效的。

基于 AndroidJUnitRunner 使用的分片机制,无法保证测试用例将均匀分布在所有分片上。

JSON 表示
{
  "numShards": integer
}
领域
numShards

integer

必需的。要创建的分片总数。这必须始终是一个不大于测试用例总数的正数。当您选择一个或多个物理设备时,分片数量必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须 <= 200。当您仅选择 x86 虚拟设备时,它必须 <= 500 。

手动分片

将测试用例分成指定的包、类和/或方法组。

启用手动分片后,通过environmentVariables或InstrumentationTest指定测试目标无效。

JSON 表示
{
  "testTargetsForShard": [
    {
      object (TestTargetsForShard)
    }
  ]
}
领域
testTargetsForShard[]

object ( TestTargetsForShard )

必需的。要为每个手动创建的分片运行的一组包、类和/或测试方法。如果存在此字段,则您必须至少指定一个分片。当您选择一台或多台物理设备时,重复testTargetsForShard的数量必须<= 50。当您选择一台或多台ARM虚拟设备时,它必须<= 200。当您仅选择x86虚拟设备时,它必须<= 500。

分片测试目标

分片的测试目标。

JSON 表示
{
  "testTargets": [
    string
  ]
}
领域
testTargets[]

string

要为每个分片运行的包、类和/或测试方法组。需要以 AndroidJUnitRunner 参数格式指定目标。例如,“package com.my.packages”“class com.my.package.MyClass”。

testTargets 的数量必须大于 0。

智能分片

基于之前的测试用例计时记录进行分片测试。

JSON 表示
{
  "targetedShardDuration": string
}
领域
targetedShardDuration

string ( Duration format)

分片内测试应花费的时间量。

默认值:300 秒(5 分钟)。允许的最短时间:120 秒(2 分钟)。

分片计数根据时间动态设置,最高可达最大分片限制(如下所述)。为了保证每个分片至少有一个测试用例,分片的数量不会超过测试用例的数量。如果满足以下条件,则将超出分片持续时间:

  • 已达到最大分片限制,并且还有更多计算出的剩余测试时间可分配到分片中。
  • 任何单独的测试预计都会比目标分片持续时间长。

分片持续时间无法保证,因为智能分片使用测试用例历史记录和默认持续时间,这可能不准确。查找测试用例计时记录的规则是:

  • 如果服务在过去 30 天内处理过测试用例,则将使用最新成功测试用例的记录。
  • 对于新的测试用例,将使用其他已知测试用例的平均持续时间。
  • 如果没有可用的先前测试用例计时记录,则默认测试用例持续时间为 15 秒。

由于实际分片持续时间可能会超过目标分片持续时间,因此我们建议您将目标值设置为比允许的最大测试超时至少短 5 分钟(物理设备为 45 分钟,虚拟设备为 60 分钟),或者使用自定义测试您设置的超时值。这种方法可以避免在所有测试完成之前取消分片。

请注意,最大分片数量是有限制的。当您选择一个或多个物理设备时,分片数量必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须 <= 200。当您仅选择 x86 虚拟设备时,它必须 <= 500 . 为了保证每个分片至少有一个测试用例,分片的数量不会超过测试用例的数量。创建的每个分片都计入每日测试配额。

以秒为单位的持续时间,最多包含九个小数位,以“ s ”结尾。示例: "3.5s"

AndroidRobo测试

对 Android 应用程序的测试,探索虚拟或物理 Android 设备上的应用程序,找出罪魁祸首和崩溃情况。

JSON 表示
{
  "appPackageId": string,
  "appInitialActivity": string,
  "maxDepth": integer,
  "maxSteps": integer,
  "roboDirectives": [
    {
      object (RoboDirective)
    }
  ],
  "roboMode": enum (RoboMode),
  "roboScript": {
    object (FileReference)
  },
  "startingIntents": [
    {
      object (RoboStartingIntent)
    }
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
领域
appPackageId

string

被测应用程序的 java 包。默认值是通过检查应用程序的清单来确定的。

appInitialActivity

string

应该用于启动应用程序的初始活动。

maxDepth
(deprecated)

integer

Robo 可以探索的遍历堆栈的最大深度。需要至少为 2 才能让 Robo 在第一个活动之外探索应用程序。默认值为 50。

maxSteps
(deprecated)

integer

Robo 可以执行的最大步数。默认没有限制。

roboDirectives[]

object ( RoboDirective )

Robo 在爬行期间应应用的一组指令。这允许用户自定义爬网。例如,可以提供测试帐户的用户名和密码。

roboMode

enum ( RoboMode )

Robo 运行的模式。大多数客户端应该允许服务器自动填充此字段。

roboScript

object ( FileReference )

包含 Robo 应执行的一系列操作的 JSON 文件作为爬行的序言。

startingIntents[]

object ( RoboStartingIntent )

用于启动应用程序进行爬网的意图。如果未提供,则启动主启动器活动。如果提供了一些,则仅启动提供的那些(必须显式提供主启动器活动)。

联合字段app_under_test 。必需的。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在测试的应用程序的 APK。

appBundle

object ( AppBundle )

用于被测应用程序的多 apk 应用程序包。

机器人指令

如果在爬网过程中遇到特定的 UI 元素,则指示 Robo 与该元素进行交互。目前,Robo 可以执行文本输入或元素单击。

JSON 表示
{
  "resourceName": string,
  "inputText": string,
  "actionType": enum (RoboActionType)
}
领域
resourceName

string

必需的。目标 UI 元素的 Android 资源名称。例如,在 Java 中: R.string.foo 在 xml 中: @string/foo 只需要“foo”部分。参考文档: https ://developer.android.com/guide/topics/resources/accessing-resources.html

inputText

string

Robo 被指示设置的文本。如果留空,该指令将被视为对与资源名称匹配的元素的单击。

actionType

enum ( RoboActionType )

必需的。 Robo 应对指定元素执行的操作类型。

机器人动作类型

Robo 可以对 UI 元素执行的操作。

枚举
ACTION_TYPE_UNSPECIFIED不使用。仅适用于原型版本控制。
SINGLE_CLICK指示 Robo 单击指定元素。如果指定元素不可点击,则无操作。
ENTER_TEXT指示 Robo 在指定元素上输入文本。如果指定元素未启用或不允许文本输入,则无操作。
IGNORE指示 Robo 忽略与特定元素的交互。

机器人模式

Robo 运行的模式。

枚举
ROBO_MODE_UNSPECIFIED这意味着服务器应该选择模式。受到推崇的。
ROBO_VERSION_1在仅 UIAutomator 模式下运行 Robo,无需应用程序退出
ROBO_VERSION_2使用 UIAutomator 后备在标准 Espresso 中运行 Robo

机器人启动意图

用于指定要爬网的启动活动的消息。

JSON 表示
{
  "timeout": string,

  // Union field starting_intent can be only one of the following:
  "launcherActivity": {
    object (LauncherActivityIntent)
  },
  "startActivity": {
    object (StartActivityIntent)
  }
  // End of list of possible types for union field starting_intent.
}
领域
timeout

string ( Duration format)

每个意图的超时(以秒为单位)。

以秒为单位的持续时间,最多包含九个小数位,以“ s ”结尾。示例: "3.5s"

联合字段starting_intent 。必需的。开始活动的意图详细信息。 starting_intent只能是以下之一:
launcherActivity

object ( LauncherActivityIntent )

启动主启动器活动的意图。

startActivity

object ( StartActivityIntent )

启动具有特定细节的活动的意图。

启动器活动意图

指定启动主启动器活动的意图。

启动活动意图

由操作、uri 和类别指定的起始意图。

JSON 表示
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
领域
action

string

动作名称。 START_ACTIVITY 必需。

uri

string

操作的 URI。

categories[]

string

在意图上设置的意图类别。

Android测试循环

使用测试循环对 Android 应用程序进行测试。意图 <intent-name> 将被隐式添加,因为 Games 目前是该 api 的唯一用户。

JSON 表示
{
  "appPackageId": string,
  "scenarios": [
    integer
  ],
  "scenarioLabels": [
    string
  ],

  // Union field app_under_test can be only one of the following:
  "appApk": {
    object (FileReference)
  },
  "appBundle": {
    object (AppBundle)
  }
  // End of list of possible types for union field app_under_test.
}
领域
appPackageId

string

被测应用程序的 java 包。默认值是通过检查应用程序的清单来确定的。

scenarios[]

integer

测试期间应运行的场景列表。默认值是所有测试循环,源自应用程序的清单。

scenarioLabels[]

string

测试期间应运行的场景标签列表。场景标签应映射到应用程序清单中定义的标签。例如,player_experience 和 com.google.test.loops.player_experience 将清单中标记为 com.google.test.loops.player_experience 名称的所有循环添加到执行中。还可以在场景字段中指定场景。

联合字段app_under_test 。必需的。要测试的 Android 包。 app_under_test只能是以下之一:
appApk

object ( FileReference )

正在测试的应用程序的 APK。

appBundle

object ( AppBundle )

用于被测应用程序的多 apk 应用程序包。

IOSXc测试

使用 XCTest 框架对 iOS 应用程序进行测试。 Xcode 支持“构建测试”选项,该选项生成包含测试规范(参数、测试方法等)的 .xctestrun 文件。此测试类型接受包含 .xctestrun 文件和 Build/Products 目录(包含运行测试所需的所有二进制文件)的相应内容的 zip 文件。

JSON 表示
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
领域
testsZip

object ( FileReference )

必需的。包含 .xctestrun 文件和 DerivedData/Build/Products 目录内容的 .zip。如果指定了 xctestrun 字段,则该 zip 中的 .xctestrun 文件将被忽略。

xctestrun

object ( FileReference )

.xctestrun 文件将覆盖测试 zip 中的 .xctestrun 文件。由于 .xctestrun 文件包含环境变量以及要运行和/或忽略的测试方法,因此这对于分片测试非常有用。默认值取自测试 zip。

xcodeVersion

string

用于测试的 Xcode 版本。使用 TestEnvironmentDiscoveryService 获取支持的选项。默认为 Firebase 测试实验室支持的最新 Xcode 版本。

appBundleId

string

仅输出。正在测试的应用程序的捆绑包 ID。

testSpecialEntitlements

boolean

用于测试特殊应用程序权利的选项。设置此选项将使用显式应用程序标识符重新签署具有特殊权利的应用程序。目前支持测试 aps-environment 权利。

IOS测试循环

对实现一个或多个游戏循环场景的 iOS 应用程序的测试。此测试类型接受存档的应用程序(.ipa 文件)和将在应用程序上按顺序执行的整数场景列表。

JSON 表示
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
领域
appIpa

object ( FileReference )

必需的。要测试的应用程序的 .ipa。

scenarios[]

integer

测试期间应运行的场景列表。如果未指定,则默认为单一场景 0。

appBundleId

string

仅输出。正在测试的应用程序的捆绑包 ID。

环境矩阵

要执行测试的环境矩阵。

JSON 表示
{

  // Union field environment_matrix can be only one of the following:
  "androidMatrix": {
    object (AndroidMatrix)
  },
  "androidDeviceList": {
    object (AndroidDeviceList)
  },
  "iosDeviceList": {
    object (IosDeviceList)
  }
  // End of list of possible types for union field environment_matrix.
}
领域
联合字段environment_matrix 。必需的。环境矩阵。 environment_matrix只能是以下之一:
androidMatrix

object ( AndroidMatrix )

Android 设备矩阵。

androidDeviceList

object ( AndroidDeviceList )

Android 设备列表;该测试将仅在指定的设备上运行。

iosDeviceList

object ( IosDeviceList )

iOS 设备列表。

Android矩阵

一组 Android 设备配置排列由给定轴的叉积定义。在内部,给定的 AndroidMatrix 将扩展为一组 AndroidDevices。

只有支持的排列才会被实例化。无效排列(例如,不兼容的型号/版本)将被忽略。

JSON 表示
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
领域
androidModelIds[]

string

必需的。要使用的 Android 设备集的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。

androidVersionIds[]

string

必需的。要使用的 Android 操作系统版本集的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。

locales[]

string

必需的。测试设备将为测试启用的区域设置集。使用 TestEnvironmentDiscoveryService 获取支持的选项。

orientations[]

string

必需的。要测试的方向集。使用 TestEnvironmentDiscoveryService 获取支持的选项。

Android设备列表

要执行测试的 Android 设备配置列表。

JSON 表示
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
领域
androidDevices[]

object ( AndroidDevice )

必需的。 Android 设备列表。

Android设备

单个 Android 设备。

JSON 表示
{
  "androidModelId": string,
  "androidVersionId": string,
  "locale": string,
  "orientation": string
}
领域
androidModelId

string

必需的。要使用的 Android 设备的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。

androidVersionId

string

必需的。要使用的 Android 操作系统版本的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。

locale

string

必需的。测试设备用于测试的区域设置。使用 TestEnvironmentDiscoveryService 获取支持的选项。

orientation

string

必需的。测试期间设备的方向如何。使用 TestEnvironmentDiscoveryService 获取支持的选项。

Ios设备列表

要在其中执行测试的 iOS 设备配置列表。

JSON 表示
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
领域
iosDevices[]

object ( IosDevice )

必需的。 iOS 设备列表。

IOS设备

单个 iOS 设备。

JSON 表示
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
领域
iosModelId

string

必需的。要使用的 iOS 设备的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。

iosVersionId

string

必需的。要使用的iOS主要软件版本的id。使用 TestEnvironmentDiscoveryService 获取支持的选项。

locale

string

必需的。测试设备用于测试的区域设置。使用 TestEnvironmentDiscoveryService 获取支持的选项。

orientation

string

必需的。测试期间设备的方向如何。使用 TestEnvironmentDiscoveryService 获取支持的选项。

测试执行

在单一环境中执行的单一测试。

JSON 表示
{
  "id": string,
  "matrixId": string,
  "projectId": string,
  "testSpecification": {
    object (TestSpecification)
  },
  "shard": {
    object (Shard)
  },
  "environment": {
    object (Environment)
  },
  "state": enum (TestState),
  "toolResultsStep": {
    object (ToolResultsStep)
  },
  "timestamp": string,
  "testDetails": {
    object (TestDetails)
  }
}
领域
id

string

仅输出。由服务设置的唯一 ID。

matrixId

string

仅输出。包含 TestMatrix 的 ID。

projectId

string

仅输出。拥有测试执行的云项目。

testSpecification

object ( TestSpecification )

仅输出。如何运行测试。

shard

object ( Shard )

仅输出。有关分片的详细信息。

environment

object ( Environment )

仅输出。主机是如何配置的。

state

enum ( TestState )

仅输出。指示测试执行的当前进度(例如,FINISHED)。

toolResultsStep

object ( ToolResultsStep )

仅输出。写入此执行结果的位置。

timestamp

string ( Timestamp format)

仅输出。最初创建此测试执行的时间。

RFC3339 UTC“Zulu”格式的时间戳,具有纳秒分辨率和最多九个小数位。示例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

testDetails

object ( TestDetails )

仅输出。有关运行测试的其他详细信息。

碎片

仅输出。有关分片的详细信息。

JSON 表示
{
  "shardIndex": integer,
  "numShards": integer,
  "testTargetsForShard": {
    object (TestTargetsForShard)
  },
  "estimatedShardDuration": string
}
领域
shardIndex

integer

仅输出。该分片在所有分片中的索引。

numShards

integer

仅输出。分片总数。

testTargetsForShard

object ( TestTargetsForShard )

仅输出。每个分片的测试目标。仅设置为手动分片。

estimatedShardDuration

string ( Duration format)

仅输出。根据之前的测试用例计时记录(如果有)估计的分片持续时间。

以秒为单位的持续时间,最多包含九个小数位,以“ s ”结尾。示例: "3.5s"

环境

运行测试的环境。

JSON 表示
{

  // Union field environment can be only one of the following:
  "androidDevice": {
    object (AndroidDevice)
  },
  "iosDevice": {
    object (IosDevice)
  }
  // End of list of possible types for union field environment.
}
领域
联盟场environment 。必需的。环境。 environment只能是以下之一:
androidDevice

object ( AndroidDevice )

必须用于 Android 测试的 Android 设备。

iosDevice

object ( IosDevice )

必须用于 iOS 测试的 iOS 设备。

测试状态

测试执行或矩阵的状态(即进度)。

枚举
TEST_STATE_UNSPECIFIED不使用。仅适用于原型版本控制。
VALIDATING正在验证执行或矩阵。
PENDING执行或矩阵正在等待资源变得可用。
RUNNING

目前正在处理执行。

只能在执行时设置。

FINISHED

执行或矩阵已正常终止。

在矩阵上,这意味着矩阵级处理正常完成,但个别执行可能处于错误状态。

ERROR由于遇到基础设施故障,执行或矩阵已停止。
UNSUPPORTED_ENVIRONMENT

该执行未运行,因为它对应于不受支持的环境。

只能在执行时设置。

INCOMPATIBLE_ENVIRONMENT

由于提供的输入与请求的环境不兼容,因此未运行执行。

示例:请求的 AndroidVersion 低于 APK 的 minSdkVersion

只能在执行时设置。

INCOMPATIBLE_ARCHITECTURE

由于提供的输入与请求的体系结构不兼容,因此未运行执行。

示例:请求的设备不支持运行提供的 APK 中的本机代码

只能在执行时设置。

CANCELLED

用户取消了执行。

只能在执行时设置。

INVALID

由于提供的输入无效,因此未运行执行或矩阵。

示例:输入文件不是预期类型、格式错误/损坏或被标记为恶意软件

工具结果步骤

表示工具结果步骤资源。

这具有测试执行的结果。

JSON 表示
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
领域
projectId

string

仅输出。拥有该工具结果步骤的云项目。

historyId

string

仅输出。工具结果历史 ID。

executionId

string

仅输出。工具结果执行 ID。

stepId

string

仅输出。工具结果步骤 ID。

测试详情

有关运行测试进度的其他详细信息。

JSON 表示
{
  "progressMessages": [
    string
  ],
  "errorMessage": string
}
领域
progressMessages[]

string

仅输出。人类可读的测试进度的详细描述。例如:“配置设备”、“开始测试”。

在执行过程中,新数据可能会附加到 ProgressMessages 的末尾。

errorMessage

string

仅输出。如果 TestState 为 ERROR,则此字符串将包含有关错误的人类可读详细信息。

结果存储

存储运行测试结果的位置。

JSON 表示
{
  "googleCloudStorage": {
    object (GoogleCloudStorage)
  },
  "toolResultsHistory": {
    object (ToolResultsHistory)
  },
  "toolResultsExecution": {
    object (ToolResultsExecution)
  },
  "resultsUrl": string
}
领域
googleCloudStorage

object ( GoogleCloudStorage )

必需的。

toolResultsHistory

object ( ToolResultsHistory )

工具结果历史记录包含结果写入的工具结果执行情况。

如果未提供,服务将选择合适的值。

toolResultsExecution

object ( ToolResultsExecution )

仅输出。结果写入的工具结果执行。

resultsUrl

string

仅输出。 Firebase Web 控制台中结果的 URL。

谷歌云存储

Google 云存储 (GCS) 中的存储位置。

JSON 表示
{
  "gcsPath": string
}
领域
gcsPath

string

必需的。 GCS 中最终包含此测试结果的目录的路径。请求用户必须对所提供路径中的存储桶具有写入权限。

工具结果历史记录

代表工具结果历史资源。

JSON 表示
{
  "projectId": string,
  "historyId": string
}
领域
projectId

string

必需的。拥有工具结果历史记录的云项目。

historyId

string

必需的。工具结果历史 ID。

工具结果执行

代表工具结果执行资源。

这有 TestMatrix 的结果。

JSON 表示
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
领域
projectId

string

仅输出。拥有该工具结果执行的云项目。

historyId

string

仅输出。工具结果历史 ID。

executionId

string

仅输出。工具结果执行 ID。

无效矩阵详情

矩阵被视为无效的详细原因。

枚举
INVALID_MATRIX_DETAILS_UNSPECIFIED不使用。仅适用于原型版本控制。
DETAILS_UNAVAILABLE该矩阵无效,但没有进一步的详细信息。
MALFORMED_APK无法解析输入应用 APK。
MALFORMED_TEST_APK无法解析输入测试 APK。
NO_MANIFEST找不到 AndroidManifest.xml。
NO_PACKAGE_NAME APK 清单未声明包名称。
INVALID_PACKAGE_NAME APK 应用程序 ID(也称为包名称)无效。另请参阅https://developer.android.com/build/configure-app-module#set-application-id
TEST_SAME_AS_APP测试包和app包是一样的。
NO_INSTRUMENTATION测试 apk 不声明检测。
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 不包含用户指定的或清单文件中指定的测试运行器类。这可能是由以下原因之一引起的:

  • 用户提供了不正确的运行器类名称,或者
  • 测试运行器未内置到测试 APK 中(可能位于应用程序 APK 中)。
NO_LAUNCHER_ACTIVITY找不到主要的启动器活动。
FORBIDDEN_PERMISSIONS应用程序声明了一项或多项不允许的权限。
INVALID_ROBO_DIRECTIVES提供的 roboDirectives 存在冲突。
INVALID_RESOURCE_NAME提供的 robo 指令中至少有一个无效的资源名称
INVALID_DIRECTIVE_ACTION robo 指令中的操作定义无效(例如,单击或忽略操作包含输入文本字段)
TEST_LOOP_INTENT_FILTER_NOT_FOUND没有测试循环意图过滤器,或者给定的意图过滤器格式不正确。
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应用程序不注册游戏循环 URL 方案。
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运行此测试时出现未知的权限问题。

结果总结

完成的测试矩阵的结果摘要。

枚举
OUTCOME_SUMMARY_UNSPECIFIED不使用。仅适用于原型版本控制。
SUCCESS

测试矩阵运行成功,例如:

  • 所有测试用例都通过了。
  • Robo 没有检测到被测应用程序崩溃。
FAILURE

运行失败,例如:

  • 一个或多个测试用例失败。
  • 测试超时。
  • 正在测试的应用程序崩溃了。
INCONCLUSIVE意想不到的事情发生了。运行仍应被视为不成功,但这可能是暂时性问题,重新运行测试可能会成功。
SKIPPED

所有测试都被跳过,例如:

  • 所有设备配置都不兼容。

方法

cancel

取消测试矩阵中未完成的测试执行。

create

根据给定的规范创建并运行测试矩阵。

get

检查测试矩阵的状态以及创建后的执行情况。