В этом руководстве описывается, как подготовить и провести инструментальный тест с помощью Firebase Test Lab . Для использования этого руководства вам понадобится инструментальный тест (написанный вами или вашей командой), использующий фреймворки Espresso или UI Automator для Android. Инструментальные тесты могут выполняться до 45 минут на физических устройствах и до 60 минут на виртуальных .
Далее вы загрузите APK вашего приложения и APK вашего теста в Firebase.
(Необязательно) Добавьте библиотеку скриншотов в свое приложение.
Firebase Test Lab включает библиотеку (testlab-instr-lib), которую можно использовать для обработки любых снимков экрана, сделанных с помощью ScreenCapture AndroidX при запуске инструментальных тестов, например, тестов, написанных с использованием фреймворка Espresso . В этом разделе описывается, как создавать объекты ScreenCapture
с помощью библиотеки AndroidX и как обрабатывать их с помощью testlab-instr-lib.
После завершения тестирования инструментария вы можете просмотреть сделанные снимки экрана в консоли Firebase .
Попробуйте пример приложения
Загрузите пример приложения «Блокнот», чтобы опробовать эту функцию. Возможность делать скриншоты уже реализована в проекте «Блокнот».
Шаг 1. Добавьте библиотеку скриншотов в свой проект.
В файле настроек Gradle корневого уровня вашего тестового проекта (
settings.gradle.kts
илиsettings.gradle
) добавьте репозиторий Maven от Google в каждый разделrepositories
:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
В файле Gradle вашего модуля (уровня приложения) (обычно
<project>/<app-module>/build.gradle.kts
или<project>/<app-module>/build.gradle
) добавьте зависимость для библиотеки снимков экрана Test Lab .dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
В файле
AndroidManifest.xml
вашего теста зарегистрируйтеFirebaseScreenCaptureProcessor
в теге метаданных внутри элемента<instrumentation>
. Вы также можете указать процессор в качестве аргумента в AndroidJUnitRunner (инструкции см. в справочной документации AndroidJUnitRunner ).<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...
В файле
AndroidManifest.xml
вашего приложения добавьте следующие строки в элемент<manifest>
:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
В файле
AndroidManifest.xml
укажите системные разрешения для вашего приложения, добавив следующие строки в тег<manifest>
. Если вы тестируете на Android 10 (уровень API 29) или выше , не указывайте разрешениеWRITE_EXTERNAL_STORAGE
(вашему приложению оно не требуется для чтения и записи скриншотов на устройство).<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
Шаг 2. Делайте снимки экрана во время теста.
В любой момент теста, когда вам нужно сделать снимок экрана, вызовите метод Screenshot.capture()
из библиотеки AndroidX. Это создаст объект ScreenCapture
. При вызове process()
объекта ScreenCapture
он обрабатывается с помощью ScreenCaptureProcessor , зарегистрированного в AndroidManifest.xml
. Обратите внимание, что если ни один процессор не зарегистрирован, используется BasicScreenCaptureProcessor
. Поскольку вы зарегистрировали FirebaseScreenCaptureProcessor
, ваши снимки экрана будут обрабатываться с помощью FirebaseScreenCaptureProcessor
и будут доступны вам вместе с результатами при запуске теста в Firebase Test Lab .
Примеры использования для создания ScreenCapture
:
Сделайте полный снимок экрана на API Build.VERSION_CODES.JELLY_BEAN_MR2 и выше:
Screenshot.capture()
Сделайте
ScreenCapture
активности на любом уровне API. Обратите внимание, что это единственный вариант для устройств ниже Build.VERSION_CODES.JELLY_BEAN_MR2.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Примеры использования для обработки снимков экрана
Обработка
ScreenCapture
черезFirebaseScreenCaptureProcessor
:Screenshot.capture().process();
Обработать
ScreenCapture
через указанныйScreenCaptureProcessor
(это позволяет пропустить регистрацию процессора):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
Задайте имя и формат
ScreenCapture
и обработайте его с помощью зарегистрированного процессора:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
Шаг 3. Создайте и запустите тест.
Создайте свое приложение и протестируйте APK-файлы (инструкции см. в разделе Тестирование приложения ).
Загрузите APK-файлы на панель управления Test Lab консоли Firebase .
Наконец, проведите тест.
Шаг 4. Просмотрите тестовые скриншоты.
После завершения теста вы можете просмотреть все сделанные снимки экрана в консоли Firebase .
На вкладке «Тесты» выберите выполненный вами тест, затем нажмите вкладку «Результаты» .
Снова выберите тест, затем нажмите на появившуюся вкладку «Снимки экрана» .
(Необязательно) Включить дополнительные функции тестирования
Перед запуском теста с помощью Test Lab вы можете включить следующие функции:
Включить Orchestrator
Android Test Orchestrator — это инструмент, который независимо запускает каждый инструментальный тест вашего приложения. Test Lab всегда использует последнюю версию Orchestrator.
Чтобы включить Orchestrator для Test Lab , в настройках тестирования инструментария нажмите Дополнительные параметры > Запустить с Orchestrator .
При использовании Orchestrator вы получаете следующие преимущества:
- Нет общего состояния. Каждый тест выполняется в собственном экземпляре инструментария, поэтому общее состояние не накапливается между тестами.
- Отдельные сбои. В случае сбоя теста прекращается только выполнение этого инструментария, а другие тесты в вашем наборе могут продолжать выполняться.
Имейте в виду, что при использовании Orchestrator каждый тест запускает свой собственный экземпляр инструментария, что означает, что процесс приложения перезапускается после каждого тестового случая. Увеличение времени выполнения может повлиять на использование вашей квоты или тарифицируемого времени , а также привести к превышению лимитов времени ожидания устройств. Сократив время запуска приложения, вы сократите эти накладные расходы.
Чтобы задать дополнительные параметры для Orchestrator, укажите их в поле environmentVariables
. Например, для использования clearPackageData
используйте этот параметр в gcloud:
--environment-variables clearPackageData=true
Включить шардинг
Шардинг тестов разделяет набор тестов на подгруппы (шарды), которые выполняются отдельно и изолированно. Test Lab автоматически запускает каждый шард параллельно на нескольких устройствах и завершает весь набор тестов за меньшее время.
Например, если вы создадите N шардов, Test Lab развернет N идентичных устройств для каждого выбранного устройства и запустит подмножество тестов на каждом из них. Это означает, что шардированные тестовые случаи могут привести к нескольким выполнениям тестов на каждом устройстве. Однако нешардированные тестовые случаи приводят к одному выполнению теста на каждом устройстве. Чтобы узнать о концепциях Test Lab , см. раздел «Ключевые концепции» .
Чтобы включить тестовое шардинг в консоли Firebase , выполните следующие действия:
В настройках проверки прибора нажмите Дополнительные параметры .
В разделе Шардинг введите количество шардов, которые вы хотите запустить.
Выставление счетов за тестовые шарды
Test Lab реализует ваши шарды, используя встроенный механизм шардинга AndroidJUnitRunner. Чтобы избежать платы за создание пустых шардов (шардов без назначенных тестовых случаев), количество создаваемых шардов должно быть меньше общего количества тестовых случаев. В зависимости от времени выполнения каждого тестового случая, обычно рекомендуется назначать от 2 до 10 тестовых случаев на шард.
Дополнительную информацию о выставлении счетов см. в разделе Использование, квоты и выставление счетов .