Согласно отчету Clearwater Technology Team (www.clearwatercf.com/documents/library/Mobile_Report_FINAL.pdf), в 2015 году доходы мобильной отрасли достигнут 330 млрд долл., однако стремительный рост спроса на мобильные устройства (особенно на смартфоны и планшеты), а также на специально разработанные для них программы сопровождается увеличением потребности в адекватных качественных инструментах тестирования [1]. В прогнозе компании ABI Research говорится, что объемы продаж таких инструментов, которые сегодня используются главным образом в ручном режиме, но все чаще начинают применяться и в автоматическом режиме, возрастут с 200 млн долл. в 2012 году до 800 млн долл. в 2017-м (www.abiresearch.com/press/200-million-mobile-application-testing-market-boos).
Большинство исследований, посвященных тестированию мобильных приложений, сосредоточено сегодня вокруг следующих тем:
- белый ящик (объект исследования с известными свойствами) и модульное тестирование мобильных приложений;
- черный ящик (объект исследования, внутреннее устройство которого неизвестно) и тестирование графического интерфейса мобильных приложений;
- валидация требований к качеству обслуживания (Quality of Service, QoS) приложений;
- тестирование беспроводных сетей;
- тестирование удобства использования мобильных приложений;
- инфраструктура для автоматизации тестирования мобильных технологий.
Попробуем составить общее руководство по тестированию мобильных приложений, учитывающее особенности существующих подходов к тестированию как программ, специально написанных для мобильных устройств, так и веб-приложений.
За термином «тестирования мобильных технологий» скрываются различные виды испытаний, в том числе тестирование приложений, специально предназначенных для мобильных устройств, тестирование мобильных устройств и тестирование мобильных веб-приложений. Под тестированием мобильных приложений понимаются тестовые мероприятия, проводимые по отношению к приложениям с использованием проработанных тестовых методов и инструментов, гарантирующих соответствие заявленным функциям, поведению, производительности, качеству обслуживания и характерным особенностям: мобильности, удобству использования, интероперабельности, связности, безопасности и конфиденциальности.
Требования
Тестирование мобильных приложений отличается от тестирования обычного ПО наличием ряда уникальных требований. Прежде всего, мобильные приложения должны правильно выполняться в любое время и в любом месте. Необходимо, чтобы они корректно функционировали на разных платформах, которые отличаются используемыми операционными системами, размерами экрана, вычислительными ресурсами и продолжительностью непрерывной работы от батарей. Мобильные приложения должны поддерживать множество каналов ввода (клавиатура, голос, жесты и т. д.), мультимедийные технологии и обладать другими особенностями, повышающими удобство их использования. Для удержания низких цен на оборудование необходимо широко использовать средства моделирования и виртуализации. И наконец, поскольку большинство мобильных сервисов поддерживают достаточно широкий спектр беспроводных сетей (2G, 3G, 4G, Wi-Fi, WiMax), мобильные приложения должны нормально функционировать в неоднородной сетевой среде.
Цели и мероприятия
С учетом указанных требований при тестировании мобильных приложений необходимо сосредоточиться на следующих целях и мероприятиях:
- тестирование функциональности и поведения — позволяет оценить сервисные функции, интерфейсы API для мобильных веб-приложений, поведение внешних систем, интеллектуальность системы и пользовательские интерфейсы;
- тестирование QoS — позволяет оценить нагрузку на систему, производительность, устойчивость и готовность, масштабируемость и пропускную способность;
- тестирование интероперабельности — дает возможность проверить способность системы работать в условиях различных устройств, платформ, браузеров и беспроводных сетей;
- тестирование удобства использования и интернационализации — позволяет сделать оценку контента пользовательского интерфейса, потоков и сценариев операций пользователей, применения мультимедийных средств и управления при помощи жестов;
- тестирование безопасности и конфиденциальности — осуществляется для проверки процедур аутентификации пользователей, безопасности устройств, безопасности сеансов работы, возможности проникновения в системы и сети, соблюдения безопасности сквозных транзакций и конфиденциальности пользовательской информации;
- тестирование мобильности — позволяет оценить работу функций, использующих информацию о местоположении, профили клиентов, системные и пользовательские данные;
- тестирование совместимости и связности — позволяет проверить совместимость с мобильными браузерами и платформами и оценить возможность диверсификации соединений беспроводных сетей;
- тестирование мультиарендности — проводится для проверки функций, связанных с множественной арендой приложений, оценки поведения системы, системных данных и пользовательских интерфейсов.
Для создания среды тестирования мобильных приложений применяется несколько различных стратегий.
Подходы к тестированию
Можно выделить четыре популярных подхода к тестированию мобильных приложений, которые основаны на использовании базовой клиент-серверной инфраструктуры (рис. 1).
Рис. 1. Инфраструктуры мобильного тестирования: a — эмуляция, б — облако, в — устройства, г — краудсорсинг |
Тестирование на основе эмуляции. Этот способ тестирования предусматривает использование эмулятора мобильного устройства, имитирующего его поведение в виртуальной машине. Довольно часто такие эмуляторы бывают включены в состав комплекта инструментов для разработчика, прилагаемого к мобильной платформе (например, в состав SDK Android). Цена такого решения относительно невелика, потому что в этом случае нет необходимости в создании тестовой лаборатории, покупке или аренде физических устройств. Однако эмуляцию можно использовать только для оценки функциональности системы в весьма ограниченном контексте. Такой подход недорог, но у него есть ряд существенных недостатков. Например, проверить обработку всех жестов в полном объеме довольно затруднительно, потому что большинство эмуляторов поддерживают лишь ограниченный набор жестов и лишь специфичные для конкретного устройства функции. Другой недостаток связан с ограниченными масштабами тестирования QoS.
Для того чтобы преодолеть эти недостатки, необходим тестовый имитатор, моделирующий обработку различных мобильных операций (в том числе разнообразные жесты) и поддерживающий более одного мобильного клиента. Но даже и в этом случае проверить специфичные для конкретных устройств функции мобильных сервисов довольно затруднительно. Кроме того, невозможно протестировать работу на множестве различных устройств и браузеров, потому что эмуляторы обычно создаются на базе конкретного устройства или платформы.
Тестирование на базе устройств. Для такого тестирования требуется создание тестовой лаборатории и покупка реальных мобильных устройств, поэтому и стоит оно гораздо дороже эмулирующего подхода. Но зато в этом случае можно проверить функции и поведение конкретных устройств, а также параметры QoS. Кроме того, можно оценить возможности базовых мобильных сетей, выбирая и настраивая их конфигурацию в тестовой среде. Одна из главных проблем такого подхода заключается в том, что мобильные устройства и платформы меняются очень быстро. Трудности обусловлены также ограниченными возможностями проверки QoS, поскольку для нее требуется много мобильных устройств.
Тестирование в облаке. При таком подходе обычно используется облако, поддерживаемое поставщиками инструментов тестирования — например, такими как NTT Data. Основная идея подхода этой компании к облачному тестированию на базе устройств заключается в том, чтобы построить облако из мобильных устройств, которое поддерживало бы сервисы тестирования на крупномасштабной основе. В этом случае значительный рост спроса на предоставление сервисов мобильного тестирования удовлетворяется за счет бизнес-модели, предусматривающей внесение оплаты по мере фактического потребления. Мобильные пользователи получают требуемую тестовую среду на условиях аренды. Этот подход отличается от других более высокой эффективностью при масштабном использовании приложений, а также при проведении разнообразных тестовых мероприятий на мобильных устройствах.
Тестирование с использованием краудсорсинга. Краудсорсинговый подход предполагает привлечение фрилансеров, инженеров, работающих по контракту, или сообществ конечных пользователей наподобие uTest (www.utest.com), а также формирование краудсорсинговой тестовой инфраструктуры и установку сервера управления сервисами для поддержки неоднородных пользователей. Сегодня провайдеры сервисов по реализации такого подхода предлагают базовое управление тестами, сервис тестирования и выдачу отчетов об ошибках. Однако большинство тестовых мобильных операций управляются инструментами автоматизации мобильного тестирования с весьма ограниченными возможностями — тестировщики получают преимущества стихийного тестирования, не требующего проведения инвестиций в лабораторию и покупку или аренду устройств, но возникает риск низкого качества тестирования и неопределенности сроков его проведения.
Тестирование мобильных и веб-приложений
Специально предназначенные для тестирования программы устанавливаются и запускаются на мобильных устройствах и, как правило, обращаются к специальным интерфейсам API (например, к API GPS) и аппаратным компонентам (например, к камере). Веб-приложения состоят из сервера приложений и клиентского ПО, выполняемого в среде браузеров, через которые пользователи получают доступ к сервисам.
Основные цели тестирования
Тестирование приложений, специально предназначенных для мобильных устройств, призвано оценить качество мобильных программ, которые загружаются и выполняются на различных мобильных устройствах выбранной мобильной платформы. Тестирование направлено на анализ функциональности и поведения (в том числе поддержки специфичных для устройства функций — например, управления при помощи жестов), выполнения требований к QoS, удобства использования, безопасности и конфиденциальности.
Тестирование веб-приложений должно дать оценку качеству мобильных веб-приложений при использовании различных браузеров на различных мобильных устройствах. В отличие от мобильных приложений, веб-приложения обычно позволяют обращаться к функциям базового сервера через тонкий мобильный клиент. Таким образом, помимо анализа функциональности и поведения, выполнения требований к QoS, удобства использования, безопасности и конфиденциальности, тестирование мобильных веб-приложений должно учитывать еще и связность и интероперабельность.
Тестовая среда
У приложений, специально предназначенных для мобильных устройств, тестовая среда представляет собой базовую мобильную платформу или операционную систему. Для эффективной автоматизации процесса тестирования тестовые среды должны поддерживать совместимость и обеспечивать возможность выполнения на множестве различных платформ. Для мобильных веб-приложений базовой тестовой средой является веб-браузер.
Пользовательские интерфейсы
Тестирование пользовательского интерфейса мобильных приложений должно охватывать толстый и интеллектуальный мобильные клиенты, мультимедийный контент и графику, а также функции распознавания жестов.
У мобильных веб-приложений при тестировании пользовательского интерфейса следует обратить внимание на тонкие мобильные веб-клиенты, загружаемые мобильные клиенты, а также на поддержку браузерами мультимедийного контента и графики.
Технология автоматизации тестирования мобильных приложений
Технологиями автоматизации тестирования мобильных приложений обладают среды программирования Java (Android), Objective-C (iOS) и Visual C++ (Windows Mobile); стандартизированные SDK и инструменты разработки, распространяемые поставщиками устройств, а также платформы для разработки приложений.
Для мобильных веб-приложений технологии автоматизации тестирования предлагаются в форме HTML5, CSS3 и JavaScript. Разработчик приложения может также использовать серверные языки и среды, такие как PHP, Rails и Python.
Тестирование связности мобильных приложений
Беспроводные мобильные сети удовлетворяют потребности в связности как приложений, специально предназначенных для мобильных устройств, так и веб-приложений. А поскольку связность оказывает непосредственное влияние на производительность и интероперабельность, при тестировании ей необходимо уделять достаточно серьезное внимание.
У приложений, специально предназначенных для мобильных устройств, в ходе тестирования нужно проверить синхронизацию контента, а также процедуры загрузки, развертывания и настройки при работе с магазинами приложений.
Для мобильных веб-приложений важно протестировать подключение к Интернету, различные протоколы беспроводной связи, а также мобильные соединения между клиентами и серверами.
Тестирование удобства использования
Тестирование приложений, специально предназначенных для мобильных устройств, включает проверку жестов, контента, интерфейсов и типичных операций, выполняемых пользователем, — например, порядка его взаимодействия с камерой, модулем GPS или датчиком считывания отпечатков пальцев.
Тестирование мобильных веб-приложений должно быть ориентировано на проверку контента графического интерфейса и последовательности пользовательских операций. Например, мобильное приложение для путешественников Dwellable (www.dwellable.com) поддерживает соответствующий контент для мобильных браузеров на разных языках. Выбор языка зависит от текущего местоположения пользователя. Оценка таких мобильных приложений должна предусматривать тестирование удобства использования и подтверждать качество мобильного контента, форматов представления, стилей и языков.
Тестирование мобильности
Тестирование мобильности на устройствах обычно включает в себя проверку функций геолокации, данных, профилей и API. К примеру, контент мобильного приложения для путешественников должен доставляться и отображаться с учетом текущего местоположения пользователей. Сюда относится информация об авиарейсах, услугах аренды, достопримечательностях с указанием их расположения на карте и связанные с этим данные. Если устройство не сможет принимать соответствующие данные, тестировщик должен знать об этом.
Тестирование мобильности веб-приложений направлено на проверку качества функционирования системы определения местоположения, оценку данных и поведения системы.
Особенности мобильных приложений
Приложения для конкретных платформ и устройств поддерживают функции, базирующиеся на соответствующих API, — например, транзакции кредитных карт или проверку отпечатков пальцев. С учетом этой специфики должно проводиться и тестирование. У мобильных веб-приложений эти функции не проверяются. Например, тестирование игры на планшете должно включать проверку операций, связанных с движением, и взаимодействия. К специфичным особенностям относятся дополнительные аппаратные компоненты и API, которые поддерживают игровое программное обеспечение (например, операции, связанные с движением) на конкретном устройстве.
Инструменты тестирования
На рис. 2, a показан процесс тестирования приложений, специально предназначенных для мобильных устройств. Основное внимание должно уделяться качеству функций и поведению, а также параметрам QoS.
- Шаг 1. Компонентное тестирование — тестирование черного и белого ящиков, а также взаимодействия со специфичными для устройства API.
- Шаг 2. Функциональное тестирование — проверка функций, сценариев на базе графического интерфейса и специфичного для конкретного устройства поведения приложения (например, распознавания жестов).
- Шаг 3. Тестирование QoS — проверка атрибутов QoS, в том числе производительности, устойчивости, готовности и безопасности.
- Шаг 4. Тестирование особенностей приложения — проверка подключения к сети, совместимости, интероперабельности, мобильности и удобства использования.
- Шаг 5. Тестирование сервисов — проверка сервисов мобильных приложений, включая загрузку, установку, развертывание, безопасность и синхронизацию.
На рис. 2, б показан процесс тестирования мобильных веб-приложений. Основная цель здесь заключается в проверке качества работы в сети под управлением мобильных браузеров.
- Шаг 1. Компонентное тестирование — проверка качества программных компонентов на мобильных веб-клиентах и связанных с ними серверных компонентах с использованием методов тестирования черного и белого ящиков.
- Шаг 2. Системная интеграция — тестирование интеграции компонентов с системой (мобильным клиентом и сервером).
- Шаг 3. Функциональное тестирование — проверка качества функционирования мобильных веб-сервисов, сквозных бизнес-транзакций, сценариев на базе графического интерфейса, поведения и обработки жестов мобильными системами.
- Шаг 4. Системное тестирование — оценка требований к QoS, в том числе к общей производительности системы, нагрузке, устойчивости, готовности, безопасности и масштабируемости.
- Шаг 5. Тестирование особенностей, мобильной связности, совместимости, удобства использования, интероперабельности, безопасности и интернационализации.
В таблице собран ряд популярных инструментов (коммерческих и распространяемых с открытым кодом), предназначенных для тестирования мобильных приложений. Большинство этих инструментов были разработаны для поддержки функционального тестирования на базе графического интерфейса. Исключение составляют NeoLoad и SandStorm, которые разрабатывались для нагрузочного тестирования. Инструмент Keynote MITE также может использоваться для тестирования производительности мобильных устройств.
Наиболее популярными платформами для тестирования мобильных приложений являются Windows, Linux и Mac. Большинство инструментов поддерживают сразу несколько платформ, кроме Keynote MITE, который работает только на Windows.
Большая часть перечисленных инструментов позволяет тестировать как приложения, специально предназначенные для мобильных устройств, так и мобильные веб-приложения, а Selendroid, Appium и Calabash поддерживают только тестирование специальных мобильных приложений.
Таблица. Сравнение инструментов тестирования мобильных приложений |
Большинство приведенных в таблице инструментов поддерживают как эмуляцию, так и тестирование на базе мобильных устройств, хотя есть несколько исключений. Инструменты eggplant и MonkeyRunner предназначены для тестирования на основе эмуляции, а QTP MobileCloud поддерживает только тестирование на базе устройств.
Все перечисленные инструменты позволяют использовать возможности сценариев, а многие поддерживают сразу несколько языков и технологий: Java, Python, Jython. Некоторые инструменты (например, MITE и MonkeyTalk) поддерживают JavaScript.
Во многих случаях пользователям придется оформлять подписку или лицензионный договор, но есть и предложения с открытым кодом, которые могут оказаться полезными при построении собственных сервисов тестирования мобильных приложений. В качестве примеров здесь можно привести Appium, Selendroid и Calabash. Многие средства (например, Gomez) служат для оценки контента и производительности мобильных веб-сайтов.
Однако у существующих сегодня инструментов есть и ряд серьезных ограничений. Во-первых, отсутствует унифицированная инфраструктура автоматизации процессов тестирования мобильных приложений на различных платформах и в среде различных браузеров. Во-вторых, нет средств для масштабного нагрузочного тестирования, которые позволяли бы оценить масштабируемость системы. В-третьих, отсутствуют стандартные решения для создания сценариев, которые обеспечивали бы интеграцию и интероперабельность различных инструментов.
Вопросы, трудности и потребности
Несмотря на рост актуальности тестирования мобильных приложений, в этой области по-прежнему остается много вопросов, трудностей и неудовлетворенных потребностей.
Тестовые среды
По отзывам инженеров-тестировщиков, мобильные тестовые среды остаются чересчур сложными и дорогими. Формирование мобильной тестовой среды для нескольких приложений на каждой из мобильных платформ превращается в долгий, утомительный и дорогостоящий процесс, а частые обновления устройств и платформ только усугубляют ситуацию.
Растет потребность в совершенствовании средств тестирования мобильных приложений — создании устойчивой, допускающей повторное использование среды, которая охватывала бы широкий спектр мобильных устройств и платформ. Такое решение позволит избежать трудоемких операций, выполняемых сегодня вручную, и сократить затраты. В идеале повторно используемая среда должна обладать следующими свойствами: иметь унифицированную поддержку различных мобильных платформ и мобильных устройств; допускать настройку конфигурации с учетом развертывания, установки и запуска приложения на разных платформах; предоставлять возможность диверсификации конфигураций мобильных сетей.
Для тестирования мобильных веб-приложений необходимо проводить их проверки на различных браузерах и веб-технологиях, вследствие чего инженерам приходится оценивать и различные параметры QoS. Тестирование такого рода требует генерирования и моделирования масштабных запросов мобильных приложений и взаимодействия с реальной или виртуальной тестовой инфраструктурой и решениями. Инженерам нужно также иметь возможность выбора различных параметров беспроводного подключения.
Стандарты, моделирование и критерии охвата
Современные стандарты тестирования программного обеспечения — ISO/IEC/IEEE 29119 и ISO12207 — представляют собой четкое руководство по организации, выполнению и документированию процедур тестирования. Существующие тестовые модели и критерии охвата могут помочь в проверке структур мобильных программ, их динамического поведения и последовательности операций графического интерфейса, однако сегодня нужны стандарты, тестовые модели и критерии охвата, которые позволяли бы сформулировать четкие требования к тестированию мобильных приложений.
Многообразие мобильных сред потребует построения специальных моделей для определения областей тестирования с учетом лежащего в их основе операционного контекста, охватывающего разнообразные мобильные устройства, платформы, браузеры и специализированные API.
Автоматизация тестирования
Автоматизация тестирования мобильных приложений порождает дополнительные вопросы, связанные с отсутствием стандартизации мобильной тестовой инфраструктуры, языков сценариев и протоколов, обеспечивающих связь между инструментами тестирования мобильных приложений и платформами, а также с отсутствием унифицированной инфраструктуры автоматизации тестирования и решений, позволяющих использовать различные платформы и браузеры на большинстве мобильных устройств. Все это еще более осложняет формирование тестовой среды — в условиях частого обновления мобильных устройств и технологий инженерам нужна эффективная, допускающая повторное использование среда тестирования, а также гибкая инфраструктура, которая поддерживала бы масштабную автоматизацию тестирования. В конечном итоге это потребует организации тестовых облаков, включающих все необходимое для: подключения, диверсификации и замены мобильных устройств; построения масштабируемых эмулирующих облаков, обеспечивающих создание, развертывание и управление тестированием мобильных приложений на основе эмуляции; разработки унифицированных решений для управления тестами, которые поддерживали бы масштабную автоматизацию тестирования.
***
Согласно исследованию Juniper Research, рынок мобильных облачных приложений в период с 2009 по 2014 год вырос на 88%, что привело к дальнейшему увеличению спроса на решения, предназначенные для автоматизации тестирования мобильных программ. Облачное тестирование является эффективным и перспективным способом удовлетворения растущих потребностей в тестировании мобильных приложений. Сегодня мы видим здесь две основные тенденции: совместное использование различными провайдерами облаков мобильных устройств для задач тестирования и развитие краудсорсинговых сервисов тестирования, ориентированных на оценку удобства прменения и интернационализации. Эта область в дальнейшем будет расширяться, и, возможно, облака предложат какие-то дополнительные пути удовлетворения растущих потребностей в качественных инструментах тестирования мобильных программ.
Литература
- J.Harty. A Practical Guide to Testing Wireless Smartphone Applications, Morgan & Claypool, 2009.
Джерри Гао (jerry.gao@sjsu.edu) — профессор факультета вычислительной техники Университета Сан-Хосе (США), Сяоин Бай (baixy@tsinghua.edu.cn) — адъюнкт-профессор факультета информатики и вычислительной техники Университета Цинхуа (Китай), Вей-Тек Цай (wtsai7@gmail.com) — профессор факультета информатики и вычислительной техники Высшей школы информатики, вычислительной техники и систем принятия решений при Университете штата Аризона (США), Тадахиро Уэхара (Uehara.tadahiro@jp.fujitsu.com) — Fujitsu Laboratories (Япония).