- Ресурс: TestMatrix
- Информация о клиенте
- Информация о клиентеДеталь
- Тестовая спецификация
- ТестНастройка
- ФайлУстройства
- ObbFile
- Ссылка на файл
- Обычный файл
- АПК
- Счет
- GoogleАвто
- Переменная среды
- Настройка Systrace
- IosTestSetup
- IosDeviceFile
- AndroidИнструментацияТест
- AppBundle
- Вариант Оркестратора
- Опция шардинга
- УниформаШардинг
- Ручной шардинг
- TestTargetsForShard
- Смартшардинг
- AndroidРобоТест
- Рободиректива
- Робоэкшнтипе
- Роборежим
- РобоСтартингИнтент
- Лаунчерактивитиинтент
- Стартактивитиентент
- Ноактивитентент
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- IosRoboTest
- Окружающая средаМатрица
- AndroidMatrix
- AndroidDeviceList
- IosDeviceList
- iOSDevice
- ТестВыполнение
- Осколок
- Среда
- Тестстате
- ИнструментРезультатыШаг
- Детали теста
- Хранилище результатов
- GoogleCloudStorage
- ИнструментРезультатыИстория
- ИнструментРезультатыВыполнение
- ИнвалидМатриксДетали
- Деталь ошибки матрицы
- ИтогСводка
- Методы
Ресурс: TestMatrix
TestMatrix фиксирует все подробности теста. Он содержит конфигурацию среды, спецификацию теста, выполнение тестов, а также общее состояние и результат.
JSON-представление |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
Поля | |
---|---|
testMatrixId | Только вывод. Уникальный идентификатор, установленный сервисом. |
projectId | Облачный проект, которому принадлежит тестовая матрица. |
clientInfo | Информация о клиенте, вызвавшем тест. |
testSpecification | Необходимый. Как запустить тест. |
environmentMatrix | Необходимый. Устройства, на которых выполняются тесты. |
testExecutions[] | Только вывод. Список выполнения тестов, создаваемый службой для этой матрицы. |
resultStorage | Необходимый. Где записаны результаты для матрицы. |
state | Только вывод. Указывает текущий ход выполнения тестовой матрицы. |
timestamp | Только вывод. Время первоначального создания этой тестовой матрицы. Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
invalidMatrixDetails | Только вывод. Описывает, почему матрица считается недействительной. Полезно только для матриц в состоянии INVALID. |
extendedInvalidMatrixDetails[] | Только вывод. Подробности о том, почему матрица была признана недействительной. Если можно безопасно выполнить несколько проверок, о них будет сообщено, но не следует делать никаких предположений относительно длины этого списка. |
flakyTestAttempts | Число повторных попыток выполнения TestExecution, если один или несколько тестовых случаев по какой-либо причине не удались. Максимально допустимое количество повторов — 10. По умолчанию установлено значение 0, что означает отсутствие повторных запусков. |
outcomeSummary | Только вывод. Общий результат теста. Устанавливается только тогда, когда состояние тестовой матрицы ЗАВЕРШЕНО. |
failFast | Если это правда, будет предпринята не более одной попытки запустить каждое выполнение/осколок в матрице. Неустойчивые попытки тестирования не затрагиваются. Обычно при обнаружении потенциальной проблемы инфраструктуры предпринимаются 2 или более попыток. Эта функция предназначена для рабочих нагрузок, чувствительных к задержке. Частота сбоев выполнения может быть значительно выше для отказоустойчивых матриц, и из-за этого поддержка более ограничена. |
Информация о клиенте
Информация о клиенте, вызвавшем тест.
JSON-представление |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
Поля | |
---|---|
name | Необходимый. Имя клиента, например gcloud. |
clientInfoDetails[] | Перечень подробной информации о клиенте. |
Информация о клиентеДеталь
Пара «ключ-значение» с подробной информацией о клиенте, вызвавшем тест. Примеры: {'Версия', '1.0'}, {'Релизная версия', 'БЕТА'}.
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 с тестовым циклом. |
iosRoboTest | Робо-тест iOS. |
ТестНастройка
Описание настройки устройства Android перед запуском теста.
JSON-представление |
---|
{ "filesToPush": [ { object ( |
Поля | |
---|---|
filesToPush[] | Список файлов, которые нужно загрузить на устройство перед началом теста. |
directoriesToPull[] | Список каталогов на устройстве для загрузки в GCS по окончании теста; они должны быть абсолютными путями в /sdcard, /storage или /data/local/tmp. Имена путей ограничены символами от AZ 0 до 9 _ - . + и / Примечание. Пути /sdcard и /data будут доступны и будут рассматриваться как неявная замена пути. Например, если /sdcard на определенном устройстве не сопоставлен с внешним хранилищем, система заменит его префиксом пути к внешнему хранилищу для этого устройства. |
initialSetupApks[] | Необязательный. APK-файлы начальной настройки, которые необходимо установить перед установкой тестируемого приложения. На данный момент ограничение составляет 100. |
additionalApks[] | APK-файлы, которые необходимо установить в дополнение к тем, которые проходят непосредственное тестирование. Они будут установлены после тестируемого приложения. На данный момент ограничение составляет 100. |
account | Устройство будет зарегистрировано под этой учетной записью на время теста. |
networkProfile | Профиль сетевого трафика, используемый для запуска теста. Доступные сетевые профили можно запросить, используя тип среды NETWORK_CONFIGURATION при вызове TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
environmentVariables[] | Переменные среды, которые необходимо установить для теста (применимо только для инструментальных тестов). |
systrace | Конфигурация Systrace для запуска. Устарело: Systrace использовал Python 2, поддержка которого была прекращена 1 января 2020 г. Systrace больше не поддерживается в API облачного тестирования, и в результатах не будет представлен файл Systrace. |
dontAutograntPermissions | Следует ли запретить предоставление всех разрешений во время выполнения при установке приложения. |
ФайлУстройства
Описание файла одного устройства.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения device_file . Необходимый. device_file может быть только одним из следующих: | |
obbFile | Ссылка на непрозрачный двоичный файл больших двоичных объектов. |
regularFile | Ссылка на обычный файл. |
ObbFile
Непрозрачный двоичный файл больших двоичных объектов, который необходимо установить на устройство перед началом теста.
JSON-представление |
---|
{
"obbFileName": string,
"obb": {
object ( |
Поля | |
---|---|
obbFileName | Необходимый. Имя файла OBB, которое должно соответствовать формату, указанному Android, например [main|patch].0300110.com.example.android.obb, который будет установлен в <общее хранилище>/Android/obb/<имя пакета>/ на устройстве. |
obb | Необходимый. Файл(ы) Opaque Binary 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 | Пакет Java для устанавливаемого APK. Значение определяется путем изучения манифеста приложения. |
Счет
Идентифицирует учетную запись и способ входа в нее.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения account_type . Необходимый. Тип учетной записи в зависимости от того, для чего она предназначена (например, Google) и какой у нее механизм входа в систему (например, имя пользователя и пароль). account_type может быть только одним из следующих: | |
googleAuto | Автоматический вход в учетную запись Google. |
GoogleАвто
Этот тип не имеет полей.
Включает автоматический вход в учетную запись Google. Если этот параметр установлен, служба автоматически создает тестовую учетную запись Google и добавляет ее на устройство перед выполнением теста. Обратите внимание, что тестовые учетные записи могут использоваться повторно. Многие приложения демонстрируют полный набор своих функций, когда на устройстве присутствует учетная запись. Вход в устройство с этими сгенерированными учетными записями позволяет протестировать дополнительные функции.
Переменная среды
Пара ключ-значение передается в тест как переменная среды.
JSON-представление |
---|
{ "key": string, "value": string } |
Поля | |
---|---|
key | Ключ для переменной среды. |
value | Значение переменной среды. |
Настройка Systrace
JSON-представление |
---|
{ "durationSeconds": integer } |
Поля | |
---|---|
durationSeconds | Продолжительность Systrace в секундах. Должно быть от 1 до 30 секунд. 0 отключает systrace. |
IosTestSetup
Описание настройки устройства iOS перед запуском теста.
JSON-представление |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
Поля | |
---|---|
networkProfile | Профиль сетевого трафика, используемый для запуска теста. Доступные сетевые профили можно запросить, используя тип среды NETWORK_CONFIGURATION при вызове TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. |
additionalIpas[] | Приложения iOS для установки в дополнение к тем, которые проходят непосредственное тестирование. |
pushFiles[] | Список файлов, которые нужно загрузить на устройство перед началом теста. |
pullDirectories[] | Список каталогов на устройстве для загрузки в Cloud Storage по окончании теста. Каталоги должны находиться либо в общем каталоге (например, /private/var/mobile/Media), либо в доступном каталоге внутри файловой системы приложения (например, /Documents), указав идентификатор пакета. |
IosDeviceFile
Файл или каталог, который необходимо установить на устройство перед началом теста.
JSON-представление |
---|
{
"content": {
object ( |
Поля | |
---|---|
content | Исходный файл |
bundleId | Идентификатор пакета приложения, в котором находится этот файл. Приложения iOS помещают в изолированную файловую систему, поэтому в файлах приложений должно быть указано, какое приложение установлено на устройстве. |
devicePath | Расположение файла на устройстве в изолированной файловой системе приложения. |
AndroidИнструментацияТест
Тест приложения Android, которое может управлять компонентом Android независимо от его обычного жизненного цикла. Инструментальные тесты Android запускают APK приложения и тестируют APK внутри одного и того же процесса на виртуальном или физическом устройстве Android. Они также определяют класс запуска тестов, например 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 предлагает следующие преимущества:
См. https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator для получения дополнительной информации об Android Test Orchestrator. Если этот параметр не установлен, тест будет выполняться без оркестратора. |
shardingOption | Возможность параллельного запуска тестов в нескольких шардах. |
Поле объединения app_under_test . Необходимый. app_under_test может быть только одним из следующих: | |
appApk | APK-файл тестируемого приложения. |
appBundle | Пакет приложений из нескольких APK для тестируемого приложения. |
AppBundle
Формат файла Android App Bundle, содержащий файл BundleConfig.pb, каталог базового модуля, ноль или более каталогов модулей динамических функций.
См. https://developer.android.com/guide/app-bundle/build для получения инструкций по созданию пакетов приложений.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
bundle полей объединения. Необходимый. Информация о местоположении пакета. bundle может быть только одним из следующих: | |
bundleLocation | Файл .aab, представляющий тестируемый пакет приложения. |
Вариант Оркестратора
Указывает, как выполнить тест.
Перечисления | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | Значение по умолчанию: сервер выберет режим. На данный момент подразумевается, что тест будет выполняться без оркестратора. В будущем все инструментальные тесты будут выполняться с помощью оркестратора. Использование оркестратора настоятельно рекомендуется из-за всех его преимуществ. |
USE_ORCHESTRATOR | Запустите тест с помощью оркестратора. ** Совместимо только с AndroidJUnitRunner версии 1.1 или выше! ** Рекомендуется. |
DO_NOT_USE_ORCHESTRATOR | Запустите тест без использования оркестратора. |
Опция шардинга
Варианты включения шардинга.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
| |
uniformSharding | Равномерно сегментирует тестовые примеры с учетом общего количества сегментов. |
manualSharding | Разделяет тестовые случаи на указанные группы пакетов, классов и/или методов. |
smartSharding | Тестирование осколков основано на записях времени предыдущих тестовых случаев. |
УниформаШардинг
Равномерно сегментирует тестовые примеры с учетом общего количества сегментов.
Для инструментальных тестов он будет преобразован в аргументы AndroidJUnitRunner "-e numShard" и "-e shardIndex". При включенном равномерном сегментировании указание любого из этих аргументов сегментирования через environmentVariables
недопустимо.
Учитывая механизм сегментирования, который использует AndroidJUnitRunner, нет никакой гарантии, что тестовые примеры будут равномерно распределены по всем сегментам.
JSON-представление |
---|
{ "numShards": integer } |
Поля | |
---|---|
numShards | Необходимый. Общее количество осколков, которые нужно создать. Это всегда должно быть положительное число, не превышающее общее количество тестовых случаев. При выборе одного или нескольких физических устройств количество сегментов должно быть <= 50. При выборе одного или нескольких виртуальных устройств ARM оно должно быть <= 200. При выборе только виртуальных устройств x86 оно должно быть <= 500. . |
Ручной шардинг
Разделяет тестовые случаи на указанные группы пакетов, классов и/или методов.
Если включено ручное сегментирование, указание целей тестирования через EnvironmentVariables или InstrumentationTest недопустимо.
JSON-представление |
---|
{
"testTargetsForShard": [
{
object ( |
Поля | |
---|---|
testTargetsForShard[] | Необходимый. Группа пакетов, классов и/или тестовых методов, которые будут запускаться для каждого созданного вручную сегмента. Вы должны указать хотя бы один шард, если это поле присутствует. При выборе одного или нескольких физических устройств количество повторных testTargetsForShard должно быть <= 50. При выборе одного или нескольких виртуальных устройств ARM оно должно быть <= 200. При выборе только виртуальных устройств x86 оно должно быть <= 500. |
TestTargetsForShard
Тестовые цели для осколка.
JSON-представление |
---|
{ "testTargets": [ string ] } |
Поля | |
---|---|
testTargets[] | Группа пакетов, классов и/или тестовых методов, которые будут запускаться для каждого сегмента. Цели необходимо указать в формате аргумента AndroidJUnitRunner. Например, «пакет com.my.packages», «класс com.my.package.MyClass». Число testTargets должно быть больше 0. |
Смартшардинг
Тестирование осколков основано на записях времени предыдущих тестовых случаев.
JSON-представление |
---|
{ "targetedShardDuration": string } |
Поля | |
---|---|
targetedShardDuration | Количество времени, которое должно занять тестирование внутри шарда. По умолчанию: 300 секунд (5 минут). Минимально разрешенный: 120 секунд (2 минуты). Количество осколков устанавливается динамически в зависимости от времени, вплоть до максимального предела осколков (описанного ниже). Чтобы гарантировать хотя бы один тестовый пример для каждого шарда, количество шардов не должно превышать количество тестовых примеров. Продолжительность осколка будет превышена, если:
Продолжительность сегментирования не гарантируется, поскольку при интеллектуальном сегментировании используется история тестовых случаев и продолжительность по умолчанию, которые могут быть неточными. Правила поиска записей времени тестовых примеров:
Поскольку фактическая продолжительность сегмента может превышать целевую длительность сегмента, мы рекомендуем установить целевое значение как минимум на 5 минут меньше максимально допустимого времени ожидания теста (45 минут для физических устройств и 60 минут для виртуальных) или использовать настраиваемое значение. значение тайм-аута проверки, которое вы установили. Этот подход позволяет избежать отмены сегмента до завершения всех тестов. Обратите внимание, что существует ограничение на максимальное количество осколков. При выборе одного или нескольких физических устройств количество сегментов должно быть <= 50. При выборе одного или нескольких виртуальных устройств ARM оно должно быть <= 200. При выборе только виртуальных устройств x86 оно должно быть <= 500. Чтобы гарантировать наличие хотя бы одного тестового примера для каждого сегмента, количество сегментов не должно превышать количество тестовых случаев. Каждый созданный осколок учитывается в ежедневной квоте тестирования. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
AndroidРобоТест
Тест приложения Android, который исследует приложение на виртуальном или физическом устройстве Android, выявляя виновников и сбои по ходу работы.
JSON-представление |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
Поля | |
---|---|
appPackageId | Пакет Java для тестируемого приложения. Значение по умолчанию определяется путем изучения манифеста приложения. |
appInitialActivity | Начальное действие, которое следует использовать для запуска приложения. |
maxDepth | Максимальная глубина стека обхода, которую может исследовать Робо. Должно быть не менее 2, чтобы Робо мог изучить приложение после первого действия. По умолчанию 50. |
maxSteps | Максимальное количество шагов, которые может выполнить робот. По умолчанию нет ограничений. |
roboDirectives[] | Набор директив, которые Robo должен применять во время сканирования. Это позволяет пользователям настраивать сканирование. Например, можно указать имя пользователя и пароль для тестовой учетной записи. |
roboMode | Режим, в котором должен работать Robo. Большинству клиентов следует разрешить серверу автоматически заполнять это поле. |
roboScript | Файл JSON с последовательностью действий, которые робот должен выполнить в качестве пролога сканирования. |
startingIntents[] | Намерения, используемые для запуска приложения для сканирования. Если ничего не указано, запускается основное действие средства запуска. Если некоторые из них предусмотрены, то запускаются только те из них (основное действие запуска должно быть указано явно). |
Поле объединения app_under_test . Необходимый. app_under_test может быть только одним из следующих: | |
appApk | APK-файл тестируемого приложения. |
appBundle | Пакет приложений из нескольких APK для тестируемого приложения. |
Рободиректива
Предписывает Robo взаимодействовать с определенным элементом пользовательского интерфейса, если он обнаружен во время сканирования. В настоящее время Robo может выполнять ввод текста или щелчок элемента.
JSON-представление |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
Поля | |
---|---|
resourceName | Необходимый. Имя ресурса Android целевого элемента пользовательского интерфейса. Например, в Java: R.string.foo в xml: @string/foo Нужна только часть «foo». Справочный документ: https://developer.android.com/guide/topics/resources/accessing-resources.html . |
inputText | Текст, который Robo должен установить. Если оставить пустым, директива будет рассматриваться как ЩЕЛЧОК по элементу, соответствующему имени ресурса. |
actionType | Необходимый. Тип действия, которое робот должен выполнить над указанным элементом. |
Робоэкшнтипе
Действия, которые робот может выполнять с элементами пользовательского интерфейса.
Перечисления | |
---|---|
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 |
Поля | |
---|---|
timeout | Тайм-аут в секундах для каждого намерения. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
Поле объединения starting_intent . Необходимый. Сведения о намерении начать действие. starting_intent может быть только одним из следующих: | |
launcherActivity | Намерение, которое запускает основное действие средства запуска. |
startActivity | Намерение, которое начинает действие с конкретных деталей. |
noActivity | Пропускает начальное действие |
Лаунчерактивитиинтент
Этот тип не имеет полей.
Указывает намерение, которое запускает основное действие средства запуска.
Стартактивитиентент
Начальное намерение, указанное действием, URI и категориями.
JSON-представление |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
Поля | |
---|---|
action | Название действия. Требуется для START_ACTIVITY. |
uri | URI для действия. |
categories[] | Категории намерений, которые можно установить для намерения. |
Ноактивитентент
Этот тип не имеет полей.
Пропускает начальное действие
AndroidTestLoop
Тестирование приложения 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 для тестируемого приложения. |
IosXcTest
Тест приложения iOS, использующего платформу XCTest. Xcode поддерживает опцию «сборки для тестирования», которая генерирует файл .xctestrun, содержащий спецификацию теста (аргументы, методы тестирования и т. д.). Этот тип теста принимает zip-файл, содержащий файл .xctestrun и соответствующее содержимое каталога Build/Products, содержащего все двоичные файлы, необходимые для запуска тестов.
JSON-представление |
---|
{ "testsZip": { object ( |
Поля | |
---|---|
testsZip | Необходимый. ZIP-файл, содержащий файл .xctestrun и содержимое каталога DerivedData/Build/Products. Файл .xctestrun в этом zip-архиве игнорируется, если указано поле xctestrun. |
xctestrun | Файл .xctestrun, который переопределит файл .xctestrun в ZIP-файле с тестами. Поскольку файл .xctestrun содержит переменные среды, а также методы тестирования, которые нужно запускать и/или игнорировать, это может быть полезно для тестов сегментирования. По умолчанию взято из zip-архива тестов. |
xcodeVersion | Версия Xcode, которую следует использовать для теста. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. По умолчанию используется последняя версия Xcode, которую поддерживает Firebase Test Lab. |
appBundleId | Только вывод. Идентификатор пакета тестируемого приложения. |
testSpecialEntitlements | Возможность протестировать специальные права приложений. Установка этого параметра приведет к повторной подписи приложения, имеющего специальные права, с явным идентификатором приложения. В настоящее время поддерживается тестирование прав на среду aps. |
IosTestLoop
Тест приложения iOS, реализующего один или несколько сценариев игрового цикла. Этот тип теста принимает заархивированное приложение (файл .ipa) и список целочисленных сценариев, которые будут последовательно выполняться в приложении.
JSON-представление |
---|
{
"appIpa": {
object ( |
Поля | |
---|---|
appIpa | Необходимый. IPA-файл тестируемого приложения. |
scenarios[] | Список сценариев, которые следует запустить во время теста. По умолчанию используется один сценарий 0, если не указано. |
appBundleId | Только вывод. Идентификатор пакета тестируемого приложения. |
IosRoboTest
Тест, исследующий приложение iOS на устройстве iOS.
JSON-представление |
---|
{ "appIpa": { object ( |
Поля | |
---|---|
appIpa | Необходимый. IPA, хранящийся в этом файле, следует использовать для запуска теста. |
appBundleId | Идентификатор пакета тестируемого приложения. Это определяется путем проверки файла «Info.plist» приложения. |
roboScript | Дополнительный Roboscript для настройки сканирования. См. https://firebase.google.com/docs/test-lab/android/robo-scripts-reference для получения дополнительной информации о Робоскриптах. |
Окружающая средаМатрица
Матрица сред, в которых будет выполняться тест.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения environment_matrix . Необходимый. Матрица окружения. environment_matrix может быть только одним из следующих: | |
androidMatrix | Матрица Android-устройств. |
androidDeviceList | Список Android-устройств; тест будет запущен только на указанных устройствах. |
iosDeviceList | Список iOS-устройств. |
AndroidMatrix
Набор перестановок конфигурации устройства Android определяется векторным произведением заданных осей. Внутри данный AndroidMatrix будет расширен до набора AndroidDevices.
Будут созданы только поддерживаемые перестановки. Недопустимые изменения (например, несовместимые модели/версии) игнорируются.
JSON-представление |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
Поля | |
---|---|
androidModelIds[] | Необходимый. Идентификаторы набора устройств Android, которые будут использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
androidVersionIds[] | Необходимый. Идентификаторы набора версий ОС Android, которые будут использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
locales[] | Необходимый. Набор локалей, которые тестовое устройство будет использовать для тестирования. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
orientations[] | Необходимый. Набор ориентаций для тестирования. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
AndroidDeviceList
Список конфигураций устройств Android, в которых будет выполняться тест.
JSON-представление |
---|
{
"androidDevices": [
{
object ( |
Поля | |
---|---|
androidDevices[] | Необходимый. Список Android-устройств. |
IosDeviceList
Список конфигураций устройств iOS, в которых будет выполняться тест.
JSON-представление |
---|
{
"iosDevices": [
{
object ( |
Поля | |
---|---|
iosDevices[] | Необходимый. Список iOS-устройств. |
iOSDevice
Одно iOS-устройство.
JSON-представление |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
Поля | |
---|---|
iosModelId | Необходимый. Идентификатор устройства iOS, которое будет использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
iosVersionId | Необходимый. Идентификатор основной версии программного обеспечения iOS, которая будет использоваться. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
locale | Необходимый. Языковой стандарт, используемый тестовым устройством для тестирования. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
orientation | Необходимый. Как ориентируется устройство во время теста. Используйте TestEnvironmentDiscoveryService, чтобы получить поддерживаемые параметры. |
ТестВыполнение
Один тест, выполняемый в одной среде.
JSON-представление |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
Поля | |
---|---|
id | Только вывод. Уникальный идентификатор, установленный сервисом. |
matrixId | Только вывод. Идентификатор содержащего TestMatrix. |
projectId | Только вывод. Облачный проект, которому принадлежит выполнение теста. |
testSpecification | Только вывод. Как запустить тест. |
shard | Только вывод. Подробности об осколке. |
environment | Только вывод. Как настроены хост-компьютеры. |
state | Только вывод. Указывает текущий ход выполнения теста (например, ЗАВЕРШЕНО). |
toolResultsStep | Только вывод. Где пишутся результаты этого выполнения. |
timestamp | Только вывод. Время первоначального создания этого выполнения теста. Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры: |
testDetails | Только вывод. Дополнительные сведения о текущем тесте. |
Осколок
Только вывод. Подробности об осколке.
JSON-представление |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
Поля | |
---|---|
shardIndex | Только вывод. Индекс шарда среди всех шардов. |
numShards | Только вывод. Общее количество осколков. |
testTargetsForShard | Только вывод. Тестовые цели для каждого осколка. Устанавливается только для ручного шардинга. |
estimatedShardDuration | Только вывод. Предполагаемая продолжительность сегмента на основе записей о времени предыдущих тестовых случаев, если таковые имеются. Длительность в секундах, содержащая до девяти дробных цифр и оканчивающаяся на « |
Среда
Среда, в которой выполняется тест.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Союз полевой environment . Необходимый. Окружающая среда. environment может быть только одной из следующих: | |
androidDevice | Устройство Android, которое необходимо использовать с тестом Android. |
iosDevice | Устройство iOS, которое необходимо использовать с тестом iOS. |
Тестстате
Состояние (т. е. ход) выполнения теста или матрицы.
Перечисления | |
---|---|
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 | Только вывод. Облачный проект, которому принадлежит шаг результатов инструмента. |
historyId | Только вывод. Идентификатор истории результатов инструмента. |
executionId | Только вывод. Идентификатор выполнения инструмента. |
stepId | Только вывод. Идентификатор шага результатов инструмента. |
Детали теста
Дополнительные сведения о ходе текущего теста.
JSON-представление |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
Поля | |
---|---|
progressMessages[] | Только вывод. Понятное для человека подробное описание хода теста. Например: «Инициализация устройства», «Начало теста». В ходе выполнения в конец сообщения ProgressMessages могут быть добавлены новые данные. |
errorMessage | Только вывод. Если TestState имеет значение ERROR, то эта строка будет содержать удобочитаемые сведения об ошибке. |
Хранилище результатов
Места, где хранятся результаты выполнения теста.
JSON-представление |
---|
{ "googleCloudStorage": { object ( |
Поля | |
---|---|
googleCloudStorage | Необходимый. |
toolResultsHistory | История результатов инструмента, содержащая выполнение результатов инструмента, в которые записываются результаты. Если значение не указано, служба выберет подходящее значение. |
toolResultsExecution | Только вывод. Инструмент приводит к выполнению результатов, в которые записываются результаты. |
resultsUrl | Только вывод. URL-адрес результатов в веб-консоли Firebase. |
GoogleCloudStorage
Место хранения в облачном хранилище Google (GCS).
JSON-представление |
---|
{ "gcsPath": string } |
Поля | |
---|---|
gcsPath | Необходимый. Путь к каталогу в GCS, который в конечном итоге будет содержать результаты этого теста. Запрашивающий пользователь должен иметь доступ на запись в сегмент по указанному пути. |
ИнструментРезультатыИстория
Представляет ресурс истории результатов инструмента.
JSON-представление |
---|
{ "projectId": string, "historyId": string } |
Поля | |
---|---|
projectId | Необходимый. Облачный проект, которому принадлежит история результатов инструмента. |
historyId | Необходимый. Идентификатор истории результатов инструмента. |
ИнструментРезультатыВыполнение
Представляет ресурс выполнения результатов инструмента.
Это результаты TestMatrix.
JSON-представление |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
Поля | |
---|---|
projectId | Только вывод. Облачный проект, которому принадлежит инструмент, приводит к выполнению. |
historyId | Только вывод. Идентификатор истории результатов инструмента. |
executionId | Только вывод. Идентификатор выполнения инструмента. |
ИнвалидМатриксДетали
Подробная причина, по которой Матрица была признана НЕДЕЙСТВИТЕЛЬНОЙ.
Перечисления | |
---|---|
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-файл не содержит класс средства выполнения тестов, указанный пользователем или в файле манифеста. Это может быть вызвано одной из следующих причин:
|
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 | Только вывод. Причина ошибки. Это постоянное значение в Upper_snake_case, которое идентифицирует причину ошибки. |
message | Только вывод. Читанное сообщение о том, как ошибка в Testmatrix. Расширяется поля |
Результаты
Резюме результата для готовой тестовой матрицы.
Перечисление | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED | Не используйте. Только для проторизации. |
SUCCESS | Например, прогон матрицы тестовой матрицы был успешным:
|
FAILURE | Пробег сбой, например:
|
INCONCLUSIVE | Что -то неожиданное случилось. Прогон все еще должен считаться безуспешным, но это, вероятно, является переходной проблемой, и повторное выполнение теста может быть успешным. |
SKIPPED | Например, все тесты были пропущены:
|
Методы | |
---|---|
| Отменяет незаконченные выполнения тестирования в тестовой матрице. |
| Создает и запускает матрицу тестов в соответствии с данными спецификациями. |
| Проверяет статус тестовой матрицы и выполнения, когда они будут созданы. |