Подходы и инструменты для тестирования микросервисов

microservices
restapi
java
Теги: #<Tag:0x00007f7b639d8858> #<Tag:0x00007f7b639d8718> #<Tag:0x00007f7b639d85d8>

(Lexi) #1

Привет, сообщество! Хочу обсудить, какие сейчас тренды в тестировании микросервисов? Какие инструменты из мира Java вы используете?
Если преполагается разработка проекта с нуля, какие будут ваши рекомендации по выбору подходов?
Стоит ли использовать consumer-based contracts (packt или что-то еще?) или другой подход? Для тестирования API все тот же rest-assured или мож что новое появилось?
Спасибо за все ответы и размышления по поводу (и без :slight_smile: ).


(Евгений) #2

По поводу тестирования контрактов (consumer driven contacts testing)

  • если у вас и клиент, и сервер на java, то смотрите в сторону Spring Cloud Contract
  • иначе Pact

Подводный камень может быть в случае, если клиент и сервер разрабатываются разными командами. Чтобы не потратить время впустую, лучше обсудить эту тему в обоих командах прежде, чем имплементировать тестирование контрактов. А именно действительно ли и одна, и другая сторона видит в этом профит.

хорошая статья


(Valentin G ) #3

Есть еще Citrus framework.


(Dmitrii Demin) #4

RestAssured или Retrofit с библиотечками на ассерты


(Savva Genchevskiy) #5

Полюбому, RestAssured - надо начинать с него, потом можно познакомиться с Retrofit, OkHttp или на Groovy HttpBuilder. Pact - если чисто контрактное тестирование в самом чистом его проявлении… Про SpringCloudContracts, На канале QA Guild Сергей Пирогов как-то рассказывал - очень много времени потратили чтобы разобраться и внедрить, люди плевались… Лучше не стоит делать этот садомазахизм…
Лучше всего берите RestAssured и Retrofit(который является обверткой над OkHttp) и все, и не волуйтесь - это самые стабильные и лучшие варианты, с которыми по крайней мере не придется рвать волосы…


(Oleksandr Romanov) #6

Привет. Пару слов о том, что используем у себя в Java мире мы - для тестирования, автоматизации микросервисов.

Подход приблизительно таков:

  • тестируем каждый микросервис отдельно в изоляции
  • тестируем интеграцию между микросервисами
  • тестируем приложение end-to-end (API / UI)

На уровне сервиса в изоляция:

  • юнит тесты (JUnit / Mockito) для бизнес логики
  • иногда - интеграционные тесты для проверки взаимодействия с хранилищами данных
  • API тесты для сервиса в изоляции на Spring Boot (сервис локально + зависимости в Докер контейнерах + замоканные Wiremock’ом сторонние сервисы)

На уровне интеграции:

  • используем Spring Cloud Contract и запускаем контрактные тесты как часть обычного билд процесса как локально, так и на CI сервере.

На уровне выше,

  • end-to-end API / UI тесты - на реальных энвайроментах- симулируют юзер флоу.

Если есть более конкретные вопросы - спрашивай, чем смогу - помогу.


(Lexi) #7

Спасибо большое за развернутый ответ. Это как раз то что надо в плане подхода. Инструменты - это второстепенное, будем выбирать.


(Oleksandr Romanov) #8

Еще в догонку полезные статьи по тестированию микросервисов:

https://martinfowler.com/articles/microservice-testing/

https://martinfowler.com/articles/practical-test-pyramid.html