Навігація JackCodeСтворюйте, запускайте й масштабуйте iGaming-продукти.
Змінити мову
Практичний гайд

Контрактне тестування

Контрактне тестування - гарантія, що API відповідає очікуванням клієнта: запобігання помилок при змінах і контроль сумісності між сервісами.
Експерт Станіслав Анісімов

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

Ми впроваджуємо контрактні тести, які автоматично перевіряють відповідність API документації або очікуванням споживача - до виходу в продакшн.

Що таке контракт в API

Контракт - це угода, що визначає:
  • які поля містить запит і відповідь
  • які формати даних допустимі
  • які коди статусів повертаються
  • які обов'язкові параметри потрібні

Порушення контракту = потенційний збій на стороні клієнта або сервісу.

Як це працює

Сторона Що тестується
Провайдер (API) API повинен відповідати очікуванням клієнта щодо структури відповіді
Клієнт (consumer) Клієнт очікує певну схему - тест перевіряє, що вона дотримана
Bidirectional Двостороннє тестування: і клієнт, і сервер згодні з контрактом

Інструменти, що використовуються: Pact, Spring Cloud Contract, Dredd, Postman Contract Tests.

Переваги контрактного тестування

Виявлення невідповідностей до деплою

Захист від «тихих» змін, які ламають клієнтів

Безпечне оновлення версій API

Підвищення довіри між командами розробки

Логування історії змін контрактів

Як ми впроваджуємо

Визначення контрактів у форматі OpenAPI/Pact

CI-інтеграція з автоматичним прогонам тестів при кожному комміті

Візуалізація та історія змін контрактів

Розділення по середах (staging/production)

Публікація контрактів для зовнішніх інтеграторів

Де особливо важливо

Мікросервіси з розділеною відповідальністю

Платформи з зовнішніми B2B-інтеграціями

Робота над API декількома незалежними командами

Критичні системи, де помилка неприпустима (фінанси, держпослуги)


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