Marco de prueba de integración multi-idioma

Imagina que tienes una arquitectura bastante compleja orientada a servicios hecha por diferentes componentes. Los componentes se escriben en diferentes idiomas (Java, PHP, Ruby) y se comunican entre sí de diferentes maneras (es decir, UI, API REST, en algunos casos compartiendo algunas tablas de bases de datos, etc.).

Estoy tratando de diseñar un marco de pruebas de integración para algunas pruebas de extremo a extremo. Ya tenemos pruebas de unidad / integración para los componentes individuales, pero nos gustaría construir algo que pruebe completamente nuestro sistema implementado (en un entorno real) de extremo a extremo para asegurarnos de las funcionalidades (en términos de comportamientos esperados del individuo). Los componentes) se suministran correctamente y la arquitectura también está configurada correctamente.

El primer problema al que me enfrento es que la mayoría de nuestra interfaz de usuario está escrita en PHP y las pruebas de integración de interfaz de usuario ya están escritas con pepino y un par de complementos en la parte superior. El marco de prueba que estoy escribiendo (en Java) debería activar estas funciones y luego verificar que el comportamiento de los componentes relacionados sea el esperado.

Obviamente, podría reescribir las pruebas de UI utilizando un componente compatible con Java como Selenium, pero no tiene sentido duplicar el esfuerzo.

Otra solución es ejecutar las pruebas existentes con una llamada exec () dentro de Java, esperar a que regresen, posiblemente analizar la salida y continuar con las otras acciones / verificaciones que deben realizarse.

Incrustar el código PHP existente en Java no parece una solución viable debido a la forma en que se han escrito los proyectos.

Ninguna de las soluciones descritas me parece convincente. Idealmente, sería bueno tener algún tipo de marco de integración de múltiples idiomas (y multitecnología) que se pueda conectar dentro de las mismas pruebas de prueba escritas en diferentes idiomas y para diferentes entornos / componentes.

¿Alguien sabe alguna herramienta o marco que vaya en esta dirección? Si no, ¿cuál puede ser un buen enfoque para este tipo de problemas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta