Software intelligenter testen – mit fünf schmackhaften Technologiekombinationen

05.04.2019

Schokolade mit Chili hat etwas Magisches. Ein perfektes Beispiel dafür, wie das Ganze mehr als die Summe seiner Teile sein kann. Ähnliches gibt es Bereich der Softwaretests, beispielsweise bei der Kombination unterschiedlicher Testtools...

Schokolade mit Chili hat etwas Magisches. Der bittere Geschmack und die Süße der Schokolade ergeben mit der Schärfe der Chilischoten einen regelrechten Wow-Effekt, ganz einmalig. Ein perfektes Beispiel dafür, wie das Ganze mehr als die Summe seiner Teile sein kann. Ähnliches gibt es Bereich der Softwaretests, beispielsweise bei der Kombination unterschiedlicher Testtools, wie wir sie anbieten. Auch hier ist die unterschiedliche Kombination der Zutaten möglich, ganz nach Geschmack bzw. Aufgabenstellung.

 

Dynamische Testumgebungen

Geht es bei Testwerkzeugen darum, gleichsam Schokolade und Chili zu kombinieren, ist diese Kombination meines Erachtens unerreicht: die Zusammenführung der API-Prüffähigkeiten von SOAtest mit den Servicevirtualisierungs-Fähigkeiten von Virtualize.

Der offenkundigste Nutzen aus diesen beiden Technologien besteht in der Schaffung dynamischer Testumgebungen. Normalerweise ist wird diese Funktion eher der Servicevirtualisierung überlassen. Aber ein häufig übersehenes Element ist die Fähigkeit zur Ausführung von Testfällen im Kontext einer Umgebung. Durch das Kombinieren von SOAtest und Virtualize kann man eine wiederverwendbare Vorlage bestehend aus virtuellen Tests und Testfällen erstellen, die sich als eine Continuous-Integration-Funktion (CI) einsetzen lässt.

Für die Applikation ergibt sich hierdurch der oben angeführte Wow-Effekt – denn es entsteht die Möglichkeit, Testfälle und ihre Validierungen mit den virtuellen Services im Backend zu koordinieren. Damit lässt sich eine echte CI erzielen, dank der Gewissheit, dass die Testfälle bei ihrer Ausführung mit den zugehörigen virtuellen Services verbunden werden, und dass sich die Testumgebung selbst versorgen kann. Beim Vorbereiten der SOAtest-Testfälle für die Ausführung besteht der erste Schritt im Testfall darin, Virtualize aufzurufen und die benötigten virtuellen Services und Daten zu installieren. Im letzten Schritt des Tests wird Virtualize aufgerufen und die Umgebung wieder abgebaut. Geht es noch eleganter?

 

Validieren von Middleware

Eben haben wir SOAtest im Kontext einer von Virtualize bereitgestellten virtuellen Umgebung eingesetzt. Diese Beziehung lässt sich auch umkehren und Virtualize nutzen, um SOAtest während der Testausführung zu unterstützen: Virtuelle Services können an Endpunkten einfach ‚zuhören‘. Anstatt auf einen Aufruf zu antworten, leiten sie ihn einfach weiter. Mithilfe der Servicevirtualisierung kann man einen virtuellen Service einrichten, der sich in einer Middleware-Applikation befindet und lediglich eine überwachende Funktion übernimmt. Ruft dann eine Middleware-Komponente eine andere auf, verfügt man hier über eine ‚Abfangmöglichkeit‘. Es wäre an dieser Stelle auch möglich, einen virtuellen Service aufzurufen, der als ‚Vermittler‘ einen Hinweis versendet. Was aber können wir mit dieser Nachricht anfangen?

Genau hier spielt die Kombination aus SOAtest und Virtualize ihre Stärken aus: Virtualize kann die besagten Nachrichten zu Validierungszwecken an SOAtest zurückleiten. SOAtest kann anschließend Aufrufe gegen das Frontend ausführen, während Virtualize in der Mitte ‚zuhört‘. Beim Ausführen von Testfällen kann Virtualize dann Transformations-Nachrichten an SOAtest zurückleiten. Die Ereignisse werden während der Testfall-Ausführung gemeldet, und die Daten aus der Anfrage lassen sich an das Ereignis binden, das in Form einer Validierung von Virtualize zurückkommt, wodurch ein wirklich dynamischer Ende-zu-Ende-Test entsteht.

 

Performancetests

Innerhalb von SOAtest ausgeführte Jobs können auch umgehend innerhalb von LoadTest, der in SOAtest enthaltenen Performancetest-Lösung, verfügbar werden. LoadTest  ermöglicht es, nicht nur API-Tests mit voller Geschwindigkeit auszuführen, sondern automatisch die Reaktionen gemäß den SLAs (Service Level Agreements) zu validieren.

 

Shift-Left-Performancetests

Obwohl es SOAtest bereits seit langem gibt und von vielen Anwendern genutzt wird, dürfte den meisten eines nicht klar sein: Alle diese Testfälle können auch in LoadTest laufen. SOAtest enthält eine Schnellfunktion, die das Konfigurieren und Validieren aller API-Tests für LoadTest ermöglicht. Damit erübrigt sich das Erstellen von Performancetests. Stattdessen lassen sich die Arbeitsresultate des Testteams einfach nutzen und mit voller Geschwindigkeit ausführen.

Das ist Softwaretest-Automation vom Feinsten! Die Kombination dieser beiden Technologien führt zu aussagefähigeren Performancetests. SOAtest ruft APIs auf und aktiviert die Web-Frontends, bevor die Belastungstests ausgeführt werden. Das liefert zusätzliche Gewissheit, dass der Performancetest ohne Probleme ausgeführt wird, dank der bereits vorab validierten Umgebung. So erspart diese Kombination viel Zeit – nicht nur beim ersten Erstellen der Tests, sondern auch bei deren Ausführung.

 

Vorkonfigurierte Performancetest-Umgebungen

Virtualize kann virtuelle Services mit „Performance-Profilen“ erstellen. Diese verlangsamen die Reaktionsgeschwindigkeiten der virtuellen Services auf ein vorhersagbares Grundniveau. Man kann diese Performance-Reduzierungen entweder manuell konfigurieren oder sie aus einer Applikations-Performance-Engine wie AppDynamics oder Dynatrace übernehmen. Diese Services lassen sich dann in einer für Performancetests vorgesehenen Umgebung installieren – das macht die die Kombination aus Virtualize und LoadTest außerordentlich leistungsfähig.

Virtualize schafft die Voraussetzungen und stellt ein Grundniveau für die Umgebung bereit. Anschließend kann LoadTest die Ausführung anhand der Umgebung vornehmen und Performance-Probleme mit chirurgischer Präzision einkreisen. Diese Methode ist außerordentlich wirkungsvoll, weil man in einer speziell für LoadTest ausgelegten Umgebung arbeitet. Als Vorbedingung für die Ausführung von Performancetests fordert LoadTest Virtualize zum Wechsel in den Performance-Modus auf, wodurch das Performance- Grundniveau auf bestimmte, bereits simulierte Applikationen angewandt wird. Daraufhin validiert LoadTest die gesamte Umgebung, sodass durch die virtuellen Services gegenüber den realen Services entstandene Verzögerungen nachvollziehbar werden. Diese wertvolle Information enthält die genaue Aussage über Performance-Engpässe. Wechselt man nun bei verschiedenen Komponenten zwischen virtuell und real und wendet unterschiedliche Performance-Grundniveaus an, lassen sich Performance-Probleme exakt identifizieren.

 

Verstehen von Anforderungen und Rückverfolgbarkeit

Über die API-Funktionstests und Entwicklungstests hinaus bietet die Report- und Analyseplattform DTP eine deutliche Erweiterung des Technologiespektrums an. DTP ist so konzipiert, dass sie alle möglichen Informationen aus Entwicklungs- und Testaktivitäten verwenden kann, um aussagefähige Widgets und Reports zur Beurteilung der Release-Bereitschaft zu erstellen.

Über die Verbindung mit Requirements-Engines wie etwa Jira bezieht DTP bestimmte Informationen über Anforderungssätze, die sie klar darstellt. Auf der anderen Seite kann SOAtest bestimmte Testfälle mit den zugehörigen Anforderungen verknüpfen. Durch das Zusammenführen dieser beiden Technologien entsteht gleichsam eine Art Turbolader-Effekt für den Arbeitsablauf: DTP präsentiert dem Anwender die Anforderungen und ermöglicht ihm das Erstellen von Testfällen für diese Anforderungen. Diese Testfälle erscheinen anschließend auf dem SOAtest-Server oder Desktop. Damit kann der Benutzer die Testfälle erstellen, modifizieren oder aktualisieren, um die Funktionalität zu erhalten, die die jeweilige Anforderung genau abdeckt.

 

Jetzt aber kommt das wirklich Besondere! Weil aus DTP heraus eine Verknüpfung mit der Anforderung besteht, werden die Ergebnisse jeder Ausführung des Testfalls ebenfalls mit der betreffenden Anforderung verknüpft. (Details sh. Blogbeitrag). Man sieht also, ob es zu allen Anforderungen entsprechende Testfälle gibt und welche Performance sie erreichen. Das ist überaus hilfreich für das Herbeiführen der Release-Bereitschaft, weil man genau feststellt, ob etwas getestet wurde und ob irgendwelche geschäftskritischen Funktionalitäten versagen.

 

Ebenso wie Schokolade und Chili zusammen ein herausragendes Geschmackserlebnis bieten, liefert die flexible Kombination verschiedener Softwaretest-Technologien ein wirkungsvolles Gerüst für den nächsthöheren Grad an Softwaretest-Automatisierung, der nicht nur effizienter ist, sondern auch mehr Spaß macht. Es gibt noch viele andere Kombinationsmöglichkeiten unserer automatisierten Softwaretest-Tools, aber die genannten sollten ein guter Ausgangspunkt sein. Unter dem Strich geht es doch um die Gewissheit, dass die Applikation gründlich getestet wurde. Also nichts wie ran an die Schokolade das Testen.

 

Autor: Chris Colosimo, Produktmanager Parasoft