REST Resource: projects.testMatrices

Ресурс: TestMatrix

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),
  "extendedInvalidMatrixDetails": [
    {
      object (MatrixErrorDetail)
    }
  ],
  "flakyTestAttempts": integer,
  "outcomeSummary": enum (OutcomeSummary),
  "failFast": boolean
}
Поля
testMatrixId

string

Только вывод. Уникальный идентификатор, установленный сервисом.

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 «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: "2014-10-02T15:01:23Z" и "2014-10-02T15:01:23.045123456Z" .

invalidMatrixDetails

enum ( InvalidMatrixDetails )

Только вывод. Описывает, почему матрица считается недействительной. Полезно только для матриц в состоянии INVALID.

extendedInvalidMatrixDetails[]

object ( MatrixErrorDetail )

Только вывод. Подробности о том, почему матрица была признана недействительной. Если можно безопасно выполнить несколько проверок, о них будет сообщено, но не следует делать никаких предположений относительно длины этого списка.

flakyTestAttempts

integer

Число повторных попыток выполнения TestExecution, если один или несколько тестовых случаев по какой-либо причине не удались. Максимально допустимое количество повторов — 10.

По умолчанию установлено значение 0, что означает отсутствие повторных запусков.

outcomeSummary

enum ( OutcomeSummary )

Только вывод. Общий результат теста. Устанавливается только тогда, когда состояние тестовой матрицы ЗАВЕРШЕНО.

failFast

boolean

Если это правда, будет предпринята не более одной попытки запустить каждое выполнение/осколок в матрице. Неустойчивые попытки тестирования не затрагиваются.

Обычно при обнаружении потенциальной проблемы инфраструктуры предпринимаются 2 или более попыток.

Эта функция предназначена для рабочих нагрузок, чувствительных к задержке. Частота сбоев выполнения может быть значительно выше для отказоустойчивых матриц, и из-за этого поддержка более ограничена.

Информация о клиенте

Информация о клиенте, вызвавшем тест.

JSON-представление
{
  "name": string,
  "clientInfoDetails": [
    {
      object (ClientInfoDetail)
    }
  ]
}
Поля
name

string

Необходимый. Имя клиента, например gcloud.

clientInfoDetails[]

object ( ClientInfoDetail )

Перечень подробной информации о клиенте.

Информация о клиентеДеталь

Пара «ключ-значение» с подробной информацией о клиенте, вызвавшем тест. Примеры: {'Версия', '1.0'}, {'Релизная версия', 'БЕТА'}.

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)
  },
  "iosRoboTest": {
    object (IosRoboTest)
  }
  // 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 с тестовым циклом.

iosRoboTest

object ( IosRoboTest )

Робо-тест iOS.

ТестНастройка

Описание настройки устройства Android перед запуском теста.

JSON-представление
{
  "filesToPush": [
    {
      object (DeviceFile)
    }
  ],
  "directoriesToPull": [
    string
  ],
  "initialSetupApks": [
    {
      object (Apk)
    }
  ],
  "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 0 до 9 _ - . + и /

Примечание. Пути /sdcard и /data будут доступны и будут рассматриваться как неявная замена пути. Например, если /sdcard на определенном устройстве не сопоставлен с внешним хранилищем, система заменит его префиксом пути к внешнему хранилищу для этого устройства.

initialSetupApks[]

object ( Apk )

Необязательный. APK-файлы начальной настройки, которые необходимо установить перед установкой тестируемого приложения. На данный момент ограничение составляет 100.

additionalApks[]

object ( Apk )

APK-файлы, которые необходимо установить в дополнение к тем, которые проходят непосредственное тестирование. Они будут установлены после тестируемого приложения. На данный момент ограничение составляет 100.

account

object ( Account )

Устройство будет зарегистрировано под этой учетной записью на время теста.

networkProfile

string

Профиль сетевого трафика, используемый для запуска теста. Доступные сетевые профили можно запросить, используя тип среды NETWORK_CONFIGURATION при вызове TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

environmentVariables[]

object ( EnvironmentVariable )

Переменные среды, которые необходимо установить для теста (применимо только для инструментальных тестов).

systrace
(deprecated)

object ( SystraceSetup )

Конфигурация Systrace для запуска. Устарело: Systrace использовал Python 2, поддержка которого была прекращена 1 января 2020 г. Systrace больше не поддерживается в API облачного тестирования, и в результатах не будет представлен файл 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 )

Ссылка на непрозрачный двоичный файл больших двоичных объектов.

regularFile

object ( RegularFile )

Ссылка на обычный файл.

ObbFile

Непрозрачный двоичный файл больших двоичных объектов, который необходимо установить на устройство перед началом теста.

JSON-представление
{
  "obbFileName": string,
  "obb": {
    object (FileReference)
  }
}
Поля
obbFileName

string

Необходимый. Имя файла OBB, которое должно соответствовать формату, указанному Android, например [main|patch].0300110.com.example.android.obb, который будет установлен в <общее хранилище>/Android/obb/<имя пакета>/ на устройстве.

obb

object ( FileReference )

Необходимый. Файл(ы) Opaque Binary 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

Пакет Java для устанавливаемого APK. Значение определяется путем изучения манифеста приложения.

Счет

Идентифицирует учетную запись и способ входа в нее.

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Авто

Этот тип не имеет полей.

Включает автоматический вход в учетную запись Google. Если этот параметр установлен, служба автоматически создает тестовую учетную запись Google и добавляет ее на устройство перед выполнением теста. Обратите внимание, что тестовые учетные записи могут использоваться повторно. Многие приложения демонстрируют полный набор своих функций, когда на устройстве присутствует учетная запись. Вход в устройство с этими сгенерированными учетными записями позволяет протестировать дополнительные функции.

Переменная среды

Пара ключ-значение передается в тест как переменная среды.

JSON-представление
{
  "key": string,
  "value": string
}
Поля
key

string

Ключ для переменной среды.

value

string

Значение переменной среды.

Настройка Systrace

JSON-представление
{
  "durationSeconds": integer
}
Поля
durationSeconds
(deprecated)

integer

Продолжительность Systrace в секундах. Должно быть от 1 до 30 секунд. 0 отключает systrace.

IosTestSetup

Описание настройки устройства iOS перед запуском теста.

JSON-представление
{
  "networkProfile": string,
  "additionalIpas": [
    {
      object (FileReference)
    }
  ],
  "pushFiles": [
    {
      object (IosDeviceFile)
    }
  ],
  "pullDirectories": [
    {
      object (IosDeviceFile)
    }
  ]
}
Поля
networkProfile

string

Профиль сетевого трафика, используемый для запуска теста. Доступные сетевые профили можно запросить, используя тип среды NETWORK_CONFIGURATION при вызове TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.

additionalIpas[]

object ( FileReference )

Приложения iOS для установки в дополнение к тем, которые проходят непосредственное тестирование.

pushFiles[]

object ( IosDeviceFile )

Список файлов, которые нужно загрузить на устройство перед началом теста.

pullDirectories[]

object ( IosDeviceFile )

Список каталогов на устройстве для загрузки в Cloud Storage по окончании теста.

Каталоги должны находиться либо в общем каталоге (например, /private/var/mobile/Media), либо в доступном каталоге внутри файловой системы приложения (например, /Documents), указав идентификатор пакета.

IosDeviceFile

Файл или каталог, который необходимо установить на устройство перед началом теста.

JSON-представление
{
  "content": {
    object (FileReference)
  },
  "bundleId": string,
  "devicePath": string
}
Поля
content

object ( FileReference )

Исходный файл

bundleId

string

Идентификатор пакета приложения, в котором находится этот файл.

Приложения iOS помещают в изолированную файловую систему, поэтому в файлах приложений должно быть указано, какое приложение установлено на устройстве.

devicePath

string

Расположение файла на устройстве в изолированной файловой системе приложения.

AndroidИнструментацияТест

Тест приложения Android, которое может управлять компонентом Android независимо от его обычного жизненного цикла. Инструментальные тесты Android запускают APK приложения и тестируют APK внутри одного и того же процесса на виртуальном или физическом устройстве Android. Они также определяют класс запуска тестов, например 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

Каждая цель должна быть полностью уточнена именем пакета или именем класса в одном из следующих форматов:

  • "имя_пакета"
  • "имя_пакета класса.имя_класса"
  • "имя_пакета класса.имя_класса#имя_метода"

Если пусто, будут запущены все цели в модуле.

orchestratorOption

enum ( OrchestratorOption )

Возможность запуска каждого теста в рамках отдельного вызова инструментов с помощью Android Test Orchestrator или нет. ** Orchestrator совместим только с AndroidJUnitRunner версии 1.1 или выше! ** Orchestrator предлагает следующие преимущества:

  • Нет общего состояния
  • Сбои изолированы
  • Журналы ограничены для каждого теста.

См. https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator для получения дополнительной информации об Android Test Orchestrator.

Если этот параметр не установлен, тест будет выполняться без оркестратора.

shardingOption

object ( ShardingOption )

Возможность параллельного запуска тестов в нескольких шардах.

Поле объединения app_under_test . Необходимый. app_under_test может быть только одним из следующих:
appApk

object ( FileReference )

APK-файл тестируемого приложения.

appBundle

object ( AppBundle )

Пакет приложений из нескольких APK для тестируемого приложения.

AppBundle

Формат файла 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_OPTION_UNSPECIFIED Значение по умолчанию: сервер выберет режим. На данный момент подразумевается, что тест будет выполняться без оркестратора. В будущем все инструментальные тесты будут выполняться с помощью оркестратора. Использование оркестратора настоятельно рекомендуется из-за всех его преимуществ.
USE_ORCHESTRATOR Запустите тест с помощью оркестратора. ** Совместимо только с AndroidJUnitRunner версии 1.1 или выше! ** Рекомендуется.
DO_NOT_USE_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 )

Тестирование осколков основано на записях времени предыдущих тестовых случаев.

УниформаШардинг

Равномерно сегментирует тестовые примеры с учетом общего количества сегментов.

Для инструментальных тестов он будет преобразован в аргументы AndroidJUnitRunner "-e numShard" и "-e shardIndex". При включенном равномерном сегментировании указание любого из этих аргументов сегментирования через 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.

TestTargetsForShard

Тестовые цели для осколка.

JSON-представление
{
  "testTargets": [
    string
  ]
}
Поля
testTargets[]

string

Группа пакетов, классов и/или тестовых методов, которые будут запускаться для каждого сегмента. Цели необходимо указать в формате аргумента AndroidJUnitRunner. Например, «пакет com.my.packages», «класс 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" .

AndroidРобоТест

Тест приложения 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

Максимальная глубина стека обхода, которую может исследовать Робо. Должно быть не менее 2, чтобы Робо мог изучить приложение после первого действия. По умолчанию 50.

maxSteps
(deprecated)

integer

Максимальное количество шагов, которые может выполнить робот. По умолчанию нет ограничений.

roboDirectives[]

object ( RoboDirective )

Набор директив, которые Robo должен применять во время сканирования. Это позволяет пользователям настраивать сканирование. Например, можно указать имя пользователя и пароль для тестовой учетной записи.

roboMode

enum ( RoboMode )

Режим, в котором должен работать Robo. Большинству клиентов следует разрешить серверу автоматически заполнять это поле.

roboScript

object ( FileReference )

Файл JSON с последовательностью действий, которые робот должен выполнить в качестве пролога сканирования.

startingIntents[]

object ( RoboStartingIntent )

Намерения, используемые для запуска приложения для сканирования. Если ничего не указано, запускается основное действие средства запуска. Если некоторые из них предусмотрены, то запускаются только те из них (основное действие запуска должно быть указано явно).

Поле объединения app_under_test . Необходимый. app_under_test может быть только одним из следующих:
appApk

object ( FileReference )

APK-файл тестируемого приложения.

appBundle

object ( AppBundle )

Пакет приложений из нескольких APK для тестируемого приложения.

Рободиректива

Предписывает 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 должен установить. Если оставить пустым, директива будет рассматриваться как ЩЕЛЧОК по элементу, соответствующему имени ресурса.

actionType

enum ( RoboActionType )

Необходимый. Тип действия, которое робот должен выполнить над указанным элементом.

Робоэкшнтипе

Действия, которые робот может выполнять с элементами пользовательского интерфейса.

Перечисления
ACTION_TYPE_UNSPECIFIED НЕ ИСПОЛЬЗУЙТЕ. Только для прототипных версий.
SINGLE_CLICK Направьте Robo, чтобы щелкнуть указанный элемент. Нет операции, если указанный элемент не доступен для клика.
ENTER_TEXT Направьте Robo на ввод текста в указанный элемент. Нет операции, если указанный элемент не включен или не позволяет вводить текст.
IGNORE Направьте Robo игнорировать взаимодействие с определенным элементом.

Роборежим

Режим, в котором должен работать Robo.

Перечисления
ROBO_MODE_UNSPECIFIED Это означает, что сервер должен выбрать режим. Рекомендуется.
ROBO_VERSION_1 Запускает Robo в режиме только UIAutomator без выхода из приложения.
ROBO_VERSION_2 Запускает Robo в стандартном Espresso с резервным вариантом UIAutomator.

РобоСтартингИнтент

Сообщение для указания начальных действий для сканирования.

JSON-представление
{
  "timeout": string,

  // Union field starting_intent can be only one of the following:
  "launcherActivity": {
    object (LauncherActivityIntent)
  },
  "startActivity": {
    object (StartActivityIntent)
  },
  "noActivity": {
    object (NoActivityIntent)
  }
  // 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 )

Намерение, которое начинает действие с конкретных деталей.

noActivity

object ( NoActivityIntent )

Пропускает начальное действие

Лаунчерактивитиинтент

Этот тип не имеет полей.

Указывает намерение, которое запускает основное действие средства запуска.

Стартактивитиентент

Начальное намерение, указанное действием, URI и категориями.

JSON-представление
{
  "action": string,
  "uri": string,
  "categories": [
    string
  ]
}
Поля
action

string

Название действия. Требуется для START_ACTIVITY.

uri

string

URI для действия.

categories[]

string

Категории намерений, которые можно установить для намерения.

Ноактивитентент

Этот тип не имеет полей.

Пропускает начальное действие

AndroidTestLoop

Тестирование приложения 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 для тестируемого приложения.

IosXcTest

Тест приложения iOS, использующего платформу XCTest. Xcode поддерживает опцию «сборки для тестирования», которая генерирует файл .xctestrun, содержащий спецификацию теста (аргументы, методы тестирования и т. д.). Этот тип теста принимает zip-файл, содержащий файл .xctestrun и соответствующее содержимое каталога Build/Products, содержащего все двоичные файлы, необходимые для запуска тестов.

JSON-представление
{
  "testsZip": {
    object (FileReference)
  },
  "xctestrun": {
    object (FileReference)
  },
  "xcodeVersion": string,
  "appBundleId": string,
  "testSpecialEntitlements": boolean
}
Поля
testsZip

object ( FileReference )

Необходимый. ZIP-файл, содержащий файл .xctestrun и содержимое каталога DerivedData/Build/Products. Файл .xctestrun в этом zip-архиве игнорируется, если указано поле xctestrun.

xctestrun

object ( FileReference )

Файл .xctestrun, который переопределит файл .xctestrun в ZIP-файле с тестами. Поскольку файл .xctestrun содержит переменные среды, а также методы тестирования, которые нужно запускать и/или игнорировать, это может быть полезно для тестов сегментирования. По умолчанию взято из zip-архива тестов.

xcodeVersion

string

Версия Xcode, которую следует использовать для теста. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. По умолчанию используется последняя версия Xcode, которую поддерживает Firebase Test Lab.

appBundleId

string

Только вывод. Идентификатор пакета тестируемого приложения.

testSpecialEntitlements

boolean

Возможность протестировать специальные права приложений. Установка этого параметра приведет к повторной подписи приложения, имеющего специальные права, с явным идентификатором приложения. В настоящее время поддерживается тестирование прав на среду aps.

IosTestLoop

Тест приложения iOS, реализующего один или несколько сценариев игрового цикла. Этот тип теста принимает заархивированное приложение (файл .ipa) и список целочисленных сценариев, которые будут последовательно выполняться в приложении.

JSON-представление
{
  "appIpa": {
    object (FileReference)
  },
  "scenarios": [
    integer
  ],
  "appBundleId": string
}
Поля
appIpa

object ( FileReference )

Необходимый. IPA-файл тестируемого приложения.

scenarios[]

integer

Список сценариев, которые следует запустить во время теста. По умолчанию используется один сценарий 0, если не указано.

appBundleId

string

Только вывод. Идентификатор пакета тестируемого приложения.

IosRoboTest

Тест, исследующий приложение iOS на устройстве iOS.

JSON-представление
{
  "appIpa": {
    object (FileReference)
  },
  "appBundleId": string,
  "roboScript": {
    object (FileReference)
  }
}
Поля
appIpa

object ( FileReference )

Необходимый. IPA, хранящийся в этом файле, следует использовать для запуска теста.

appBundleId

string

Идентификатор пакета тестируемого приложения. Это определяется путем проверки файла «Info.plist» приложения.

roboScript

object ( FileReference )

Дополнительный Roboscript для настройки сканирования. См. https://firebase.google.com/docs/test-lab/android/robo-scripts-reference для получения дополнительной информации о Робоскриптах.

Окружающая средаМатрица

Матрица сред, в которых будет выполняться тест.

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 будет расширен до набора AndroidDevices.

Будут созданы только поддерживаемые перестановки. Недопустимые изменения (например, несовместимые модели/версии) игнорируются.

JSON-представление
{
  "androidModelIds": [
    string
  ],
  "androidVersionIds": [
    string
  ],
  "locales": [
    string
  ],
  "orientations": [
    string
  ]
}
Поля
androidModelIds[]

string

Необходимый. Идентификаторы набора устройств Android, которые будут использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры.

androidVersionIds[]

string

Необходимый. Идентификаторы набора версий ОС Android, которые будут использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры.

locales[]

string

Необходимый. Набор локалей, которые тестовое устройство будет использовать для тестирования. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры.

orientations[]

string

Необходимый. Набор ориентаций для тестирования. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры.

AndroidDeviceList

Список конфигураций устройств Android, в которых будет выполняться тест.

JSON-представление
{
  "androidDevices": [
    {
      object (AndroidDevice)
    }
  ]
}
Поля
androidDevices[]

object ( AndroidDevice )

Необходимый. Список Android-устройств.

IosDeviceList

Список конфигураций устройств iOS, в которых будет выполняться тест.

JSON-представление
{
  "iosDevices": [
    {
      object (IosDevice)
    }
  ]
}
Поля
iosDevices[]

object ( IosDevice )

Необходимый. Список iOS-устройств.

iOSDevice

Одно iOS-устройство.

JSON-представление
{
  "iosModelId": string,
  "iosVersionId": string,
  "locale": string,
  "orientation": string
}
Поля
iosModelId

string

Необходимый. Идентификатор устройства iOS, которое будет использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры.

iosVersionId

string

Необходимый. Идентификатор основной версии программного обеспечения iOS, которая будет использоваться. Используйте 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

Только вывод. Уникальный идентификатор, установленный сервисом.

matrixId

string

Только вывод. Идентификатор содержащего TestMatrix.

projectId

string

Только вывод. Облачный проект, которому принадлежит выполнение теста.

testSpecification

object ( TestSpecification )

Только вывод. Как запустить тест.

shard

object ( Shard )

Только вывод. Подробности об осколке.

environment

object ( Environment )

Только вывод. Как настроены хост-компьютеры.

state

enum ( TestState )

Только вывод. Указывает текущий ход выполнения теста (например, ЗАВЕРШЕНО).

toolResultsStep

object ( ToolResultsStep )

Только вывод. Где пишутся результаты этого выполнения.

timestamp

string ( Timestamp format)

Только вывод. Время первоначального создания этого выполнения теста.

Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: "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 ниже, чем minSdkVersion APK.

Может быть установлен только при выполнении.

INCOMPATIBLE_ARCHITECTURE

Выполнение не было запущено, поскольку предоставленные входные данные несовместимы с запрошенной архитектурой.

Пример: запрошенное устройство не поддерживает запуск собственного кода в поставляемом APK.

Может быть установлен только при выполнении.

CANCELLED

Пользователь отменил выполнение.

Может быть установлен только при выполнении.

INVALID

Выполнение или матрица не были запущены, поскольку предоставленные входные данные недействительны.

Примеры: входной файл не соответствует ожидаемому типу, имеет неправильный формат/поврежден или помечен как вредоносное ПО.

ИнструментРезультатыШаг

Представляет ресурс шага результатов инструмента.

Это результаты TestExecution.

JSON-представление
{
  "projectId": string,
  "historyId": string,
  "executionId": string,
  "stepId": string
}
Поля
projectId

string

Только вывод. Облачный проект, которому принадлежит шаг результатов инструмента.

historyId

string

Только вывод. Идентификатор истории результатов инструмента.

executionId

string

Только вывод. Идентификатор выполнения инструмента.

stepId

string

Только вывод. Идентификатор шага результатов инструмента.

Детали теста

Дополнительные сведения о ходе текущего теста.

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

Только вывод. URL-адрес результатов в веб-консоли Firebase.

GoogleCloudStorage

Место хранения в облачном хранилище Google (GCS).

JSON-представление
{
  "gcsPath": string
}
Поля
gcsPath

string

Необходимый. Путь к каталогу в GCS, который в конечном итоге будет содержать результаты этого теста. Запрашивающий пользователь должен иметь доступ на запись в сегмент по указанному пути.

ИнструментРезультатыИстория

Представляет ресурс истории результатов инструмента.

JSON-представление
{
  "projectId": string,
  "historyId": string
}
Поля
projectId

string

Необходимый. Облачный проект, которому принадлежит история результатов инструмента.

historyId

string

Необходимый. Идентификатор истории результатов инструмента.

ИнструментРезультатыВыполнение

Представляет ресурс выполнения результатов инструмента.

Это результаты TestMatrix.

JSON-представление
{
  "projectId": string,
  "historyId": string,
  "executionId": string
}
Поля
projectId

string

Только вывод. Облачный проект, которому принадлежит инструмент, приводит к выполнению.

historyId

string

Только вывод. Идентификатор истории результатов инструмента.

executionId

string

Только вывод. Идентификатор выполнения инструмента.

ИнвалидМатриксДетали

Подробная причина, по которой Матрица была признана НЕДЕЙСТВИТЕЛЬНОЙ.

Перечисления
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 (также известный как имя пакета) недействителен. См. также https://developer.android.com/studio/build/application-id .
TEST_SAME_AS_APP Тестовый пакет и пакет приложения одинаковы.
NO_INSTRUMENTATION Тестовый APK не декларирует инструментарий.
NO_SIGNATURE APK-файл входного приложения не имеет подписи.
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE Класс средства выполнения тестов, указанный пользователем или в файле манифеста тестового APK, несовместим с Android Test Orchestrator. Orchestrator совместим только с AndroidJUnitRunner версии 1.1 или выше. Оркестратор можно отключить с помощью DO_NOT_USE_ORCHESTRATOR OrchestratorOption.
NO_TEST_RUNNER_CLASS

Тестовый APK-файл не содержит класс средства выполнения тестов, указанный пользователем или в файле манифеста. Это может быть вызвано одной из следующих причин:

  • пользователь указал неверное имя класса бегуна или
  • средство запуска тестов не встроено в тестовый APK (вместо этого оно может быть в APK приложения).
NO_LAUNCHER_ACTIVITY Не удалось найти основное действие программы запуска.
FORBIDDEN_PERMISSIONS Приложение объявляет одно или несколько разрешений, которые не разрешены.
INVALID_ROBO_DIRECTIVES В предоставленных roboDirectives существует конфликт.
INVALID_RESOURCE_NAME В предоставленных директивах робота есть хотя бы одно недопустимое имя ресурса.
INVALID_DIRECTIVE_ACTION Неверное определение действия в директивах робота (например, действие «щелкнуть» или «игнорировать» включает текстовое поле ввода)
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, которые выполняются на физических устройствах, должны иметь «IsAppHostedTestBundle» == «true» в файле xctestrun.
PLIST_CANNOT_BE_PARSED Файл info.plist в xctest Zip не может быть проанализирован.
TEST_ONLY_APK

APK помечен как «Testonly». Устарело и не используется в настоящее время.

MALFORMED_IPA Входной IPA не может быть проанализирован.
MISSING_URL_SCHEME Приложение не зарегистрирует схему URL -схемы Game Loop.
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/continoury#requirements
UNKNOWN_PERMISSION_ERROR Была неизвестная проблема с разрешением, проходящая этот тест.

MatrixErrordetail

Описывает одну ошибку или проблему с матрицей.

JSON-представление
{
  "reason": string,
  "message": string
}
Поля
reason

string

Только вывод. Причина ошибки. Это постоянное значение в Upper_snake_case, которое идентифицирует причину ошибки.

message

string

Только вывод. Читанное сообщение о том, как ошибка в Testmatrix. Расширяется поля reason с помощью дополнительных сведений и возможных параметров для решения проблемы.

Результаты

Резюме результата для готовой тестовой матрицы.

Перечисление
OUTCOME_SUMMARY_UNSPECIFIED Не используйте. Только для проторизации.
SUCCESS

Например, прогон матрицы тестовой матрицы был успешным:

  • Все тестовые случаи прошли.
  • Робо не обнаружил сбою испытательного приложения.
FAILURE

Пробег сбой, например:

  • Один или несколько тестовых случаев не удалось.
  • Тест рассчитан.
  • Заявление в разделе тестировалось.
INCONCLUSIVE Что -то неожиданное случилось. Прогон все еще должен считаться безуспешным, но это, вероятно, является переходной проблемой, и повторное выполнение теста может быть успешным.
SKIPPED

Например, все тесты были пропущены:

  • Все конфигурации устройства были несовместимыми.

Методы

cancel

Отменяет незаконченные выполнения тестирования в тестовой матрице.

create

Создает и запускает матрицу тестов в соответствии с данными спецификациями.

get

Проверяет статус тестовой матрицы и выполнения, когда они будут созданы.