Что такое интеграционное тестирование и зачем оно нужно?
Интеграционное тестирование – это проверка программного продукта или приложения, при котором модули объединяются между собой и тестируются как единая группа. В первую очередь это подразумевает тестирование интерфейса.
Данный тип тестирования имеет три основные цели:
Определить степень корректного взаимодействия между различными компонентами системы.
Если они не имеют конфликтов, то это позволяет обеспечить правильную работу программы в целом в соответствии с требованиями, которые были для нее определены.
Позволяет обнаружить скрытые проблемы в архитектуре системы.
То есть те слабые места, которые требуют оптимизации. В этом случае разработчики смогут избежать долгосрочных проблем, рискующих стать критическими.
Увеличивает уровень надежности системы.
Интеграционное тестирование помогает своевременно выявить проблемы, возникающие в результате некорректного взаимодействия между компонентами программного продукта. Соответственно, из–за того, что все ошибки устраняются на ранней стадии проекта, в дальнейшем разработка будет происходить быстрее и с более чистым кодом. Соответственно, это позволит повысить надежность системы и качество продукта в целом.
Если рассматривать интеграционное тестирование с технологической точки зрения, то его можно считать количественным развитием компонентного. Оба вида проверки требуют создания тестового окружения, чтобы найти дефекты в модулях и подсистемах. Разница заключается в целях, которые преследуют данные виды тестирования. На уровне интеграционного тестирования осуществляется проверка с помощью методов, которые связаны с покрытием интерфейса. Примером может служить вызов функций или анализ использования компонентов интерфейса.
Уровни интеграционного тестирования
Компонентный интеграционный уровень, или Component Integration Testing (CIT).
Осуществляется после компонентного тестирования. Он проверяет взаимодействие между модулями одной общей системы. CIT проводится для того, чтобы убедиться в том, что в случае разного подхода в разработке подсистем они все равно будут корректно работать вместе. Тестирование проводят в том случае, когда компоненты определены в разное время с разными группами спецификаций.
Системный интеграционный уровень, или System Integration Testing (SIT).
Это уже более обширный подход, так как подразумевает проверку всей системы. Та в свою очередь, как матрешка, состоит из подсистем, которые так же должны корректно взаимодействовать между собой. Благодаря этому SIT удается обеспечить целостность и правильное взаимодействие всех систем.
Также интеграционное тестирование можно разделить на программное и soft–железо.
Hardware Software Integration Testing (HSIT) – интеграционное тестирование аппаратного и программного обеспечения. Оно дает возможность проверить функциональность высокого уровня в условиях аппаратной среды. Также данный подвид необходим для того, чтобы проверить поведение программного обеспечения, которое интегрировали в аппаратный компонент.
Software Software Integration Testing (SSIT) – интеграционное тестирование программного обеспечения. Оно фокусируется на проведении компонентной проверки в специально смоделированной среде хоста или цели.
Как проводить интеграционное тестирование
Рассмотрим эффективную технологию проведения интеграционного тестирования.
Для начала определим, какой атрибутикой обладает данный процесс разработки программного продукта:
Методы тестирования, которые используются для проведения проверки.
Области применения.
Роли сотрудников и их обязанности.
Предварительные условия для интеграционного тестирования.
Тестовая среда.
План мер по снижению рисков и способы автоматизации.
Далее рассмотрим, по каким критериям можно определить начало и окончание интеграционного тестирования. К ним можно отнести:
Старт:
Наличие модулей и их компонентов.
Глобальные ошибки с приоритетным статусом уже найдены и исправлены.
Все модули прошли успешную проверку и интеграцию.
Команда составила план интеграционного тестирования, задокументированные тестовый набор и сценарий.
Создана тестовая среда с необходимыми условиями.
Завершение:
Успешное завершение интегрированного тестирования программного продукта.
Все выполненные тестовые случаи были задокументированы.
Обнаруженные глобальные ошибки были исправлены и закрыты.
После выпуска Примечания предоставляются технические документы проверки.
Рекомендации по проведению интеграционного тестирования.
Перед началом проверки следует определиться со стратегией интеграционного тестирования. Она не должна иметь противоречий с выбранным подходом к разработке программы или приложения.
Далее необходимо написать сценарий тестирования, по которому будет осуществляться проверка. Так у проверяющего будет основа. Это не позволит ему пропустить какое–то действие и провести тестирование неудачно.
Для успешной проверки важно изучить архитектуру системы и выявить критические модули, которые будут в приоритете. Это также влияет на выбор метода тестирования.
Команда разработки должна предоставить проекты интерфейсов, чтобы можно было провести детальную проверку во всех аспектах.
Большое значение в интеграционном тестировании имеют тестовые данные, полученные после проверки тестовых случаев. Поэтому их подготовку нужно осуществить заблаговременно, а не в процессе выполнения.
Методики интеграционного тестирования
Разберем методы интеграционного тестирования, хотя кто–то это называет видами интеграционного тестирования. Выбор в пользу одного из них зависит от уровня hard skill сотрудника, который будет проводить проверку. Кроме того, на это влияет наличие инструментов и возможностей, представленных в компании, а также преследуемых целей.
Большой взрыв (Big Bang).
В этом случае осуществляется проверка всей системы в целом за счет одновременной интеграции всех компонентов программного продукта. Данный метод интеграционного тестирования проводится в том случае, если модули практически независимы между собой и их можно проверить по отдельности.
Преимущества метода.
Можно использовать в тех случаях, если это небольшая система.
Пропадает необходимость проверять каждый отдельно взятый элемент.
Проверяющие сразу же могут оценить результаты своей работы.
Недостатки метода.
Из–за большого количества интерфейсов возникает вероятность пропуска одного из них, а значит, не будут обнаружены некоторые ошибки.
Начало тестирования откладывается до тех пор, пока не будут готовы все модули. Это, в свою очередь, забирает время у тестировщиков.
Одновременная проверка всех компонентов приводит к тому, что они не изолированы, а значит, могут влиять друг на друга, даже если они практически независимы между собой.
Инкрементальный подход.
Этот метод подразумевает объединение пары или группы логически связанных компонентов, которые проходят проверку в первую очередь. Затем поэтапно к ним подключают прочие модули. Это продолжается до тех пор, пока все компоненты не пройдут успешную проверку.
В свою очередь данный тип тестирования можно осуществить двумя следующими способами:
«Сверху вниз».
Интеграция и тестирование модулей происходит сверху вниз, от самых высоких до самых низких уровней. Для проверки используются заглушки тестирования. Применяется в проектах со сложной архитектурой, системой, когда верхние уровни зависят от нижних.
Преимущества метода.
Критические модули, которые занимают высший уровень программы, проходят проверку в приоритете. Благодаря этому удается проще локализовать баги и ошибки и получить быстрый ранний прототип продукта.
Недостатки метода.
Часто в таком случае модули нижнего уровня проходят неадекватную проверку, что приводит к снижению качества тестирования.
«Снизу вверх».
Обратный способ от нижнего уровня компонентов к верхним. Тестирование осуществляется снизу вверх, пока не будут проверены все модули. В этом случае используются дополнительные драйверы тестирования.
Преимущества метода.
Это всесторонняя проверка и оценка решения.
Нет необходимости ждать окончания разработки всех компонентов.
Не возникает сложностей с локализацией проблем.
Недостатки метода.
Проверка критических модулей осуществляется в последний момент, что может стать причиной возникновения дефектов.
В отличие от метода «сверху вниз», нет возможности создать ранний прототип.
Гибридный метод.
Данный подход к тестированию подразумевает совмещение методологий «сверху вниз» и «снизу вверх». То есть проверяющие идут навстречу друг другу с разных сторон и в помощь себе используют драйверы и заглушки тестирования.
Преимущества метода.
Позволяет получить всесторонний взгляд на продукт и его проблемы весьма подробно.
Недостатки метода.
Долгий процесс, есть вероятность возникновения путаницы из–за чего результаты проверки могут быть искаженными.
Стоит также дать пояснение понятий заглушка и драйвер тестирования.
В первом случае под заглушкой понимается временное решение разработчика, позволяющее заменить недостающий компонент, который в настоящий момент находится на стадии разработки или недоступен по каким–либо другим причинам.
Во втором случае драйвер имеет примерно ту же функцию, что и заглушка, но является более сложным решением и обычно применяется в методе тестирования «снизу вверх».
Инструменты интеграционного тестирования
Помимо того, что команде перед началом интеграционного тестирования нужно определиться с конкретным подходом, нужно также выбрать инструменты, которые будут способствовать успешному проведению процесса.
Автоматические инструменты тестирования.
Значительно сокращают процесс проверки и позволяют избежать множества ошибок, которые возникают под влиянием человеческого фактора. Примером могут служить следующие инструменты:
Selenium.
Инструмент, позволяющий автоматизировать действия веб–приложений и проводить их тестирование. Также используется для администрирования сайтов.
Преимущества.
Это бесплатный продукт в открытом доступе с открытым исходным кодом, который имеет поддержку всех ключевых популярных языков программирования.
Применяется на разных браузерах и операционных системах, а также на разных мобильных устройствах.
Гибкий инструмент тестирования, который можно интегрировать с другими программами, сервисами и фреймворками.
Инструмент постоянно совершенствуется, за счет чего имеет высокий спрос даже среди таких гигантов, как Google.
Недостатки.
Не поддерживает тестирование десктопных и сетевых приложений.
Не подходит для новичков, так как для использования данного инструмента требуется продвинутые знания и навыки программирования.
JUnit.
Фреймворк, который используется для автоматического тестирования на языке Java. Главным назначением данного инструмента является unit–тестирование, то есть когда осуществляется проверка функциональности каждого компонента программы.
Преимущества.
Данный фреймворк заточен чисто под язык Java, поэтому не требует дополнительных знаний других языков.
Он полностью совместим с другими Java–инструментами как в новых, так и в старых версиях.
Инструмент ориентирован на разработку через тестирование (Test Driven Development), что позволяет внедрить данный подход без существенных переделок.
Это достаточно популярный инструмент тестирования и разработки, поэтому по нему существует достаточно много сопроводительных материалов в общем доступе, которые можно использовать для работы.
Недостатки.
Если специалист недостаточно хорошо владеет языком Java, то ему придется тяжело разбираться в многослойности кода.
Отсутствие заглушек, которые требуются при тестировании «снизу вверх».
Тестирование на уровне API.
API тестирование – проверка интерфейса программного продукта. (API) — Application Programming Interface — переводится как программный интерфейс приложения. Это тот самый компонент, позволяющий выстраивать взаимодействие между системой и прочими элементами приложения.
Преимущества.
Позволяет осуществлять быстрый запуск тестов и повторять их многократно.
Чек–ап в автоматизированном режиме дает возможность проводить проверку безошибочно и постоянно возвращать ожидаемые результаты.
Позволяет охватить большое количество различных сценариев и функциональных возможностей.
Недостатки.
Чтобы создать автоматизированные тесты, требуется время и большое количество усилий.
В случае, если API имеет нестандартные функции, то часть сценариев будет сложно воплотить в режиме автоматизации.
Тестирование на уровне пользовательского интерфейса. Для этого используются автоматизированные инструменты UI. Например, такие, как Appium.
Appium.
Кроссплатформенный фреймворк для тестирования мобильных приложений. Позволяет осуществлять проверку не только iOS и Android, но и десктопных Windows–приложений.
Преимущества.
Имеет открытый исходный код, а также отсутствуют дорогостоящие лицензионные сборы. Это делает его доступным для разных типов команд разработчиков.
Фреймворк обеспечивает согласованность функционала приложений на различных устройствах, чем снижает вероятность несовместимости и возникновения проблем в пользовательском опыте.
Предоставляет автоматизацию в течение всего жизненного цикла мобильной разработки.
Упрощает процесс тестирования для разных уровней компетенции тестировщика.
Недостатки.
Могут возникать задержки и промедления с нативными платформами из–за нестабильного уровня связей.
Иногда возникают проблемы в совместимости с некоторыми мобильными устройствами.
Могут возникнуть сложности с автоматизацией, в особенности с некоторыми аппаратными функциями типа скриншотов.