LINUX.ORG.RU

Тестирование микросервисов

 , , ,


1

1

Кинте в тред best practices для применения докера для (интеграционного) тестирования взаимодействия двух микросервисов.

Есть готовый сервис A, который должен использовать еще не реализованный функционал сервиса Б.

Нужно/можно ли писать функционал в А до реализации Б? Мой ответ: да

Как тестировать этот функционал, если нет Б? Мой ответ: С помощью интеграционных тестов.

Как можно/нужно симулировать функционал Б? Мой ответ: с помощью библиотеки nock (какие еще?)

Как тестировать, когда уже реализован Б? С помощью тех же интеграционных тестов, но заменяя вызов на реальный? Или ручками? Тогда как правильно, если оно происходит на локальной машине разработчика (локалхост). Ведь все сервисы используют один и тот же порт. Как быть к конфликтами портов? Тупо менять ручками номер порта второго сервиса? То это же плохо!

Какие есть другие способы? Как применить докер для сабжа?



Последнее исправление: EnterpriseMobility (всего исправлений: 2)
Ответ на: комментарий от DiKeert

На самом деле у RESTа проблем нет, поднять mock-сервис в ноде можно с помощью nock.

имхо, даже после готовности сервиса Б, тестирование стоит проводить об моки, а не об реальный сервис

не ИМХО, а НУЖНО, т.к должна выполняться АКСИОМА любого тестирования: тестируй ТОЛЬКО свой код.

EnterpriseMobility
() автор топика
Последнее исправление: EnterpriseMobility (всего исправлений: 1)

Как применить докер для сабжа?

Вам шашечки или ехать?

а вот наш сеньор говорит, что докер нинужен

Может стоит послушать?

И да, вместо того чтобы тестировать то чего нет, заменяя его моками, может просто не тестировать то чего нет? Какой профит дают моки?

добавляем тесты на то чего нет. Наблюдаем как валятся тесты

добавляет то чего не было. Наблюдаем как тесты перестают валиться;

профит;

redixin ★★★★
()
Ответ на: комментарий от EnterpriseMobility

Jenkins может запускать тесты на любой машине. На абсолютно любой, хоть на твоей в фоне. Ты что, вообще ничего не читаешь кроме книжек про методики и бестпрактисы?

vostrik ★★★☆
()
Ответ на: комментарий от EnterpriseMobility

У женкинса есть воркеры, воркером может быть любой комп и там будет запускаться процесс тестирования

https://wiki.jenkins-ci.org/display/JENKINS/Step by step guide to set up mast...

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от EnterpriseMobility

У тебя непонятно что вместо здравого смысла. Тебе белым по синему написали «на любой машине»

vostrik ★★★☆
()
Ответ на: комментарий от redixin

а вот наш сеньор говорит, что докер нинужен Может стоит послушать?

я уже это пионял давно.

И да, вместо того чтобы тестировать то чего нет

я не тестирую то, чего нет. Я тестирую использование того, чего нет.

заменяя его моками

Я заменяю моками несуществующий сервис, чтобы ументь тестировать использование того чего нет.

Более того, мы пришли к умозаключению, что мы ВСЕГДА должны использовать моки.

может просто не тестировать того чего нет?

Это же доведение Кота шредингера до квантового самоубийства! Статья 110 УК РФ - срок до пяти лет.

Какой профит дают моки?

см. выше п.

заменяя его моками

EnterpriseMobility
() автор топика
Ответ на: комментарий от Deleted

приведи мне пример Best Practice, когда тест, выполняемый на Jenkins, использовал реальную базу данных Oracle (XE ?).

И приведи мне сравнение времени выполнения «тестов, использующие эту реальную базу» vs «тестов использующие стабы и моки»

EnterpriseMobility
() автор топика
Ответ на: комментарий от EnterpriseMobility

приведи мне пример

Зачем?

И приведи мне сравнение времени выполнения

Ты производительность тестируешь или просто что-то там куришь?

Deleted
()
Ответ на: комментарий от EnterpriseMobility

чем глючнее тем хуже, нэ?

Deleted
()
Ответ на: комментарий от EnterpriseMobility

Про REST мой поинт был в том, что для SOAP-а есть декларативное описание и мне не нужно писать моки от слова вообще, SOAPui сам генерирует по wsdl-у эти моки. Так что при всей моей ненависти к soap, в плане тулинга надо отдать ему должное.

не ИМХО, а НУЖНО, т.к должна выполняться АКСИОМА любого тестирования: тестируй ТОЛЬКО свой код.

Удваиваю.

DiKeert ★★
()
Ответ на: комментарий от DiKeert

Удваиваю

а если серьезно, то, что я сказал - это ведь правильно?

Когда я только начинал писать тесты, я этого не знал, и у меня была реальная база, реальный сервер и я проверял response.

Потом мне сказали, как правильно делать.

EnterpriseMobility
() автор топика
Ответ на: комментарий от EnterpriseMobility

Смотри, тут есть разные подходы. Подход один - у нас есть юнит тесты - они тестируют различные модули одного сервиса. Далее у нас есть интеграционные тесты - они скорее всего ходят в сервис через API и таким образом тестируют интеграцию между модулями. Если какие-то модули зависят от внешних сервисов, то их, разумеется мокают. Такого подхода придерживается, например, гугл, по крайней мере некоторые из его команды - это видно из презентации по Guice (https://www.youtube.com/watch?v=hBVJbzAagfs). В таком подходе тестирование связки сервисов называют «системным тестированием». Однако, есть люди которые вполне обоснованно и аргументированно считают интеграционным тестированием такое, когда все стабы и моки заменены уже на реальные системы. Нет правильной точки зрения и нет серебряной пули - выбирай то, что тебе больше подходит. Я в своей работе придерживаюсь первого подхода и считаю, что он дает лучшие результаты.

DiKeert ★★
()
Ответ на: комментарий от DiKeert

Т.е. мое умозаключение «если сервис А зависит от другого сервиса Б», то нужно ВСЕГДА инстранцировать тестируемый сервер, вызывать и называть это «интеграционными тестами» - неверно?

Т.е. если даже ты вынужден мокиривать HTTP сервисы, то это не означает, что мы перестаем писать юнит-тесты?

EnterpriseMobility
() автор топика
Ответ на: комментарий от EnterpriseMobility

Он прав, с докером выплывут тысячи багов, и если у вас нету отдельного человека который бы им занимался уже, то не стоит

anonymous
()
Ответ на: комментарий от DiKeert

ОК, спасибо.

Зы. Форумы таки лучше, чем какой-то там консультант (который уже больше не прийдет.)

EnterpriseMobility
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.