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

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

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

Чтобы повысить эффективность и качество труда при тестировании приложений для мобильных устройств, разумно было бы использовать дополнительные инструменты, причем эти инструменты могут варьироваться от небольших приложений и надстроек над SDK до многофункциональных автоматизированных приложений, выполняющих тестирование в комплексе. Рассмотрим некоторые существущие решения, позволяющие облегчить процесс тестирования приложений под Android, источник: http://www.enterra.ru/blog/tools_for_qa/.

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

Довольно часто бывает полезно заснять видео воспроизводимой ошибки, видео или набор скриншотов позволяет более подробно описать ошибку и тем самым сэкономить время разработчиков. В этом деле может помочь приложение AndroidScreenCapture (http://sourceforge.net/projects/ashot/), которое автоматически делает серию скриншотов при изменении экрана. Данное приложение требует установленного Android SDK.

Эмуляторы

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

В комлект Android SDK входит эмулятор мобильных устройств, с другой стороны, существуют альтернативы:

  • Genymotion (http://www.genymotion.com/) – решение, основанное на Virtual Box, которое виртуализирует, а не эмулирует Android, за счет чего происходит серьезный прирост производительности. Содержит: shell, позволяющий управлять сенсорами; простое эмулирование GPS координат; более 10 виртуальных устройств и интеграцию с Eclipse и Android Studio.
  • MobiOne Studio (http://www.genuitec.com/mobile/features/) – это ориентированная на Windows среда разработки кроссплатформенных мобильных приложений для iOS и Android платформ. Позволяет разработчику программировать, тестировать, отлаживать, упаковывать и внедрять мобильные веб-приложения на устройства, содержит эмулятор для тестирования приложений. Имеет много полезных функций вроде просмотра исходников страницы и инспектор кода. Решение платное (на данный момент – 100$), есть 15-дневный триал.

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

Позволяют удаленно протестировать приложение на множестве различных мобильных устройств, имеют в наличии стенд с реальными устройствами, результаты тестирования передаются разработчику, как видео-изображения с веб-камеры. Облачные платформы предоставляют устройства "напрокат", час работы с одним мобильным устройством стоит около 15$, можно оформить подписку, существуют бесплатные триальные версии.

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

Наиболее известные платформы: Perfecto Mobile (http://www.perfectomobile.com/)и DeviceAnywhere (http://www.keynotedeviceanywhere.com/).

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

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

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

Рассмотрим наиболее известные инструменты:

  • Robotium (code.google.com/p/robotium/) – пожалуй, самый известный на текущий момент инструмент для автоматизации тестирования Android-приложений. "It’s like Selenium, but for Android" – утверждают разработчики. Тесты пишутся на Java (есть сторонние решения, позволяющие писать их, например, на Python). Возможности запускать тесты на устройстве нет, только в эмуляторе. Необходимо добавлять библиотеку в сборку приложения.
  • MonkeyRunner (http://developer.android.com/tools/help/monkeyrunner_concepts.html) поставляется в составе Android SDK, позволяет выполнять функциональное тестирование приложения под Android, предоставляя API для управления устройством. MonkeyRunner является более низкоуровневым по сравнению с Robotium, и не требует исходного кода приложения. Тесты пишутся на Python, или с помощью рекордера, выполняются как в эмуляторе, так и на реальных устройствах, подключенных к компьютеру. Большой минус этого решения в том, что жесты записываются в координатах, проверка результатов только путём сравнения скриншотов, что очень усложняет использование одного скрипта для тестирования на нескольких устройствах, а также делает скрипты неподходящими для регрессионного тестирования в случае изменения GUI приложения.
  • AppThwack (appthwack.com/) – интересный сервис для тестирования на Android-устройствах (поддержка iOS обещается в скором времени). Вы загружаете своё приложение на ресурс, оно устанавливается на настоящие устройства (ассортимент переваливает за сотню) и подвергается "исследованию" – запуск, замеры используемой памяти и загрузки процессоров, выявление ошибок и проблем, нагрузка небольшим манки-тестом. По результатам исследования создаётся отчёт со скриншотами. Имеется триал (неделя), цена – от 29$ в месяц за тестирование на 10 наиболее распространённых устройствах.
  • JamoSolution (www.jamosolutions.com/) – одна из самых многообещающих платформ, на которой сейчас разрабатывается несколько инструментов (например, M-eux test и SeeTest). Она позволяет тестировать iOS, Android, Windows Phone и другие платформы. Поддерживается запись тестов (record&play). Работает через установку на устройстве приложения-агента, что освобождает разработчика от модифицирования своего приложения. Есть триальная версия.
  • EggPlant (www.testplant.com/eggplant/testing-tools/eggplant-mobile-eggon/) от студии TestPlant позволяет запускать свой тестовый скрипт на множестве устройств одновременно, определяя выходные данные методом распознавания картинки на экране. Поддерживает тестирование на устройствах Android и iOS и их эмуляторах, а также на эмуляторе Windows Phone. Приложение разработано под Windows, Linux, Mac. Есть триальная версия.
  • Sikuli (www.sikuli.org/) – open sourсe инструмент для автоматизации тестирования GUI Java-приложений (в том числе и Android). Открытая кросс-платформенная визуальная среда создания сценариев-скриптов, которая ориентирована на программирование графического интерфейса при помощи изображений (скриншотов). Особенность – скрипт, задающий последовательность действий, позволяет использовать скриншоты – чтобы дать команду нажать кнопку, достаточно подставить в скрипт скриншот этой кнопки. Поддерживает написание скриптов на Java и Python.
  • MonkeyTalk (www.cloudmonkeymobile.com/monkeytalk) – бесплатный инструмент для тестирования Android и iOS-приложений. Имеет собственный мощный скриптовый язык (можно писать скрипты и на JavaScript), позволяет создавать и хранить тестовые проекты (тест-кейсы, тест-сьюты). Так же имеется интеграция с Eclipse, есть рекодер. Требует вставки своей библиотеки в приложение.
  • Robot Framework (code.google.com/p/robotframework/) – это open-source фреймворк для автоматизации приемочного тестирования и разработки через приемочные тесты (ATDD), имеющий широкий функционал. Поддерживает дополнительные библиотеки (можно использовать собственные, написанные на Python или Java) – именно с помощью уже реализованных библиотек и появляется возможность тестирования приложений на Android и iOS.

Случайное тестирование ("monkey" testing)

Monkey (developer.android.com/tools/help/monkey.html) является инструментом случайного тестирования для Android, содержащимся в Android SDK. Генерирует псевдослучайные действия пользователя. Позволяет настроить "хаотичность", интервал между событиями, их тип и т. п. Модификация кода приложения не требуется. Тестировать можно как на эмуляторе, так и на подключенном устройстве.

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

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

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

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

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

  • Flurry (www.flurry.com/) поддерживает iOS, Android, Windows Phone, бесплатная;
  • BugSence () поддерживает iOS, Android, Windows Phone, бесплатная;
  • Apsalar (apsalar.com/) поддерживает iOS, Android, бесплатная;
  • Google Analytics (www.google.com/analytics/) поддерживает iOS, Android, бесплатная;
  • Mixpanel (mixpanel.com/) поддерживает iOS, Android, платная;
  • Localytics (www.localytics.com/) поддерживает iOS, Android, Windows Phone, платная;
  • Bango (bango.com/) поддерживает iOS, Android, Windows Phone, платная.

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

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

Fake GPS location приложение для Android-устройств, позволяющее установить произвольные данные в модуле геолокации.

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

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

В конце лекции хочется порекомендовать к прочтению статью, посвященную рассмотрению автоматического тестирования приложений для Android: software.intel.com/ru-ru/articles/automated-android-application-testing.