Тестирование мобильных приложений, как его проводить и каким оно бывает

Источник: L-TECH

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

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

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

Начнем с небольшой теории, куда же без неё.

В начале статьи мы дали определение тестированию. А какое оно бывает?

 

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

 

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

По запуску кода на исполнение тестирование бывает:

    • Статическое тестирование — без запуска. 
    • Динамическое тестирование — с запуском.

По доступу к коду и архитектуре приложения:

  • Метод белого ящика — доступ к коду есть.
  • Метод чёрного ящика — доступа к коду нет. 
  • Метод серого ящика — к части кода доступ есть, к части — нет.

По степени автоматизации:

  •  Ручное тестирование — тест-кейсы выполняет человек.
  •  Автоматизированное тестирование — тест-кейсы частично или полностью выполняет специальное инструментальное средство.

По уровню детализации приложения (по уровню тестирования):

  •  Модульное (компонентное) тестирование — проверяются отдельные небольшие части приложения.
  •  Интеграционное тестирование — проверяется взаимодействие между несколькими частями приложения.
  •  Системное тестирование — приложение проверяется как единое целое.

По (убыванию) степени важности тестируемых функций (по уровню функционального тестирования):

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

По принципам работы с приложением:

  •  Позитивное тестирование — все действия с приложением выполняются строго по инструкции без никаких недопустимых действий, некорректных данных и т. д. Можно образно сказать, что приложение исследуется в «тепличных условиях».
  •  Негативное тестирование — в работе с приложением выполняются (некорректные) операции и используются данные, потенциально приводящие к ошибкам (классика жанра — деление на ноль).

По целям и задачам:

  •  Позитивное;
  •  Негативное;
  •  Функциональное;
  •  Нефункциональное;
  •  Инсталяционное;
  •  Регрессионное;
  •  Приемочное.

Повторимся, это лишь очень краткая и упрощенная классификация тестирования. Рассматривать подробно все виды тестирования не является целью этой статьи =).

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

Тестированию подвергаются требования к приложению, имеющаяся в наличии техническая документация. 

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

Если уже разработана серверная часть решения, то тестированию подвергается и клиент-серверное взаимодействие, тестируется документация по API. Проверяется возможность выполнения запросов к серверу, приходящие с сервера ответы. Для тестирования API используются такие инструменты как Swagger, Postman, Altair GraphQL Client.

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

Всё это необходимо начинать делать непосредственно до начала программирования. 

Тестовая документация является мощнейшим инструментом в обеспечении качества мобильного приложения. На протяжении всего цикла жизни программного продукта необходимо следить за её актуальностью. Документация должна быть “живой”, постоянно обновляться и дополняться. 

 

Итак, разработка началась, выпущены первые сборки. Когда же начинать их тестирование? Отвечаем: сразу же! Независимо от того, по какой модели разработки ПО делается проект, тестировать мы начинаем сразу же. Такой подход помогает делать по настоящему качественные и надежные приложения.

 

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

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

Функциональное тестирование  позволяет:

  • Гарантировать, что приложение соответствует требованиям заказчика;
  • Убедиться, что приложение работает корректно и без ошибок;
  • Выявить возможные проблемы до того, как приложение будет запущено на рынок;
  • Улучшить качество и надежность приложения;
  • Сэкономить время и ресурсы на исправление ошибок после запуска приложения.

 

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

  1. Разнообразие мобильных устройств. Особенно это касается устройств под управлением ОС Android. 
  2. Разнообразие версий операционных систем, версий прошивок.  Очень важно проводить тестирование на вновь вышедших версиях операционных систем. Такую проверку желательно выполнять на реальных устройствах или же использовать специальные сервисы, такие как AWS Device Farm, Firebase Test Lab, BrowserStack.
  3. Различные способы управления. Мобильные приложения могут управляться с помощью сенсорного экрана, клавиш и других элементов управления.
  4. Удобство взаимодействия с интерфейсными элементами приложения. Область нажатия на те или иные кнопки. По этому пункту даёт отличные рекомендации Google. При проверке загруженных в Google Play приложений, в обзоре отчета о тестировании, можно увидеть раздел “Доступность”. В этом разделе хорошо видны все проблемы, которые можно впоследствии устранить. 
  5. Неустойчивые условия сети. Необходимо проверять работу приложения при различной скорости интернета, при его отсутствии. Отдельно необходимо проверять работу при подключении к мобильному интернета и Wi-Fi. Также важно проводить тестирование при переключении сетей, воспроизводить реальные кейсы пользователей (например, начинаем пользоваться приложением в помещении с Wi-Fi, выходим на улицу и смотрим, как приложение продолжает работу при подключении к мобильному интернету).
  6. Восстановление работы приложения после входящих звонков.
  7. Восстановление работы приложения после работы в фоне.

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

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

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

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

Стресс-тестирование проверяет, как приложение работает при условиях, когда ресурсов у устройства мало. 

 

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

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

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

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

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

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

  1. OWASP Mobile Security Project – это проект, который предоставляет инструменты и руководства для тестирования безопасности мобильных приложений. В рамках проекта разработаны инструменты, такие как ZAP for Android и iMAS, а также руководства по тестированию мобильных приложений.
  2. Charles Web Debugging Proxy — инструмент мониторинга HTTP и HTTPS трафика. Выступает в роли прокси-сервера между тестируемым приложением и сервером на бэкенде, позволяя не только видеть, но также перехватывать и редактировать запросы. Важное преимущество Charles Proxy — возможность просмотра трафика, в том числе с мобильных устройств.
  3. Drozer – это инструмент для тестирования безопасности мобильных приложений на Android. Он позволяет проводить динамический анализ приложения, перехватывать запросы и ответы, изменять данные в приложении и многое другое.
  4. MobSF (Mobile Security Framework) – это автоматизированное инструментальное средство для тестирования безопасности мобильных приложений, которое поддерживает платформы Android и iOS. Оно позволяет проводить сканирование приложений на наличие уязвимостей, таких как утечки информации, уязвимости аутентификации, неправильная обработка входных данных и другие подобные проблемы.
  5. SQLMap – это инструмент для автоматического тестирования безопасности приложений на наличие уязвимостей SQL-инъекций. Он может использоваться для тестирования как веб-приложений, так и мобильных приложений.
  6. AndroBugs – это инструмент для статического анализа кода мобильных приложений на наличие уязвимостей. Он позволяет анализировать код приложения и находить уязвимости, такие как утечки информации, уязвимости аутентификации и другие.
  7. QARK (Quick Android Review Kit) – это инструмент для автоматического тестирования безопасности мобильных приложений на наличие уязвимостей. Он позволяет сканировать приложения на наличие уязвимостей, такие как утечки информации, уязвимости аутентификации, уязвимости сетевых протоколов и другие.
  8. Mercury – это инструмент для тестирования безопасности мобильных приложений на iOS. Он позволяет проводить динамический анализ приложения, перехватывать запросы и ответы, изменять данные в приложении и многое другое.
  9. AppMon – это инструмент для мониторинга безопасности приложений на устройствах Android и iOS. Он позволяет отслеживать работу приложения и обнаруживать уязвимости, такие как утечки информации, уязвимости аутентификации и другие.

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

Проблема с оценками в разработке программного обеспечения

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

Тест-кейс для мобильных приложений и как их использовать

В этой статье мы бы хотели поговорить именно о нюансах тестирования мобильных приложений и о том, как мы, в компании L-TECH, их тестируем.

Создание вашего первого MVP: пошаговое руководство

В статье обсудим этапы создания MVP, разницу между хорошими и плохими MVP и что делать после создания MVP.

Интеграция геолокации в мобильные приложения для бизнеса: новые возможности и преимущества

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

7 ошибок при создании мобильного приложения

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

Как повысить конверсию мобильного приложения

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

Тренды разработки мобильных приложений в 2024 году в России

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

Как дизайн мобильного приложения влияет на вовлечённость и удержание клиента

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

Все новости