Интеграционное тестирование мобильного приложения

Автор:

testsigma.com

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

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

Что такое интеграционное тестирование мобильного приложения на Android?

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

Пример интеграционного тестирования Android

Давайте рассмотрим пример интеграционного тестирования. Допустим, у вас есть стороннее android-приложение для резервирования билетов. На главной странице есть кнопка регистрации и входа в систему. Также имеется премиум-план, на который пользователи могут подписаться, чтобы воспользоваться выгодными предложениями. Так вот, страница регистрации/входа в систему и страница тарифного плана/подписки – это два отдельных модуля, связанных между собой. После надлежащей обработки данных, таких как учетные записи и т.д., можно переходить от страницы регистрации к странице подписки. В этом случае необходимо убедиться, что интеграция между регистрацией/входом в систему и планом/подпиской работает должным образом.

Почему необходимо проводить интеграционное тестирование?

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

  • Разные программисты создают разные модули с разной логикой и пониманием. Следовательно, необходимо проверить, насколько целостно работает весь программный объект, состоящий из различных модулей.
  • Нередко в процессе разработки продукта требования могут меняться. Юнит-тестирование может быть не выполнено для этих новых требований, поэтому возникает необходимость в интеграционном тестировании.
  • Высока вероятность возникновения ошибок в программных модулях и интерфейсе базы данных.
  • Модули, взаимодействующие со сторонними API и инструментами, более подвержены ошибкам. Изменение в API сторонних разработчиков может привести к отказу всего приложения. Поэтому интеграционное тестирование очень полезно для выявления таких точек отказа.

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

Основные подходы к интеграционному тестированию Android

Существует несколько стратегий проведения интеграционного тестирования Android. К ним относятся.

1. Подход «большого взрыва»:

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

Например, в нашем предыдущем приложении мы можем сначала интегрировать все высокоуровневые модули, такие как login, signup, subscription, train-info, user-profile и т.д., а затем протестировать все эти блоки вместе.

2. Инкрементное тестирование:

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

i. Тестирование снизу вверх (Bottom-up Testing): Сначала тестируются модули нижнего уровня, а затем мы постепенно переходим к модулям более высокого уровня. Обнаружить неисправности становится проще.

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

ii. Нисходящее тестирование (Top-down Testing): Тестирование начинается с модулей более высокого уровня и постепенно переходит к модулям более низкого уровня. Если какие-либо модули верхнего уровня еще не готовы, мы используем заглушки в качестве замены.

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

iii. Многослойное тестирование (Sandwich Testing): Оно сочетает в себе как восходящий, так и нисходящий подходы.

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

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

Шаги по выполнению интеграционного тестирования приложения на Android

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

1. Определение интерфейсов модулей

На этом этапе необходимо определить, какие интерфейсы и модули, связанные с этими интерфейсами, вы хотите протестировать. В нашем примере интерфейсом является «Верификация входа и подписки». А программные модули, связанные с ним, - это модули Signup, Login и Subscription.

2. Запись идентификаторов пользовательского интерфейса и изучение интерфейсов

После определения программных модулей и интерфейсов, которые необходимо протестировать, можно записать идентификаторы, которые помогут выполнить тестирование. В нашем примере такими идентификаторами являются кнопка Login/SignUp, текстовые поля для ввода e-mail, пароля и т.д. После этого необходимо собрать такую информацию, как признаки, свидетельствующие о завершении передачи данных, и т.д.

3. Создание тестовых примеров

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

4. Создание тестовых планов

Следующим шагом является создание плана тестирования. Здесь необходимо выбрать тестовые наборы и тестовые устройства. Необходимо решить, на каких устройствах Android будут проводиться тесты.

5. Выполнение тестов

После создания планов тестирования можно приступить к выполнению тестов. Тесты можно выполнять на одном устройстве одновременно или параллельно на нескольких устройствах.

6. Анализ отчетов и повторное тестирование

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

Основные моменты интеграционного тестирования Android

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

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

Проблемы интеграционного тестирования Android

При проведении интеграционного тестирования тестировщик может столкнуться с рядом препятствий. Вот несколько ярких примеров.

  • Интеграционное тестирование предполагает проверку сложных взаимодействий между несколькими компонентами. Поэтому выявление и решение проблем, возникающих в ходе интеграционного тестирования, может быть затруднено.
  • При добавлении новых компонентов и обновлении системы может возникнуть проблема с поддержанием постоянной и актуальной среды тестирования на протяжении нескольких тестовых сессий.
  • Интеграционное тестирование может отнимать много времени и ресурсов из-за необходимости координировать работу многочисленных команд и обеспечивать правильную настройку тестовой среды.
  • Отладка интеграционных ошибок может быть затруднена, поскольку основную причину проблемы трудно обнаружить. Это может затруднить устранение проблем и гарантировать правильное функционирование системы.
  • Интеграционное тестирование требует значительного объема тестовых данных, которыми сложно управлять и поддерживать в актуальном состоянии. Целостность и точность тестовых данных являются залогом эффективности интеграционного тестирования.
  • Несмотря на все эти препятствия, интеграционное тестирование является важным этапом SDLC, поскольку оно позволяет убедиться в том, что компоненты программной системы успешно взаимодействуют друг с другом и обеспечивают необходимую функциональность.

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

Подведем итоги

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

Невозможно корректно и исчерпывающе выявить все возможные дефекты, не проведя тесты в реальных пользовательских условиях, поэтому для ручного тестирования android-приложений используется BrowserStack App Live, а для автоматизированного тестирования android-приложений - BrowserStack App Automate.

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

Оглавление

Материалы по теме