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

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

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

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

Подготовка

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

Пример тестового сценария

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

Тестовое название

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

Цель

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

Подсказка

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

Утверждение на последнем экране

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

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

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

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

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

  1. Установите или обновите до последней версии интерфейс командной строки Firebase. Рекомендуем скачать отдельный двоичный файл для CLI, соответствующий вашей ОС.
  2. Войдите в аккаунт и проверьте, есть ли у вас доступ к проектам. Если вы используете интерфейс командной строки Firebase в среде непрерывной интеграции, то можете выполнить аутентификацию с помощью сервисного аккаунта или команды 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 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 и опишите свой сценарий использования.