intermediate

Unit, integration и E2E tests

Разделяйте isolated logic checks, real collaboration checks и browser или service journey checks, чтобы failures указывали на нужный layer.

Unit-тесты изолируют модуль и подменяют коллабораторов doubles — проверяют логику, ветвления и инварианты быстро. Integration-тесты используют реальных коллабораторов: запросы к БД, HTTP-клиенты, очереди, стыковку модулей — сбой указывает на несовпадение на границе. E2E ведут систему как пользователь или внешний клиент, проверяя полные сценарии через UI, API и инфраструктуру.

Выбор слоя важен: ошибка в чистом расчёте цены — unit; сломанный SQL join — integration; кнопка checkout, которая не активируется, — E2E.

На интервью: приведите пример одной фичи на двух слоях и объясните, что каждый пропустит, если его убрать.

Типовые ошибки: замокать всё в «integration», дублировать одну проверку на всех трёх слоях, называть API-тесты E2E без UI.

Компромисс — скорость изоляции против реализма: глубже ловит больше, но падает медленнее и требует тяжелее фикстур.

Чеклист:

  • Определите unit, integration и E2E по сигналу сбоя.
  • Выберите самый мелкий слой, который всё ещё покрывает риск.
  • Не тройное тестирование одного поведения без нового сигнала.