Тестирование взаимодействия с пользователем помогает гарантировать, что пользователи не столкнутся с неожиданными результатами или не получат неприятных ощущений при взаимодействии с вашим приложением. Вам следует выработать привычку создавать тесты пользовательского интерфейса (UI), если вам нужно убедиться, что пользовательский интерфейс вашего приложения работает правильно.
Один из подходов к тестированию пользовательского интерфейса заключается в том, чтобы тестировщик-человек выполнил набор пользовательских операций над целевым приложением и проверил, правильно ли оно ведет себя. Однако этот ручной подход может занять много времени и привести к ошибкам. Более эффективный подход — написать тесты пользовательского интерфейса таким образом, чтобы действия пользователя выполнялись автоматически. Автоматизированный подход позволяет выполнять тесты быстро и надежно и с повторяемостью.
Тесты пользовательского интерфейса запускают приложение (или его часть), затем моделируют взаимодействие с пользователем и, наконец, проверяют, что приложение отреагировало соответствующим образом. Это интеграционные тесты, которые могут варьироваться от проверки поведения небольшого компонента до большого навигационного теста, охватывающего весь поток пользователей. Они полезны для проверки наличия регрессий и совместимости с различными уровнями API и физическими устройствами.
Запускайте тесты пользовательского интерфейса
- Чтобы запустить инструментированные тесты пользовательского интерфейса с помощью Android Studio, вы реализуете свой тестовый код в отдельной тестовой папке Android —
src/androidTest/java
. Плагин Android Gradle создает тестовое приложение на основе вашего тестового кода, а затем загружает тестовое приложение на то же устройство, что и целевое приложение. В своем тестовом коде вы можете использовать платформы тестирования пользовательского интерфейса для имитации взаимодействия пользователя с целевым приложением, чтобы выполнять задачи тестирования, охватывающие конкретные сценарии использования. - Вы также можете использовать Robolectric для запуска тестов пользовательского интерфейса на JVM.
Архитектура и тестовая установка
Архитектура вашего приложения должна позволять тестам заменять его части для тестирования двойников , и вам следует использовать библиотеки, предоставляющие утилиты для помощи в тестировании. Например, вы можете заменить модуль хранилища данных его версией в памяти, которая предоставляет тесту поддельные детерминированные данные.
Рекомендуемый подход к замене зависимостей — внедрение зависимостей. Вы можете создать свою собственную систему вручную , но мы рекомендуем для этого использовать среду DI, например Hilt .
Зачем тестировать интерфейсы автоматически?
Приложение Android может быть ориентировано на тысячи различных устройств с разными уровнями API и форм-факторами, а высокий уровень настройки, который ОС предоставляет пользователю, означает, что ваше приложение может отображаться неправильно или даже аварийно завершать работу на некоторых устройствах.
Тестирование пользовательского интерфейса позволяет выполнять тестирование совместимости , проверяя поведение приложения в различных контекстах. Возможно, вы захотите запустить тесты пользовательского интерфейса на устройствах, которые различаются следующим образом:
- Уровень API : 21, 25 и 30.
- Язык : английский, арабский и китайский.
- Ориентация : Портрет, пейзаж.
Более того, приложения должны проверять поведение за пределами телефонов. Вам следует тестировать на планшетах, складных устройствах и других устройствах. Узнайте больше о тестировании экранов разных размеров .
Типы UI-тестов
В этом разделе рассматриваются два типа тестов пользовательского интерфейса:
- Тесты поведения анализируют иерархию пользовательского интерфейса, чтобы сделать утверждения о свойствах элементов пользовательского интерфейса.
- Скриншот-тесты делают снимки экрана пользовательского интерфейса и сравнивают их с ранее одобренными изображениями.