Wer noch mit altmodischen, monolithischen Desktop-Anwendungen arbeitet, der steht vor einem Berg an fragiler Arbeit, die mit einer Reihe gelegentlich wackeliger und häufig abartig teurer Tools erledigt werden muss. Um wieviel besser ist es dagegen in der neuen API-Welt! Dies weil die Benutzeroberfläche (User Interface – UI) die Ursache der meisten Probleme ist, mit denen Desktop-Apps zu kämpfen haben. APIs dagegen sind unempfindlich gegenüber dem Betriebssystem, der Bildschirmauflösung und den Eigenheiten der Bildschirmkarte. Sie sind bestens definiert und eignen sich hervorragend für das automatisierte Testen.
Agile Entwicklung ermutigt zu Veränderungen. Wird mit kurzen Iterationen entwickelt, scheitern die automatisierten, UI-basierten Test Suites oft sobald es zu Änderungen kommt, selbst wenn es nur um einfache Modifikationen am GUI-Layout oder um unerwartete Änderungen am Verhalten von Back-End-Services geht. Dies ist nicht bei allen Tools so, aber bei einem Großteil der traditionellen Lösungen.
Mit APIs dagegen ist das, was getestet wird, für die Ansteuerung durch Code anstatt durch Menschen ausgelegt. Der Testdatensatz lässt sich problemlos zusammenstellen und anschließend in einer Datei, einem Spreadsheet oder einer Datenbank hinterlegen. Der Treiber kann bestimmte Inputs vorgeben und weiß genau, welche Outputs zu erwarten sind. Ein solches Konzept auszuweiten, ist mit den richtigen Tools trivial.
Continuous Testing und Service Virtualisierung
Wie ist kontinuierliches Testen in den heutigen komplexen Umgebungen überhaupt möglich angesichts der Vielzahl von Abhängigkeiten? ING hat 150 Scrum-Teams und PayPal verfügt über 680 Scrum-Teams auf der ganzen Welt. Man stelle sich all die Abhängigkeiten vor! Niemand kann so etwas koordinieren, ohne sich im Gewirr dieser Abhängigkeiten zu verstricken.
Abhilfe kann hier nur die Simulation schaffen – beispielsweise, wenn kein Zugang zu einem Großcomputer existiert, der zum Testen notwendig ist, oder wenn gegen einen Third-Party-Service getestet wird. Die Service-Virtualisierung eröffnet hier die Möglichkeit zum kontinuierlichen Testen und Integrieren. Durch das Einbeziehen der Simulation in den Entwicklungsprozess arbeitet man von Anfang an mit Integrationstests.
Diese ebenso einfache wie bahnbrechende Idee findet in vielen anderen Branchen bereits Verwendung, nur in der Softwareindustrie noch nicht wirklich. Service-Virtualisierung ist vergleichbar mit einem Windkanal-Versuch: Das Flugzeug wird hineingestellt und durch das Simulieren aller denkbaren Umgebungsbedingungen getestet. Genau das ist erforderlich – und die Service-Virtualisierung ist das nötige Mittel dafür.
Den Einstieg bieten die Simulation zum Handling der Umgebung, ein Testdaten-Management-Tool zum Umgang mit den Inputs und den Ergebnissen und ein hervorragendes API-Test-Tool zum Erstellen und Ausführen der Tests. Mit diesen Werkzeugen gerüstet, lassen sich Dinge automatisieren, bei denen man das nie für möglich gehalten hätte. Eine solche Ausstattung macht nicht nur schneller, sondern verleiht auch die Flexibilität zum Testen jener Teile der Applikation, die normalerweise nicht besonders gut abgedeckt werden. Ohne die richtigen Tools lassen sich z.B. Exception Handling, fehlerhafte Inputs, Fehlerbedingungen und der Security-Komplex möglicherweise schwierig oder gar nicht testen.
Entwickler, die sich davon nicht überzeugen lassen und immer noch für das manuelle Testen plädieren – und die Erhebungen von voke zeigen, dass die Chance dafür 50:50 steht - sind es sich selbst schuldig, einen Blick auf die neuesten Tools auf diesem Gebiet zu werfen, um zu sehen, wie sie ihre Softwaretests beschleunigen und verbessern können.
Marc Brown ist Chief Marketing Officer bei Parasoft