Привет, сообщество! Хочу обсудить, какие сейчас тренды в тестировании микросервисов? Какие инструменты из мира Java вы используете?
Если преполагается разработка проекта с нуля, какие будут ваши рекомендации по выбору подходов?
Стоит ли использовать consumer-based contracts (packt или что-то еще?) или другой подход? Для тестирования API все тот же rest-assured или мож что новое появилось?
Спасибо за все ответы и размышления по поводу (и без ).
По поводу тестирования контрактов (consumer driven contacts testing)
- если у вас и клиент, и сервер на java, то смотрите в сторону Spring Cloud Contract
- иначе Pact
Подводный камень может быть в случае, если клиент и сервер разрабатываются разными командами. Чтобы не потратить время впустую, лучше обсудить эту тему в обоих командах прежде, чем имплементировать тестирование контрактов. А именно действительно ли и одна, и другая сторона видит в этом профит.
хорошая статья
RestAssured или Retrofit с библиотечками на ассерты
Полюбому, RestAssured - надо начинать с него, потом можно познакомиться с Retrofit, OkHttp или на Groovy HttpBuilder. Pact - если чисто контрактное тестирование в самом чистом его проявлении… Про SpringCloudContracts, На канале QA Guild Сергей Пирогов как-то рассказывал - очень много времени потратили чтобы разобраться и внедрить, люди плевались… Лучше не стоит делать этот садомазахизм…
Лучше всего берите RestAssured и Retrofit(который является обверткой над OkHttp) и все, и не волуйтесь - это самые стабильные и лучшие варианты, с которыми по крайней мере не придется рвать волосы…
Привет. Пару слов о том, что используем у себя в Java мире мы - для тестирования, автоматизации микросервисов.
Подход приблизительно таков:
- тестируем каждый микросервис отдельно в изоляции
- тестируем интеграцию между микросервисами
- тестируем приложение end-to-end (API / UI)
На уровне сервиса в изоляция:
- юнит тесты (JUnit / Mockito) для бизнес логики
- иногда - интеграционные тесты для проверки взаимодействия с хранилищами данных
- API тесты для сервиса в изоляции на Spring Boot (сервис локально + зависимости в Докер контейнерах + замоканные Wiremock’ом сторонние сервисы)
На уровне интеграции:
- используем Spring Cloud Contract и запускаем контрактные тесты как часть обычного билд процесса как локально, так и на CI сервере.
На уровне выше,
- end-to-end API / UI тесты - на реальных энвайроментах- симулируют юзер флоу.
Если есть более конкретные вопросы - спрашивай, чем смогу - помогу.
Спасибо большое за развернутый ответ. Это как раз то что надо в плане подхода. Инструменты - это второстепенное, будем выбирать.
Еще в догонку полезные статьи по тестированию микросервисов:
https://martinfowler.com/articles/microservice-testing/
https://martinfowler.com/articles/practical-test-pyramid.html