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 и выполните следующие действия:
- На вкладке «Тестовые случаи» нажмите «Создать тестовый случай» . Если вы не хотите создавать собственный тестовый случай, вы можете изменить или использовать предоставленный пример тестового случая .
- В диалоговом окне «Добавить тестовый случай» укажите имя тестового случая. Оно используется для идентификации теста, но игнорируется агентом.
- (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.
- Разбейте тест на несколько этапов, нажав кнопку «Добавить еще один этап» .
- Для каждого шага задайте цель , описывающую действия, которые должен выполнить агент тестирования приложения на этом этапе.
- (Необязательно) Добавьте подсказку , которая предоставит дополнительную информацию, помогающую агенту тестирования приложений понять и использовать ваше приложение на этом этапе.
- Добавьте утверждение «Заключительный экран» , чтобы помочь агенту тестирования приложений определить, когда шаг успешно завершен. Это утверждение должно относиться только к тому, что видно на экране.
- После завершения настройки теста нажмите кнопку «Сохранить» .
Пример тестового случая
Ниже приведён пример создания тестового случая с помощью агента тестирования приложений:
Название теста | Загружается главная страница |
Цель | Загрузить главную страницу |
Намекать | Пропустите все экраны предварительного ознакомления. Закройте все всплывающие окна. Не входите в систему. |
Итоговое утверждение экрана | Главная страница приложения отображается на экране, все изображения загружены, ошибок не отображается. |
Провести тест
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.
- Установите или обновите Firebase CLI до последней версии. Мы рекомендуем загрузить автономный исполняемый файл CLI, предназначенный для вашей операционной системы.
- Войдите в систему и проверьте, можете ли вы получить доступ к своим проектам. Обратите внимание, что если вы используете Firebase CLI в среде CI, вы также можете пройти аутентификацию с помощью учетной записи службы или используя команду login:ci .
Выполните команду
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 на странице «Общие настройки» . |
--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 .
Агент тестирования приложений позволяет запускать тесты с использованием ИИ в консоли, нажав кнопку « Запустить тесты» на страницах «Релизы» или «Тестовые случаи». Это откроет экран настройки агента тестирования приложений, где вы можете выбрать один или несколько существующих тестовых случаев для выполнения агентом. Вы также можете выбрать устройства, на которых хотите провести тестирование, указать учетные данные для входа и, при необходимости, указать пользовательский сегмент Google Cloud Storage для хранения результатов тестирования. Обратите внимание, что запуск из консоли поддерживает только тесты, созданные с помощью консоли.
Если тестовый запуск пройден успешно, агент тестирования приложений кэширует действия, выполненные для каждого устройства. Эти действия можно воспроизвести во время будущих тестовых запусков для повышения воспроизводимости результатов. При использовании воспроизведенных действий агент по-прежнему будет использовать ИИ для подтверждения их успешного выполнения, используя любые определенные вами окончательные утверждения экрана. Если тест не пройден при использовании воспроизведенных действий, агент тестирования приложений вернется к использованию ИИ для всех действий.
Вы также можете выбрать запуск случайного тестирования методом обхода сети , изменив тип теста. Случайные тесты методом обхода сети используют функцию автоматизированного тестирования .
You must specify at least one test device and one test case ID to use the App Testing agent feature. Test case IDs can be found and downloaded on the Test Cases page of the Firebase console. For more information on getting started with the Firebase CLI and different ways to configure your distribution, see Distribute Android apps to testers using the Firebase CLI .
Выполните команду appdistribution:distribute , чтобы загрузить ваше приложение, и используйте следующие параметры для настройки распространения в функции агента тестирования приложений:
| appdistribution:distribute options | |
|---|---|
--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 | Запускайте тесты асинхронно. Результаты автоматического тестирования можно посмотреть в консоли Firebase. |
--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-case-ids или--test-case-ids-file | Список идентификаторов тестовых случаев для запуска, разделенных запятыми: --test-case-ids "load-app,play-the-first-level"Или же вы можете указать путь к текстовому файлу, содержащему список идентификаторов тестовых случаев, разделенных запятыми или символами новой строки: --test-case-ids-file "/path/to/test-case-ids.txt" |
You must specify at least one test device and one test case ID to use the App Testing agent feature. Test case IDs can be found and downloaded on the Test Cases page of the Firebase console. For more information on getting started with Gradle and different ways to configure your distribution, see Distribute Android apps to testers using Gradle .
Вы можете настроить App Distribution , добавив как минимум один раздел firebaseAppDistribution и используя следующие параметры для настройки распространения в функцию агента тестирования приложений:
| Параметры сборки App Distribution | |
|---|---|
testDevices илиtestDevicesFile | Устройства, на которых будут выполняться тесты. Список тестовых устройств можно указать в виде перечня характеристик, разделенных точкой с запятой: testDevices="model=tokay, version=36, locale=en, orientation=portrait;model=b0q, version=33, locale=en, orientation=portrait"Или вы можете указать путь к файлу, содержащему список технических характеристик устройства, разделенных точкой с запятой: testDevicesFile="/path/to/testDevices.txt"Вы можете посмотреть доступные модели устройств, используя интерфейс командной строки gcloud . |
testUsername | Имя пользователя для автоматического входа в систему, которое будет использоваться во время тестирования. |
testPassword илиtestPasswordFile | Пароль для автоматического входа в систему, который будет использоваться во время тестирования. Или же вы можете указать путь к текстовому файлу, содержащему пароль: testPasswordFile="/path/to/testPassword.txt" |
testNonBlocking | Запускайте тесты асинхронно. Для просмотра результатов автоматического тестирования перейдите в консоль Firebase. |
resultsBucket | 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. |
testCases илиtestCasesFile | Список идентификаторов тестовых случаев для запуска, разделенных запятыми: testCases: "load-app,play-the-first-level"Или же вы можете указать путь к текстовому файлу, содержащему список идентификаторов тестовых случаев, разделенных запятыми или символами новой строки: testCasesFile: "/path/to/test-case-ids.txt" |
You must specify at least one test device and one test case ID to use the App Testing agent feature. Test case IDs can be found and downloaded on the Test Cases page of the Firebase console. For more information on getting started with fastlane and different ways to configure your distribution, see Distribute Android apps to testers using fastlane .
В папку ./fastlane/Fastfile добавьте блок firebase_app_distribution . Используйте следующие параметры для настройки дистрибутива для функции агента тестирования приложений:
| параметры firebase_app_distribution | |
|---|---|
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 | Запускайте тесты асинхронно. Результаты автоматического тестирования можно посмотреть в консоли Firebase. |
test_case_ids илиtest_case_ids_file | Список идентификаторов тестовых случаев для запуска, разделенных запятыми: test_case_ids: "load-app,play-the-first-level"Или же вы можете указать путь к текстовому файлу, содержащему список идентификаторов тестовых случаев, разделенных запятыми или символами новой строки: test_case_ids_file: "/path/to/test-case-ids.txt" |
Импорт и экспорт тестовых случаев с помощью 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 , описав вашу ситуацию.