Wielojęzyczne ramy testowania integracji

Wyobraź sobie, że masz dość złożoną architekturę zorientowaną na usługi, wykonaną z różnych komponentów. Komponenty są napisane w różnych językach (Java, PHP, Ruby) i komunikują się ze sobą na różne sposoby (np. Interfejs użytkownika, interfejs API REST, w niektórych przypadkach udostępniają niektóre tabele DB itp.).

Próbuję zaprojektować framework do testowania integracji dla niektórych testów end-to-end. Mamy już testy jednostkowe / integracyjne dla pojedynczych komponentów, ale chcielibyśmy zbudować coś, co w pełni testuje nasz wdrożony system (w rzeczywistym środowisku) od końca do końca, aby upewnić się, że funkcjonalności (pod względem oczekiwanych zachowań jednostki komponenty) są dostarczane poprawnie, a architektura jest poprawnie skonfigurowana.

Pierwsze problemy, z którymi się borykam, to fakt, że większość naszego interfejsu użytkownika jest napisana w PHP, a testy integracji z interfejsem użytkownika są już napisane dla niego z Cucumber i kilkoma wtyczkami na górze. Ramy testowe, które piszę (w Javie) powinny wywołać te testy funkcji, a następnie sprawdzić, czy zachowanie powiązanych komponentów jest zgodne z oczekiwaniami.

Oczywiście mogłem przepisać testy interfejsu użytkownika przy użyciu komponentu przyjaznego dla języka Java, takiego jak Selenium, ale nie ma sensu powielać wysiłku.

Innym rozwiązaniem jest uruchomienie istniejących testów z wywołaniem exec () w Javie, poczekaj, aż powrócą, ewentualnie przeanalizuj dane wyjściowe i kontynuuj inne czynności / kontrole, które należy wykonać.

Osadzenie istniejącego kodu PHP w Javie nie wydaje się realnym rozwiązaniem, biorąc pod uwagę sposób, w jaki projekty zostały napisane.

Żadne z opisanych rozwiązań nie wydaje mi się przekonujące. Najlepiej byłoby, gdybyśmy mieli jakiś rodzaj wielojęzycznej (i wielobranżowej) struktury integracji, która może być podłączana w ramach tych samych testów zestawu testów napisanych w różnych językach i dla różnych środowisk / komponentów.

Czy ktoś zna jakieś narzędzie lub ramy, które idą w tym kierunku? Jeśli nie, co może być dobrym podejściem do tego rodzaju problemów?

questionAnswers(2)

yourAnswerToTheQuestion