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 по сигналу сбоя.
- Выберите самый мелкий слой, который всё ещё покрывает риск.
- Не тройное тестирование одного поведения без нового сигнала.