Учебники

9) Тестирование и автоматизация Android

Почему тестирование Android?

Android — самая большая операционная система в мире. В то же время Android фрагментирован. Есть множество устройств и версий Android, с которыми ваше приложение должно быть совместимо.

Полное руководство по тестированию и автоматизации Android

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

Полное руководство по тестированию и автоматизации Android

В этом уроке вы узнаете

Стратегия тестирования Android

Правильная стратегия тестирования Android должна включать следующее

  1. Модульный тест
  2. Интеграционный тест
  3. Операционный тест
  4. Системный тест

Полное руководство по тестированию и автоматизации Android

Модульные тесты

Модульные тесты включают в себя наборы из одной или нескольких программ, которые предназначены для проверки атомарной единицы исходного кода, такой как метод или класс.

Платформа Android поставляется с предварительно интегрированным фреймворком Junit 3.0. Это среда с открытым исходным кодом для автоматизации модульного тестирования . Android Testing Framework — мощный инструмент для разработчика, чтобы написать эффективную программу модульного тестирования.

Полное руководство по тестированию и автоматизации Android

Интеграция платформы Android и JUnit

Дополнением к модульному тестированию являются тесты пользовательского интерфейса (UI). Эти тесты относятся к компонентам пользовательского интерфейса вашего целевого приложения. Тесты пользовательского интерфейса гарантируют, что ваше приложение возвращает правильный вывод пользовательского интерфейса в ответ на последовательность действий пользователя на устройстве.

Полное руководство по тестированию и автоматизации Android

Обычные действия пользовательского интерфейса над приложением

Обычный способ тестирования производительности пользовательского интерфейса на устройстве — Android Instrumentation . Но это имеет проблемы с производительностью. Одним из лучших инструментов для тестирования пользовательского интерфейса на Android является Robotium .

Интеграционные тесты

В интеграционном тестировании все модули, прошедшие модульное тестирование, объединяются и проверяются. В Android интеграционные тесты часто включают проверку интеграции с компонентами Android, такими как тестирование сервиса, тестирование активности, тестирование контент-провайдера и т. Д.

Полное руководство по тестированию и автоматизации Android

Типы интеграционных тестов на Android

Для проведения интеграционного тестирования для Android используется множество платформ тестирования, таких как Troyd, Robolectric, Robotium.

Эксплуатационные испытания

Системные тесты

В Системном тестировании система тестируется в целом и проверяется взаимодействие между компонентами, программным обеспечением и оборудованием.

В Android системное тестирование обычно включает

  • GUI тесты
  • Юзабилити-тесты
  • Тесты производительности
  • Стресс-тесты

В приведенном выше списке тестированию производительности уделяется больше внимания. Вы можете использовать такие инструменты, как Traceview, для проведения теста производительности на Android. Этот инструмент может помочь вам отладить ваше приложение и профилировать его производительность.

Автоматическое тестирование Android

Поскольку Android фрагментирован, необходимо тестирование на множестве устройств. Но это также будет стоить вам денег. Автоматическое тестирование Android может помочь сократить расходы

Преимущества автоматического тестирования Android

  • Сократить время на выполнение тестовых случаев
  • Повысить производительность вашего процесса разработки
  • Раннее обнаружение ошибок, экономия на обслуживании программного обеспечения
  • Быстро найти и исправить ошибки при внедрении
  • Обеспечить качество программного обеспечения

Мы будем изучать следующие 2 основы

  • Android Testing Framework
  • Robolectric Testing Framework

Платформа тестирования Android

Одной из стандартных платформ тестирования для приложения Android является платформа тестирования Android . Это мощный и простой в использовании каркас тестирования, который хорошо интегрирован с инструментами Android SDK.

Полное руководство по тестированию и автоматизации Android

 Архитектура тестирования Android

  1. Пакет приложений  — это ваше целевое приложение, которое необходимо протестировать
  2. InstrumentationTestRunner  — это средство запуска Test Case, которое выполняет контрольный пример в целевом приложении. Это включает в себя:

         2a)  Инструменты тестирования: SDK инструменты для построения теста. Они интегрированы в Eclipse IDE или запускаются как командная строка.

         2b)   MonkeyRunner: инструмент, предоставляющий API для написания программ, которые управляют устройством Android или эмулятором вне кода Android.

  1. Тестовый пакет  организован в тестовые проекты. Этот пакет следует соглашению об именах. Если тестируемое приложение имеет имя пакета « com.mydomain.myapp », то тестовый пакет должен быть « com.mydomain.myapp.test ». Пакет Test включает в себя 2 объекта, как показано ниже:

         3a) Классы тестовых примеров: включают методы тестирования, выполняемые в целевом приложении.

         3b) Макет объектов: включает в себя макет данных, которые будут использоваться в качестве образца ввода для тестовых случаев.

Классы Android Test Case

Полное руководство по тестированию и автоматизации Android

Диаграмма классов AndroidTestCase

  1. TestCase  включает в себя методы JUnit для запуска теста JUnit
  2. TestSuite  используется для запуска набора тестов
  3. InstrumentationTestSuite — это TestSuite, который внедряет Instrumentation в InstrumentationTestCase перед их запуском.
  4. InstrumentationTestRunner  — это средство запуска тестовых наборов, которое выполняет тестовый пример в целевом приложении
  5. AndroidTestCase  расширяет JUnit TestCase. Он содержит методы для доступа к ресурсам, таким как Activity Context.
  6. ApplicationTestCase  проверяет классы приложений в контролируемой среде.
  7. InstrumentationTestCase проверяет конкретную функцию или поведение целевого приложения, например, для проверки вывода пользовательского интерфейса приложения.
  8. ActivityTestCase  — это базовый класс, который поддерживает тестирование действий приложения.
  9. ProviderTestCase  — это класс для тестирования одного ContentProvider.
  10. ServiceTestCase  используется для тестирования классов Service в среде тестирования. Он также поддерживает жизненный цикл Сервиса.
  11. SingeLauchActivityTestCase  используется для тестирования одного действия с InstrumentationTestCase.
  12. ActivityUnitTestCase <Activity>  используется для проверки одной изолированной активности.
  13. ActivityInstrumentationTestCase2 <Activity>  расширяет класс JUnit TestCase. Он соединяет вас с целевым приложением с помощью инструментов. С помощью этого класса вы можете получить доступ к компоненту графического интерфейса приложения и отправить событие пользовательского интерфейса (нажатие клавиши или сенсорное событие) в пользовательский интерфейс.

Ниже приведен пример ActivityInstrumentationTestCase. Он проверяет работу интерфейса приложения калькулятора, проверяет правильность выводов интерфейса.

Полное руководство по тестированию и автоматизации Android

Пример тестирования ActivityInstrumentationTestCase2

Робототехнические испытания

Тестирование с использованием Android Тестирование фреймворка с устройством или эмулятором затруднительно. Сборка и запуск теста медленны и требуют много усилий для разработки. Чтобы решить эту проблему, есть другой выбор — фреймворк Robolectric .

Robolectric Framework позволяет запускать тесты Android непосредственно на JVM без необходимости устройства или эмулятора.

Полное руководство по тестированию и автоматизации Android

Расширенные возможности Robolectric

Robolectric Test Case Classes

Полное руководство по тестированию и автоматизации Android

Эксплуатация Робоэлектрика

  • Как показано выше, Robolectric может выполнять следующие действия:
  • Зарегистрируйтесь и создайте класс Shadow
  • Перехватить загрузку класса Android
  • Использует javaassist для переопределения тел методов класса Android
  • Привязать объект Shadow к классу Android
  • Это позволяет тестируемому коду выполняться без среды Android.

Другие рамки тестирования

Помимо платформ тестирования, которые были упомянуты выше, есть много других платформ тестирования, таких как:

  • Android Junit Report — пользовательский инструментальный тестовый тестер для Android, который генерирует XML-отчеты для интеграции с другими инструментами.
  • Expresso
  • Appium

Мифы о тестировании Android

Многие предприятия разрабатывают стратегии тестирования Android , основанные на распространенных заблуждениях. В этом разделе рассматриваются несколько популярных мифов и реалий тестирования Android.

Миф № 1: Все устройства Android одинаковы … Тест на эмуляторах достаточно

Давайте начнем с простого примера. Приложение отлично работает на эмуляторах, но на некоторых реальных устройствах оно вылетает во время выполнения

Полное руководство по тестированию и автоматизации Android

Сбой приложения во время исполнения на реальном устройстве

Эмуляторы не подходят  для вашего мобильного тестирования. Вы должны проверить свое приложение на реальных устройствах.

Миф № 2: Тестирование на некоторых распространенных устройствах достаточно

  • На разных устройствах ваше приложение выглядит по-разному, потому что разные устройства имеют разное оборудование, размеры экрана, память и т. Д. Вы должны протестировать свое приложение на разных устройствах, версиях ОС, сетях операторов и местах.

Миф № 3: Достаточно предварительных испытаний перед запуском

  • Как правило, во всех тестах мы разрабатываем контрольные примеры, а затем выполняем их. Но в Исследовательском тестировании, разработке и выполнении тестов все будет сделано вместе.
  • В предварительном тестировании нет никакого плана и никакой подготовки, тогда тестировщик будет делать тесты, которые он хочет сделать. Некоторые функции будут проверены повторно, а некоторые функции не будут проверены в целом.

Миф № 4: Если в приложении есть ошибки, пользователи поймут

  • Если приложение не работает и имеет ошибки, пользователи удаляют ваше приложение
  • Проблемы с качеством — первая причина плохого обзора в Google Play. Это влияет на вашу репутацию, и вы теряете доверие клиента.

Поэтому важно иметь правильную стратегию тестирования Android

Лучшие практики в тестировании Android

  • Разработчики приложений должны создавать тестовые случаи одновременно с написанием кода.
  • Все контрольные примеры должны храниться в системе контроля версий вместе с исходным кодом.
  • Используйте непрерывную интеграцию и запускайте тесты каждый раз, когда код изменяется
  • Избегайте использования эмуляторов и рутированных устройств