Многоязычная интеграционная среда тестирования

Представьте, что у вас довольно сложная сервис-ориентированная архитектура, созданная из разных компонентов. Компоненты написаны на разных языках (Java, PHP, Ruby) и взаимодействуют друг с другом по-разному (т. Е. Пользовательский интерфейс, REST API, в некоторых случаях общие таблицы БД и т. Д.).

Я пытаюсь разработать интегрированную среду тестирования для комплексного тестирования. У нас уже есть модульные / интеграционные тесты для отдельных компонентов, но мы хотели бы создать что-то, что полностью тестировало бы нашу развернутую систему (в реальной среде), чтобы убедиться в функциональности (с точки зрения ожидаемого поведения отдельного человека). компоненты) предоставляются правильно и что архитектура также настроена правильно.

Первая проблема, с которой я сталкиваюсь, заключается в том, что большая часть нашего пользовательского интерфейса написана на PHP, а интеграционные тесты пользовательского интерфейса уже написаны для него с Cucumber и несколькими плагинами сверху. Среда тестирования, которую я пишу (на Java), должна запускать эти тесты функций и впоследствии проверять, что поведение связанных компонентов соответствует ожидаемому.

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

Другое решение состоит в том, чтобы запустить существующие тесты с вызовом exec () в Java, подождать, пока они вернутся, возможно, проанализировать вывод и перейти к другим действиям / проверкам, которые необходимо выполнить.

Встраивание существующего PHP-кода в Java не представляется жизнеспособным решением, учитывая то, как были написаны проекты.

Ни одно из описанных решений не кажется мне убедительным. В идеале было бы неплохо иметь какую-то многоязычную (и многоцелевую) интеграционную инфраструктуру, которая может подключаться в рамках одного и того же набора тестов, написанного на разных языках и для разных сред / компонентов.

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

Ответы на вопрос(2)

Ваш ответ на вопрос