Framework de testes de integração multilíngue

Imagine que você tenha uma arquitetura orientada a serviços razoavelmente complexa feita por diferentes componentes. Os componentes são escritos em diferentes linguagens (Java, PHP, Ruby) e se comunicam entre si de maneiras diferentes (ou seja, interface do usuário, API REST, em alguns casos, compartilhando algumas tabelas de banco de dados, etc).

Eu estou tentando projetar uma estrutura de teste de integração para alguns testes de ponta a ponta. Já temos testes de unidade / integração para os componentes individuais, mas gostaríamos de construir algo que teste completamente o nosso sistema implantado (em um ambiente real) de ponta a ponta para garantir que as funcionalidades (em termos de comportamentos esperados do indivíduo) componentes) são fornecidos corretamente e que a arquitetura também está configurada corretamente.

Os primeiros problemas que estou enfrentando é que a maioria da nossa interface do usuário é escrita em PHP e testes de integração da interface do usuário já estão escritos para ela com o Pepino e alguns plugins no topo. A estrutura de teste que estou escrevendo (em Java) deve acionar esses testes de recursos e depois verificar se o comportamento dos componentes relacionados é o esperado.

Obviamente, eu poderia reescrever os testes de interface do usuário usando um componente compatível com Java como o Selenium, mas não faz sentido duplicar o esforço.

Outra solução é executar os testes existentes com uma chamada exec () dentro de Java, esperar que eles retornem, possivelmente analisar a saída e prosseguir com as outras ações / verificações que precisam ser feitas.

A incorporação do código PHP existente em Java não parece uma solução viável, dada a maneira como os projetos foram escritos.

Nenhuma das soluções descritas soa convincente para mim. Idealmente, seria bom ter algum tipo de estrutura de integração multilíngue (e multi-tecnologia) que possa ser plugada nos mesmos testes de conjunto de testes escritos em diferentes idiomas e para diferentes ambientes / componentes.

Alguém conhece alguma ferramenta ou estrutura que vai nessa direção? Se não, o que pode ser uma boa abordagem para esse tipo de problema?

questionAnswers(2)

yourAnswerToTheQuestion