Наш опыт автоматизации интеграционных тестов в изолированном окружении DockerНепрерывная поставка
Я участвовал в разработке веб-приложения с использованием микросервисной архитектуры. Приложение работает в облаке Amazon Web Services и использует различные сервисы, предоставляемые облаком.
Я расскажу, как у нас устроены автоматические интеграционные тесты.
При каждом изменении любого микросервиса автоматически запускаются юнит-тесты, а затем интеграционные тесты, об устройстве которых и пойдет речь.
Для теста создается Docker-контейнер с сервисом, а также контейнеры с базой данных, Amazon AWS Localstack, HTTP-мок-сервером и Postman (а точнее, его консольная версия под названием Newman), на котором реализованы тесты. Все эти контейнеры объединяются в изолированную виртуальную сеть. В ходе тестов проверяется взаимодействие сервисом по HTTP, через очереди Amazon Simple Queue Service, взаимодействие, в котором тестируемый сервис является HTTP-клиентом, а также oauth-аутентификация. Наше приложение отправляет в браузер уведомления через SignalR. Для их тестирования пришлось разработать специальный инструмент, поскольку Postman не работает с веб-сокетами.