Обновить

Моки, стабы и фейки: в чем разница и что выбрать для автотестов?

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.7K
Всего голосов 8: ↑8 и ↓0+10
Комментарии3

Комментарии 3

Хочу добавить практический кейс, который попадает в серую зону между stub и fake (и частично mock, если смотреть на поведение).

В моем проекте AI-эндпоинт POST /ai/recommend-doctor работает с флагом AI_MOCK_RESPONSE=true. В этом режиме внешний LLM (Claude) отключается, но retrieval layer и БД продолжают работать полностью в реальном режиме. Меняется только финальная генерация ответа. По сути это не чистый stub и не fake - это гибрид: часть системы настоящая, часть заменена, но поведение остаётся близким к production pipeline.

Интересный эффект проявился в CI. Тест ожидал Pediatrician, но получил General Practitioner. Claude в этом режиме не вызывался, значит проблема была не в LLM, а в retrieval layer.

В production этот баг был бы легко "замаскирован": LLM мог бы скорректировать неправильный top-1 и тест прошёл бы зелёным. Mock mode убрал этот компенсирующий слой и показал реальную проблему ранжирования.

Получается, что частично мокнутая система иногда даёт более честный сигнал, чем полностью интегрированная - потому что убирает "умный буфер", который скрывает ошибки upstream.

Спасибо, полезная статья, на собесах часто спрашивают. Утащила в закладки

SQLite в памяти вместо тяжелого Postgres

Плохая практика на самом деле. Фактически, вы тестируете мок, а не реальное взаимодействие.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации