Тест-пирамида устарела: чем её заменили крупные команды
Классическая пирамида Майка Кона (2009): много unit-тестов, средне integration, мало E2E. Модель родилась в эпоху тяжёлых UI-фреймворков и медленных браузерных тестов. Сейчас Playwright и Cypress отрабатывают за секунды, и баланс сместился — что используют вместо пирамиды:
🏆 Testing Trophy (Kent C. Dodds) — больше всего integration-тестов, потом unit, потом E2E, и поверх всего статический анализ (TypeScript, ESLint). Идея: integration-тесты ловят больше реальных багов на единицу времени, потому что код тестируется в условиях, близких к продакшену.
🍯 Honeycomb (Spotify) — для микросервисов. Internal tests (логика сервиса) → integrated tests (контракты с зависимостями) → integration tests (полный путь между сервисами). Меньше E2E через UI, больше contract-тестов через Pact.
📐 Google Test Sizes — не пирамида формы, а классификация по ресурсам: Small (один процесс, моки сети), Medium (один сервер), Large (многосервер), Enormous (полный стек). Каждый тест помечается размером, CI прогоняет нужные комбинации.
⚠️ Что общего у всех трёх — отказ от догмы «unit = большинство». Реальные баги чаще всплывают в стыках между модулями, а не внутри них.
Что делать прямо сейчас
— Посчитайте процент integration-тестов в своём CI. Меньше 20%? Возможно, пирамида у вас перевёрнутая в неправильную сторону.
— Замените тяжёлые E2E на интеграционные с моком внешних API (MSW, WireMock).
— Добавьте contract-тесты для каждого внешнего сервиса — Pact или OpenAPI-валидация.
Подробнее: Kent C. Dodds — The Testing Trophy.