Fuente
QA Co-pilot | Ілюзія незалежності: Чому тести з моками (Mocks) — це злочин проти про...
28 Vistas/Alcance
2026-04-29 07:00
Mensaje №274
🤡 Ілюзія незалежності: Чому тести з моками (Mocks) — це злочин проти продакшенуПривіт, екіпаж! Сьогодні б'ємо по ще одній "священній корові" автоматизації. Всі бест-практиси та туторіали роками вчили нас: "Ізолюйте фронтенд від бекенду! Мокайте (mock) API запити в Cypress/Playwright, щоб тести були швидкими і не падали через мережу". ☕️Але у 2026 році агресивне мокання API — це найшвидший спосіб доставити критичний баг прямо в руки користувачу. Ви буквально створюєте віртуальну реальність, якої не існує, і тестуєте свої фантазії замість реального продукту.Ось чому ваші "стабільні зелені тести" насправді нічого не варті:🪞Тестування галюцинацій (False Positives)Ви написали UI-тест на профіль юзера. Він перехоплює запит /api/user і віддає захардкоджений JSON: {"status": "active"}. Ваш пайплайн ідеально зелений.Але в цей час бекендер на своєму боці зробив оптимізацію і тепер API повертає {"userStatus": "ACTIVE"}. На продакшені юзери бачать білий екран. А ваші тести досі радісно світяться зеленим, бо вони ізольовано тестують застарілий шматок пластику, а не живу систему.
🕸 Кладовище JSON-файлів (Maintenance Hell)Мікросервіси оновлюються десятки разів на день. Ваші моки застарівають у ту саму секунду, коли ви робите git commit. Команди AQA витрачають сотні годин на те, щоб оновлювати "фікстури" (fixtures) і підтримувати тисячі фейкових JSON-відповідей. Це не інженерія, це робота архіваріуса.
🤝 Contract Testing — Єдина альтернативаЯкщо ви мокаєте API і у вас немає Контрактного тестування (Contract Testing, наприклад, Pact) — ви граєте в російську рулетку.Як це має працювати насправді:Фронтенд (Consumer) динамічно генерує "Контракт" — документ, який каже: "Я очікую поле status з маленької літери". Цей контракт лежить у брокері і автоматично перевіряється на боці бекенду (Provider) при кожному їхньому білді. Якщо бекендер перейменовує поле — його пул-реквест жорстко блокується ще ДО того, як код потрапить на Стейдж чи Прод.
Висновок: Моки — це милиці для лінивої архітектури. Якщо ваші E2E тести не ловлять зміни в API, а просто перевіряють, чи вміє браузер рендерити ваш власний статичний JSON — видаліть їх. Вони лише спалюють гроші компанії на хмарні обчислення в CI/CD.Ну що, зізнавайтесь, скільки у вас захардкоджених фікстур на проєкті? 👇🔥 — Ми давно на Contract Testing, моки — для слабаків!👀 — Мокаю 90% запитів, бо бекенд вічно лежить. Тепер мені страшно...🤬 — Ти нічого не розумієш! Без ізоляції мої E2E тести будуть йти 3 години і падати через таймаути!