Suchen

Testing-Plattform Citrus: Sicher in die Cloud migrieren Automatisierte Integrationstests von externen Schnittstellen

Autor / Redakteur: Marita Schultz / Florian Karlstetter

IT-Landschaften sind heutzutage meist ein komplexes und hybrides Gebilde aus eigener Soft- und Hardware und ausgelagerten Diensten in der Cloud. Um einen reibungslosen Datenaustausch zwischen den unterschiedlichen Schnittstellen sicherzustellen, empfehlen sich automatisierte Integrationstests, beispielsweise mit dem Test-Framework Citrus von Consol.

Firmen zum Thema

Enterprise Application Integration: Automatisierte Integrationstests von externen Schnittstellen mit dem Open Source Test-Framework Citrus von Consol.
Enterprise Application Integration: Automatisierte Integrationstests von externen Schnittstellen mit dem Open Source Test-Framework Citrus von Consol.
(© zothen - Fotolia.com)

Moderne IT-Landschaften sind heutzutage oftmals hybride Gebilde aus eigener Soft- und Hardware und ausgelagerten Diensten in der Cloud. Für einen reibungslosen Nachrichtenaustausch kommen die unterschiedlichsten Schnittstellen zwischen den einzelnen Partnern zum Einsatz. Um eine reibungslose Integration der Schnittstellen zu gewährleisten, sind neben Unit-Tests vor allem auch regelmäßige Integrationstests nötig, um die Funktionalität und Stabilität zu sichern.

In der Praxis erweisen sich diese Tests jedoch häufig als schwierig, denn unterschiedliche Protokolle und Technologien sowie die Anbindung von Altsystemen sind eine Quelle für viele Probleme. Die Schnittstellenpartner müssen im Integrationstest aufwendig simuliert werden. Das punktuelle manuelle Testen ist daher vielfach an der Tagesordnung und bringt viele versteckte Kosten sowie Instabilität mit sich.

Um diesem Zustand Abhilfe zu verschaffen, hat der IT-Full-Service-Anbieter Consol ein innovatives und umfassendes Framework für automatisierte Integrationstests geschaffen. Mit Citrus können Enterprise-Anwendungen voll automatisiert auf ihre Schnittstellenkonformität zu anderen Anwendungen getestet werden. Die Simulation der Schnittstellenpartner sowie die syntaktische und semantische Validierung der Nachrichteninhalte übernimmt Citrus ohne großen Programmieraufwand. Das ist vor allem auch dann von Vorteil, wenn es um die Migration bestehender Software in eine Cloud-Umgebung geht.

So lässt sich mit Citrus schon vor beziehungsweise während des Migrationsvorgangs durch sogenannte Regressionstests prüfen, welche Dienste bereits funktionieren und welche noch nicht. Nicht nur die fachlichen Usecases, sondern auch Fehlersituationen wie Verbindungsfehler, Soap-Faults, Timeouts etc. lassen sich exakt nachstellen. Auf diese Weise kann man die volle Funktionsfähigkeit des Systems während der Migration in Ruhe herstellen und diese am Ende auch tatsächlich gewährleisten, lange bevor ein externer Schnittstellenpartner Zugriff auf das neue System erhalten hat.

Denkbar ist bei unregelmäßiger Nutzung auch die Installation der gesamten Citrus-Umgebung in einer privaten oder öffentlichen Cloud-Umgebung. Citrus unterstützt die Generierung von randomisierten Testdaten und beugt damit Datenschutzbedenken auf weniger sicheren Testumgebungen von vornherein vor.

Beispiel: Flight Booking Service

Ein einfaches Beispiel soll die Arbeitsweise von Citrus verdeutlichen. Ein Flight Booking Service (FBS) soll getestet werden und hat mehrere Schnittstellen zu anderen Systemen. Der Service nimmt Anfragen einer Reiseagentur über SOAP WebServices entgegen. Die Nachrichten enthalten komplette Reiserouten mit mehreren Flügen. Der Service splittet die Anfrage in einzelne Buchungen auf und leitet diese an diverse Fluggesellschaften (z.B. über JMS bzw. HTTP) weiter. Die einzelnen Bestätigungen oder Absagen werden gesammelt und als endgültige Antwort an die Reiseagentur zurückgegeben.

Enterprise Application Integration mit dem Citrus-Framework von Consol - ein Testszenario als Beispiel.
Enterprise Application Integration mit dem Citrus-Framework von Consol - ein Testszenario als Beispiel.
(© Consol Consulting & Solutions Software GmbH)

Eine solche Anordnung nachrichtenbasierter Systeme lässt sich mit Citrus sehr einfach automatisiert testen. Im Testfall müssen alle beteiligten Parteien simuliert werden. Citrus bietet hierfür fertige Komponenten für das Senden und Empfangen von Nachrichten über diverse Nachrichtenkanäle (z.B. SOAP, REST, HTTP, FTP, JMS). Die Komponenten werden über einen Spring ApplicationContext konfiguriert und können sofort ohne zusätzlichen Programmieraufwand genutzt werden. Citrus bietet dabei die Möglichkeit, auch komplexe Szenarios mit vielfältigen Testaktionen automatisiert durchzuführen (z.B. Datenbankabfragen, Schleifen und Fehlerbehandlung).

Simulation beliebiger Anwendungsszenarien

Im Beispiel werden diverse Anwendungsfälle simuliert und dabei überprüft, ob die einzelnen Bestätigungen oder Absagen korrekt an die Reiseagentur als Antwort zurückgemeldet werden. Vor allem die detaillierte Kontrolle der empfangenen Nachrichteninhalte ist dabei von enormer Bedeutung. Für jede empfangene Nachricht führt Citrus neben einer syntaktischen Prüfung über das XML-Schema auch einen inhaltlichen Vergleich gegen eine erwartete Nachricht durch. Sollte dieser nicht wie erwartet passen, schlägt der Test fehl. Natürlich ist es auch möglich, spezielle Inhalte (z.B. Zeitstempel oder generierte Identifier) von der Überprüfung auszuschließen.

Citrus unterstützt diese Validierung für XML, CSV und JSON. Das Framework lässt sich aber auch leicht um eigene Validierungen und Protokolladapter erweitern. Dadurch ist die Vielfalt der unterstützten Protokolle und Formate nahezu uneingeschränkt. Da Citrus auf Open Source basiert, ist es allgemein zugänglich und kostenlos. Mit den automatisierten Integrationstests eignet sich Citrus hervorragend für ContinuousDelivery und die Qualitätssicherung im ContinuousBuild Management. Die Citrus-Tests sind als JUnit oder TestNG-Tests ausführbar und somit auch ohne Probleme in den Projekt BuildLifecycle (z.B. Maven) integrierbar.

Citrus-Tests als ideale Vorbereitung für End-To-End-Tests

Um wieder zu dem Beispiel des Flight Booking Service zurückzukehren: Das Ziel für den Produktionsbetrieb ist natürlich die Anbindung der echten Schnittstellenpartner, also der realen Reiseagenturen und Fluggesellschaften. In typischen Integrationsprojekten dauert es aus technischen oder organisatorischen Gründen oft lange, bis diese realen Anbindungen für End-To-End-Tests zur Verfügung stehen. Glücklich ist, wer die meisten Fehler in der eigenen Software bereits im Vorfeld entdeckt und behoben hat und den End-To-End-Tests gelassen entgegenblicken kann. Hier hat sich Citrus bereits in vielen Projekten als nützliches Werkzeug bewährt.

(ID:36039200)