Как устроена микросервисная архитектура сервиса ордеров?
Что проверяют
Понимаете ли вы, как заказ проходит через несколько сервисов и где на этом пути всё ломается. Тестировщику не нужно проектировать систему, но нужно знать, куда смотреть, когда заказ «завис». Следом обычно спрашивают, как вы тестировали асинхронное взаимодействие.
Как отвечать
Нарисуйте путь заказа, лучше на примере своего проекта:
- вход: клиент идёт через API Gateway, там авторизация, лимиты, маршрутизация;
- сервис заказов: своя база и статусная модель: создан, ожидает оплаты, оплачен, собран, отменён. Статусы и допустимые переходы это первое, что стоит выписать для тест-дизайна;
- соседи: оплата, склад, доставка, уведомления. Синхронно через REST или gRPC, асинхронно через Kafka или RabbitMQ;
- распределённая транзакция: общей транзакции между базами нет, поэтому используют сагу. Если оплата не прошла, запускаются компенсации: снять резерв на складе, отменить заказ;
- надёжность: ключ идемпотентности на создание заказа, outbox для публикации событий, повторы с backoff.
Дальше расскажите, как это тестируется по уровням. Контрактные тесты (Pact) ловят несовместимость API между сервисами. Компонентные тесты поднимают сервис заказов с базой в Testcontainers, а соседей подменяют через WireMock. E2E оставляют для нескольких ключевых сценариев. Для асинхронности проверяйте сообщение в топике и итоговый статус через ожидание с таймаутом (Awaitility в Java, цикл опроса с дедлайном в Python), а не через sleep. При разборе бага ищите заказ по trace id в Jaeger или Grafana Tempo и по логам.
Опирайтесь на свой опыт: какие сервисы были, какой баг нашли на стыке. Если с микросервисами не работали, честно скажите и разберите, как построили бы проверки.
Где спотыкаются
Тестируют только через UI. Когда заказ завис в статусе «ожидает оплаты», такой тестировщик не может сказать, какой сервис виноват.
Проверяют лишь позитивный путь. Самые дорогие баги живут в негативных: таймаут платёжного шлюза, повторная доставка сообщения, двойное нажатие «Оплатить», сбой компенсации.
Ждут результат через фиксированную паузу. Тест то проходит, то падает, и команда перестаёт доверять автотестам.