Почему тестирование Android?
Android — самая большая операционная система в мире. В то же время Android фрагментирован. Есть множество устройств и версий Android, с которыми ваше приложение должно быть совместимо.
Неважно, сколько времени вы потратите на разработку и реализацию, ошибки неизбежны, и будут появляться ошибки.
В этом уроке вы узнаете
- Почему тестирование Android?
- Стратегия тестирования Android
- Автоматическое тестирование Android
- Мифы о тестировании Android
- Лучшие практики в тестировании Android
Стратегия тестирования Android
Правильная стратегия тестирования Android должна включать следующее
- Модульный тест
- Интеграционный тест
- Операционный тест
- Системный тест
Модульные тесты
Модульные тесты включают в себя наборы из одной или нескольких программ, которые предназначены для проверки атомарной единицы исходного кода, такой как метод или класс.
Платформа Android поставляется с предварительно интегрированным фреймворком Junit 3.0. Это среда с открытым исходным кодом для автоматизации модульного тестирования . Android Testing Framework — мощный инструмент для разработчика, чтобы написать эффективную программу модульного тестирования.
Интеграция платформы Android и JUnit
Дополнением к модульному тестированию являются тесты пользовательского интерфейса (UI). Эти тесты относятся к компонентам пользовательского интерфейса вашего целевого приложения. Тесты пользовательского интерфейса гарантируют, что ваше приложение возвращает правильный вывод пользовательского интерфейса в ответ на последовательность действий пользователя на устройстве.
Обычные действия пользовательского интерфейса над приложением
Обычный способ тестирования производительности пользовательского интерфейса на устройстве — Android Instrumentation . Но это имеет проблемы с производительностью. Одним из лучших инструментов для тестирования пользовательского интерфейса на Android является Robotium .
Интеграционные тесты
В интеграционном тестировании все модули, прошедшие модульное тестирование, объединяются и проверяются. В Android интеграционные тесты часто включают проверку интеграции с компонентами Android, такими как тестирование сервиса, тестирование активности, тестирование контент-провайдера и т. Д.
Типы интеграционных тестов на Android
Для проведения интеграционного тестирования для Android используется множество платформ тестирования, таких как Troyd, Robolectric, Robotium.
Эксплуатационные испытания
- Операционные также называются функциональными тестами или приемочными тестами. Это тесты высокого уровня, предназначенные для проверки полноты и правильности применения.
- В Android FitNesse — это фреймворк с открытым исходным кодом, который облегчает проведение операционных тестов для целевого приложения.
Системные тесты
В Системном тестировании система тестируется в целом и проверяется взаимодействие между компонентами, программным обеспечением и оборудованием.
В Android системное тестирование обычно включает
- GUI тесты
- Юзабилити-тесты
- Тесты производительности
- Стресс-тесты
В приведенном выше списке тестированию производительности уделяется больше внимания. Вы можете использовать такие инструменты, как Traceview, для проведения теста производительности на Android. Этот инструмент может помочь вам отладить ваше приложение и профилировать его производительность.
Автоматическое тестирование Android
Поскольку Android фрагментирован, необходимо тестирование на множестве устройств. Но это также будет стоить вам денег. Автоматическое тестирование Android может помочь сократить расходы
Преимущества автоматического тестирования Android
- Сократить время на выполнение тестовых случаев
- Повысить производительность вашего процесса разработки
- Раннее обнаружение ошибок, экономия на обслуживании программного обеспечения
- Быстро найти и исправить ошибки при внедрении
- Обеспечить качество программного обеспечения
Мы будем изучать следующие 2 основы
- Android Testing Framework
- Robolectric Testing Framework
Платформа тестирования Android
Одной из стандартных платформ тестирования для приложения Android является платформа тестирования Android . Это мощный и простой в использовании каркас тестирования, который хорошо интегрирован с инструментами Android SDK.
Архитектура тестирования Android
- Пакет приложений — это ваше целевое приложение, которое необходимо протестировать
- InstrumentationTestRunner — это средство запуска Test Case, которое выполняет контрольный пример в целевом приложении. Это включает в себя:
2a) Инструменты тестирования: SDK инструменты для построения теста. Они интегрированы в Eclipse IDE или запускаются как командная строка.
2b) MonkeyRunner: инструмент, предоставляющий API для написания программ, которые управляют устройством Android или эмулятором вне кода Android.
- Тестовый пакет организован в тестовые проекты. Этот пакет следует соглашению об именах. Если тестируемое приложение имеет имя пакета « com.mydomain.myapp », то тестовый пакет должен быть « com.mydomain.myapp.test ». Пакет Test включает в себя 2 объекта, как показано ниже:
3a) Классы тестовых примеров: включают методы тестирования, выполняемые в целевом приложении.
3b) Макет объектов: включает в себя макет данных, которые будут использоваться в качестве образца ввода для тестовых случаев.
Классы Android Test Case
Диаграмма классов AndroidTestCase
- TestCase включает в себя методы JUnit для запуска теста JUnit
- TestSuite используется для запуска набора тестов
- InstrumentationTestSuite — это TestSuite, который внедряет Instrumentation в InstrumentationTestCase перед их запуском.
- InstrumentationTestRunner — это средство запуска тестовых наборов, которое выполняет тестовый пример в целевом приложении
- AndroidTestCase расширяет JUnit TestCase. Он содержит методы для доступа к ресурсам, таким как Activity Context.
- ApplicationTestCase проверяет классы приложений в контролируемой среде.
- InstrumentationTestCase проверяет конкретную функцию или поведение целевого приложения, например, для проверки вывода пользовательского интерфейса приложения.
- ActivityTestCase — это базовый класс, который поддерживает тестирование действий приложения.
- ProviderTestCase — это класс для тестирования одного ContentProvider.
- ServiceTestCase используется для тестирования классов Service в среде тестирования. Он также поддерживает жизненный цикл Сервиса.
- SingeLauchActivityTestCase используется для тестирования одного действия с InstrumentationTestCase.
- ActivityUnitTestCase <Activity> используется для проверки одной изолированной активности.
- ActivityInstrumentationTestCase2 <Activity> расширяет класс JUnit TestCase. Он соединяет вас с целевым приложением с помощью инструментов. С помощью этого класса вы можете получить доступ к компоненту графического интерфейса приложения и отправить событие пользовательского интерфейса (нажатие клавиши или сенсорное событие) в пользовательский интерфейс.
Ниже приведен пример ActivityInstrumentationTestCase. Он проверяет работу интерфейса приложения калькулятора, проверяет правильность выводов интерфейса.
Пример тестирования ActivityInstrumentationTestCase2
Робототехнические испытания
Тестирование с использованием Android Тестирование фреймворка с устройством или эмулятором затруднительно. Сборка и запуск теста медленны и требуют много усилий для разработки. Чтобы решить эту проблему, есть другой выбор — фреймворк Robolectric .
Robolectric Framework позволяет запускать тесты Android непосредственно на JVM без необходимости устройства или эмулятора.
Расширенные возможности Robolectric
Robolectric Test Case Classes
Эксплуатация Робоэлектрика
- Как показано выше, Robolectric может выполнять следующие действия:
- Зарегистрируйтесь и создайте класс Shadow
- Перехватить загрузку класса Android
- Использует javaassist для переопределения тел методов класса Android
- Привязать объект Shadow к классу Android
- Это позволяет тестируемому коду выполняться без среды Android.
Другие рамки тестирования
Помимо платформ тестирования, которые были упомянуты выше, есть много других платформ тестирования, таких как:
- Android Junit Report — пользовательский инструментальный тестовый тестер для Android, который генерирует XML-отчеты для интеграции с другими инструментами.
- Expresso
- Appium
Мифы о тестировании Android
Многие предприятия разрабатывают стратегии тестирования Android , основанные на распространенных заблуждениях. В этом разделе рассматриваются несколько популярных мифов и реалий тестирования Android.
Миф № 1: Все устройства Android одинаковы … Тест на эмуляторах достаточно
Давайте начнем с простого примера. Приложение отлично работает на эмуляторах, но на некоторых реальных устройствах оно вылетает во время выполнения
Сбой приложения во время исполнения на реальном устройстве
Эмуляторы не подходят для вашего мобильного тестирования. Вы должны проверить свое приложение на реальных устройствах.
Миф № 2: Тестирование на некоторых распространенных устройствах достаточно
- На разных устройствах ваше приложение выглядит по-разному, потому что разные устройства имеют разное оборудование, размеры экрана, память и т. Д. Вы должны протестировать свое приложение на разных устройствах, версиях ОС, сетях операторов и местах.
Миф № 3: Достаточно предварительных испытаний перед запуском
- Как правило, во всех тестах мы разрабатываем контрольные примеры, а затем выполняем их. Но в Исследовательском тестировании, разработке и выполнении тестов все будет сделано вместе.
- В предварительном тестировании нет никакого плана и никакой подготовки, тогда тестировщик будет делать тесты, которые он хочет сделать. Некоторые функции будут проверены повторно, а некоторые функции не будут проверены в целом.
Миф № 4: Если в приложении есть ошибки, пользователи поймут
- Если приложение не работает и имеет ошибки, пользователи удаляют ваше приложение
- Проблемы с качеством — первая причина плохого обзора в Google Play. Это влияет на вашу репутацию, и вы теряете доверие клиента.
Поэтому важно иметь правильную стратегию тестирования Android
Лучшие практики в тестировании Android
- Разработчики приложений должны создавать тестовые случаи одновременно с написанием кода.
- Все контрольные примеры должны храниться в системе контроля версий вместе с исходным кодом.
- Используйте непрерывную интеграцию и запускайте тесты каждый раз, когда код изменяется
- Избегайте использования эмуляторов и рутированных устройств