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