пятница, 8 января 2016 г.

Инструменты тестирования приложений для мобильных устройств: обзор вариантов и возможностей


Константин Шлыков


Как улучшить качество труда тестировщика приложений для мобильных устройств и избавиться от рутины? Очевидно, с помощью дополнительных инструментов – от небольших приложений и надстроек над SDK до многофункциональных автоматизированных комбайнов, осуществляющих комплексное тестирование.

Захват видео с экрана устройства

Зачастую возможность записать видео воспроизводимой ошибки очень полезна – она помогает более подробно описать баг и таким образом сэкономить время разработчиков, а то и избежать переоткрытия бага ввиду непонимания.

Android screen capture – приложение для передачи видеопотока с экрана Android-устройства на монитор компьютера. Правда программа не умеет пока записывать видео – только автоматически делать серию скриншотов при изменении экрана. Но ничто не мешает использовать десктопные скриншотеры с возможностью записи видео. Требует установленного Android SDK.

Reflector – платный (от 13$) инструмент для записи видео с iOS-устройств без проводного подключения к десктопу. Работает под Windows и Mac. Есть десятиминутный триал.
Так же для iPad и iPhone существует приложение Display Recorder, но оно постоянно то исчезает из AppStore, то появляется. На данный момент поиск в AppStore ничего не даёт (обратите внимание, что Display Recorder HD – это другое приложение, не имеющее функции записи экрана). Различные источники называют различные цены за приложения (от двух до десяти долларов).

Эмуляторы

Эмулятор – программа, полностью или частично копирующая функционал и поведение устройства или другой программы.

Некоторые из преимуществ использования эмулятора:

  • оперативное тестирование приложения, когда целевой мобильный телефон недоступен (или оказывается в дефиците);
  • тестирование сложных или опасных сценариев, которые невозможно или не рекомендуется проверять на реальных мобильных телефонах (например, тесты, которые каким-либо образом могут вывести телефон из строя или нарушить условия соглашения с оператором сотовой связи).

Минусы:

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

Тестирование на целевом мобильном телефоне – это самый верный способ убедиться в правильном функционировании приложения, поскольку вы выполняете приложение на том же аппаратном обеспечении, которое будет у ваших пользователей.

Для всех распространённых мобильных ОС предлагаются бесплатные (для разработчиков) и довольно функциональные эмуляторы. Например, для Android есть официальный Android SDK, который включает в себя эмулятор мобильного устройства, реализующий все аппаратные и программные особенности типичного устройства. Такие же «нативные» решения есть и для iOS, и для Windows Phone.

Так же, конечно, есть и альтернативы:

MobiOne Developer – это mobile Web IDE для Windows, помогающее разработчику программировать, тестировать, отлаживать упаковывать и внедрять мобильные веб-приложения на устройства. Имеет много полезных функций вроде просмотра исходников страницы и инспектор кода. Решение платное (на данный момент – 100$), есть 15-дневный триал, поддерживает iOS и Android.

Electric Mobile Studio 2012 – эмулятор для тестирования веб-приложений iOS под Windows. Поддерживает jQuery Mobile, Mobile Web JavaScript, HTML5. Встраивается в Visual Studio 2012, позволяет эмулировать работу с геолокацией, переключаться между типом устройства «на лету» и прочее. Решение платное (на настоящий момент – около 40$), есть семидневный триал. Так же в сети ещё можно найти более старые бесплатные lite-версии.

Opera Mobile Emulator и Opera Mini Simulator позволяют протестировать веб-приложение под соответствующим браузером. Оба продукта бесплатны (второй вообще онлайновый – не требует установки на компьютер).

BlueStacks App Player позволяет запускать Android-приложения на Windows XP-8 и MacOS. Судя по всему, приложение представляет собой виртуальную машину, которая не эмулирует поведения устройств, но может быть полезна для тестирования функциональности приложения в условиях недоступности других способов.

Облачные платформы устройств

Позволяют удалённо протестировать свой продукт на множестве различных устройств, передавая данные о тестирования разработчику. Самые знаменитые – Perfecto Mobile и Device Everywhere. Суть этих решений в том, что у них стоит стенд с реальными мобильными устройствами, подключенными по кабелю, и веб-камера, передающая изображения с телефона. Внутрь фотографии телефона вставлено изображение с веб-камеры. Управляется мышкой, либо с помощью автоматического скрипта. Также Perfecto Mobile и Device Anywhere удалённо предоставляют устройства «напрокат». У них стоит множество различных телефонов, и час работы с одним телефоном стоит около $15. Можно оформить подписку. Есть бесплатные триальные версии.

Плюсы:

  • почти нет вмешательства в тестируемое приложение;
  • один тестовый скрипт используется для тестирования на всех нужных мобильных платформах;
  • многообразие устройств (iOS, Android, WP, Blackberry и другие);
  • нет ограничений в приложениях с технологической точки зрения – можно тестировать хоть нативные приложения, хоть HTML5.

Минусы:

  • большая цена;
  • задержки при взаимодействии с телефоном из России.

Автоматизированное воспроизведение скриптовых тестов

При выборе подходящего инструмента следует принимать во внимание его принцип работы. Наиболее распространены два варианта:

  • Воспроизведение теста происходит по обращению к экрану, без анализа самого экрана и элементов интерфейса. Обычно такое воспроизведение осуществляется через координаты жестов на экране. Главный плюс – обычно нет необходимости модифицировать приложение. Главный минус – зависимость тестов от размера экрана, ориентации устройства, дизайна приложения.
  • Воспроизведение теста посредством обращения к интерфейсным элементам приложения. В тесте указаны метки для форм, кнопок, текстбоксов и прочей визуальной «начинки». Главный плюс – даже существенные изменения в интерфейсе приложения вряд ли повлияют на работу теста. Главный минус – придётся просить разработчиков собирать тестировщикам версии приложений с дополнительными библиотеками.

UIAutomation – стандартное решение от Apple, которое позволяет выполнять написанные на JavaScript тестовые сценарии как в эмуляторе, так и на устройстве. Входит в состав Instruments. Компилировать дополнительные библиотеки не требуется. Начиная с Xcode 4.3 появилась возможность записи тестов через рекодер.

Robotium – пожалуй, самый известный на текущий момент инструмент для автоматизации тестирования Android-приложений. "It's like Selenium, but for Android" – утверждают разработчики. Тесты пишутся на Java (есть сторонние решения, позволяющие писать их, например, на Python). Возможности запускать тесты на устройстве нет, только в эмуляторе. Необходимо добавлять библиотеку в сборку приложения.

MonkeyRunner поставляется в составе Android SDK, позволяет выполнять функциональное тестирование приложения под Android, предоставляя API для управления устройством. MonkeyRunner является более низкоуровневым по сравнению с Robotium, и не требует исходного кода приложения. Тесты пишутся на Python, или с помощью рекордера, выполняются как в эмуляторе, так и на реальных устройствах, подключенных к компьютеру. Большой минус этого решения в том, что жесты записываются в координатах, проверка результатов только путём сравнения скриншотов, что очень усложняет использование одного скрипта для тестирования на нескольких устройствах, а так же делает скрипты неподходящими для регрессионного тестирования в случае изменения GUI приложения.

TestStudio – бесплатное приложение для автоматического тестирования на платформе iOS. Базируется на обращении к компонентам приложения, а не на скриншотах. Имеется как рекодер, так и возможность писать и редактировать тесты вручную. Позволяет тестировать web и native компоненты. Интересная особенность: можно записывать и воспроизводить тесты на устройстве без подключения к компьютеру.

AppThwack – интересный сервис для тестирования на Android-устройствах (поддержка iOS обещается в скором времени). Вы загружаете своё приложение на ресурс, оно устанавливается на настоящие устройства (ассортимент переваливает за сотню) и подвергается «исследованию» – запуск, замеры используемой памяти и загрузки процессоров, выявление ошибок и проблем, нагрузка небольшим манки-тестом. По результатам исследования создаётся отчёт со скриншотами. Имеется триал (неделя), цена – от 29$ в месяц за тестирование на 10 наиболее распространённых устройствах.

JamoSolution – одна из самых многообещающих платформ, на которой сейчас разрабатывается несколько инструментов (например, M-eux test и SeeTest). Она позволяет тестировать iOS, Android, Windows Phone и другие платформы. Поддерживается запись тестов (record&play). Работает через установку на устройстве приложения-агента, что освобождает разработчика от модифицирования своего приложения. Есть триальная версия.

EggPlant от студии TestPlant позволяет запускать свой тестовый скрипт на множестве устройств одновременно, определяя выходные данные методом распознавания картинки на экране. Поддерживает тестирование на устройствах Android и iOS и их эмуляторах, а так же на эмуляторе Windows Phone. Приложение разработано под Windows, Linux, Mac. Есть триальная версия.

Squish – платное (2400$) средство для автоматического тестирования Qt, Web, Java, iOS и других приложений. Поддерживает запись тестов, воспринимает скрипты на Javascript, Python, Perl или Tcl. Есть 30-дневная триал-версия.

Sikuli – open sourсe инструмент для автоматизации тестирования GUI Java-приложений (в том числе и Android). Открытая кросс-платформенная визуальная среда создания сценариев-скриптов, которая ориентирована на программирование графического интерфейса при помощи изображений (скриншотов). Особенность – скрипт, задающий последовательность действий, позволяет использовать скриншоты – чтобы дать команду нажать кнопку, достаточно подставить в скрипт скриншот этой кнопки. Поддерживает написание скриптов на Java и Python.

MonkeyTalk – бесплатный инструмент для тестирования Android и iOS-приложений. Имеет собственный мощный скриптовый язык (можно писать скрипты и на Javascript), позволяет создавать и хранить тестовые проекты (тест-кейсы, тест-сьюты). Так же имеется интеграция с Eclipse, есть рекодер. Требует вставки своей библиотеки в приложение.

Robot Framework – это open-source фреймворк для автоматизации приемочного тестирования и разработки через приемочные тесты (ATDD), имеющий широкий функционал. Поддерживает дополнительные библиотеки (можно использовать собственные, написанные на Python или Java) – именно с помощью уже реализованных библиотек и появляется возможность тестирования приложений на Android и iOS.

Нагрузочное тестирование

HP Virtual User Generator. Служит для нагрузки сервера мультиплицированием входящего траффика. Тестировщик создаёт скрипт, запускает его на устройстве, HP VuGen перехватывает траффик и имитирует запросы к серверу с подобной информацией, но от нескольких тысяч или миллионов устройств одновременно.

Neoload позволяет эмулировать правдоподобные условия сети (эмуляция 3G, 3G+, H+, 4G LTE). Может настраиваться для эмуляции нагрузки с разношёрстного списка устройств (есть предустановки для устройств iPhone5, Samsung Galaxy Tab II, Nokia Lumia 800, Blackberry Bold 9900 и других), основной скрипт нагрузки можно записать с помощью любого реального устройства по Wi-Fi. Есть бесплатный месячный триал, стоимость самой дешёвой лицензии (на пять пользователей) – 1200 евро. Поддерживает устройства на базе iOS, Android, Windows Phone и другие.

Манкитестинг

Monkey является инструментом стресс-тестирования для Android, содержащимся в Android SDK. Генерирует псевдослучайные действия пользователя. Позволяет настроить «хаотичность», интервал между событиями, их тип и т. п. Модификация кода приложения не требуется. Тестировать можно как на эмуляторе, так и на подключенном устройстве.

Anteater – инструмент для манкитестинга iOS-приложений. Имеет более широкий функционал, чем Monkey для Android. По-видимому, существует только под Mac. Бесплатен.

Сервисы для бета-тестирования

uTest – сообщество из 45 тысяч профессиональных тестеров из 180 стран. Реальные пользователи протестируют работу приложения. Платный. (iOS, Android, Windows Phone)

The Beta Family – бесплатный сервис для тестирования приложения. Заводите аккаунт, заливаете бета-версию приложения, рассылаете приглашение на тестирование, обрабатываете результаты тестирования. Можно выбрать тип бета-тестеров: private или public. Если public, то приложение смогут тестировать все желающие. Работает с iOS, Android, Windows Phone.

Zubhium. Предоставляет SDK для Android, с помощью которого вы в свое приложение встраиваете код для автоматического сбора информации об ошибках. Разработчик выкладывает бета-версию, приглашает тестеров, получает информацию. Стоимость подписки от 10$/мес. Есть 30-дневный триал.

Сборщики статистики

Полезно знать, как пользователи работают с вашим приложением: какие функции наиболее востребованы, какие кнопки нажимаются, какие настройки меняются, какие ошибки совершаются, сколько времени пользователь проводит на различных экранах приложения. Неплохо так же иметь статистику по пользователям – какая версия ОС у их девайсов, где они географически расположены и т.д. Самый простой путь сбора такой статистики – воспользоваться готовой системой сбора аналитической информации. Например:

  • Flurry (бесплатная) (iOS, Android, Windows Phone)
  • BugSence (бесплатная) (iOS, Android, Windows Phone)
  • Apsalar (бесплатная) (iOS, Android)
  • Google Analytics (бесплатная) (iOS, Android)
  • Mixpanel (платная) (iPhone, Android)
  • Localytics (платная) (iOS, Android, Windows Phone)
  • Bango (платная) (Android, Windows Phone)

У каждой системы есть свои изюминки: обновление статистики в реальном времени (Localytics), суперточность с отслеживанием уникальных ID каждого пользователя (Bango), наличие средств для проведения опроса среди пользователей (Apsalar) и т. д. Естественно, есть и море отличий: в интерфейсе, в средствах анализа, в наличии дополнительных API, в стоимости, в наборе поддерживаемых платформ.

Другие полезные инструменты

Fake GPS – приложение для Android-устройств, позволяющее установить произвольные данные в модуле геолокации.
Так же, в ранее упоминавшемся Android SDK есть неплохой спектр мелочей, облегчающих тестирование приложений под Android – консольные возможности установки, удаления и запуска приложений, просмотр в реальном времени и вывод логов работы устройства в файл, перезагрузка приложения и так далее. Описание всех этих возможностей легко находятся в Интернете. Много полезного можно найти в книге от разработчика SDK Diego Torres Milano: "Android Application Testing Guide".

Комплексные решения

TestQuest Pro – инструмент для полного автоматического тестирования, разработанный для компаний и предприятий. Поддерживает функциональное, нагрузочное, регрессивное тестирование, тестирование качества и взаимодействия.

Experitest.com – позволяет проводить автоматическое, ручное (удалённо) и облачное тестирования на большом спектре устройств (2500$ в год за автоматическое тестирование, 4000$ в год за ручное).

Стоит отметить существование компаний, специализирующихся на тестировании, в том числе и на тестировании приложений на мобильных устройствах. Например, Qulix QA производят всестороннее тестовое покрытие – верификация работы приложения относительно ОС, платформ, языков и др; прохождение сертификации для подписи продуктов и попадания в маркет; тестирование приложений на реальных мобильных устройствах.

iReaderiReader Logo

Комментариев нет:

Отправить комментарий