Testframework für mehrsprachige Integration

Stellen Sie sich vor, Sie haben eine ziemlich komplexe serviceorientierte Architektur, die aus verschiedenen Komponenten besteht. Komponenten sind in verschiedenen Sprachen (Java, PHP, Ruby) geschrieben und kommunizieren auf unterschiedliche Weise miteinander (d. H. Benutzeroberfläche, REST-API, in einigen Fällen gemeinsam genutzte DB-Tabellen usw.).

Ich versuche, ein Integrationstest-Framework für einige End-to-End-Tests zu entwerfen. Wir haben bereits Unit- / Integrationstests für die einzelnen Komponenten, möchten jedoch etwas erstellen, das unser bereitgestelltes System (in einer realen Umgebung) vollständig durchgehend testet, um die Funktionen (in Bezug auf das erwartete Verhalten des Einzelnen) sicherzustellen Komponenten) korrekt bereitgestellt werden und die Architektur ebenfalls korrekt konfiguriert ist.

Die ersten Probleme, denen ich gegenüberstehe, sind, dass der Großteil unserer Benutzeroberfläche in PHP geschrieben ist und dass Integrationstests für die Benutzeroberfläche bereits mit Cucumber und einigen zusätzlichen Plugins geschrieben wurden. Das Testframework, das ich schreibe (in Java), sollte diese Funktionstests auslösen und anschließend überprüfen, ob das Verhalten der zugehörigen Komponenten den Erwartungen entspricht.

Natürlich könnte ich die UI-Tests mit einer Java-freundlichen Komponente wie Selen umschreiben, aber es macht keinen Sinn, den Aufwand zu duplizieren.

Eine andere Lösung besteht darin, die vorhandenen Tests mit einem exec () - Aufruf in Java auszuführen, zu warten, bis sie zurückkehren, möglicherweise die Ausgabe zu analysieren und mit den anderen Aktionen / Prüfungen fortzufahren, die durchgeführt werden müssen.

Das Einbetten des vorhandenen PHP-Codes in Java scheint angesichts der Art und Weise, in der die Projekte geschrieben wurden, keine praktikable Lösung zu sein.

Keine der beschriebenen Lösungen klingt für mich überzeugend. Im Idealfall wäre ein mehrsprachiges (und mehrtechnologisches) Integrationsframework wünschenswert, das in die gleichen Tests der Testsuite integriert werden kann, die in verschiedenen Sprachen und für verschiedene Umgebungen / Komponenten geschrieben wurden.

Kennt jemand ein Tool oder Framework, das in diese Richtung geht? Wenn nicht, was kann ein guter Ansatz für diese Art von Problemen sein?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage