Используются ли микросервисы в Docker и Kubernetes
Что проверяют
Понимаете ли вы, как устроена система, которую тестируете, и что это меняет в вашей работе. В вопросе есть подвох: микросервисы не обязаны жить в Docker, а Docker не делает приложение микросервисным. Следом обычно спрашивают, как вы поднимаете окружение для тестов и где ищете причину, если упал один сервис из десяти.
Как отвечать
Сначала разведите понятия, потом переходите к тестированию:
- микросервисы: архитектурный стиль, приложение делится на независимо развёртываемые сервисы со своими данными и API. Монолит тоже можно упаковать в контейнер;
- Docker: упаковка сервиса вместе с зависимостями в образ. Для QA это воспроизводимое окружение:
docker compose upподнимает сервис, базу и брокер одинаково у всех; - Kubernetes: оркестратор, который запускает контейнеры в подах, перезапускает упавшие, масштабирует и балансирует трафик. Тестовые стенды часто живут в отдельных
namespace.
Что это значит для тестирования:
- уровни проверок: модульные и компонентные тесты внутри сервиса, контрактные тесты между сервисами (Pact), немного end-to-end сценариев поверх всего;
- изоляция зависимостей: соседний сервис заменяется заглушкой (WireMock) или поднимается настоящим через Testcontainers;
- диагностика:
kubectl get pods,kubectl logs,kubectl describe podпоказывают, что под ушёл вCrashLoopBackOffили не прошёлreadinessProbe. Сквознойtrace idв логах и трассировка (Jaeger, OpenTelemetry) помогают найти, на каком сервисе оборвался запрос; - асинхронность: сервисы общаются через очереди, результат появляется не сразу, поэтому тест ждёт по условию, а не через
sleep.
Где спотыкаются
Отвечают «да, микросервисы это когда Docker». Интервьюер слышит, что кандидат путает архитектуру и способ доставки.
Тестируют всё только через UI сквозными сценариями. Такие тесты медленные и хрупкие, а при падении не говорят, какой сервис виноват.
Не умеют сами посмотреть логи пода и заводят баг «ничего не работает». Базовые команды kubectl для QA в такой команде обязательны.