В этом руководстве описывается, как запустить тест инструментария, робота или игрового цикла с помощью интерфейса командной строки gcloud .
Полный список команд gcloud
, которые вы можете использовать с вашим Android-приложением в Test Lab , см. в справочной документации по gcloud firebase test android
.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
Шаг 1. Настройте интерфейс командной строки gcloud
- Загрузите Google Cloud SDK
- Убедитесь, что ваша установка обновлена:
gcloud components update
- Войдите в интерфейс командной строки gcloud, используя свою учетную запись Google:
gcloud auth login
- Настройте свой проект Firebase в gcloud, где PROJECT_ID — это идентификатор вашего проекта Firebase:
gcloud config set project PROJECT_ID
Сюда входит инструмент CLI gcloud.
Шаг 2. Проверьте доступные тестовые устройства
Используйте следующие команды gcloud для просмотра тестовых устройств и языковых стандартов, доступных для вашего теста.
В качестве опции вы также можете загрузить образец приложения «Блокнот», чтобы сразу начать выполнять команды. Используйте двоичный файл app-debug-unaligned.apk
и файл инструментальных тестов app-debug-test-unaligned.apk
, которые расположены в NotePad/app/build/outputs/apk/
.
models list
: получите текущий список устройств Android, доступных для тестирования.gcloud firebase test android models list
В выводе команды:
- Столбец
MODEL_ID
содержит идентификатор, который вы позже сможете использовать для запуска тестов модели устройства. - Столбец
OS_VERSION_ID
содержит версии операционной системы, поддерживаемые устройством.
Пример вывода
- Столбец
models describe
: Получите дополнительную информацию о конкретном AndroidMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Выходные данные содержат марку модели устройства, производителя, версии ОС, поддерживаемые уровни API, поддерживаемые двоичные интерфейсы приложений (ABI), даты выпуска, а также то, является ли устройство физическим или виртуальным.
versions list
: Получите список доступных на данный момент версий ОС для тестирования.gcloud firebase test android versions list
Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды (
OS_VERSION_ID
иVERSION
), чтобы позже запустить тесты для версии ОС Android. Если вы не укажете версии ОС Android для тестирования, используется значение по умолчанию, указанное в столбцеTAGS
.Пример вывода
locales list
: получить текущий список локалей, доступных для тестирования.gcloud firebase test android versions list
Первый столбец вывода команды,
LOCALE
, содержит идентификатор, который вы можете использовать позже для запуска тестов для локали. Если вы не укажете локали для тестирования, в качестве локали по умолчанию будет использоваться английский.
Шаг 3. Запустите тест
Теперь, когда вы знаете диапазон моделей устройств, языковых стандартов и версий ОС, доступных для тестирования вашего приложения, вы можете указать устройства с помощью команды gcloud firebase test android run
и флага --device
для запуска тестов Robo или инструментальных тестов.
Запустите роботизированный тест
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте робот-тест, чтобы выполнить автоматическую проверку пользовательского интерфейса вашего приложения. Робо-тест проверяет приложение, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем просматривая приложение в поисках сбоев и других потенциальных проблем.
Чтобы запустить тест Robo, выполните следующий пример команды:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Параметр
--type robo
является неявным, если значение--type
не указано. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase, вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете просмотреть полный набор параметров командной строки для запуска тестов, набрав:
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Чтобы узнать, как исследовать результаты теста робота, см. Анализ результатов теста .
Запустите инструментальный тест
Теперь используйте инструмент командной строки gcloud
для запуска тестов Espresso приложения «Блокнот» на указанных вами конфигурациях устройств Android. Используйте тип instrumentation
теста для запуска тестов в app-debug-test-unaligned.apk
следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Параметр инструментария
--type
является неявным, если тестовый APK указан с помощью--test
. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase , вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Интерфейс командной строки gcloud поддерживает Android Test Orchestrator . Для Orchestrator требуется AndroidJUnitRunner версии 1.1 или выше. Чтобы включить его, используйте gcloud firebase test android run
его с помощью
--use-orchestrator
флаг. Чтобы отключить его, используйте флаг --no-use-orchestrator
.
Вы также можете контролировать, как Test Lab выполняет ваши инструментальные тесты, используя дополнительные флаги, которые не показаны выше. Например, вы можете использовать флаг --test-targets
для тестирования одного класса или метода класса, используемого вашим тестовым APK. Вы также можете узнать, был ли ваш неудачный тест на самом деле нестабильным или нет, используя флаг --num-flaky-test-attempts
, который указывает, сколько раз следует повторить попытку выполнения теста, если один или несколько его тестовых случаев провалиться по какой-либо причине. Чтобы узнать больше, см. gcloud firebase test android run .
Отчеты о покрытии кода для инструментальных тестов
Test Lab поддерживает инструменты отчетности о покрытии кода EMMA и JaCoCo . Если у вас есть какой-либо инструмент, интегрированный в сборку вашего приложения, вы можете получить отчет о покрытии кода для тестов Test Lab , запустив gcloud firebase test android run
с некоторыми дополнительными аргументами. Если Android Test Orchestrator не включен, используйте следующее:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Если вы создаете отчеты о покрытии кода и одновременно используете Android Test Orchestrator, измените переменные среды следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Когда Test Lab завершит выполнение тестов, найдите отчеты о покрытии кода в Google Cloud Storage :
- Откройте ссылку на консоль Firebase , которую инструмент
gcloud
напечатал над таблицей результатов теста в вашем терминале. - Щелкните выполнение теста из списка по этой ссылке, чтобы открыть страницу сведений об этом выполнении.
- Нажмите «Результаты теста» , чтобы перейти к сегменту Cloud Storage с результатами теста этого выполнения.
- Откройте
artifacts/coverage.ec
чтобы просмотреть отчет о покрытии кода.
Проанализируйте результаты вашего теста
Через несколько минут инструмент gcloud распечатает базовую сводку результатов вашего теста:
Результаты выполнения теста из командной строки также содержат ссылку для просмотра результатов теста. Чтобы узнать больше о том, как интерпретировать эти результаты, см. раздел Анализ результатов Firebase Test Lab для Android .
Пользовательский вход в систему и ввод текста с помощью Robo-теста
Робо-тест автоматически завершает экраны входа, в которых для аутентификации используется учетная запись Google, если вы не используете параметр --no-auto-google-login
. Он также может заполнять пользовательские экраны входа в систему, используя предоставленные вами учетные данные тестовой учетной записи. Вы также можете использовать этот параметр, чтобы предоставить собственный вводимый текст для других текстовых полей, используемых вашим приложением.
Чтобы заполнить текстовые поля в вашем приложении, используйте параметр --robo-directives
и укажите разделенный запятыми список пар key-value
, где key
— это имя ресурса Android целевого элемента пользовательского интерфейса, а value
— текстовая строка. . Вы также можете использовать этот флаг, чтобы указать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку «Выход»). Поля EditText
поддерживаются, но не текстовые поля в элементах пользовательского интерфейса WebView
.
Например, вы можете использовать следующий параметр для индивидуального входа в систему:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
В интерфейсе командной строки Test Lab gcloud имеется несколько команд и флагов, которые позволяют запускать тесты с различными спецификациями:
Флаг Android Test Orchestrator : флаг для включения Orchestrator, инструмента, который позволяет запускать каждый тест вашего приложения при отдельном вызове
Instrumentation
. Test Lab всегда использует последнюю версию Orchestrator.Флаги тестирования игрового цикла : набор флагов конфигурации, которые включают и управляют «демо-режимом» для имитации действий игрока в игровых приложениях. Узнайте больше о запуске тестов Game Loop с помощью Test Lab .
Флаг равномерного шардинга (в бета-версии) : флаг, указывающий количество сегментов, на которые вы хотите равномерно распределить тестовые примеры. Шарды запускаются параллельно на отдельных устройствах.
Флаг ручного сегментирования (в бета-версии) : флаг, определяющий группу пакетов, классов и/или тестовых случаев для запуска в сегменте (группа тестовых случаев). Шарды запускаются параллельно на отдельных устройствах.
Флаг профилей сетевого трафика (в бета-версии) : флаг, указывающий, какой сетевой профиль ваши тесты используют с физическими устройствами. Сетевые профили имитируют различные условия сети, позволяя вам тестировать производительность вашего приложения в ненадежных или непредсказуемых сетях.
Создание сценариев команд gcloud с помощью Test Lab
Вы можете использовать сценарии оболочки или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые в противном случае вы бы запускали с помощью командной строки gcloud. Следующий пример bash-скрипта запускает инструментальный тест с двухминутным тайм-аутом и сообщает, успешно ли завершился тест:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Коды выхода скрипта
Test Lab предоставляет несколько кодов завершения, которые можно использовать, чтобы лучше понять результаты тестов, запускаемых с помощью сценариев или пакетных файлов.
Коды выхода сценариев для Test Lab
Код выхода | Примечания |
---|---|
0 | Все тестовые выполнения пройдены. |
1 | Произошел общий сбой. Возможные причины: несуществующее имя файла или ошибка HTTP/сети. |
2 | Тестирование прервано, поскольку были предоставлены неизвестные команды или аргументы. |
10 | Один или несколько тестовых случаев (тестируемые классы или методы класса) в рамках выполнения теста не пройдены. |
15 | Firebase Test Lab не удалось определить, пройдена или не пройдена тестовая матрица из-за непредвиденной ошибки. |
18 | Тестовая среда для выполнения этого теста не поддерживается из-за несовместимости измерений теста. Эта ошибка может возникнуть, если выбранный уровень Android API не поддерживается выбранным типом устройства. |
19 | Тестовая матрица была отменена пользователем. |
20 | Произошла ошибка тестовой инфраструктуры. |
В этом руководстве описывается, как запустить тест инструментария, робота или игрового цикла с помощью интерфейса командной строки gcloud .
Полный список команд gcloud
, которые вы можете использовать с вашим Android-приложением в Test Lab , см. в справочной документации по gcloud firebase test android
.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
Шаг 1. Настройте интерфейс командной строки gcloud
- Загрузите Google Cloud SDK
- Убедитесь, что ваша установка обновлена:
gcloud components update
- Войдите в интерфейс командной строки gcloud, используя свою учетную запись Google:
gcloud auth login
- Настройте свой проект Firebase в gcloud, где PROJECT_ID — это идентификатор вашего проекта Firebase:
gcloud config set project PROJECT_ID
Сюда входит инструмент CLI gcloud.
Шаг 2. Проверьте доступные тестовые устройства
Используйте следующие команды gcloud для просмотра тестовых устройств и языковых стандартов, доступных для вашего теста.
В качестве опции вы также можете загрузить образец приложения «Блокнот», чтобы сразу начать выполнять команды. Используйте двоичный файл app-debug-unaligned.apk
и файл инструментальных тестов app-debug-test-unaligned.apk
, которые расположены в NotePad/app/build/outputs/apk/
.
models list
: получите текущий список устройств Android, доступных для тестирования.gcloud firebase test android models list
В выводе команды:
- Столбец
MODEL_ID
содержит идентификатор, который вы позже сможете использовать для запуска тестов модели устройства. - Столбец
OS_VERSION_ID
содержит версии операционной системы, поддерживаемые устройством.
Пример вывода
- Столбец
models describe
: Получите дополнительную информацию о конкретном AndroidMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Выходные данные содержат марку модели устройства, производителя, версии ОС, поддерживаемые уровни API, поддерживаемые двоичные интерфейсы приложений (ABI), даты выпуска, а также то, является ли устройство физическим или виртуальным.
versions list
: Получите список доступных на данный момент версий ОС для тестирования.gcloud firebase test android versions list
Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды (
OS_VERSION_ID
иVERSION
), чтобы позже запустить тесты для версии ОС Android. Если вы не укажете версии ОС Android для тестирования, используется значение по умолчанию, указанное в столбцеTAGS
.Пример вывода
locales list
: получить текущий список локалей, доступных для тестирования.gcloud firebase test android versions list
Первый столбец вывода команды,
LOCALE
, содержит идентификатор, который вы можете использовать позже для запуска тестов для локали. Если вы не укажете локали для тестирования, в качестве локали по умолчанию будет использоваться английский.
Шаг 3. Запустите тест
Теперь, когда вы знаете диапазон моделей устройств, языковых стандартов и версий ОС, доступных для тестирования вашего приложения, вы можете указать устройства с помощью команды gcloud firebase test android run
и флага --device
для запуска тестов Robo или инструментальных тестов.
Запустите роботизированный тест
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте робот-тест, чтобы выполнить автоматическую проверку пользовательского интерфейса вашего приложения. Робо-тест проверяет приложение, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем просматривая приложение в поисках сбоев и других потенциальных проблем.
Чтобы запустить тест Robo, выполните следующий пример команды:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Параметр
--type robo
является неявным, если значение--type
не указано. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase, вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете просмотреть полный набор параметров командной строки для запуска тестов, набрав:
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Чтобы узнать, как исследовать результаты теста робота, см. Анализ результатов теста .
Запустите инструментальный тест
Теперь используйте инструмент командной строки gcloud
для запуска тестов Espresso приложения «Блокнот» на указанных вами конфигурациях устройств Android. Используйте тип instrumentation
теста для запуска тестов в app-debug-test-unaligned.apk
следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Параметр инструментария
--type
является неявным, если тестовый APK указан с помощью--test
. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase , вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Интерфейс командной строки gcloud поддерживает Android Test Orchestrator . Для Orchestrator требуется AndroidJUnitRunner версии 1.1 или выше. Чтобы включить его, используйте gcloud firebase test android run
его с помощью
--use-orchestrator
флаг. Чтобы отключить его, используйте флаг --no-use-orchestrator
.
Вы также можете контролировать, как Test Lab выполняет ваши инструментальные тесты, используя дополнительные флаги, которые не показаны выше. Например, вы можете использовать флаг --test-targets
для тестирования одного класса или метода класса, используемого вашим тестовым APK. Вы также можете узнать, был ли ваш неудачный тест на самом деле нестабильным или нет, используя флаг --num-flaky-test-attempts
, который указывает, сколько раз следует повторить попытку выполнения теста, если один или несколько его тестовых случаев провалиться по какой-либо причине. Чтобы узнать больше, см. gcloud firebase test android run .
Отчеты о покрытии кода для инструментальных тестов
Test Lab поддерживает инструменты отчетности о покрытии кода EMMA и JaCoCo . Если у вас есть какой-либо инструмент, интегрированный в сборку вашего приложения, вы можете получить отчет о покрытии кода для тестов Test Lab , запустив gcloud firebase test android run
с некоторыми дополнительными аргументами. Если Android Test Orchestrator не включен, используйте следующее:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Если вы создаете отчеты о покрытии кода и одновременно используете Android Test Orchestrator, измените переменные среды следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Когда Test Lab завершит выполнение тестов, найдите отчеты о покрытии кода в Google Cloud Storage :
- Откройте ссылку на консоль Firebase , которую инструмент
gcloud
напечатал над таблицей результатов теста в вашем терминале. - Щелкните выполнение теста из списка по этой ссылке, чтобы открыть страницу сведений об этом выполнении.
- Нажмите «Результаты теста» , чтобы перейти к сегменту Cloud Storage с результатами теста этого выполнения.
- Откройте
artifacts/coverage.ec
чтобы просмотреть отчет о покрытии кода.
Проанализируйте результаты вашего теста
Через несколько минут инструмент gcloud распечатает базовую сводку результатов вашего теста:
Результаты выполнения теста из командной строки также содержат ссылку для просмотра результатов теста. Чтобы узнать больше о том, как интерпретировать эти результаты, см. раздел Анализ результатов Firebase Test Lab для Android .
Пользовательский вход в систему и ввод текста с помощью Robo-теста
Робо-тест автоматически завершает экраны входа, в которых для аутентификации используется учетная запись Google, если вы не используете параметр --no-auto-google-login
. Он также может заполнять пользовательские экраны входа в систему, используя предоставленные вами учетные данные тестовой учетной записи. Вы также можете использовать этот параметр, чтобы предоставить собственный вводимый текст для других текстовых полей, используемых вашим приложением.
Чтобы заполнить текстовые поля в вашем приложении, используйте параметр --robo-directives
и укажите разделенный запятыми список пар key-value
, где key
— это имя ресурса Android целевого элемента пользовательского интерфейса, а value
— текстовая строка. . Вы также можете использовать этот флаг, чтобы указать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку «Выход»). Поля EditText
поддерживаются, но не текстовые поля в элементах пользовательского интерфейса WebView
.
Например, вы можете использовать следующий параметр для индивидуального входа в систему:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
В интерфейсе командной строки Test Lab gcloud имеется несколько команд и флагов, которые позволяют запускать тесты с различными спецификациями:
Флаг Android Test Orchestrator : флаг для включения Orchestrator, инструмента, который позволяет запускать каждый тест вашего приложения при отдельном вызове
Instrumentation
. Test Lab всегда использует последнюю версию Orchestrator.Флаги тестирования игрового цикла : набор флагов конфигурации, которые включают и управляют «демо-режимом» для имитации действий игрока в игровых приложениях. Узнайте больше о запуске тестов Game Loop с помощью Test Lab .
Флаг равномерного шардинга (в бета-версии) : флаг, указывающий количество сегментов, на которые вы хотите равномерно распределить тестовые примеры. Шарды запускаются параллельно на отдельных устройствах.
Флаг ручного сегментирования (в бета-версии) : флаг, определяющий группу пакетов, классов и/или тестовых случаев для запуска в сегменте (группа тестовых случаев). Шарды запускаются параллельно на отдельных устройствах.
Флаг профилей сетевого трафика (в бета-версии) : флаг, указывающий, какой профиль сети используется в ваших тестах с физическими устройствами. Сетевые профили имитируют различные условия сети, позволяя вам тестировать производительность вашего приложения в ненадежных или непредсказуемых сетях.
Создание сценариев команд gcloud с помощью Test Lab
Вы можете использовать сценарии оболочки или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые в противном случае вы бы запускали с помощью командной строки gcloud. Следующий пример bash-скрипта запускает инструментальный тест с двухминутным тайм-аутом и сообщает, успешно ли завершился тест:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Коды выхода скрипта
Test Lab предоставляет несколько кодов завершения, которые можно использовать, чтобы лучше понять результаты тестов, запускаемых с помощью сценариев или пакетных файлов.
Коды выхода сценариев для Test Lab
Код выхода | Примечания |
---|---|
0 | Все тестовые выполнения пройдены. |
1 | Произошел общий сбой. Возможные причины: несуществующее имя файла или ошибка HTTP/сети. |
2 | Тестирование прервано, поскольку были предоставлены неизвестные команды или аргументы. |
10 | Один или несколько тестовых случаев (тестируемые классы или методы класса) в рамках выполнения теста не пройдены. |
15 | Firebase Test Lab не удалось определить, пройдена или не пройдена тестовая матрица из-за непредвиденной ошибки. |
18 | Тестовая среда для выполнения этого теста не поддерживается из-за несовместимости измерений теста. Эта ошибка может возникнуть, если выбранный уровень Android API не поддерживается выбранным типом устройства. |
19 | Тестовая матрица была отменена пользователем. |
20 | Произошла ошибка тестовой инфраструктуры. |
В этом руководстве описывается, как запустить тест инструментария, робота или игрового цикла с помощью интерфейса командной строки gcloud .
Полный список команд gcloud
, которые вы можете использовать с вашим Android-приложением в Test Lab , см. в справочной документации по gcloud firebase test android
.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
Шаг 1. Настройте интерфейс командной строки gcloud
- Загрузите Google Cloud SDK
- Убедитесь, что ваша установка обновлена:
gcloud components update
- Войдите в интерфейс командной строки gcloud, используя свою учетную запись Google:
gcloud auth login
- Настройте свой проект Firebase в gcloud, где PROJECT_ID — это идентификатор вашего проекта Firebase:
gcloud config set project PROJECT_ID
Сюда входит инструмент CLI gcloud.
Шаг 2. Проверьте доступные тестовые устройства
Используйте следующие команды gcloud для просмотра тестовых устройств и языковых стандартов, доступных для вашего теста.
В качестве опции вы также можете загрузить образец приложения «Блокнот», чтобы сразу начать выполнять команды. Используйте двоичный файл app-debug-unaligned.apk
и файл инструментальных тестов app-debug-test-unaligned.apk
, которые расположены в NotePad/app/build/outputs/apk/
.
models list
: получите текущий список устройств Android, доступных для тестирования.gcloud firebase test android models list
В выводе команды:
- Столбец
MODEL_ID
содержит идентификатор, который вы позже сможете использовать для запуска тестов модели устройства. - Столбец
OS_VERSION_ID
содержит версии операционной системы, поддерживаемые устройством.
Пример вывода
- Столбец
models describe
: Получите дополнительную информацию о конкретном AndroidMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Выходные данные содержат марку модели устройства, производителя, версии ОС, поддерживаемые уровни API, поддерживаемые двоичные интерфейсы приложений (ABI), даты выпуска, а также то, является ли устройство физическим или виртуальным.
versions list
: Получите список доступных на данный момент версий ОС для тестирования.gcloud firebase test android versions list
Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды (
OS_VERSION_ID
иVERSION
), чтобы позже запустить тесты для версии ОС Android. Если вы не укажете версии ОС Android для тестирования, используется значение по умолчанию, указанное в столбцеTAGS
.Пример вывода
locales list
: получить текущий список локалей, доступных для тестирования.gcloud firebase test android versions list
Первый столбец вывода команды,
LOCALE
, содержит идентификатор, который вы можете использовать позже для запуска тестов для локали. Если вы не укажете локали для тестирования, в качестве локали по умолчанию будет использоваться английский.
Шаг 3. Запустите тест
Теперь, когда вы знаете диапазон моделей устройств, языковых стандартов и версий ОС, доступных для тестирования вашего приложения, вы можете указать устройства с помощью команды gcloud firebase test android run
и флага --device
для запуска тестов Robo или инструментальных тестов.
Запустите роботизированный тест
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте робот-тест, чтобы выполнить автоматическую проверку пользовательского интерфейса вашего приложения. Робо-тест проверяет приложение, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем просматривая приложение в поисках сбоев и других потенциальных проблем.
Чтобы запустить тест Robo, выполните следующий пример команды:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Параметр
--type robo
является неявным, если значение--type
не указано. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase, вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете просмотреть полный набор параметров командной строки для запуска тестов, набрав:
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Чтобы узнать, как исследовать результаты теста робота, см. Анализ результатов теста .
Запустите инструментальный тест
Теперь используйте инструмент командной строки gcloud
для запуска тестов Espresso приложения «Блокнот» на указанных вами конфигурациях устройств Android. Используйте тип instrumentation
теста для запуска тестов в app-debug-test-unaligned.apk
следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Параметр инструментария
--type
является неявным, если тестовый APK указан с помощью--test
. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase , вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
чтобы пометить вашу тестовую матрицу. - Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Интерфейс командной строки gcloud поддерживает Android Test Orchestrator . Для Orchestrator требуется AndroidJUnitRunner версии 1.1 или выше. Чтобы включить его, используйте gcloud firebase test android run
его с помощью
--use-orchestrator
флаг. Чтобы отключить его, используйте флаг --no-use-orchestrator
.
Вы также можете контролировать, как Test Lab выполняет ваши инструментальные тесты, используя дополнительные флаги, которые не показаны выше. Например, вы можете использовать флаг --test-targets
для тестирования одного класса или метода класса, используемого вашим тестовым APK. Вы также можете узнать, был ли ваш неудачный тест на самом деле нестабильным или нет, используя флаг --num-flaky-test-attempts
, который указывает, сколько раз следует повторить попытку выполнения теста, если один или несколько его тестовых случаев провалиться по какой-либо причине. Чтобы узнать больше, см. gcloud firebase test android run .
Отчеты о покрытии кода для инструментальных тестов
Test Lab поддерживает инструменты отчетности о покрытии кода EMMA и JaCoCo . Если у вас есть какой-либо инструмент, интегрированный в сборку вашего приложения, вы можете получить отчет о покрытии кода для тестов Test Lab , запустив gcloud firebase test android run
с некоторыми дополнительными аргументами. Если Android Test Orchestrator не включен, используйте следующее:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Если вы создаете отчеты о покрытии кода и одновременно используете Android Test Orchestrator, измените переменные среды следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Когда Test Lab завершит выполнение тестов, найдите отчеты о покрытии кода в Google Cloud Storage :
- Откройте ссылку на консоль Firebase , которую инструмент
gcloud
напечатал над таблицей результатов теста в вашем терминале. - Щелкните выполнение теста из списка по этой ссылке, чтобы открыть страницу сведений об этом выполнении.
- Нажмите «Результаты теста» , чтобы перейти к сегменту Cloud Storage с результатами теста этого выполнения.
- Откройте
artifacts/coverage.ec
чтобы просмотреть отчет о покрытии кода.
Проанализируйте результаты вашего теста
Через несколько минут инструмент gcloud распечатает базовую сводку результатов вашего теста:
Результаты выполнения теста из командной строки также содержат ссылку для просмотра результатов теста. Чтобы узнать больше о том, как интерпретировать эти результаты, см. раздел Анализ результатов Firebase Test Lab для Android .
Пользовательский вход в систему и ввод текста с помощью Robo-теста
Робо-тест автоматически завершает экраны входа, в которых для аутентификации используется учетная запись Google, если вы не используете параметр --no-auto-google-login
. Он также может заполнять пользовательские экраны входа в систему, используя предоставленные вами учетные данные тестовой учетной записи. Вы также можете использовать этот параметр, чтобы предоставить собственный вводимый текст для других текстовых полей, используемых вашим приложением.
Чтобы заполнить текстовые поля в вашем приложении, используйте параметр --robo-directives
и укажите разделенный запятыми список пар key-value
, где key
— это имя ресурса Android целевого элемента пользовательского интерфейса, а value
— текстовая строка. . Вы также можете использовать этот флаг, чтобы указать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку «Выход»). Поля EditText
поддерживаются, но не текстовые поля в элементах пользовательского интерфейса WebView
.
Например, вы можете использовать следующий параметр для индивидуального входа:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
В интерфейсе командной строки Test Lab gcloud имеется несколько команд и флагов, которые позволяют запускать тесты с различными спецификациями:
Флаг Android Test Orchestrator : флаг для включения Orchestrator, инструмента, который позволяет запускать каждый тест вашего приложения при отдельном вызове
Instrumentation
. Test Lab всегда использует последнюю версию Orchestrator.Флаги тестирования петли игры : набор флагов конфигурации, которые включают и управляют «демонстрационным режимом» для моделирования действий игрока в игровых приложениях. Узнайте больше о запуске тестов петли игры с Test Lab .
Флаг единого шарда (в бета -версии) : флаг, который указывает количество осколков, в которые вы хотите равномерно распределить тестовые примеры. Шарсы работают параллельно на отдельных устройствах.
Ручной флаг Sharding (в бета -версии) : флаг, который указывает группу пакетов, классов и/или тестовых случаев для запуска в осколках (группа тестовых случаев). Шарсы работают параллельно на отдельных устройствах.
Флаг профилей сетевого трафика (в бета -версии) : флаг, который указывает, какой сетевой профиль использует ваши тесты с физическими устройствами. Сетевые профили подражают различным условиям сетей, позволяя вам проверить производительность вашего приложения в ненадежных или непредсказуемых сетях.
Сценарий GCLOUD Команды с помощью Test Lab
Вы можете использовать Shell Scripts или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые вы в противном случае запустили бы с помощью командной строки GCLOUD. Следующий пример Bash Script запускает тест на приборе с двухминутным тайм-аутом и сообщает, что тестовый прогон завершен успешно:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Скрипт -коды выхода
Test Lab предоставляет несколько кодов выхода, которые вы можете использовать, чтобы лучше понять результаты тестов, которые вы запускаете с помощью сценариев или пакетных файлов.
Коды выхода сценариев для Test Lab
Код выхода | Примечания |
---|---|
0 | Все выполнения тестирования прошли. |
1 | Произошел общий сбой. Возможные причины включают в себя: имя файла, которое не существует, или ошибка HTTP/сети. |
2 | Тестирование выходило из -за того, что были предоставлены неизвестные команды или аргументы. |
10 | Один или несколько тестовых случаев (тестируемые классы или методы класса) в рамках выполнения теста не проходили. |
15 | Firebase Test Lab не смогла определить, прошел ли тестовая матрица или не удалась из -за неожиданной ошибки. |
18 | Тестовая среда для этого тестирования не поддерживается из -за несовместимых измерений теста. Эта ошибка может возникнуть, если выбранное уровень API Android не поддерживается выбранным типом устройства. |
19 | Тестовая матрица была отменена пользователем. |
20 | Произошла ошибка тестовой инфраструктуры. |
В этом руководстве описывается, как запустить инструмент, робо или тест петли Game с использованием GCLOUD CLI .
Для получения полного списка команд gcloud
вы можете использовать с вашим приложением Android в Test Lab , посетите справочную документацию для gcloud firebase test android
.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android Project .
Шаг 1. Установите Gcloud CLI
- Скачать Google Cloud SDK
- Убедитесь, что ваша установка обновлена:
gcloud components update
- Войдите в CLI GCLOUD, используя свою учетную запись Google:
gcloud auth login
- Установите свой проект Firebase в GCLOUD, где PROJECT_ID является идентификатором вашего проекта Firebase:
gcloud config set project PROJECT_ID
Это включает в себя инструмент Gcloud CLI.
Шаг 2. Проверьте доступные тестовые устройства
Используйте следующие команды GCLOUD для просмотра тестовых устройств и локалов, которые доступны для вашего теста.
В качестве опции вы также можете загрузить приложение примера блокнота, чтобы сразу же начать запуск команд. Используйте двоичный файл app-debug-unaligned.apk
и тестирование инструментов файл app-debug-test-unaligned.apk
, которые расположены в NotePad/app/build/outputs/apk/
.
models list
: Получите текущий список устройств Android, доступный для вас, чтобы проверить.gcloud firebase test android models list
В выводе команды:
- Column
MODEL_ID
содержит идентификатор, который вы можете позже использовать для запуска тестов на модели устройства. - Column
OS_VERSION_ID
содержит версии операционной системы, поддерживаемые устройством.
Пример вывода
- Column
models describe
: Получите больше информации о конкретной AndroidMODEL_ID
.gcloud firebase test android models describe MODEL_ID
Вывод содержит бренд модели устройства, производитель, версии ОС, поддерживаемые уровни API, поддерживаемые двоичные интерфейсы приложения (ABI), даты выпуска и то, является ли устройство физическим или виртуальным.
versions list
: Получите список доступных в настоящее время версий ОС для тестирования.gcloud firebase test android versions list
Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды (
OS_VERSION_ID
иVERSION
), чтобы более позднее запустить тесты против версии ОС Android. Если вы не указываете версии ОС Android для тестирования, используется по умолчанию в столбцеTAGS
.Пример вывода
locales list
: Получите текущий список мест, доступных для тестирования.gcloud firebase test android versions list
Первый столбец вывода команды,
LOCALE
, содержит идентификатор, который вы можете использовать позже для запуска тестов против локали. Если вы не указываете локали, чтобы проверить, английский используется в качестве локали по умолчанию.
Шаг 3. Запустите тест
Теперь, когда вы знаете диапазон моделей устройств, локалов и версий ОС, доступных для тестирования вашего приложения, вы можете указать устройства, используя команду gcloud firebase test android run
и флаг --device
для запуска Robo или инструментальных тестов.
Запустить тест робо
Даже если у вас нет никаких испытаний на инструментах, вы все равно можете искать ошибки в вашем приложении. Используйте тест Robo, чтобы провести автоматический обзор пользовательского интерфейса вашего приложения. Robo Test управляет приложением, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем пробирается через приложение, чтобы найти сбои и другие потенциальные проблемы.
Чтобы запустить тест робо, запустите следующую команду примера:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- Параметр
--type robo
является неявным, если не указано--type
. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase, вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
для обозначения вашей тестовой матрицы. - Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав:
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете при желании указать свои аргументы в файле аргумента, форматированного YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
Чтобы узнать, как исследовать результаты теста из теста Robo, см. Проанализируйте результаты теста .
Запустите тест на приборы
Теперь используйте инструмент командной строки gcloud
, чтобы запустить тестирование эспрессо для блокнота в указанных ваших конфигурациях устройства Android. Используйте тип испытаний instrumentation
, чтобы запустить тесты в app-debug-test-unaligned.apk
следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- Параметр инструментария
--type
является неявным, если тестовый APK указан с помощью--test
. - Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase , вы можете использовать необязательный флаг
--client-details matrixLabel="Example matrix label"
для обозначения вашей тестовой матрицы. - Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав
gcloud help firebase test android run
.
В качестве альтернативы указанию этих аргументов в командной строке вы можете при желании указать свои аргументы в файле аргумента, форматированного YAML. Запустите gcloud topic arg-files
чтобы узнать, как использовать эту функцию.
GCLOUD CLI поддерживает Android Test Orchestrator . Orchestrator требует Androidjunitrunner v1.1 или выше. Чтобы включить его, используйте gcloud firebase test android run
с
--use-orchestrator
. Чтобы отключить его, использовать флаг --no-use-orchestrator
.
Вы также можете контролировать, как Test Lab запускает ваши инструментальные тесты, используя дополнительные флаги, которые не показаны выше. Например, вы можете использовать флаг --test-targets
для тестирования одного класса или метода класса, используемого вашим тестовым APK. Вы также можете выяснить, был ли ваш тест, который не удался на самом деле, или нет, используя флаг --num-flaky-test-attempts
потерпеть неудачу по любой причине. Чтобы узнать больше, см. Gcloud Firebase Test Android Run .
Отчеты о покрытии кода для испытаний инструментов
Test Lab поддерживает инструменты отчетности по покрытию кода Emma и Jacoco . Если у вас есть либо инструмент, интегрированный в сборку для вашего приложения, вы можете получить отчет о покрытии кода для Test Lab тестов, запустив gcloud firebase test android run
с некоторыми дополнительными аргументами. Если тестовый оркестратор Android не включен, используйте следующее:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Если вы генерируете отчеты о покрытии кода, а также используете Android Test Orchestrator, измените переменные вашей среды следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Когда Test Lab заполняют ваши тесты, найдите отчеты о покрытии кода в Google Cloud Storage :
- Откройте ссылку на консоли Firebase , которую инструмент
gcloud
напечатан над таблицей результатов испытаний в вашем терминале. - Нажмите на выполнение теста из списка по этой ссылке, чтобы открыть страницу сведений этой выполнения.
- Нажмите результаты теста , чтобы перейти к ведро Cloud Storage с результатами теста этой выполнения.
- Откройте
artifacts/coverage.ec
чтобы увидеть ваш отчет о покрытии кода.
Проанализируйте результаты теста
Через несколько минут основное резюме результатов вашего теста напечатано инструментом GCLOUD:
Вывод вашего тестирования командной строки также включает в себя ссылку для просмотра результатов теста. Чтобы узнать больше о том, как интерпретировать эти результаты, см. Анализирование Firebase Test Lab для результатов Android .
Пользовательский вход и текст ввода с помощью теста Robo
Robo Test автоматически заполняет входные экраны, которые используют учетную запись Google для аутентификации, если вы не используете параметр --no-auto-google-login
. Он также может завершить пользовательские экраны входа в систему, используя учетные данные тестовой учетной записи, которые вы предоставляете. Вы также можете использовать этот параметр для предоставления пользовательского текста ввода для других текстовых полей, используемых вашим приложением.
Чтобы завершить текстовые поля в вашем приложении, используйте параметр --robo-directives
и предоставьте список паров key-value
, где key
-это имя ресурса Android целевого элемента пользовательского интерфейса, а value
-текстовая строка . Вы также можете использовать этот флаг, чтобы сообщить Робо, чтобы игнорировать конкретные элементы пользовательского интерфейса (например, кнопка «Логить»). Поля EditText
поддерживаются, но не текстовые поля в элементах пользовательского интерфейса WebView
.
Например, вы можете использовать следующий параметр для пользовательского входа в систему:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
Test Lab Gcloud CLI имеет несколько команд и флагов, которые позволяют запускать тесты с различными спецификациями:
Флаг оркестратора Android : флаг для включения оркестратора, инструмент, который позволяет вам запускать каждый из тестов вашего приложения в своем собственном вызове
Instrumentation
. Test Lab всегда запускает последнюю версию Orchestrator.Флаги тестирования петли игры : набор флагов конфигурации, которые включают и управляют «демонстрационным режимом» для моделирования действий игрока в игровых приложениях. Узнайте больше о запуске тестов петли игры с Test Lab .
Флаг единого шарда (в бета -версии) : флаг, который указывает количество осколков, в которые вы хотите равномерно распределить тестовые примеры. Шарсы работают параллельно на отдельных устройствах.
Ручной флаг Sharding (в бета -версии) : флаг, который указывает группу пакетов, классов и/или тестовых случаев для запуска в осколках (группа тестовых случаев). Шарсы работают параллельно на отдельных устройствах.
Флаг профилей сетевого трафика (в бета -версии) : флаг, который указывает, какой сетевой профиль использует ваши тесты с физическими устройствами. Сетевые профили подражают различным условиям сетей, позволяя вам проверить производительность вашего приложения в ненадежных или непредсказуемых сетях.
Сценарий GCLOUD Команды с помощью Test Lab
Вы можете использовать Shell Scripts или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые вы в противном случае запустили бы с помощью командной строки GCLOUD. Следующий пример Bash Script запускает тест на приборе с двухминутным тайм-аутом и сообщает, что тестовый прогон завершен успешно:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
Скрипт -коды выхода
Test Lab предоставляет несколько кодов выхода, которые вы можете использовать, чтобы лучше понять результаты тестов, которые вы запускаете с помощью сценариев или пакетных файлов.
Коды выхода сценариев для Test Lab
Код выхода | Примечания |
---|---|
0 | Все выполнения тестирования прошли. |
1 | Произошел общий сбой. Возможные причины включают в себя: имя файла, которое не существует, или ошибка HTTP/сети. |
2 | Тестирование выходило из -за того, что были предоставлены неизвестные команды или аргументы. |
10 | Один или несколько тестовых случаев (тестируемые классы или методы класса) в рамках выполнения теста не проходили. |
15 | Firebase Test Lab не смогла определить, прошел ли тестовая матрица или не удалась из -за неожиданной ошибки. |
18 | Тестовая среда для этого тестирования не поддерживается из -за несовместимых измерений теста. Эта ошибка может возникнуть, если выбранное уровень API Android не поддерживается выбранным типом устройства. |
19 | Тестовая матрица была отменена пользователем. |
20 | Произошла ошибка тестовой инфраструктуры. |