Catch up on everthing we announced at this year's Firebase Summit. Learn more

Начните с инструментальных испытаний

В этом руководстве описывается, как подготовить и запустить инструментальный тест с помощью Firebase Test Lab. Чтобы использовать это руководство, вы будете нуждаться в Контрольно - измерительные приборы (написанный вами или вашей командой) , которая использует Эспрессо или UI Automator 2.0 Android рамки испытаний. Инструментальные тесты могут работать до 45 минут физических устройств и до 60 минут на виртуальных устройствах .

Следуя инструкциям ниже, вы загрузите APK-файл своего приложения и тестовый APK-файл в Firebase.

(Необязательно) Добавьте библиотеку снимков экрана в свое приложение.

Лабораторные испытания Firebase включает в себя библиотеку (инстр-тестовая лаборатория Пб) , которые вы можете использовать , чтобы обрабатывать любые скриншоты, снятые AndroidX в ScreenCapture при выполнении инструментальных тестов, таких как тесты , написанных с использованием тестовой базы Espresso . В этом разделе описано , как создавать ScreenCapture объекты с помощью библиотеки AndroidX и как обрабатывать их с помощью TestLAB-Instr-Lib.

После того, как ваш инструментальный тест будет запущен, вы можете просмотреть сделанные снимки экрана в консоли Firebase.

Попробуйте образец приложения

Загрузите приложение NotePad образца , чтобы опробовать эту функциональность. Возможность делать снимки экрана уже включена в проект NotePad.

Шаг 1. Добавьте библиотеку снимков экрана в свой проект.

  1. В корневом уровне вашего тестового проекта ( на уровне проекта) Gradle файл ( build.gradle ), добавить репозиторий Maven Google для каждой секции репозиториев:

    buildscript {
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
      }
    
      dependencies {
        // ...
    
        // Check that you have the following line (if not, add it):
        classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
      }
    }
    
    allprojects {
      // ...
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
        // ...
      }
    }
  2. В вашем модуле (приложение уровень) Gradle файл (обычно app/build.gradle ), добавить зависимость для библиотеки Тестовой лаборатории скриншота.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestCompile `com.google.firebase:testlab-instr-lib:02`
      // ...
    }
  3. В файле 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>
    ...
    
  4. В файле AndroidManifest.xml вашего приложения, добавьте следующие строки в <manifest> элемента:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. В вашем 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 и будут доступны для вас с вашими результатами , когда вы запускаете тест с Lab Test Firebase.

Пример случаи использования для создания 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

  • Обрабатывать 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. Создайте и запустите свой тест.

  1. Постройте приложение и тестирования файлов APK (см Проверьте свое приложение для инструкций).

  2. Загрузите APK файлы на приборной панели Test Lab консоли Firebase.

  3. Наконец, запустите свой тест.

Шаг 4. Просмотрите тестовые скриншоты.

После завершения теста вы можете просмотреть любые снимки экрана, сделанные в консоли Firebase.

  1. На вкладке Тесты, выберите готовый тест, затем выберите вкладку Результаты.

  2. Выберите тест еще раз, а затем перейдите на вкладку Скриншоты , которая появляется.

(Необязательно) Включите дополнительные функции тестирования

Вы можете включить следующие функции в своем тесте перед его запуском в Test Lab:

Включить Orchestrator

Android Test Orchestrator является инструментом , который проходит каждый из тестов приборов вашего приложения независимо друг от друга. Test Lab всегда использует последнюю версию Orchestrator.

Чтобы включить Orchestrator для лаборатории испытаний в испытательной установке аппаратуры, нажмите кнопку Дополнительные параметры> Run с Orchestrator.

Преимущества и недостатки

  • Преимущество: нет общего состояния. Каждый тест выполняется в собственном экземпляре инструментария, поэтому общее состояние не накапливается между тестами.
  • Преимущество: изолированные сбои. Если тест дает сбой, прекращается работа только этого инструментария, а другие тесты в вашем наборе все еще могут выполняться.
  • Недостаток: длительной автономной работы. Каждый тест запускает свой собственный экземпляр инструментария, а это означает, что процесс тестирования в целом занимает немного больше времени. Если флажок не установлено, возросший работать раз потенциально может повлиять на использование квот или фактурное время и может привести к вам ударить устройства тайм-аут пределы .

Включить сегментирование

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

Как работает тестовый шардинг

Допустим, вы создали N осколков. Для каждого выбранного устройства Test Lab раскручивает N идентичных устройств и запускает подмножество тестов на каждом устройстве. Это означает , что sharded Тестовые может привести к нескольким испытаний расстрелов на устройство, в отличие от не-sharded тестов, которые всегда приводят к одному выполнения теста на устройство (для краткого обзора основных концепций в лаборатории тестирования см Основные понятия ).

Вы можете включить тестовое сегментирование в консоли Firebase:

  1. В испытательной установке аппаратуры, нажмите кнопку Дополнительные параметры.

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

Биллинг тестовых сегментов

Лабораторные испытания реализует свои черепки за счет использования встроенного в механизм шардинге AndroidJUnitRunner в. Чтобы избежать взимания платы за развертывание пустых сегментов (сегментов без назначенных тестовых случаев), количество создаваемых сегментов должно быть меньше общего количества тестовых примеров. В зависимости от того, сколько времени требуется для выполнения каждого тестового примера, обычно рекомендуется назначать 2-10 тестовых примеров на каждый сегмент.

Для получения более подробной информации о выставлении счета, чтения Usage, квоты и выставления счетов .