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

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

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

Агент тестирования приложений предоставляется Gemini в Firebase и регулируется теми же условиями. Дополнительную информацию об использовании ваших данных Gemini в Firebase см. в разделе «Как Gemini в Firebase использует ваши данные».

Прежде чем начать

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

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

Создайте тестовый пример.

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

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

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

Использование 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. (Необязательно) Добавьте подсказку , которая предоставит дополнительную информацию, помогающую агенту тестирования приложений понять и использовать ваше приложение на этом этапе.
  7. Добавьте утверждение «Заключительный экран» , чтобы помочь агенту тестирования приложений определить, когда шаг успешно завершен. Это утверждение должно относиться только к тому, что видно на экране.
  8. После завершения настройки теста нажмите кнопку «Сохранить» .

Пример тестового случая

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

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

Загружается главная страница

Цель

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

Намекать

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

Итоговое утверждение экрана

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

Провести тест

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

Использование YAML-файлов

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

  1. Установите или обновите Firebase CLI до последней версии. Мы рекомендуем загрузить автономный исполняемый файл CLI, предназначенный для вашей операционной системы.
  2. Войдите в систему и проверьте, можете ли вы получить доступ к своим проектам. Обратите внимание, что если вы используете Firebase CLI в среде 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 [options] [/path/to/app/binary]
--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 .

--test-non-blocking

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

--test-file-pattern

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

--test-name-pattern

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

/path/to/app/binary

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

Использование консоли App Distribution

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

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

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

Просмотрите результаты теста

Результаты тестирования можно просмотреть на странице «Релизы» во вкладке «Агент тестирования приложений» релиза. Кнопка «Просмотреть подробности» откроет диалоговое окно «Результаты тестирования» и покажет все выявленные проблемы, снимки экрана приложения и действия, предпринятые Gemini во время тестирования.

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

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

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

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

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

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

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

Предварительная версия агента тестирования приложений имеет ряд известных ограничений:

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

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

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

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

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