Библиографическое описание:

Султанова Б. К., Кабылова Д. А. Многоуровневый подход к тестированию мобильных приложений // Молодой ученый. — 2015. — №24. — С. 221-223.

 

Ключевые слова: тестирование, мобильное приложение, автоматизация тестирования.

 

В настоящее время мобильные технологии широко распространены в повседневной жизни. Практически у каждого человека на земле есть мобильный телефон. Мобильные устройства становятся сложнее и сложнее. Появились такие устройства, как смартфоны, коммуникаторы, планшетные компьютеры и другие. Эти устройства по характеристикам не уступают вчерашним настольным компьютерам, они представляют собой достаточно сложные программно-аппаратные комплексы, управляемые операционными системами. До появления смартфонов телефон представлял собой простую систему, со встроенным программным обеспечением. Тестирование подобного программного обеспечения проводилось ручным способом. Дальнейшее ускоренное развитие мобильных технологий приводит к разрыву между сложностью применяемой методологии тестирования ПО для мобильных устройств и сложностью тестируемого ПО. На текущий момент, нельзя обойтись простым ручным тестированием по написанным тестовым сценариям. Требуется применение комплексного подхода, с использованием специальных средств автоматизации тестирования [1].

Мобильные приложения — это зачастую узконаправленные программные системы с большим количеством взаимодействий между фронтендом, логикой и облачным бекендом. Таким образом, ваш код может безупречно работать на устройстве, но его работа будет подорвана ошибками, которые поступают из облака. Или проблема может быть в логике приложения — сторонних библиотеках, SDK, или сервисах. Так что иногда, если что-то не работает, найти ошибку легко, но чаще всего у вас даже идеи нет, в чем проблема [2].

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

Тестирование мобильных приложений отличается от тестирования обычного ПО наличием ряда уникальных требований. Прежде всего, мобильные приложения должны правильно выполняться в любое время и в любом месте. У приложений, специально предназначенных для мобильных устройств, тестовая среда представляет собой базовую мобильную платформу или операционную систему. Для эффективной автоматизации процесса тестирования тестовые среды должны поддерживать совместимость и обеспечивать возможность выполнения на множестве различных платформ. Для мобильных веб-приложений базовой тестовой средой является веб-браузер [1].

Можно выделить четыре популярных подхода к тестированию мобильных приложений, которые основаны на использовании базовой клиент-серверной инфраструктуры:

                    Тестирование на основе эмуляции. Этот способ тестирования предусматривает использование эмулятора мобильного устройства, имитирующего его поведение в виртуальной машине. Довольно часто такие эмуляторы бывают включены в состав комплекта инструментов для разработчика, прилагаемого к мобильной платформе (например, в состав SDK Android). Цена такого решения относительно невелика, потому что в этом случае нет необходимости в создании тестовой лаборатории, покупке или аренде физических устройств. Однако эмуляцию можно использовать только для оценки функциональности системы в весьма ограниченном контексте. Такой подход недорог, но у него есть ряд существенных недостатков. Например, проверить обработку всех жестов в полном объеме довольно затруднительно, потому что большинство эмуляторов поддерживают лишь ограниченный набор жестов и лишь специфичные для конкретного устройства функции. Другой недостаток связан с ограниченными масштабами тестирования QoS.

Для того чтобы преодолеть эти недостатки, необходим тестовый имитатор, моделирующий обработку различных мобильных операций (в том числе разнообразные жесты) и поддерживающий более одного мобильного клиента. Но даже и в этом случае проверить специфичные для конкретных устройств функции мобильных сервисов довольно затруднительно. Кроме того, невозможно протестировать работу на множестве различных устройств и браузеров, потому что эмуляторы обычно создаются на базе конкретного устройства или платформы.

                    Тестирование на базе устройств. Для такого тестирования требуется создание тестовой лаборатории и покупка реальных мобильных устройств, поэтому и стоит оно гораздо дороже эмулирующего подхода. Но зато в этом случае можно проверить функции и поведение конкретных устройств, а также параметры QoS. Кроме того, можно оценить возможности базовых мобильных сетей, выбирая и настраивая их конфигурацию в тестовой среде. Одна из главных проблем такого подхода заключается в том, что мобильные устройства и платформы меняются очень быстро. Трудности обусловлены также ограниченными возможностями проверки QoS, поскольку для нее требуется много мобильных устройств.

                    Тестирование в облаке. При таком подходе обычно используется облако, поддерживаемое поставщиками инструментов тестирования — например, такими как NTT Data. Основная идея подхода этой компании к облачному тестированию на базе устройств заключается в том, чтобы построить облако из мобильных устройств, которое поддерживало бы сервисы тестирования на крупномасштабной основе. В этом случае значительный рост спроса на предоставление сервисов мобильного тестирования удовлетворяется за счет бизнес-модели, предусматривающей внесение оплаты по мере фактического потребления. Мобильные пользователи получают требуемую тестовую среду на условиях аренды. Этот подход отличается от других более высокой эффективностью при масштабном использовании приложений, а также при проведении разнообразных тестовых мероприятий на мобильных устройствах.

                    Тестирование с использованием краудсорсинга. Краудсорсинговый подход предполагает привлечение фрилансеров, инженеров, работающих по контракту, или сообществ конечных пользователей наподобие uTest (www.utest.com), а также формирование краудсорсинговой тестовой инфраструктуры и установку сервера управления сервисами для поддержки неоднородных пользователей. Сегодня провайдеры сервисов по реализации такого подхода предлагают базовое управление тестами, сервис тестирования и выдачу отчетов об ошибках. Однако большинство тестовых мобильных операций управляются инструментами автоматизации мобильного тестирования с весьма ограниченными возможностями — тестировщики получают преимущества стихийного тестирования, не требующего проведения инвестиций в лабораторию и покупку или аренду устройств, но возникает риск низкого качества тестирования и неопределенности сроков его проведения [3].

Тестирование мобильных приложений — дело нелёгкое. Всякий раз, когда я разговариваю с разработчиком, всегда оказывается, что тестирование — это одновременно волнующий и мучительный этап разработки. Волнующий потому, что продукт наконец-то близок к долгожданному состоянию полной готовности. Чтобы провести тестирование правильно, необходим многоуровневый подход, который требует временных затрат, ресурсов и терпения. Есть несколько способов тестирования приложений, но не каждый из них подходит любому разработчику.

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

«Есть ручное тестирование мобильных приложений. И несмотря на то, что это самый неэффективный и дорогостоящий способ, мы по-прежнему считаем, что в хорошо сбалансированной стратегии для него есть место. Потому мы пока не нашли способ, который может автоматизировать оценку юзабилити и привлекательности для мобильного приложения для конечного пользователя. Это те вещи, которые в конечном итоге должен оценивать реальный человек,» — говорит Ли Уильямсон, ведущий программист IBM и член CTO Team.

В идеале тестирование вручную является одним из завершающих этапов жизненного цикла разработки приложения. Все сделано и почти готово к поступлению в продажу. Этот этап может быть менее болезненным, если, например, воспользоваться услугами стартапов, таких как Crashlytics (Бостон) — они предоставят вам SDK, который с точностью до строчки в коде определит, почему приложение падает, и предоставит данные о его состоянии на момент сбоя.

Действительно ли облако мешает работе вашей системы? Как только разработчики переходят на облака в качестве бекенда, появляется новый уровень, требующий проверки. По мнению сотрудников IBM, такая проверка — их сильная сторона в области тестирования. Они могут изолировать или симулировать уровень логики и облачный бекенд, чтобы ещё до фактической интеграции между устройствами, серверами и облаком дать разработчикам представление о том, как будет работать приложение. Это осуществляется при помощи Green Hat — тестовой платформы IBM для различных облачных сервисов. Мобильные облачные сервисы, работающие по схеме бекенд-как-сервис, например Kinvey, дают разработчикам экземпляр структуры своего облака (которое работает через Rackspace, Azure или Amazon). Он позволяет конкретному компьютеру выполнять функции мобильного устройства.

«Это позволяет компании использовать непрерывную интеграцию при разработке мобильных приложений, которая постоянно отслеживает изменения кода, запуская таким образом автоматическую сборку бинарных файлов для приложений для различных мобильных устройств. Также это позволяет переносить обновленную версию приложения на реальные мобильные устройства и запускать код на устройствах с симулированными сервисами и облачным бекендом, потому что на мобильном устройстве он всегда будет реагировать так же,» — прокомментировал Уильямсон.

Недавно один разработчик жаловался мне на тестирование приложений, и его сетования заключались вот в чем: «Есть слишком много мобильных устройств, на которых установлено многочисленные версий операционных систем, установленных на различных смартфонах от различных производителей. Протестировать всё это просто невозможно». Это была суть его жалоб. А ведь он прав. Чтобы протестировать работу приложений на различных устройствах, разработчик может приобрести все эти смартфоны и планшеты, связать с сервером и зависать над спецификацией каждого устройства. Это непрактично, трудоемко и дорого. Есть несколько сторонних сервисов, которые могут предоставить разработчикам «облако устройств» для тестирования приложений одновременно на многих устройствах [2].

Несмотря на рост актуальности тестирования мобильных приложений, в этой области по-прежнему остается много вопросов, трудностей и неудовлетворенных потребностей. Согласно исследованию Juniper Research, рынок мобильных облачных приложений в период с 2009 по 2014 год вырос на 88 %, что привело к дальнейшему увеличению спроса на решения, предназначенные для автоматизации тестирования мобильных программ. Облачное тестирование является эффективным и перспективным способом удовлетворения растущих потребностей в тестировании мобильных приложений. Сегодня мы видим здесь две основные тенденции: совместное использование различными провайдерами облаков мобильных устройств для задач тестирования и развитие краудсорсинговых сервисов тестирования, ориентированных на оценку удобства применения и интернационализации. Эта область в дальнейшем будет расширяться, и, возможно, облака предложат какие-то дополнительные пути удовлетворения растущих потребностей в качественных инструментах тестирования мобильных программ [3].

 

Литература:

 

1.                  Султанова Б.К., Кабылова Д.А. Тестирование мобильных приложений: Тезис / Международная научно-практическая конференция «Интеграция науки, образования и производства — оснава реализации Плана нации», Караганда, КарГТУ 2015.

  1.                Dan Rowinski. Squashing Bugs: The Many Layered Approach to Mobile App Testing. URL: http://readwrite.com/2012/03/28/squashing-bugs-the-many-layere

3.                  Jerry Gao, Xiaoying Bai, Wei-Tek Tsai, Tadahiro Uehara, Mobile Application Testing: A Tutorial. IEEE Computer, February 2014, IEEE Computer Society.

Обсуждение

Социальные комментарии Cackle