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 współdzielenie niektórych tabel DB itp.).Wielojęzyczne środowisko testowania integracji
Próbuję zaprojektować strukturę 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 przetestuje nasz wdrożony system (w rzeczywistym środowisku) od końca do końca, aby upewnić się, że funkcjonalności (pod względem oczekiwanych zachowań poszczególne komponenty) są dostarczane poprawnie, a architektura jest poprawnie skonfigurowana.
Pierwszymi problemami, z jakimi mam do czynienia, jest to, że większość naszego interfejsu jest napisana w PHP, a testy integracji interfejsu użytkownika są już dla niego napisane za pomocą Cucumber i kilku wtyczek na wierzchu. Konstrukcja testowa, którą piszę (w języku Java), powinna uruchomić 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 środowiska Java, takiego jak Selenium, ale nie ma sensu powielać tego wysiłku.
Innym rozwiązaniem jest uruchomienie istniejących testów za pomocą wywołania exec() w Javie, poczekać na ich powrót, ewentualnie przeanalizować dane wyjściowe i wykonać inne czynności/kontrole, które należy wykonać.
Osadzanie istniejącego kodu PHP w Javie nie wydaje się dobrym rozwiązaniem, biorąc pod uwagę sposób, w jaki zostały napisane projekty.
Żadne z opisanych rozwiązań nie wydaje mi się przekonujące. Idealnie byłoby mieć coś w rodzaju wielojęzycznego (i wielogumowego) środowiska integracyjnego, które można podłączyć w ramach tych samych testów zestawów 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 zmierzają w tym kierunku? Jeśli nie, jakie może być dobre podejście do tego rodzaju problemów?
Dzięki za pomysł, ale byłoby przyjęcie JMeter (z punktu przerwania wsparcie!) oznacza przepisywanie istniejących testów od zera. JMeter nie interpretuje również kodu Javascript, co stwarza duże ograniczenie w testowaniu interfejsu użytkownika. – kappolo
Jestem nieco zdezorientowany, jak sądzę, chcesz zbudować strukturę zestawu testów, która wywołuje twoje istniejące testy jednostkowe? Czy to zapewni ci informacje wykraczające poza twoje dotychczasowe testy? – mconlin
Przepraszam, jeśli nie byłam jasna. Ponieważ chcę utworzyć pełny test integracyjny (tj. Integrujący wszystkie komponenty mojego systemu), chcę ponownie wykorzystać część istniejących już testów integracyjnych i połączyć/zintegrować je z nowymi testami. – kappolo