@relgames
Java Developer

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

Как вы тестируете в автоматическом режиме сложные распределенные системы? Например, состоящие из нескольких компонентов — Cassandra, ActiveMQ, пара самописных демонов. В реальности это все крутится на 8-10 машинах, возникла необходимость прогонять в автоматическом режиме базовые тесты.

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

До сих пор тестирование велось в ручном режиме, с установкой на тестовый кластер, но во-первых, это лениво, во-вторых, руками задалбываешься проверять всё.

Самописное решение банально: поднять виртуальную машину (например на VirtualBox), дергать ее снаружи через ssh и передавать команды. Но может я не знаю какого-то очевидного и простого решения?
  • Вопрос задан
  • 4531 просмотр
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Посмотрите, например, Vagrant
habrahabr.ru/post/140714/
Ответ написан
Adam_Ether
@Adam_Ether
Java Developer
Цель интеграционного тестирования заключается в том, чтобы взаимодействие определенных подсистем не нарушало установленного контракта.
Вы можете использовать мокирование — имитировать эталонные ответы какого-либо сервиса. Например Mockito
А вообще хорошо бы иметь функциональные тесты — покрывающие бизнес-требования и прогонять их на QA окружении, максимально похожим на production.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы