Phone icon Связаться с нами

QA и тестирование

Что такое интеграционное тестирование?

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

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

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

Где применяется

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

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

Пример

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

Частые вопросы

Чем интеграционное тестирование отличается от модульного?

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

Нужна ли для таких тестов настоящая база данных?

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

Как тестировать интеграцию с внешним сервисом?

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

Сколько интеграционных тестов нужно?

Значительно меньше, чем модульных, потому что они дороже в поддержке и медленнее. Разумный подход — плотно покрыть логику модульными тестами, а интеграционными проверять ключевые связи и сценарии, где расхождение приведёт к реальным потерям.

Обучение тестированию в OWU

Освойте профессию QA-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс