Автоматизированное тестирование мобильных...
DESCRIPTION
Доклад на конференции Мобильные Технологии 3, 27 ноября 2009 года, Минск, Беларусь Автоматизированное тестирование мобильных приложений Компания EpamTRANSCRIPT
Автоматизация тестирования
мобильных приложений
Зачем автоматизировать ? С ростом рынка устройств количество разработок под мобильные
платформы быстро растет.
Появляются новые платформы
Мобильные платформы постоянно развиваются, растут их мощности и возможности
Мобильные приложения становятся все сложнее
Как результат, количество тестовых сценариев стремительно увеличивается
С ростом сложности и числа поддержваемых платформ появляется необходимость в регрессионном и нагрузочном тестировании
Количество переходит в качество – автоматизация тестирования становится выгодной
Особенности
Автоматизировать тестирование мобильных приложений сложно.
Основные факторы:
Разнообразие платформ
Изменения в API
Ограничения платформ
Особенности взаимодействия
Разнообразие платформ
Apple iPhone iPhone OS на базе MacOS-X, браузер Safari, органичения на средства разработки
Google Android Android OS на базе Linux, open-source, собственный браузер на основе WebKit. Cобсвтенный SDK и Java API, собственная реализация jvm.
RiM Blackberry Blackberry OS с браузером собственной разработки.j2me, технология Push
Nokia S60 Symbian OS, собственный браузер на основе WebKit
Nokia Maemo OS Linux, open-source, собственный браузер на основе Mozilla
Windows Mobile OS Windows Mobile, браузер Internet Explorer Mobile, j2me
Разнообразие платформ
Распределение интернет-трафика со смартфонов по даннымAdMob.
Разнообразие платформ Платформы различаются даже на уровне операционных систем
Каждая платформа имеет собственные API, особенности интерфейса и способы взаимодействия с пользователем
Многие платформы сейчас активно развиваются, API и возможности меняются
Практически нет “основной” платформы, занимающей большую часть рынка.
Ограничения платформ Взаимодействие приложений весьма ограничено (песочница, невозможность
параллельной работы двух приложений в iPhone)
Ограниения API
Закрытость
Ресурсы
Сложность взаимодействия Тачскрин и мультитач
Акселерометр
GPS
Разнообразие элементов управления
Особенности переключения между приложениями
Внешние события – заряд батареи, входящие звонки
Время жизни батареи – ресурс, который приложение должно расходовать экономно
Эмуляторы – не панацея Функциональность эмулятора и реального устройства часто отличаются
Производительность эмулятора может значительно отличаться от реального устройства
Сложно контролировать разряд батареи при использовании приложения
Что тестировать Приложения с долгим циклом разработки
Приложения требующие длительного периода сопровождения
Приложения, являющиеся частью более сложного комплекса
Приложения, являющиеся ветвью немобильного приложения
Приложения – интерфейсы к онлайновому сервису
Веб-приложения
Основные области применения
Регрессионное тестирование
Нагрузочное тестирование
Как тестировать ?
Тестовое
окружение
СпециализированныеAPI и библиотеки
для каждойплатформы
Существующиефреймворки
для веб-приложений
Разработка собственныхсредств
тестирования
Онлайновыесервисы
Онлайновые сервисы Все сложности организации процесса тестирования перекладываются на
сторонний сервис
Специализированный сервис создает удобный интерфейс организации тестирования – автоматического или ручного
Позволяет тестировать приложения на реальных устройствах, подключенных к различным операторам и разнесенных географически
Может обеспечить большой выбор устройств для тестирования
Примеры:
Device Anywhere
uTest
Device Anywhere Предоставляет удаленный доступ к
реальным устройствам, установленных на тестовых стендах
Устройство разбирается и его интерфейсы (клавиатура, микрофон, динамик, экран) физически подключаются к стенду
Стенд дает возможность удаленно посылать управляющие воздействия, получать звук и изображение непосредственно с устройства
Удобные средства записи и воспроизведения тестовых сценариев
Простота создания тестовых сценариев Распределенная сеть стендов в разных
странах и регионах Огромное количество поддерживаемых
устройств
Недостатки:НедешевоСценарии, записанные в IDE хрупки
uTest Специализированный сервис тестирования
Использует модель сrowdsourcing – большое количество тестировщиков в разных регионах, использующих подключения к различных операторам
Функциональное и usability-тестирование на реальных аппаратах
Не требует самостоятельного создания автоматических сценариев тестирования – достаточно формального описания шагов
Формальное описание может быть выполнено инженерами uTest – позволят обойтись без собственных инженеров контроля качества
Недостатки:Недешево для частого регрессионного тестированияНебыстроЧеловеческий фактор
Специализированные API и библиотеки Тестируется специально созданная сборка приложения с интегрированными
тестами
Написания тестовых сценариев требует хорошего знания используемых для создания приложения API и внутренней стуктуры приложения
Тесты пишутся разработчиком
Для каждой платформы используется собственный API или библиотека
Примеры:
Instrumentation API – для Google Android
UISpec – для iPhone
Веб-приложения Значительная часть всех разрабатываемых для мобильных платформ
приложений – именно веб-приложения Можно использовать те же инструменты, которые используются для
тестирования веб-приложений для десктопа
Отличия:
Приложения весьма значительно адаптируются под конктретную платформу
Число платформ велико
Отсутствие явного лидера требует внимания к каждой из популярных платформ
Возможности браузеров для мобильных платформ могут отличаться гораздо сильнее, чем десктопных
Не многие из существующих решений для тестирования веб-приложений по настоящему кросс-платформенны
Во многих случаях требуется существенная доработка существующих решений
Selenium, Sahi Генерируется код на javascript, который
внедряется в приложение и исполняется браузером
Работает с любым эмулятором или устройством
Не зависит от платформы
Недостатки: Требует хорошей поддержки javascript в
браузере Сильно завист от особенностей
интерпретатора javascript Потенциально может вносить искажения
в результат теста Не все функции доступны из javascript Невысокая скорость
WebDriver Создавался с целью обойти ограничения
Selenium
Для каждой поддерживаемой платформы создается приложение-драйвер
Тестовые скрипты пишутся на Java, используя специализированное API WebDriver
Взаимодействие тестовых скриптов с приложением выполняется через платформенно-зависимое API, а не javascript
Работает быстрее
Доступны все функции
Не зависит от реализации javascript
Позволяет использовать собственную модель браузера с поддержкой javascript, без обращения к устройству или эмуоятору
Недостатки: Требует приложения-
драйвера для каждой из тестируемых платформ
API платформы не всегда позволяет реализовать весь набор функций
Написание тестов требует квалификации java-программиста
Разработка собственных средств Весьма трудоемка
Может быть оправдана, если особенности тестируемого приложения либо сами тесты не позволяют использовать существующие решения
Используются те же методы, что и для десктопных приложений
Крайне зависима от возможностей предоставляемых API целевых платформ, эмуляторов и возможностями взаимодействия с реальным устройством
Основные методы:
Запись и вопспроизведение тестовых сценарием со сличением ключевых скриншотов
Реализация сетевого протокола для удаленного управления приложением
Заключение
Автоматизация тестирования оправдана и полезна во многих случаях
Автоматизация тестирования мобильных имеет свои сложности
В большинстве случаев можно использовать существующие сервисы и инструменты
Однако в случае необходимости может быть оправданна разработка собственных средств
Комбинируя существующие и собственные средства в зависимости от сценариев тестирования можно обеспечить достаточно полное покрытие автоматическими тестами адекватными затратами сил и средств
Вопросы?