Начните с роботизированных тестов

Robo test — это инструмент тестирования, интегрированный с Firebase Test Lab. Робо-тест анализирует структуру пользовательского интерфейса вашего приложения, а затем методично исследует его, автоматически имитируя действия пользователя. В отличие от теста UI/Application Exerciser Monkey , тест Robo всегда имитирует одни и те же действия пользователя в том же порядке, когда вы используете его для тестирования приложения на определенной конфигурации устройства с теми же настройками. Это позволяет использовать Robo-тест для проверки исправлений ошибок и проверки регрессий способом, который невозможен при тестировании с помощью теста UI/Application Exerciser Monkey .

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

Статистика тестового обхода робота

Чтобы помочь вам интерпретировать результаты теста Robo, Robo записывает статистику во время каждого тестового обхода. Test Lab отображает статистику в верхней части вкладки Robo на странице результатов вашего теста:

  • Действия: общее количество действий, выполненных во время обхода, включая действия сценария робота, действия обезьяны и директивы робота.
  • Действия: количество различных действий, охватываемых во время обхода.
  • Экраны: количество отдельных экранов, посещенных во время сканирования.

Test Lab также использует статистику для создания визуального представления обхода робота в виде графика обхода. Граф имеет экраны в качестве узлов и действия в качестве ребер. Следя за краями между экранами, вы можете получить представление о том, как робот перемещался по вашему приложению во время обхода.

Тайм-аут теста робота

В зависимости от сложности пользовательского интерфейса вашего приложения, тест Robo может занять пять минут или больше, чтобы выполнить полный набор взаимодействий с пользовательским интерфейсом. Мы рекомендуем установить время ожидания теста не менее 120 секунд (2 минуты) для большинства приложений и 300 секунд (5 минут) для приложений средней сложности. Значение по умолчанию для тайм-аута составляет 300 секунд (5 минут) для тестов, запускаемых из Android Studio и консоли разработчика Google, и 1500 секунд (25 минут) для тестов, запускаемых из командной строки gcloud .

Ошибки времени ожидания запуска приложения

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

Больше контроля со скриптами Robo

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

С помощью сценариев Robo вы записываете, как проходите рабочий процесс в своем приложении, а затем загружаете эту запись в консоль Firebase для запуска в тестах Robo. Когда вы запускаете тест Robo с прикрепленным сценарием, Robo сначала выполняет предварительно заданные вами действия, а затем переходит к изучению приложения, как обычно.

Начните создавать сценарии Robo с помощью инструмента Firebase в Android Studio:

  1. Откройте Android-студию.
  2. В главном меню выберите Инструменты > Firebase .
  3. Выберите Test Lab , нажмите Record Robo Script и используйте его для руководства Robo Test .
  4. Выполните остальные шаги в инструменте, чтобы записать свой Robo Script.
  5. Загрузите этот Robo Script в Test Lab и начните тестирование.

Ошибки робо-скрипта

Если сценарий Robo дает сбой в какой-либо момент, Test Lab отменяет все дальнейшие шаги в сценарии и возобновляет обычное сканирование Robo. Чаще всего Робо-скрипты дают сбой из-за того, что Test Lab не может найти нужный элемент на экране. Чтобы избежать сбоев, убедитесь, что навигация в вашем приложении предсказуема и что ваши экраны не отображаются в каком-то недетерминированном порядке.

Роботизированные тесты и виджеты пользовательского интерфейса не для Android

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

Если экран в вашем приложении не использует виджеты пользовательского интерфейса Android, тесты Robo используют Monkey Actions для проверки этого экрана. В отличие от более методичных действий Robo, действия Monkey просто имитируют нажатия на полуслучайные места на экране устройства.

Чтобы лучше тестировать экраны, на которых не используются виджеты пользовательского интерфейса Android, вы можете заменить произвольные нажатия в Monkey Action набором заданных по сценарию нажатий и взаимодействий с помощью тестов игровых циклов Firebase Test Lab .

Интеграция с GooglePlay

Вы можете использовать тест Robo в консоли Google Play, когда загружаете и публикуете APK-файл своего приложения, используя либо альфа-, либо бета-канал. Роботизированный тест выполняется на ряде популярных физических устройств из разных географических регионов, обеспечивая тестовое покрытие для различных форм-факторов и аппаратных конфигураций. Дополнительные сведения см. в статье Использование отчетов перед запуском для выявления проблем .

Вход в тестовую учетную запись и предопределенный ввод текста

Robo test поддерживает вход в тестовую учетную запись, а также позволяет вводить предопределенный текст в поля вашего приложения. Для пользовательского входа и другого предопределенного ввода текста тест Robo может вводить текст в поля EditText в вашем приложении. Для каждой строки вам необходимо идентифицировать поле EditText , используя имя ресурса Android. Чтобы узнать больше, см. Доступ к ресурсам .

Войти

В Robo test есть два взаимоисключающих метода поддержки входа:

  • Пользовательский вход: если вы предоставляете учетные данные тестовой учетной записи, вам нужно указать Robo test, где их вводить, а также предоставить эти учетные данные.
  • Автоматический вход: если в вашем приложении есть экран входа, который использует учетную запись Google для аутентификации, Robo test использует тестовую учетную запись Google, если вы не предоставите учетные данные тестовой учетной записи для пользовательского входа.

Чтобы предоставить учетные данные тестовой учетной записи для индивидуального входа, выполните следующие действия.

  1. На странице Выбор измерений выберите Дополнительные параметры .
  2. В разделе Учетные данные тестовой учетной записи (необязательно) введите имя пользователя и пароль, имена ресурсов, а также имя пользователя и пароль для тестовой учетной записи.

Предопределенный ввод текста

Вы можете предоставить настраиваемый текст ввода для других текстовых полей, используемых вашим приложением. Чтобы обеспечить ввод текста для дополнительных полей, выполните следующие действия:

  1. На странице Выбор измерений выберите Дополнительные параметры .
  2. В разделе Дополнительные поля (необязательно) введите одно или несколько имен ресурсов и строки для ввода в соответствующие текстовые поля.

Предопределенные ошибки ввода текста

Robo ищет поля EditText с именем ресурса Android, которое соответствует заданному регулярному выражению. Если Robo не может найти соответствующее поле, он не вводит ваш текст, а в остальном продолжает сканирование в обычном режиме.

Вы можете предоставить до трех ссылок на контент, поддерживаемых вашим приложением, для тестирования. Глубокие ссылки выдаются вашему приложению как намерения Android ACTION_VIEW . Поэтому каждая ссылка должна соответствовать фильтру намерений в вашем приложении.

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

Если Robo не может найти действие, соответствующее вашей ссылке на контент, Test Lab игнорирует ссылку. Проблемы с глубинными ссылками обычно являются результатом несоответствия между предоставленной глубинной ссылкой и ее определением в вашем приложении. Проверьте предоставленный URL-адрес и ваше приложение на наличие опечаток или других несоответствий.

Поддержка лицензирования приложений

Test Lab поддерживает приложения, использующие службу лицензирования приложений , предлагаемую Google Play. Чтобы успешно проверить лицензию при тестировании приложения с помощью Test Lab, вы должны опубликовать свое приложение в производственном канале в магазине Play. Чтобы протестировать приложение в альфа- или бета-канале с помощью Test Lab, удалите проверку лицензии перед загрузкой приложения в Test Lab.

Известные проблемы

В настоящее время Robo test имеет следующие известные ограничения:

  • Поддержка фреймворка пользовательского интерфейса . Тест Robo совместим только с приложениями, которые используют элементы пользовательского интерфейса из платформы пользовательского интерфейса Android (включая объекты View и ViewGroup , но исключая объекты WebView ). Если вы используете тест Robo для проверки приложений, использующих другие платформы пользовательского интерфейса, в том числе приложений, использующих игровой движок Unity, тест может завершиться, не выходя за пределы первого экрана.
  • Капчи для входа . Robo test не может обойти экраны входа, которые требуют дополнительных действий пользователя, кроме ввода учетных данных для входа (например, ввода CAPTCHA).