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

Мы должны сосредоточиться на пользовательском опыте, а также на производительности приложения. Если мы сможем сделать качественное приложение, шансы на то, что оно приобретет популярность и достигнет бизнес-целей, - возрастут.

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

Прежде чем мы начнем говорить о различных видах тестирования мобильных приложений, давайте вспомним, что такое тестирование.

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

Проще говоря, это процесс проверки и тестирования мобильных приложений с двумя основными целями:
  • выявить ситуации, когда приложение работает некорректно;
  • проверить, что приложение в достаточной степени соответствует запросам и потребностям клиента.
Тестирование является неотъемлемой и важной частью разработки приложений.

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

Способы тестирования мобильных приложений

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

Функциональные тесты основаны на функциях и возможностях, а также на взаимодействии с другими системами, и могут проводиться на всех уровнях тестирования:
  • компонентное/модульное тестирование;
  • интеграционное тестирование;
  • системное тестирование;
  • тестирование применений (acceptance testing)
Функциональные типы тестирования рассматривают внешнее поведение системы. Ниже перечислены некоторые из наиболее распространенных типов функциональных тестов:
  • функциональное тестирование;
  • тестирование безопасности и контроля доступа;
  • тестирование совместимости.
Функциональное тестирование мобильных устройств - это вид тестирования, направленный на проверку соответствия функциональных требований приложения его реальным характеристикам.

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

Преимущества функционального тестирования:
  • оно имитирует реальное использование системы.
Недостатки функционального тестирования:
  • возможность пропустить логические ошибки в приложении;
  • вероятность избыточного тестирования.
Тестирование систем безопасности и контроля доступа

Стратегия тестирования безопасности направлена на проверку безопасности системы и обеспечение всеобъемлющего подхода, когда речь идет о защите приложения, предотвращении хакерских атак, вирусов и несанкционированного доступа к конфиденциальным данным.

Общая стратегия безопасности основывается на трех основных принципах:
  • политика конфиденциальности;
  • целостность;
  • доступность.
Тестирование на совместимость

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

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

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

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

Ниже перечислены основные типы нефункциональных тестов:

  • Тестирование производительности:
  1. тестирование производительности и нагрузки;
  2. тестирование при интенсивном использовании;
  3. тестирование стабильности / надежности;
  4. объёмное тестирование (тестирование поведения системы в зависимости от объёма данных).
  • тестирование установки;
  • тестирование удобства использования;
  • тестирование аварийного переключения и восстановления;
  • тестирование конфигурации.
Давайте более подробно поговорим о типах нефункционального тестирования.

Тестирование производительности и нагрузки

Нагрузочное тестирование или тестирование производительности - это автоматизированное тестирование, которое имитирует определенное количество бизнес-пользователей на общем ресурсе.

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

Вот что при этом происходит:
  • измерение времени выполнения отдельных операций при определенных уровнях интенсивности;
  • определение количества пользователей, одновременно работающих с приложением;
  • определение границ допустимой производительности при увеличении нагрузки (при увеличении интенсивности операций);
  • анализ производительности при высоких, экстремальных и интенсивных нагрузках.
Тестирование при интенсивном использовании (stress testing)

Стресс-тестирование позволяет проверить, работает ли приложение и вся система в целом в условиях интенсивного использования, и оценить способность системы к регенерации, т.е. к возвращению в нормальное состояние после окончания стресса.

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

Задача тестирования стабильности (надежности) заключается в проверке производительности приложения при длительном использовании со средним уровнем нагрузки. Время выполнения операций может играть второстепенную роль в этом виде тестирования. Предпочтение отдается отсутствию утечек памяти, перезапусков сервера под нагрузкой и других элементов, влияющих на стабильность работы.
Объемное тестирование

Цель объемного тестирования - получить оценку производительности при увеличении объема данных в базе данных приложения.

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

Тестирование установки направлено на проверку успешной установки и конфигурации приложения, а также обновления или удаления приложения.
Тестирование удобства использования

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

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

Чтобы приложение было популярным, недостаточно, чтобы оно было функциональным - оно должно быть еще и удобным. Если задуматься, интуитивно понятные приложения экономят усилия пользователя и затраты работодателя на обучение, а также выделяют ваше приложение из общей массы. Поэтому тестирование удобства использования, о котором пойдет речь далее, является неотъемлемой частью тестирования любых продуктов массового потребления.
Тестирование на сбои и восстановление (тестирование на нагрузку)

Этот тип тестирования анализирует способность продукта выдерживать и успешно восстанавливаться после возможных сбоев, вызванных ошибками приложения, отказами оборудования или проблемами связи (например, сбоем сети).

Целью данного вида тестирования является проверка систем восстановления (или способности дублировать основные функциональные возможности систем), которые в случае сбоев обеспечат сохранность и целостность данных тестируемого продукта.
Тестирование на сбои и восстановление важно для систем, которые работают по принципу «24x7». Предположим, вы создаете продукт, который будет работать в Интернете. В этом случае без такого тестирования просто не обойтись, потому что каждая минута простоя или потеря данных в случае отказа оборудования может стоить вам денег, потери клиентов и репутации на рынке.

Для наглядности рассмотрим некоторые варианты такого тестирования и общие методы их реализации.

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

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

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

После установки приложения необходимо провести следующие виды испытаний для подтверждения правильной работы приложения или точного устранения дефекта:
  • “дымовое” тестирование (smoke testing);
  • регрессионное тестирование (regression testing);
  • тестирование по проверке версий (build verification testing);
  • “санитарное” тестирование (sanity testing).
“Дымовое” тестирование

Концепция дымовых испытаний пришла из инженерной среды.

При вводе в эксплуатацию нового оборудования (аппаратуры) считалось, что испытание прошло успешно, если в результате установки оборудование не дымило

“Дымовое” тестирование рассматривается как короткий цикл тестов, выполняемых для подтверждения того, что после сборки кода (нового или исправленного) установленное приложение успешно запускается и выполняет свои основные функции.

Регрессионное тестирование

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

Сам термин "регрессионное тестирование" может иметь различные значения в зависимости от контекста использования.

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

Этот вид тестирования направлен на определение соответствия выпущенной версии приложения критериям качества.

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

Это узконаправленное тестирование для подтверждения того, что определенная функция работает в соответствии со спецификацией требований. Оно является одним из видов регрессионного тестирования.

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

Некоторые источники ошибочно полагают, что тестирование на пригодность и “дымовое” тестирование - это одно и то же. Мы уверены, что у этих видов тестирования совершенно разные цели. В отличие от “дымового” тестирования, тестирование на пригодность направлено только на тестируемую функцию. “Дымовое” тестирование направлено на как можно большую функциональность за минимально возможное время.
Подведем итоги

Есть много вещей, которые нужно учитывать при использовании различных типов мобильного тестирования.

Следовательно, легко что-то забыть или не уделить достаточно внимания определенным областям. По этой причине мы настоятельно рекомендуем тщательно планировать процесс тестирования мобильных приложений.

Помимо правильного мышления, правильных инструментов и стратегий, вам также нужна правильная команда для тестирования.

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

Оцени эту статью!
Поделиться

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

Просто напишите нам или позвоните +7 495 128 0804