Опубликован: 06.05.2014 | Доступ: свободный | Студентов: 2640 / 618 | Длительность: 10:33:00
Лекция 3:

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

Основы тестирования приложений в Android IDE

Интегрированная среда разработки под Android включает в себя платформу (framework) тестирования. Эта платформа предоставляет архитектуру и мощные инструменты, помогающие тестировать все грани мобильного приложения на каждом уровне: от отдельного модуля до приложения целиком.

Рассмотрим основные особенности платформы тестирования Android.

  • Среда тестирования основана на использовании библиотеки JUnit. Для работы с мобильными приложениями разработаны классы-расширения основных классов JUnit. Самый простой способ начать тестировать мобильные приложения состоит в использовании класса AndroidTestCase, при необходимости можно использовать более сложные классы.
  • Расширения JUnit для тестирования мобильных приложений предоставляют определяемые компонентами классы тестовых сценариев. Методы этих классов позволяют создавать имитирующие объекты и методы, которые помогают проследить жизненный цикл компонента.
  • Наборы тестов собираются в пакеты, которые подобны пакетам главного приложения, таким образом нет необходимости изучать новые инструменты или методы для проектирования и разработки тестов.
  • SDK инструменты для построения и тестирования доступны в среде Eclipse с установленным плагином ADT, для использования в других средах разработки (IDE) инструменты доступны в виде консольных приложений. Эти инструменты собирают информацию о проекте тестируемого приложения, которую используют для автоматического создания build-файла, файла манифеста и структуры каталогов тестового пакета.
  • SDK содержит инструмент monkeyrunner, который предоставляет API для создания программ, способных управлять Android устройством или эмулятором. С помощью этого инструмента можно создать программу на Python, которая инсталлирует Android приложение или пакет тестов, запускает его, пересылает в него нажатия клавиш, делает скриншоты его пользовательского интерфейса, сохраняет скриншоты на рабочей станции. Инструмент monkeyrunner, в первую очередь, разработан для тестирования приложений и устройств на функциональном/системном уровне и для запуска модульных тестов, но его можно использовать и в других целях.
  • Также SDK содержит инструмент UI/ApplicationExerciserMonkey – консольный инструмент для стресс-тестирования пользовательских интерфейсов путем передачи псевдослучайных событий на устройство (не надо путать с предыдущим инструментом).

Рассмотрим основные компоненты платформы Android тестирования: структуру тестов; API, используемый для разработки тестов; инструменты, используемые для запуска тестов и просмотра результатов.

Схематическое изображение платформы тестирования Android

Рис. 5.2. Схематическое изображение платформы тестирования Android

В основе Android тестирования лежит библиотека JUnit, каждый тест которой является методом и проверяет работу некоторой части приложения. Тесты JUnit объединяются в классы тестовых сценариев (test-case classes). Полученные классы, в свою очередь, объединяются в пакеты тестов (test package). Для запуска Android тестирования используются специальные инструменты, которые загружают пакет тестов и тестируемое приложение, а после запускают процесс тестирования.

Основной организационной единицей для тестов, как впрочем, для любых Android приложений, является проект тестов (test project). Проект тестов (тестирующий проект) является каталогом или Eclipse проектом, в котором создается исходный код тестов, файл манифеста и другие файлы пакета тестов (test package). Для создания проекта тестов имеет смысл пользоваться инструментами, входящими в состав Android SDK. В этом случае происходит автоматическая настройка проекта тестов на использование класса InstrumentationTestRunner для запуска тестовых сценариев. А также автоматически создаются соответствующие build-файлы, файл манифеста и структура каталогов для тестового проекта. При этом тестирующий проект встраивается в структуру пакетов тестируемого приложения, настраиваются связи между тестирующим и тестируемым проектами. Для проекта с именем MyProject структура каталогов будет выглядеть так:

MyProject/
AndroidManifest.xml
res/
… (ресурсы главного приложения)
src/
… (исходные коды главного приложения)
tests/
AndroidManifest.xml
res/
… (ресурсы для тестов)
src/
… (исходные коды для тестов)
 

Интерфейс создания приложений (API) для Android тестирования основывается на библиотеке JUnit, содержит базовый набор инструментов и специальные классы Android-тестирования, рассмотрим эти элементы более подробно.

  • Библиотека JUnit. Необходимо отметить, что на данный момент времени (осень 2013 года) API Android тестирования поддерживает стиль написания тестов, предопределенный в JUnit3 и не поддерживает JUnit4. В JUnit3 любой класс тестов является потомком класса TestCase . В случае тестирования классов, поддерживающих Android функции, в качестве базового для класса тестов используется класс AndroidTestCase – наследник TestCase . Класс AndroidTestCase дополнительно к стандартному JUnit функционалу, реализует методы специфичные для Android. В JUnit для отображения результатов тестирования используется класс Assert , методы этого класса выполняют сравнения ожидаемого и реально полученного результатов при выполнении теста.
  • Базовый набор инструментов содержит методы, позволяющие управлять основными компонентами приложения независимо от их жизненного цикла, а также управлять загрузкой приложений. С помощью этих инструментов можно вызывать методы, управляющие жизненным циклом компонента, которые в обычных условиях могут вызываться только системой в ответ на соответствующее событие. Такая возможность позволяет пройти по всему жизненному циклу компонента шаг за шагом, как обычно происходит при отладке кода.
  • Специальные классы Android-тестирования являются расширениями классов TestCase и Assert , содержат вспомогательные методы для организации Android-тестирования.

Рассмотрим основные классы:

  • AndroidTestCase общий класс тестовых сценариев, полезен особенно начинающим в деле тестирования Android-приложений. Наследник TestCase и Assert , предоставляет стандартные JUnit методы, а также методы для проверки полномочий, защиты от утечек памяти при тестировании.
  • Классы, ориентированные на тестирование основных компонентов, являются ключевыми платформы Android тестирования. Эти классы ориентированы на тестирование особенностей компонентов и содержат методы для задания начальных значений, освобждения ресурсов и управления жизненным циклом компонента. Они также предоставляют методы для настройки имитирующих объектов (mock object). Подробное описание этих классов можно найти на сайте разработчиков:

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

Полный список классов Android-тестирования можно найти на сайте разработчиков:http://developer.android.com/tools/testing/testing_android.html, в сети есть перевод: http://anddev.ru/33/osnovyi-testirovaniya-android-prilozheniy.html.