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

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

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

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

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

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

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

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

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

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

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