Агент тестирования приложений (Android)

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

Как агент тестирования приложений использует ваши данные

Агент для тестирования приложений предоставляется Gemini в Firebase и регулируется теми же условиями. Чтобы узнать больше о том, как Gemini в Firebase использует ваши данные, ознакомьтесь со статьей Как Gemini в Firebase использует ваши данные.

Подготовка

Если вы ещё этого не сделали, зарегистрируйте приложение в Firebase.

Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Добавлять SDK в приложение не требуется. Однако если вы решите использовать дополнительные продукты в будущем, обязательно выполните все шаги, описанные в разделе Как добавить Firebase с помощью консоли Firebase.

Как создать тестовый случай

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

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

Создать тестовый случай можно двумя способами: с помощью YAML-файла или консоли Firebase. Файлы YAML позволяют управлять тестовыми случаями самостоятельно, обычно в репозитории исходного кода с контролем версий. Кроме того, вы можете хранить тестовые случаи удаленно в консоли Firebase вместе с данными App Distribution.

Как использовать файлы YAML

В следующем примере показан файл YAML, в котором определены два тестовых случая:

tests:
- displayName: Login as guest
  id: login-as-guest
  steps:
  - goal: Log in as a guest
    finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
  prerequisiteTestCaseId: login-as-guest
  steps:
  - goal: Open the article on "Bob Dylan"
    hint: Use the search function to find it
    finalScreenAssertion: >-
      The article is opened and the title "Bob Dylan" is visible.
  - goal: Find Bob Dylan's birthday in the article
    hint: >-
      Look for the "Born" section in the infobox on the right side of the page.
    finalScreenAssertion: >-
      The text "May 24, 1941" is visible on the screen.

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

Как использовать консоль App Distribution

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

  1. На вкладке Тестовые случаи нажмите Новый тестовый случай. Если вы не хотите создавать собственный тестовый случай, вы можете изменить или использовать пример тестового случая.
  2. В диалоговом окне Добавить тестовый случай введите название тестового случая. Используется для идентификации теста, но игнорируется агентом.
  3. При необходимости выберите тестовый случай с предварительными условиями, который содержит шаги по настройке, выполняемые перед основным тестом. Если предварительный тест не пройден, весь тест будет отмечен как неудачный. Шаги и результаты предварительного и основного тестов будут показаны вместе.
  4. Вы можете разбить тест на несколько шагов, нажав кнопку Добавить ещё один шаг.
  5. Для каждого шага укажите цель, описывающую, что агент тестирования приложений должен делать на этом шаге.
  6. Вы можете добавить подсказку, чтобы предоставить агенту App Testing дополнительную информацию, которая поможет ему понять, как пользоваться приложением на этом шаге.
  7. Добавьте утверждение о конечном экране, чтобы агент тестирования приложений мог определить, когда шаг успешно выполнен. Утверждение должно относиться только к тому, что видно на экране.
  8. Нажмите Сохранить.

Пример отчета о тестировании

Ниже приведен пример создания тестового случая с помощью агента тестирования приложений:

Название теста

Загрузка главной страницы

Цель

Как загрузить главную страницу

Подсказка

Пропустите экраны первоначальной настройки. Закройте все всплывающие окна. Не входить в аккаунт.

Утверждение о конечном экране

На экране видна главная страница приложения, все изображения загружены, ошибки не отображаются.

Запустить тестирование

Способ выполнения тестов зависит от того, как вы создаете и управляете тестовыми случаями. Если вы определяете тестовые случаи с помощью файлов YAML, то запускать тесты нужно с помощью интерфейса командной строки Firebase. Если вы создаете тестовые случаи в консоли App Distribution, то запускать их можно в консоли или с помощью одного из инструментов CLI App Distribution.

Как использовать файлы YAML

Тестовые случаи, определенные в файлах YAML, можно выполнять с помощью интерфейса командной строки Firebase.

  1. Установите или обновите интерфейс командной строки Firebase до последней версии. Мы рекомендуем скачать отдельный исполняемый файл для интерфейса командной строки, подходящий для вашей ОС.
  2. Войдите в аккаунт и убедитесь, что у вас есть доступ к проектам. Если вы используете интерфейс командной строки Firebase в среде CI, вы также можете пройти аутентификацию с помощью сервисного аккаунта или команды login:ci.
  3. Выполните команду apptesting:execute. Пример:

    firebase apptesting:execute \
      --app=1:1234567890:android:0a1b2c3d4e5f67890 \
      --test-dir=./mytests \
      ./app/build/outputs/apk/debug/app-debug.apk
    
apptesting:execute [параметры] [/путь/к/исполняемому/файлу/приложения]
--app

Обязательно: идентификатор приложения в Firebase. Идентификатор приложения можно найти в консоли Firebase на странице Общие настройки.

--app 1:1234567890:android:0a1b2c3d4e5f67890

--test-dir

Путь к каталогу, содержащему YAML-файлы тестовых случаев. Команда выполняет рекурсивный поиск в этом каталоге, поэтому файлы можно организовать в подкаталоги. Если не задано, по умолчанию используется значение "./tests".

--test-devices или
--test-devices-file

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

Вы можете указать тестовые устройства в виде списка спецификаций, разделенных точкой с запятой:

--test-devices "model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

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

--test-devices-file "/path/to/test-devices.txt"

Посмотреть доступные модели устройств можно с помощью gcloud CLI.

--test-username

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

--test-password или
--test-password-file

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

Вы также можете указать путь к текстовому файлу с паролем:

--test-password-file: "/path/to/test-password.txt"
--test-non-blocking

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

--results-bucket

Специальный сегмент Google Cloud Storage (GCS), в котором хранятся результаты тестирования. Если оставить поле пустым, будет использоваться корзина по умолчанию. Сегмент должен принадлежать проекту с включенным платежным аккаунтом. При указании сегмента взимается плата за использованное хранилище.

--test-file-pattern

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

--test-name-pattern

Шаблон регулярного выражения. Будут выполнены только тесты с отображаемыми именами, которые соответствуют этому шаблону.

/path/to/app/binary

Необязательно. Путь к исполняемому файлу приложения. Если не указать этот параметр, агент будет использовать последнюю версию, загруженную в App Distribution для указанного приложения.

Как использовать консоль App Distribution

Чтобы запустить тестовые случаи, хранящиеся в App Distribution, можно использовать консоль Firebase, интерфейс командной строки Firebase или плагины Gradle или fastlane для App Distribution.

Как импортировать и экспортировать тестовые случаи с помощью YAML-файлов

Импорт тестовых случаев из файлов YAML полезен, когда вы хотите управлять тестовыми случаями вне консоли Firebase. Экспорт также может быть полезен для переноса тестовых случаев между проектами. Вы можете использовать LLM для уточнения существующих или создания новых тестовых случаев. Импортировать и экспортировать тестовые случаи можно на странице Test Cases (Тестовые случаи) в консоли Firebase или программно с помощью интерфейса командной строки Firebase. Пример тестового случая в формате YAML можно найти в разделе Создание тестового случая в формате YAML.

Как посмотреть результаты теста

Результаты тестирования можно посмотреть на странице Версии на вкладке Агент тестирования приложений. Нажав кнопку Посмотреть подробности, вы откроете диалоговое окно "Результаты тестирования", в котором будут указаны проблемы, скриншоты приложения и действия, выполненные Gemini во время тестирования.

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

Чтобы узнать больше о результатах тестирования, воспользуйтесь таблицей ниже.

Значок Имя Описание
spark Действие ИИ Указывает, что агент тестирования приложений использовал Gemini, чтобы принять решение о выполнении действия или завершении шага.
replay Повторенное действие Указывает, что агент тестирования приложений воспроизвел действие из предыдущего успешного запуска теста.
spark Заявление об ИИ Указывает, что агент тестирования приложений использовал Gemini для проверки утверждения о конечном экране после воспроизведения действий из предыдущего успешного запуска того же теста.

Как устранять неполадки с результатами тестирования

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

На странице результатов тестирования можно нажать кнопку Посмотреть артефакты, чтобы посмотреть все видео, журналы и другие артефакты Cloud, связанные с результатами тестирования.

Известные проблемы и ограничения

У предварительной версии агента для тестирования приложений есть некоторые ограничения:

  • Время ожидания для тестов с ИИ – 5 минут. Если тест не будет пройден за это время, он завершится раньше и будет считаться неудачным.
  • Поскольку агент тестирования приложений использует генеративный искусственный интеллект для тестирования вашего приложения, он может выполнять разные действия, следуя одним и тем же инструкциям.
  • Агент тестирования приложений поддерживает только следующие действия: нажатие, ввод текста, пролистывание вверх/вниз/влево/вправо, долгое нажатие, перетаскивание, возврат и ожидание.
  • Агенту тестирования приложений сложно выполнять тесты, состоящие из одного шага, для которого требуется выполнить много действий. Он лучше справляется со сложными задачами, если их разбить на несколько более простых.
  • Агент тестирования приложений иногда не прокручивает экран, чтобы показать другие элементы. Это чаще происходит, когда нет визуального индикатора прокрутки. В качестве временного решения можно использовать поле "hints", чтобы предлагать прокрутку.
  • Агенту тестирования приложений иногда сложно выполнять определенные действия заданное количество раз.
  • Агент тестирования приложений не может перемещаться по приложению, если включена функция FLAG_SECURE. Вместо скриншотов вашего приложения будет виден только пустой экран.

Тестирование квот

В период предварительной версии тесты с ИИ будут доступны бесплатно в пределах квоты. По умолчанию в проекте Firebase можно проводить не более 200 тестов в месяц.

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

Чтобы увеличить квоту выше лимита по умолчанию, обратитесь в службу поддержки Firebase и расскажите о своем варианте использования.