REST 资源:projects.testMatrices

资源:TestMatrix

一组(包含一个或多个)TestExecution,在一组预定义的轴上用值的乘积构建而成。

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)
}
字段
testMatrixId

string

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

projectId

string

测试矩阵所属的 Cloud 项目。

clientInfo

对象( ClientInfo

对测试进行调用的客户端的相关信息。

testSpecification

对象( TestSpecification

必需。如何运行测试。

environmentMatrix

对象( EnvironmentMatrix

必需。如何配置主机。

testExecutions[]

object(TestExecution)

仅限输出。服务为此矩阵创建的测试作业列表。

resultStorage

object(ResultStorage)

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

state

enum(TestState)

仅限输出。指示测试矩阵的当前进度(例如,FINISHED)。

timestamp

string (Timestamp format)

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

此时间戳采用 RFC3339 世界协调时间 (UTC)(即“祖鲁时”)格式,且精确到纳秒。例如:"2014-10-02T15:01:23.045123456Z"

invalidMatrixDetails

enum(InvalidMatrixDetails)

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

ClientInfo

对测试进行调用的客户端的相关信息。

JSON 表示法

{
  "name": string,
  "clientInfoDetails": [
    {
      object(ClientInfoDetail)
    }
  ]
}
字段
name

string

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

clientInfoDetails[]

object(ClientInfoDetail)

客户端相关详细信息的列表。

ClientInfoDetail

对测试进行调用的客户端的相关详细信息的键值对。例如:{'Version', '1.0'}, {'Release Track', 'BETA'}。

JSON 表示法

{
  "key": string,
  "value": string
}
字段
key

string

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

value

string

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

TestSpecification

有关如何运行测试的说明。

JSON 表示法

{
  "testTimeout": string,
  "autoGoogleLogin": boolean,
  "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)
  }
  // End of list of possible types for union field test.
}
字段
testTimeout

string (Duration format)

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

此时间以秒为单位,最多包含九个小数位,并以“s”结束。例如:"3.5s"

autoGoogleLogin
(deprecated)

boolean

启用 Google 帐号自动登录功能。如果设置,服务会自动生成 Google 测试帐号并将其添加到设备,然后再执行测试。请注意,可以重复使用测试帐号。当设备上存在帐号时,很多应用才能提供完整的功能集。使用这些生成的帐号登录设备可以测试更多功能。默认值为 false。

disableVideoRecording

boolean

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

disablePerformanceMetrics

boolean

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

联合字段 setup

setup 只能是下列其中一项:

testSetup

object(TestSetup)

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

iosTestSetup

object(IosTestSetup)

iOS 测试设置要求。

联合字段 test。必需。要运行的测试类型。test 只能是下列其中一项:
androidInstrumentationTest

对象( AndroidInstrumentationTest

Android Instrumentation 测试。

androidRoboTest

对象( AndroidRoboTest

Android Robo 测试。

androidTestLoop

对象( AndroidTestLoop

带有测试循环的 Android 应用。

iosXcTest

对象( IosXcTest

通过 .xctestrun 文件执行的 iOS XCTest。

TestSetup

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

JSON 表示法

{
  "filesToPush": [
    {
      object(DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "additionalApks": [
    {
      object(Apk)
    }
  ],
  "account": {
    object(Account)
  },
  "networkProfile": string,
  "environmentVariables": [
    {
      object(EnvironmentVariable)
    }
  ]
}
字段
filesToPush[]

对象( DeviceFile

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

directoriesToPull[]

string

在测试结束时要上传到 GCS 的设备目录列表;它们必须是 /sdcard 或 /data/local/tmp 下的绝对路径。路径名称只能包含字符 a-z A-Z 0-9 _ - . + 和 /

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

additionalApks[]

对象( Apk

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

account

object(Account)

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

networkProfile

string

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

environmentVariables[]

object(EnvironmentVariable)

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

DeviceFile

单个设备文件说明。

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

对象( ObbFile

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

regularFile

对象( RegularFile

对常规文件的引用

ObbFile

在测试开始之前要安装到设备上的不透明二进制 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

对象( FileReference

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

FileReference

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

JSON 表示法

{
  "gcsPath": string
}
字段
gcsPath

string

指向 Google Cloud Storage 中的文件的路径。例如:gs://build-app-1414623860166/app-debug-unaligned.apk

RegularFile

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

JSON 表示法

{
  "content": {
    object(FileReference)
  },
  "devicePath": string
}
字段
content

对象( FileReference

必需。源文件。

devicePath

string

必需。将内容放在设备上的位置。必须是列入白名单的绝对路径。如果文件存在,则予以替换。系统会将以下设备端目录及其所有子目录列入白名单:

${EXTERNAL_STORAGE} 或 /sdcard

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

如果指定的路径在这些目录树之外,则属无效。

系统将提供路径 /sdcard 和 /data 并将其视为隐式路径替代项。例如,如果特定设备上的 /sdcard 未映射到外部存储空间,则系统会将其替换为该设备的外部存储路径前缀并将文件复制到外部存储路径。

强烈建议您在应用和测试代码中使用 Environment API,从而以可移植方式访问设备上的文件。

Apk

要安装的 Android 软件包文件。

JSON 表示法

{
  "location": {
    object(FileReference)
  },
  "packageName": string
}
字段
location

对象( FileReference

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

packageName

string

要安装的 APK 的 Java 软件包。可通过检查应用的清单来确定值。

Account

标识帐号以及如何登录帐号。

JSON 表示法

{
  "googleAuto": {
    object(GoogleAuto)
  }
}
字段
googleAuto

对象( GoogleAuto

自动 Google 登录帐号。

GoogleAuto

启用 Google 帐号自动登录功能。如果设置,服务会自动生成 Google 测试帐号并将其添加到设备,然后再执行测试。请注意,可以重复使用测试帐号。当设备上存在帐号时,很多应用才能提供完整的功能集。使用这些生成的帐号登录设备可以测试更多功能。

EnvironmentVariable

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

JSON 表示法

{
  "key": string,
  "value": string
}
字段
key

string

环境变量的键。

value

string

环境变量的值。

IosTestSetup

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

JSON 表示法

{
  "networkProfile": string
}
字段
networkProfile

string

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

AndroidInstrumentationTest

Android 应用测试,可以独立于 Android 组件的正常生命周期控制该组件。Android Instrumentation 测试可在虚拟或真机 AndroidDevice 上的同一进程内运行应用 APK 和测试 APK。它们还可指定测试运行程序类(例如 com.google.GoogleTestRunner),该类可能会因所选的特定 Instrumentation 框架而异。

如需详细了解 Android 测试类型,请参阅 http://developer.android.com/tools/testing/testing_android.html

JSON 表示法

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

  // 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

每个目标都必须以下列某种格式使用软件包名称或类名称进行完全限定:- "package packageName" - "class packageName.class_name" - "class packageName.class_name#method_name"

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

orchestratorOption

enum(OrchestratorOption)

此选项可确定是否使用 Android Test Orchestrator 在每个测试各自的 Instrumentation 调用中运行该测试。** Orchestrator 仅与 AndroidJUnitRunner 版本 1.0 或更高版本兼容!** Orchestrator 提供以下优势:- 无共享状态 - 崩溃被隔离 - 为每个测试限定日志范围

如需详细了解 Android Test Orchestrator,请参阅 https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

如果未设置,则将在不使用 Orchestrator 的情况下运行测试。

联合字段 app_under_test。必需。app_under_test 只能是下列其中一项:
appApk

object(FileReference)

正在测试的应用的 APK。

appBundle

object(AppBundle)

正在测试的应用的多 APK 应用软件包。

AppBundle

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

有关如何构建 App Bundle 的指导,请参阅 https://developer.android.com/guide/app-bundle/build

JSON 表示法

{
  "bundleLocation": {
    object(FileReference)
  }
}
字段
bundleLocation

对象( FileReference

表示正在测试的应用软件包的 .aab 文件。

OrchestratorOption

指定如何执行测试。

枚举
ORCHESTRATOR_OPTION_UNSPECIFIED 默认值:由服务器来选择模式。目前,此选项暗示将在不使用 Orchestrator 的情况下运行测试。将来,所有 Instrumentation 测试都将使用 Orchestrator 运行。由于 Orchestrator 提供诸多好处,因此强烈建议使用。
USE_ORCHESTRATOR 使用 Orchestrator 运行测试。** 仅与 AndroidJUnitRunner 版本 1.0 或更高版本兼容!** 推荐。
DO_NOT_USE_ORCHESTRATOR 在不使用 Orchestrator 的情况下运行测试。

AndroidRoboTest

Android 应用测试,该测试可探索应用在虚拟或真机 Android 设备上的运行情况,并在此过程中发现引起问题的原因和崩溃情况。

JSON 表示法

{
  "appPackageId": string,
  "appInitialActivity": string,
  "maxDepth": number,
  "maxSteps": number,
  "roboDirectives": [
    {
      object(RoboDirective)
    }
  ],
  "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

应该用于启动应用的初始 Activity。

maxDepth
(deprecated)

number

Robo 可探索的遍历堆栈的最大深度。此深度至少需要为 2,Robo 才能探索第一个 Activity 之外的应用内容。默认值为 50。

maxSteps
(deprecated)

number

Robo 可以执行的步骤数上限。默认值为没有限制。

roboDirectives[]

object(RoboDirective)

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

roboScript

object(FileReference)

JSON 文件,包含 Robo 应该在抓取前执行的一系列操作。

startingIntents[]

object(RoboStartingIntent)

用于启动应用进行抓取的 Intent。如果未提供,则启动主启动器 Activity。如果已提供,则仅启动所提供的那些 Activity(必须明确提供主启动器 Activity)。

联合字段 app_under_test。必需。app_under_test 只能是下列其中一项:
appApk

object(FileReference)

正在测试的应用的 APK。

appBundle

object(AppBundle)

正在测试的应用的多 APK 应用软件包。

RoboDirective

指示 Robo 在抓取期间遇到特定界面元素时与其交互。目前,Robo 可以执行文本输入或元素点击。

JSON 表示法

{
  "resourceName": string,
  "inputText": string,
  "actionType": enum(RoboActionType)
}
字段
resourceName

string

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

inputText

string

指示 Robo 设置的文本。如果保留为空,则该指令将视为对与 resourceName 匹配的元素执行 CLICK 操作。

actionType

enum(RoboActionType)

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

RoboActionType

枚举
ACTION_TYPE_UNSPECIFIED 请勿使用。仅适用于 Proto 版本控制。
SINGLE_CLICK 指示 Robo 点击指定的元素。如果指定的元素不可点击,则不执行任何操作。
ENTER_TEXT 指示 Robo 在指定的元素上输入文本。如果指定的元素未启用或不允许输入文本,则不执行任何操作。

RoboStartingIntent

用于指定要抓取的启动 Activity 的消息。

JSON 表示法

{

  // 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.
}
字段

联合字段 starting_intent

starting_intent 只能是下列其中一项:

launcherActivity

object(LauncherActivityIntent)

startActivity

object(StartActivityIntent)

LauncherActivityIntent

指定用于启动主启动器 Activity 的 Intent。

StartActivityIntent

由操作、URI 和类别指定的启动 Intent。

JSON 表示法

{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
字段
action

string

操作名称。对于 START_ACTIVITY 为必需。

uri

string

操作的 URI。

categories[]

string

要对 Intent 设置的 Intent 类别。

AndroidTestLoop

对带有测试循环的 Android 应用进行的测试。系统将隐式添加 Intent <intent-name>,因为目前此 API 的唯一用户是 Games。

JSON 表示法

{
  "appPackageId": string,
  "scenarios": [
    number
  ],
  "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[]

number

应在测试期间运行的场景列表。默认值是从应用的清单文件派生的所有测试循环。

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 应用软件包。

IosXcTest

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

JSON 表示法

{
  "testsZip": {
    object(FileReference)
  },
  "xctestrun": {
    object(FileReference)
  },
  "xcodeVersion": string
}
字段
testsZip

object(FileReference)

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

xctestrun

object(FileReference)

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

xcodeVersion

string

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

EnvironmentMatrix

要在其中执行测试的环境矩阵。

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 设备列表。

AndroidMatrix

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

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

JSON 表示法

{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
字段
androidModelIds[]

string

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

androidVersionIds[]

string

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

locales[]

string

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

orientations[]

string

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

AndroidDeviceList

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

JSON 表示法

{
  "androidDevices": [
    {
      object(AndroidDevice)
    }
  ]
}
字段