- 资源:测试矩阵
- 客户信息
- 客户信息详情
- 测试规范
- 测试设置
- 设备文件
- OBB文件
- 文件参考
- 常规文件
- 应用程序
- 帐户
- 谷歌汽车
- 环境变量
- Systrace设置
- Ios测试设置
- Ios设备文件
- Android仪器测试
- 应用程序包
- Orchestrator选项
- 分片选项
- 统一分片
- 手动分片
- 分片测试目标
- 智能分片
- AndroidRobo测试
- 机器人指令
- 机器人动作类型
- 机器人模式
- 机器人启动意图
- 启动器活动意图
- 启动活动意图
- Android测试循环
- IOSXc测试
- IOS测试循环
- 环境矩阵
- Android矩阵
- Android设备列表
- Android设备
- Ios设备列表
- IOS设备
- 测试执行
- 碎片
- 环境
- 测试状态
- 工具结果步骤
- 测试详情
- 结果存储
- 谷歌云存储
- 工具结果历史记录
- 工具结果执行
- 无效矩阵详情
- 结果总结
- 方法
资源:测试矩阵
TestMatrix 捕获有关测试的所有详细信息。它包含环境配置、测试规范、测试执行以及总体状态和结果。
JSON 表示 |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
领域 | |
---|---|
testMatrixId | 仅输出。由服务设置的唯一 ID。 |
projectId | 拥有测试矩阵的云项目。 |
clientInfo | 有关调用测试的客户端的信息。 |
testSpecification | 必需的。如何运行测试。 |
environmentMatrix | 必需的。正在执行测试的设备。 |
testExecutions[] | 仅输出。服务为此矩阵创建的测试执行列表。 |
resultStorage | 必需的。写入矩阵结果的位置。 |
state | 仅输出。指示测试矩阵的当前进度。 |
timestamp | 仅输出。最初创建此测试矩阵的时间。 RFC3339 UTC“Zulu”格式的时间戳,具有纳秒分辨率和最多九个小数位。示例: |
invalidMatrixDetails | 仅输出。描述矩阵被视为无效的原因。仅对处于 INVALID 状态的矩阵有用。 |
flakyTestAttempts | 如果一个或多个测试用例因任何原因失败,则应重新尝试 TestExecution 的次数。允许的最大重新运行次数为 10。 默认值为 0,这意味着不重新运行。 |
outcomeSummary | 仅输出。测试的总体结果。仅当测试矩阵状态为 FINISHED 时才设置。 |
failFast | 如果为 true,则最多只会尝试一次来运行矩阵中的每个执行/分片。不稳定的测试尝试不受影响。 通常,如果检测到潜在的基础设施问题,则会进行 2 次或多次尝试。 此功能适用于延迟敏感的工作负载。对于快速失败矩阵,执行失败的发生率可能明显更高,并且由于这种期望,支持也更加有限。 |
客户信息
有关调用测试的客户端的信息。
JSON 表示 |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
领域 | |
---|---|
name | 必需的。客户端名称,例如 gcloud。 |
clientInfoDetails[] | 有关客户的详细信息列表。 |
客户信息详情
有关调用测试的客户端的详细信息的键值对。示例:{'版本'、'1.0'}、{'发布轨道'、'BETA'}。
JSON 表示 |
---|
{ "key": string, "value": string } |
领域 | |
---|---|
key | 必需的。详细客户信息的关键。 |
value | 必需的。详细的客户信息的价值。 |
测试规范
如何运行测试的描述。
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 机器人测试。 |
androidTestLoop | 带有测试循环的 Android 应用程序。 |
iosXcTest | iOS XCTest,通过 .xctestrun 文件。 |
iosTestLoop | 具有测试循环的 iOS 应用程序。 |
测试设置
有关如何在运行测试之前设置 Android 设备的说明。
JSON 表示 |
---|
{ "filesToPush": [ { object ( |
领域 | |
---|---|
filesToPush[] | 开始测试之前要推送到设备的文件列表。 |
directoriesToPull[] | 测试结束时上传到 GCS 的设备上的目录列表;它们必须是 /sdcard、/storage 或 /data/local/tmp 下的绝对路径。路径名仅限于字符 az AZ 0-9 _ - 。 + 和 / 注意:路径 /sdcard 和 /data 将可用并被视为隐式路径替换。例如,如果特定设备上的 /sdcard 未映射到外部存储,系统会将其替换为该设备的外部存储路径前缀。 |
additionalApks[] | 除了直接测试的 APK 之外还要安装的 APK。目前上限为 100。 |
account | 在测试期间,设备将使用此帐户登录。 |
networkProfile | 用于运行测试的网络流量配置文件。调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时,可以使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。 |
environmentVariables[] | 为测试设置的环境变量(仅适用于仪器测试)。 |
systrace | 运行的 Systrace 配置。已弃用:Systrace 使用 Python 2,该版本已于 2020 年 1 月 1 日停用。 Cloud Test API 不再支持 Systrace,并且结果中不会提供 Systrace 文件。 |
dontAutograntPermissions | 是否阻止在应用程序安装时授予所有运行时权限 |
设备文件
单个设备文件描述。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联合字段device_file 。必需的。 device_file 只能是以下之一: | |
obbFile | 对不透明二进制 blob 文件的引用。 |
regularFile | 对常规文件的引用。 |
OBB文件
在测试开始之前要在设备上安装的不透明二进制 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) 文件。 |
文件参考
对文件的引用,用于用户输入。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联盟现场file 。必需的。文件参考。 file 只能是以下之一: | |
gcsPath | Google Cloud Storage 中文件的路径。示例: gs://build-app-1414623860166/app%40debug-unaligned.apk这些路径预计会进行 url 编码(百分比编码) |
常规文件
测试开始前要安装在设备上的文件或目录。
JSON 表示 |
---|
{
"content": {
object ( |
领域 | |
---|---|
content | 必需的。源文件。 |
devicePath | 必需的。将内容放置在设备上的位置。必须是绝对的、允许的路径。如果该文件存在,它将被替换。以下设备端目录及其任何子目录均已列入白名单: ${EXTERNAL_STORAGE}、/sdcard 或 /storage ${ANDROID_DATA}/local/tmp 或 /data/local/tmp 指定这些目录树之外的路径是无效的。 路径 /sdcard 和 /data 将可用并被视为隐式路径替换。例如,如果特定设备上的 /sdcard 未映射到外部存储,系统将用该设备的外部存储路径前缀替换它,并将文件复制到那里。 强烈建议在应用程序和测试代码中使用环境 API以便携式方式访问设备上的文件。 |
应用程序
要安装的 Android 包文件。
JSON 表示 |
---|
{
"location": {
object ( |
领域 | |
---|---|
location | 测试开始前要安装在设备上的 APK 的路径。 |
packageName | 要安装的APK的java包。值是通过检查应用程序的清单来确定的。 |
帐户
识别帐户以及如何登录该帐户。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联合字段account_type 。必需的。帐户类型,基于其用途(例如 Google)及其登录机制(例如用户名和密码)。 account_type 只能是以下之一: | |
googleAuto | 自动谷歌登录帐户。 |
谷歌汽车
启用自动 Google 帐户登录。如果设置,该服务会在执行测试之前自动生成 Google 测试帐户并将其添加到设备。请注意,测试帐户可能会被重复使用。当设备上存在帐户时,许多应用程序会显示其全套功能。使用这些生成的帐户登录设备可以测试更多功能。
环境变量
键值对作为环境变量传递给测试。
JSON 表示 |
---|
{ "key": string, "value": string } |
领域 | |
---|---|
key | 环境变量的键。 |
value | 环境变量的值。 |
Systrace设置
JSON 表示 |
---|
{ "durationSeconds": integer } |
领域 | |
---|---|
durationSeconds | Systrace 持续时间(以秒为单位)。应介于 1 到 30 秒之间。 0 禁用系统跟踪。 |
Ios测试设置
有关如何在运行测试之前设置 iOS 设备的说明。
JSON 表示 |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
领域 | |
---|---|
networkProfile | 用于运行测试的网络流量配置文件。调用 TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog 时,可以使用 NETWORK_CONFIGURATION 环境类型查询可用的网络配置文件。 |
additionalIpas[] | 除了直接测试的应用程序外,还需要安装 iOS 应用程序。 |
pushFiles[] | 开始测试之前要推送到设备的文件列表。 |
pullDirectories[] | 测试结束时要上传到 Cloud Storage 的设备上的目录列表。 目录应该位于共享目录(例如 /private/var/mobile/Media)中,或者通过指定包 ID 位于应用程序文件系统内的可访问目录(例如 /Documents)中。 |
Ios设备文件
测试开始前要安装在设备上的文件或目录。
JSON 表示 |
---|
{
"content": {
object ( |
领域 | |
---|---|
content | 源文件 |
bundleId | 该文件所在应用程序的捆绑包 ID。 iOS 应用程序将其自己的文件系统沙箱化,因此应用程序文件必须指定设备上安装的应用程序。 |
devicePath | 文件在设备上、应用程序的沙盒文件系统内的位置 |
Android仪器测试
对 Android 应用程序的测试,该应用程序可以独立于正常生命周期控制 Android 组件。 Android 仪器测试运行应用程序 APK 并在虚拟或物理 Android 设备上的同一进程内测试 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 在其自己的仪器调用中运行每个测试的选项。 ** Orchestrator 仅与 AndroidJUnitRunner 版本 1.1 或更高版本兼容! ** Orchestrator 具有以下优势:
有关 Android Test Orchestrator 的更多信息,请参阅https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator 。 如果未设置,测试将在没有协调器的情况下运行。 |
shardingOption | 在多个分片中并行运行测试的选项。 |
联合字段app_under_test 。必需的。 app_under_test 只能是以下之一: | |
appApk | 正在测试的应用程序的 APK。 |
appBundle | 用于被测应用程序的多 apk 应用程序包。 |
应用程序包
Android App Bundle 文件格式,包含 BundleConfig.pb 文件、基本模块目录、零个或多个动态功能模块目录。
有关构建应用程序包的指南,请参阅https://developer.android.com/guide/app-bundle/build 。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联盟场bundle 。必需的。捆绑位置信息。 bundle 只能是以下之一: | |
bundleLocation | .aab 文件代表正在测试的应用程序包。 |
Orchestrator选项
指定如何执行测试。
枚举 | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | 默认值:服务器将选择模式。目前意味着测试将在没有协调器的情况下运行。将来,所有仪器测试都将使用协调器运行。由于它提供的所有好处,我们强烈鼓励使用编排器。 |
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 。 |
手动分片
将测试用例分成指定的包、类和/或方法组。
启用手动分片后,通过environmentVariables或InstrumentationTest指定测试目标无效。
JSON 表示 |
---|
{
"testTargetsForShard": [
{
object ( |
领域 | |
---|---|
testTargetsForShard[] | 必需的。要为每个手动创建的分片运行的一组包、类和/或测试方法。如果存在此字段,则您必须至少指定一个分片。当您选择一台或多台物理设备时,重复testTargetsForShard的数量必须<= 50。当您选择一台或多台ARM虚拟设备时,它必须<= 200。当您仅选择x86虚拟设备时,它必须<= 500。 |
分片测试目标
分片的测试目标。
JSON 表示 |
---|
{ "testTargets": [ string ] } |
领域 | |
---|---|
testTargets[] | 要为每个分片运行的包、类和/或测试方法组。需要以 AndroidJUnitRunner 参数格式指定目标。例如,“package com.my.packages”“class com.my.package.MyClass”。 testTargets 的数量必须大于 0。 |
智能分片
基于之前的测试用例计时记录进行分片测试。
JSON 表示 |
---|
{ "targetedShardDuration": string } |
领域 | |
---|---|
targetedShardDuration | 分片内测试应花费的时间量。 默认值:300 秒(5 分钟)。允许的最短时间:120 秒(2 分钟)。 分片计数根据时间动态设置,最高可达最大分片限制(如下所述)。为了保证每个分片至少有一个测试用例,分片的数量不会超过测试用例的数量。如果满足以下条件,则将超出分片持续时间:
分片持续时间无法保证,因为智能分片使用测试用例历史记录和默认持续时间,这可能不准确。查找测试用例计时记录的规则是:
由于实际分片持续时间可能会超过目标分片持续时间,因此我们建议您将目标值设置为比允许的最大测试超时至少短 5 分钟(物理设备为 45 分钟,虚拟设备为 60 分钟),或者使用自定义测试您设置的超时值。这种方法可以避免在所有测试完成之前取消分片。 请注意,最大分片数量是有限制的。当您选择一个或多个物理设备时,分片数量必须 <= 50。当您选择一个或多个 ARM 虚拟设备时,它必须 <= 200。当您仅选择 x86 虚拟设备时,它必须 <= 500 . 为了保证每个分片至少有一个测试用例,分片的数量不会超过测试用例的数量。创建的每个分片都计入每日测试配额。 以秒为单位的持续时间,最多包含九个小数位,以“ |
AndroidRobo测试
对 Android 应用程序的测试,探索虚拟或物理 Android 设备上的应用程序,找出罪魁祸首和崩溃情况。
JSON 表示 |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
领域 | |
---|---|
appPackageId | 被测应用程序的 java 包。默认值是通过检查应用程序的清单来确定的。 |
appInitialActivity | 应该用于启动应用程序的初始活动。 |
maxDepth | Robo 可以探索的遍历堆栈的最大深度。需要至少为 2 才能让 Robo 在第一个活动之外探索应用程序。默认值为 50。 |
maxSteps | Robo 可以执行的最大步数。默认没有限制。 |
roboDirectives[] | Robo 在爬行期间应应用的一组指令。这允许用户自定义爬网。例如,可以提供测试帐户的用户名和密码。 |
roboMode | Robo 运行的模式。大多数客户端应该允许服务器自动填充此字段。 |
roboScript | 包含 Robo 应执行的一系列操作的 JSON 文件作为爬行的序言。 |
startingIntents[] | 用于启动应用程序进行爬网的意图。如果未提供,则启动主启动器活动。如果提供了一些,则仅启动提供的那些(必须显式提供主启动器活动)。 |
联合字段app_under_test 。必需的。 app_under_test 只能是以下之一: | |
appApk | 正在测试的应用程序的 APK。 |
appBundle | 用于被测应用程序的多 apk 应用程序包。 |
机器人指令
如果在爬网过程中遇到特定的 UI 元素,则指示 Robo 与该元素进行交互。目前,Robo 可以执行文本输入或元素单击。
JSON 表示 |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
领域 | |
---|---|
resourceName | 必需的。目标 UI 元素的 Android 资源名称。例如,在 Java 中: R.string.foo 在 xml 中: @string/foo 只需要“foo”部分。参考文档: https ://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText | Robo 被指示设置的文本。如果留空,该指令将被视为对与资源名称匹配的元素的单击。 |
actionType | 必需的。 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 |
领域 | |
---|---|
timeout | 每个意图的超时(以秒为单位)。 以秒为单位的持续时间,最多包含九个小数位,以“ |
联合字段starting_intent 。必需的。开始活动的意图详细信息。 starting_intent 只能是以下之一: | |
launcherActivity | 启动主启动器活动的意图。 |
startActivity | 启动具有特定细节的活动的意图。 |
启动器活动意图
指定启动主启动器活动的意图。
启动活动意图
由操作、uri 和类别指定的起始意图。
JSON 表示 |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
领域 | |
---|---|
action | 动作名称。 START_ACTIVITY 必需。 |
uri | 操作的 URI。 |
categories[] | 在意图上设置的意图类别。 |
Android测试循环
使用测试循环对 Android 应用程序进行测试。意图 <intent-name> 将被隐式添加,因为 Games 目前是该 api 的唯一用户。
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 应用程序包。 |
IOSXc测试
使用 XCTest 框架对 iOS 应用程序进行测试。 Xcode 支持“构建测试”选项,该选项生成包含测试规范(参数、测试方法等)的 .xctestrun 文件。此测试类型接受包含 .xctestrun 文件和 Build/Products 目录(包含运行测试所需的所有二进制文件)的相应内容的 zip 文件。
JSON 表示 |
---|
{ "testsZip": { object ( |
领域 | |
---|---|
testsZip | 必需的。包含 .xctestrun 文件和 DerivedData/Build/Products 目录内容的 .zip。如果指定了 xctestrun 字段,则该 zip 中的 .xctestrun 文件将被忽略。 |
xctestrun | .xctestrun 文件将覆盖测试 zip 中的 .xctestrun 文件。由于 .xctestrun 文件包含环境变量以及要运行和/或忽略的测试方法,因此这对于分片测试非常有用。默认值取自测试 zip。 |
xcodeVersion | 用于测试的 Xcode 版本。使用 TestEnvironmentDiscoveryService 获取支持的选项。默认为 Firebase 测试实验室支持的最新 Xcode 版本。 |
appBundleId | 仅输出。正在测试的应用程序的捆绑包 ID。 |
testSpecialEntitlements | 用于测试特殊应用程序权利的选项。设置此选项将使用显式应用程序标识符重新签署具有特殊权利的应用程序。目前支持测试 aps-environment 权利。 |
IOS测试循环
对实现一个或多个游戏循环场景的 iOS 应用程序的测试。此测试类型接受存档的应用程序(.ipa 文件)和将在应用程序上按顺序执行的整数场景列表。
JSON 表示 |
---|
{
"appIpa": {
object ( |
领域 | |
---|---|
appIpa | 必需的。要测试的应用程序的 .ipa。 |
scenarios[] | 测试期间应运行的场景列表。如果未指定,则默认为单一场景 0。 |
appBundleId | 仅输出。正在测试的应用程序的捆绑包 ID。 |
环境矩阵
要执行测试的环境矩阵。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联合字段environment_matrix 。必需的。环境矩阵。 environment_matrix 只能是以下之一: | |
androidMatrix | Android 设备矩阵。 |
androidDeviceList | Android 设备列表;该测试将仅在指定的设备上运行。 |
iosDeviceList | iOS 设备列表。 |
Android矩阵
一组 Android 设备配置排列由给定轴的叉积定义。在内部,给定的 AndroidMatrix 将扩展为一组 AndroidDevices。
只有支持的排列才会被实例化。无效排列(例如,不兼容的型号/版本)将被忽略。
JSON 表示 |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
领域 | |
---|---|
androidModelIds[] | 必需的。要使用的 Android 设备集的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
androidVersionIds[] | 必需的。要使用的 Android 操作系统版本集的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
locales[] | 必需的。测试设备将为测试启用的区域设置集。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
orientations[] | 必需的。要测试的方向集。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
Android设备列表
要执行测试的 Android 设备配置列表。
JSON 表示 |
---|
{
"androidDevices": [
{
object ( |
领域 | |
---|---|
androidDevices[] | 必需的。 Android 设备列表。 |
Android设备
单个 Android 设备。
JSON 表示 |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
领域 | |
---|---|
androidModelId | 必需的。要使用的 Android 设备的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
androidVersionId | 必需的。要使用的 Android 操作系统版本的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
locale | 必需的。测试设备用于测试的区域设置。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
orientation | 必需的。测试期间设备的方向如何。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
Ios设备列表
要在其中执行测试的 iOS 设备配置列表。
JSON 表示 |
---|
{
"iosDevices": [
{
object ( |
领域 | |
---|---|
iosDevices[] | 必需的。 iOS 设备列表。 |
IOS设备
单个 iOS 设备。
JSON 表示 |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
领域 | |
---|---|
iosModelId | 必需的。要使用的 iOS 设备的 ID。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
iosVersionId | 必需的。要使用的iOS主要软件版本的id。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
locale | 必需的。测试设备用于测试的区域设置。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
orientation | 必需的。测试期间设备的方向如何。使用 TestEnvironmentDiscoveryService 获取支持的选项。 |
测试执行
在单一环境中执行的单一测试。
JSON 表示 |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
领域 | |
---|---|
id | 仅输出。由服务设置的唯一 ID。 |
matrixId | 仅输出。包含 TestMatrix 的 ID。 |
projectId | 仅输出。拥有测试执行的云项目。 |
testSpecification | 仅输出。如何运行测试。 |
shard | 仅输出。有关分片的详细信息。 |
environment | 仅输出。主机是如何配置的。 |
state | 仅输出。指示测试执行的当前进度(例如,FINISHED)。 |
toolResultsStep | 仅输出。写入此执行结果的位置。 |
timestamp | 仅输出。最初创建此测试执行的时间。 RFC3339 UTC“Zulu”格式的时间戳,具有纳秒分辨率和最多九个小数位。示例: |
testDetails | 仅输出。有关运行测试的其他详细信息。 |
碎片
仅输出。有关分片的详细信息。
JSON 表示 |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
领域 | |
---|---|
shardIndex | 仅输出。该分片在所有分片中的索引。 |
numShards | 仅输出。分片总数。 |
testTargetsForShard | 仅输出。每个分片的测试目标。仅设置为手动分片。 |
estimatedShardDuration | 仅输出。根据之前的测试用例计时记录(如果有)估计的分片持续时间。 以秒为单位的持续时间,最多包含九个小数位,以“ |
环境
运行测试的环境。
JSON 表示 |
---|
{ // Union field |
领域 | |
---|---|
联盟场environment 。必需的。环境。 environment 只能是以下之一: | |
androidDevice | 必须用于 Android 测试的 Android 设备。 |
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 | 仅输出。拥有该工具结果步骤的云项目。 |
historyId | 仅输出。工具结果历史 ID。 |
executionId | 仅输出。工具结果执行 ID。 |
stepId | 仅输出。工具结果步骤 ID。 |
测试详情
有关运行测试进度的其他详细信息。
JSON 表示 |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
领域 | |
---|---|
progressMessages[] | 仅输出。人类可读的测试进度的详细描述。例如:“配置设备”、“开始测试”。 在执行过程中,新数据可能会附加到 ProgressMessages 的末尾。 |
errorMessage | 仅输出。如果 TestState 为 ERROR,则此字符串将包含有关错误的人类可读详细信息。 |
结果存储
存储运行测试结果的位置。
JSON 表示 |
---|
{ "googleCloudStorage": { object ( |
领域 | |
---|---|
googleCloudStorage | 必需的。 |
toolResultsHistory | 工具结果历史记录包含结果写入的工具结果执行情况。 如果未提供,服务将选择合适的值。 |
toolResultsExecution | 仅输出。结果写入的工具结果执行。 |
resultsUrl | 仅输出。 Firebase Web 控制台中结果的 URL。 |
谷歌云存储
Google 云存储 (GCS) 中的存储位置。
JSON 表示 |
---|
{ "gcsPath": string } |
领域 | |
---|---|
gcsPath | 必需的。 GCS 中最终包含此测试结果的目录的路径。请求用户必须对所提供路径中的存储桶具有写入权限。 |
工具结果历史记录
代表工具结果历史资源。
JSON 表示 |
---|
{ "projectId": string, "historyId": string } |
领域 | |
---|---|
projectId | 必需的。拥有工具结果历史记录的云项目。 |
historyId | 必需的。工具结果历史 ID。 |
工具结果执行
代表工具结果执行资源。
这有 TestMatrix 的结果。
JSON 表示 |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
领域 | |
---|---|
projectId | 仅输出。拥有该工具结果执行的云项目。 |
historyId | 仅输出。工具结果历史 ID。 |
executionId | 仅输出。工具结果执行 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 不包含用户指定的或清单文件中指定的测试运行器类。这可能是由以下原因之一引起的:
|
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 | 测试矩阵运行成功,例如:
|
FAILURE | 运行失败,例如:
|
INCONCLUSIVE | 意想不到的事情发生了。运行仍应被视为不成功,但这可能是暂时性问题,重新运行测试可能会成功。 |
SKIPPED | 所有测试都被跳过,例如:
|
方法 | |
---|---|
| 取消测试矩阵中未完成的测试执行。 |
| 根据给定的规范创建并运行测试矩阵。 |
| 检查测试矩阵的状态以及创建后的执行情况。 |