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

QA та тестування

Що таке інтеграційне тестування?

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

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

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

Де застосовується

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

У сучасних проєктах такі тести запускають зі справжніми залежностями в контейнерах: реальна база замість заглушки, локальний брокер повідомлень, емулятор зовнішнього API. Це повільніше за модульні тести, тому їх зазвичай виносять в окремий етап конвеєра CI.

Приклад

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

Часті запитання

Чим інтеграційне тестування відрізняється від модульного?

Модульний тест перевіряє одну функцію окремо і замінює всі залежності заглушками. Інтеграційний перевіряє кілька компонентів разом, зі справжньою базою чи сервісом. Він повільніший і складніший у налаштуванні, але знаходить помилки, яких модульні тести не бачать.

Чи потрібна для таких тестів справжня база даних?

Бажано та сама, що й у робочому середовищі, інакше частина відмінностей залишиться непоміченою. Сьогодні стандартний підхід — запускати базу в контейнері на час тестів. Це реалістично і не вимагає спільного стенда, який ділить уся команда.

Як тестувати інтеграцію із зовнішнім сервісом?

Найчастіше його замінюють керованою заглушкою — сервером, який повертає заздалегідь задані відповіді, зокрема помилки й затримки. Так перевіряють і нормальну роботу, і реакцію на збій. Звертатися до справжнього стороннього сервісу в тестах ризиковано і нестабільно.

Скільки інтеграційних тестів потрібно?

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

Навчання тестуванню в OWU

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

Обрати курс