Эта страница содержит помощь по устранению неполадок и ответы на часто задаваемые вопросы о запуске тестов с Firebase Test Lab . Известные проблемы также документированы. Если вы не можете найти то, что ищете, или вам нужна дополнительная помощь, присоединяйтесь к каналу #test-lab на Firebase Slack или свяжитесь со службой поддержки Firebase .
Поиск неисправностей
При выборе устройства с высоким уровнем емкости в каталоге Test Lab тесты могут запускаться быстрее. При низкой емкости устройства тесты могут выполняться дольше. Если количество вызванных тестов намного больше емкости выбранных устройств, тесты могут выполняться дольше.
Тесты, проводимые на любом уровне емкости устройства, могут занять больше времени из-за следующих факторов:
- Трафик, влияющий на доступность устройства и скорость тестирования.
- Сбои устройств или инфраструктуры, которые могут произойти в любое время. Чтобы проверить, есть ли зарегистрированная инфраструктура для Test Lab , см. панель состояния Firebase .
Чтобы узнать больше о емкости устройств в Test Lab , ознакомьтесь с информацией о емкости устройств для Android и iOS .
Неопределенные результаты испытаний обычно возникают из-за отмены тестовых запусков или ошибок инфраструктуры.
Ошибки инфраструктуры вызваны внутренними проблемами Test Lab , такими как ошибки сети или неожиданное поведение устройств. Test Lab внутренне отменяет тестовые запуски, которые производят ошибки инфраструктуры несколько раз, прежде чем сообщить о неопределенном результате; однако вы можете отключить эти повторные попытки с помощью failFast .
Чтобы определить причину ошибки, выполните следующие действия:
- Проверьте наличие известных сбоев на панели состояния Firebase .
Повторите тест в Test Lab , чтобы убедиться в его воспроизводимости.
Попробуйте запустить тест на другом устройстве или типе устройства, если это применимо.
Если проблема не устранена, свяжитесь с командой Test Lab на канале #test-lab в Firebase Slack.
Шардинг может привести к тому, что ваши тесты будут выполняться дольше, когда количество указанных вами шардов превысит количество устройств, доступных для использования в Test Lab . Чтобы избежать этой ситуации, попробуйте переключиться на другое устройство. Для получения дополнительной информации о выборе другого устройства см.Емкость устройства .
Когда вы отправляете запрос на тестирование, ваше приложение сначала проверяется, повторно подписывается и т. д. для подготовки к запуску тестов на устройстве. Обычно этот процесс завершается менее чем за несколько секунд, но на него могут влиять такие факторы, как размер вашего приложения.
После подготовки приложения тестовые выполнения планируются и остаются в очереди до тех пор, пока устройство не будет готово к их запуску. Пока все тестовые выполнения не будут завершены, статус матрицы будет «Ожидание» (независимо от того, находятся ли тестовые выполнения в очереди или активно выполняются).
После завершения выполнения теста тестовые артефакты скачиваются с устройства, обрабатываются и загружаются в Cloud Storage . Длительность этого этапа может зависеть от количества и размера артефактов.
Артефакты выполнения теста (такие как скриншоты и файлы журналов) хранятся в Google Cloud Storage и напрямую визуализируются в консоли Firebase . Если выполнение теста было выполнено в течение последних 90 дней, проверьте, что вы назначили роли уровня проекта (владелец проекта, редактор проекта или наблюдатель проекта). Также убедитесь, что для вашего проекта или вашей организации не включено ведение журнала аудита в облаке.
Если выполнение было выполнено более 90 дней назад, скорее всего, артефакты теста были автоматически удалены. Вы можете проверить конфигурацию сегмента результатов, нажав на вкладку Результаты теста на панели управления Test Lab . По умолчанию сегмент результатов настроен на сохранение объектов в течение 90 дней.
Чтобы дольше сохранять тестовые артефакты, выполните команду gcloud firebase test android run
с флагом --results-bucket
и передайте имя результирующего контейнера. Для получения дополнительной информации посетите справочную документацию gcloud firebase test android run
.
При запуске инструментальных тестов вы можете увидеть ошибки тестирования, указывающие на частичные результаты, которые содержат сообщения вроде Test run failed to complete. Expected x tests, received y
(where y
is less than x
). Эта ошибка означает, что Test Lab не удалось проанализировать logcat на предмет маркеров начала или конца тестового случая, которые обычно генерируются AndroidJUnitRunner .
Ниже приведены распространенные причины этой проблемы:
Описание проблемы | Возможное разрешение |
---|---|
Тестовый случай не был запущен из-за тайм-аута. Если общая продолжительность тестов больше указанного вами тайм-аута или больше максимального тайм-аута , Test Lab отменяет оставшиеся тестовые случаи. |
|
Тестовый случай не был завершен, потому что он преждевременно завершился или застрял. Тестовый случай может преждевременно завершиться из-за неперехваченного исключения или ошибки утверждения. Тестовые случаи могут застрять в бесконечном цикле или могут быть неспособны продолжиться, например, если приложение не отображает правильный вид, а тестовый случай не может выполнить действие в пользовательском интерфейсе. | Проверьте видео и logcat , чтобы выяснить, на каком этапе остановился тест. |
Пользовательский тестовый исполнитель (включая расширение AndroidJUnitRunner) неожиданно аварийно завершал работу или записывал неожиданные маркеры начала или конца тестового случая в logcat . | Проверьте код вашего тестового исполнителя. |
В logcat записывалось избыточное количество журналов, что приводило к переполнению буфера или аварийному завершению процесса logcat . | Уменьшите объем записей в logcat . |
Тестируемое приложение дало сбой. | Отладьте свое приложение. |
Часто задаваемые вопросы
Firebase Test Lab предлагает бесплатные квоты для тестирования на устройствах и использования Cloud API. Обратите внимание, что квота тестирования использует стандартный тарифный план Firebase, а квоты Cloud API — нет.
Квота на тестирование
Квоты тестирования определяются количеством устройств, используемых для запуска тестов. План Firebase Spark имеет фиксированную квоту тестирования бесплатно для пользователей. Для плана Blaze ваши квоты могут увеличиться, если ваше использование Google Cloud со временем увеличится. Если вы достигли своей квоты тестирования, подождите до следующего дня или перейдите на план Blaze, если вы в настоящее время используете план Spark. Если вы уже используете план Blaze, вы можете запросить увеличение квоты. Для получения дополнительной информации см. Квота тестирования .
Вы можете отслеживать использование своей тестовой квоты в консоли Google Cloud .
Квота API облачного тестирования
API Cloud Testing поставляется с двумя квотными лимитами: запросы в день на проект и запросы каждые 100 секунд на проект. Вы можете отслеживать свое использование в консоли Google Cloud .
Квота API результатов облачного инструмента
API результатов Cloud Tool поставляется с двумя квотными лимитами: запросы в день на проект и запросы каждые 100 секунд на проект. Вы можете отслеживать свое использование в консоли Google Cloud .
Дополнительную информацию об ограничениях API см. в разделе Квоты API облака для Test Lab Если вы достигли квоты API:
Подайте запрос на более высокие квоты, отредактировав свои квоты непосредственно в консоли Google Cloud (обратите внимание, что большинство лимитов по умолчанию установлены на максимум), или
Запросите более высокие квоты API, заполнив форму запроса в консоли Google Cloud или обратившись в службу поддержки Firebase .
На своем сервере вы можете определить, поступает ли трафик с тестовых устройств, размещенных в Firebase, проверив исходный IP-адрес по нашим диапазонам IP-адресов .
Test Lab не работает с VPC-SC, который блокирует копирование приложений и других тестовых артефактов между внутренним хранилищем Test Lab и целевыми хранилищами результатов пользователей.
Для обнаружения ненадёжного поведения в ваших тестах мы рекомендуем использовать--число-нестабильных-попыток-тестаопция. Повторные запуски Deflake оплачиваются или засчитываются в вашу дневную квоту так же, как и обычные тестовые запуски.
Помните следующее:
- При обнаружении сбоя все выполнение теста запускается снова. Нет поддержки повторного выполнения только неудачных тестовых случаев.
- Повторные запуски Deflake запланированы на одно и то же время, но не гарантируется их параллельное выполнение, например, когда трафик превышает количество доступных устройств.
Да! Test Lab поддерживает Google Pixel Watch. Теперь вы можете запускать тесты на вашем автономном приложении Wear на Google Pixel Watch. Чтобы узнать больше об устройствах Test Lab , см. Тест на доступных устройствах .
Да! Test Lab поддерживает планшеты Google Pixel и Google Pixel Fold. Вы можете проводить тесты на своих автономных физических устройствах. Чтобы узнать больше об устройствах Test Lab , см. Тестирование на доступных устройствах .
Если вы тестируете свое приложение в Firebase или запускаете тесты для отчета о предварительном запуске в Play Console, вы можете определить, выполняется ли тест на устройстве, размещенном в Firebase, проверив системное свойство firebase.test.lab
в файле MainActivity
. Затем вы можете выполнить дополнительные операторы на основе логического значения для testLabSetting
. Для получения дополнительной информации см. Измененные тестовые поведения .
Хотя некоторые из этих пунктов есть в нашей дорожной карте, в настоящее время мы не можем предоставить обязательство по поддержке этих платформ тестирования и разработки приложений. Однако, если вы создали свое приложение с помощью фреймворка, который поддерживает Espresso (например, Flutter), вы можете написать инструментальный тест с использованием Espresso , а затем запустить его в Test Lab .
Test Lab явно не поддерживает обфускацию или деобфускацию. Хотя приложение, скорее всего, будет работать, любые обфусцированные данные приложения, такие как трассировки стека, будут отображаться в журналах как обфусцированные.
Да! Вы можете протестировать свое складное устройство в сложенных состояниях и позах .
Складные устройства могут находиться в различных сложенных состояниях, например, в FLAT
(полностью раскрытом) или HALF_OPENED
(промежуточном между полностью раскрытым и полностью закрытым).
Позы, с другой стороны, состоят из определенной ориентации устройства и складного состояния. Например, поза стола, которая является состоянием HALF_OPENED
в горизонтальной ориентации, или поза книги, которая является состоянием HALF_OPENED
в вертикальной ориентации.
Если вы проводите инструментальные тесты, вы можете использовать библиотеку Jetpack WindowManager и следовать документации по тестированию вашего приложения на складных устройствах для тестирования в различных состояниях и позах.
Кроме того, доступные состояния зависят от устройства и с ними можно взаимодействовать с помощью adb shell command cmd device_state
.
- Чтобы просмотреть текущее состояние, выполните команду
adb shell cmd device_state state
. - Чтобы установить или переопределить текущее состояние, выполните
adb shell cmd device_state state <IDENTIFIER>
. - Чтобы сбросить состояние, выполните команду
adb shell cmd device_state state reset
. - Чтобы проверить доступные состояния, выполните команду
adb shell cmd device_state print-states
на складном устройстве.
Google Pixel Fold (идентификатор модели felix
)
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSED', app_accessible=true}, DeviceState{identifier=1, name='HALF_OPENED', app_accessible=true}, DeviceState{identifier=2, name='OPENED', app_accessible=true}, DeviceState{identifier=3, name='REAR_DISPLAY_STATE', app_accessible=true}, ]
Samsung Galaxy Z Fold4 (идентификатор модели q4q
)
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSE', app_accessible=true}, DeviceState{identifier=1, name='TENT', app_accessible=true}, DeviceState{identifier=2, name='HALF_FOLDED', app_accessible=true}, DeviceState{identifier=3, name='OPEN', app_accessible=true}, ]
В отличие от других продуктов Firebase, вам не нужно добавлять Firebase SDK для использования Test Lab . Если у вас еще нет приложения, вы можете загрузить APK онлайн или создать приложение и тестовый APK из одного из примеров в репозитории AndroidX GitHub . Обратите внимание, что для запуска теста Robo вам нужен только файл APK вашего приложения, в то время как для инструментального теста требуются как приложение, так и тестовый APK, которые собраны из исходного кода. Для получения дополнительной информации прочтите об инструментальных тестах .
Чтобы узнать больше о функциях Test Lab , ознакомьтесь со статьей Начало тестирования для Android с помощью Firebase Test Lab .
Тестирование снимка экрана-разницы — это когда тестовые утверждения основаны на сравнении изображений экрана, полученных во время выполнения теста, с золотыми изображениями, представляющими ожидаемое поведение. Такие тесты могут быть более хрупкими на некоторых типах устройств, чем на других. Мы рекомендуем использовать для таких тестов устройства-эмуляторы Arm ( *.arm
). Устройства-эмуляторы Arm используют изображения, которые очень похожи или идентичны «универсальным» эмуляторам Android Studio.
Мы также рекомендуем вам изучить тестовые библиотеки, которые могут помочь сделать тесты скриншотов более надежными при наличии ожидаемых изменений.
Да! Виртуальные устройства обновляются при внесении следующих изменений:
- Обновления существующих изображений
- Прекращение поддержки более ранних уровней API
- Добавлены новые уровни API Android
Чтобы включить отчеты о покрытии, добавьте coverage=true
в поле environmentVariables
. Если вы используете Android Test Orchestrator, вам нужно будет указать каталог для хранения результатов покрытия:
--environment-variables coverage=true,coverageFilePath=/sdcard/Download/
Если вы не используете Orchestrator, вы можете указать путь к файлу:
--environment-variables coverage=true,coverageFile=/sdcard/Download/coverage.ec
Подробная информация об устройстве доступна через API и может быть получена из клиента gcloud с помощью команды describe :
gcloud firebase test android models describe MODEL
Известные проблемы
Robo-тест не может обойти экраны входа, которые требуют дополнительных действий пользователя помимо ввода учетных данных для входа, например, заполнения CAPTCHA.
Тест Robo лучше всего работает с приложениями, которые используют элементы пользовательского интерфейса из фреймворка Android UI (включая объекты View
, ViewGroup
и WebView
). Если вы используете тест Robo для проверки приложений, которые используют другие фреймворки пользовательского интерфейса, включая приложения, которые используют игровой движок Unity, тест может завершиться, не пройдя дальше первого экрана.