Есть ли отдельный тестовый контур для интеграционного тестирования с несколькими сервисами
Что проверяют
Как на практике устроено интеграционное тестирование в ваших проектах и понимаете ли вы, какие проверки где живут. Интервьюер отличает тех, кто писал такие тесты сам, от тех, кто слышал, что «тестировщики что-то гоняли на стенде». Следом обычно спрашивают, как вы изолировали данные и что делали, когда соседний сервис на стенде лежал.
Как отвечать
Опишите слои, а не один стенд, и назовите свою роль в каждом:
- интеграция внутри сервиса:
@SpringBootTestс настоящими зависимостями в Docker через Testcontainers (PostgreSQL, Kafka, Redis). Со Spring Boot 3.1 контейнер подключается аннотацией@ServiceConnection, раньше свойства прокидывали через@DynamicPropertySource. Такие тесты идут в CI на каждый мерж-реквест; - соседние сервисы: в этих тестах их заменяют WireMock или MockServer с заранее описанными ответами;
- контракты: Spring Cloud Contract или Pact проверяют, что поставщик и потребитель API понимают друг друга, без общего стенда;
- общий стенд: отдельное окружение (test, stage, preprod), где развёрнуты все сервисы и идут сквозные сценарии. Часто это namespace в Kubernetes, иногда временное окружение на каждую ветку.
Дальше конкретно про свой проект: сколько было стендов, кто за них отвечал, как туда выкатывали сборки, сколько шли тесты и что ловили именно на стенде, а не в CI. Нужны ваши реальные детали. Если отдельного контура не было, скажите честно и объясните, чем компенсировали: например, Testcontainers и контрактные тесты, а на стенде только ручная приёмка.
Назовите и минусы общего стенда: сервисы разных версий, чужие деплои посреди прогона, конфликты тестовых данных. Отсюда уникальные идентификаторы в данных и очистка после теста.
Где спотыкаются
Называют интеграционным юнит-тест, где все зависимости замоканы Mockito. Он проверяет логику класса, но не SQL, сериализацию и конфигурацию.
Отвечают «да, был стенд» и замолкают. Вопрос про опыт, и без подробностей о своей роли такой ответ ничего не даёт.
Строят всю проверку на общем стенде. Тесты падают из-за чужих изменений, и команда перестаёт доверять красным прогонам.