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

The App Testing agent is a test case generation, management, and execution agent powered by Gemini in Firebase . You define test goals in natural language, and the agent uses AI to understand and navigate your app, simulate user interactions, and provide detailed test results.

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

App Testing agent is provided by Gemini in Firebase and is governed under the same terms. See How Gemini in Firebase uses your data for more information about how Gemini in Firebase uses your data.

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

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

If you aren't using any other Firebase products, you only have to create a project and register your app. You don't need to add any SDKs to your app. However, if you decide to use additional products in the future, be sure to complete all of the steps in Add Firebase using the Firebase console .

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

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

Each test case is broken down into steps, which will be executed in sequence. Steps allow you to break up your test case into phases, each with their own assertion. The agent may take many actions during any one step.

There are two ways to create a test case: using a YAML file or using the Firebase console. YAML files let you manage the test cases yourself, typically in a versioned source code repository. Alternatively, the Firebase console can store your test cases remotely along with your App Distribution data.

Использование 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. (Optional) Select a Prerequisite test case that contains set-up steps to run before the main test. If the prerequisite test fails, the entire test will be marked as a failure. Steps and outcomes from the prerequisite and main tests will be shown together in the test results.
  4. Разбейте тест на несколько этапов, нажав кнопку «Добавить еще один этап» .
  5. Для каждого шага задайте цель , описывающую действия, которые должен выполнить агент тестирования приложения на этом этапе.
  6. (Необязательно) Добавьте подсказку , которая предоставит дополнительную информацию, помогающую агенту тестирования приложений понять и использовать ваше приложение на этом этапе.
  7. Добавьте утверждение «Заключительный экран» , чтобы помочь агенту тестирования приложений определить, когда шаг успешно завершен. Это утверждение должно относиться только к тому, что видно на экране.
  8. После завершения настройки теста нажмите кнопку «Сохранить» .

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

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

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

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

Цель

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

Намекать

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

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

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

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

How you run your tests depends on how you create and manage your test cases. If you define test cases using YAML files, you will run those tests using the Firebase CLI. If you create your test cases in the App Distribution console, you will run them from the console or through one of the App Distribution CLI tools.

Использование 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

Path to a directory that contains test case YAML files. The command will search recursively under this directory, so the files can optionally be organized into subdirectories. If unset, "./tests" is used by default.

--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-username

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

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

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

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

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

If set, the command will start the tests and then return immediately instead of waiting for them to complete. To see the test results, visit the Firebase console. If this flag is not set, the command will block until the tests are complete, and exit with a failure code if any of the tests fail.

--results-bucket

A custom Google Cloud Storage (GCS) bucket where test results are stored. If left blank, the default bucket is used. The bucket must be owned by a billing-enabled project, and specifying a bucket results in billing charges for the storage used.

--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» .

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

You can view the results of your tests from the Releases page in the App Testing agent tab of a release. The View details button will open the Test Results dialog and show you any issues, screenshots of the app, and the actions that Gemini took during the test.

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

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

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

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

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

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

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

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

  • Тесты, управляемые ИИ, имеют тайм-аут в 5 минут. После начала теста он должен быть успешно пройден в течение этого времени, иначе он завершится досрочно и будет засчитан как неудачный тест.
  • Поскольку агент тестирования приложений использует генеративный искусственный интеллект для проверки вашего приложения, он иногда будет выполнять различные действия, при этом следуя тем же инструкциям.
  • Агент тестирования приложений поддерживает только следующие действия: касание, ввод текста, свайп вверх/вниз/влево/вправо, длительное нажатие, перетаскивание, возврат назад и ожидание.
  • The App Testing agent has trouble executing tests containing only a single step that takes many actions to accomplish. It performs better when complex tasks are broken up into multiple shorter steps.
  • Иногда агент тестирования приложения не прокручивает страницу, чтобы отобразить другие элементы за пределами экрана. Это происходит чаще, когда нет визуального подтверждения возможности прокрутки. В качестве обходного пути можно использовать поле «подсказки», чтобы предложить варианты прокрутки.
  • У агента тестирования приложений иногда возникают проблемы со подсчетом, например, с выполнением действия определенное количество раз.
  • Агент тестирования приложений не сможет перемещаться по вашему приложению, если включен FLAG_SECURE . Вместо скриншотов вашего приложения он увидит только пустой экран.

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

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

Note that if you choose to run multiple test cases, or run the same test case, on multiple devices, this counts as multiple tests. For example, if you run 2 test cases on 2 devices, this counts as a total of 4 tests.

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