Suchen

Expertenbeitrag

Arthur Hicken

Arthur Hicken

, Parasoft® Deutschland GmbH

IoT-Testing

IoT: Warum sollte man Softwaretests automatisieren?

| Autor/ Redakteur: Arthur Hicken / Redaktion IoT

Um Sicherheit und Qualität einer Software zu gewährleisten, sind geeignete Tests nötig. Statt diese manuell durchzuführen bietet es sich an, auf automatisierte Tools zu setzen.

Das automatisierte Testen ist Voraussetzung für einen modernen und flexiblen Testprozess.
Das automatisierte Testen ist Voraussetzung für einen modernen und flexiblen Testprozess.
( Shutterstock )

In Zeiten von IoT spielt die Sicherheit der Software eine immer wichtigere Rolle, und damit auch Tests um diese zu gewährleisten. Meistens werden Softwaretests aktualisiert, weil es der Mitbewerber auch macht. Weit verbreitet ist die Ansicht, die Automatisierung sei meistens die Kosten nicht wert. Natürlich sind bestimmte Arten von Software schwieriger und teurer zu testen als andere, so dass das Wertversprechen von der jeweiligen Anwendung und Branche abhängt. Insgesamt aber gibt es einen klaren Trend hin zur Testautomatisierung. Mit Testautomatisierung ist in diesem Beitrag die Testausführung gemeint, also das Ausführen der Tests und das Auswerten der Resultate ohne menschliches Zutun. Die automatisierte Ausführung ist Voraussetzung für einen modernen, flexiblen (und agilen) Testprozess.

Wann Testautomatisierung notwendig ist

Möchte man auf die Agile-, DevOps- und Continuous-Initiativen aufspringen, bleibt keine andere Wahl, denn ohne Automatisierung gerät man hier unweigerlich ins Hintertreffen.

Dies bestätigt Theresa Lanowitz, Analystin bei voke Research, in einem Gespräch. Als Marktforschungsunternehmen fokussiert Voke Spezialisten im Bereich Enterprise IT und Software seit 2006. Im Jahr 2016 stellte man zum ersten Mal in 10 Jahren fest, dass Unternehmen mehr über Qualität als über schnellere Releases besorgt sind. Trotzdem halten sich die Aktivitäten in punkto automatisiertes Testen sehr in Grenzen. Die manuellen Tests werden niemals aufhören, auch deren Notwendigkeit nicht. Aber um neue Releases schneller vorzustellen, ist die Testautomatisierung notwendig. Wenn die Benutzererfahrung besser werden soll, reicht es nicht nur schnell zu sein – sondern Schnelligkeit muss mit Qualität einhergehen.

Laut Theresa Lanowitz erfordert dies die ‚extreme Automation‘, was sie wie folgt erläutert: „Extreme Automatisierung ist genau das, wonach es klingt: Automatisierung von allem, was nur irgendwie geht und Eliminierung menschlicher Interaktionen, um sicherzustellen, dass die vor der Produktion gefundenen Defekte nicht bis in die Produktion gelangen. Es geht dabei nicht nur um das Automatisieren des Prüfprozesses, sondern um die Automatisierung von allem. Zu den Erkenntnissen, die wir gewonnen haben, gehört die Tatsache, dass die Entwickler keine automatisierten Modultests mögen. Einer der Befragten kommentierte dies mit den Worten: ‚Einige Dinge ändern sich eben nie‘.“

Um den erforderlichen hohen Automatisierungsgrad zu erreichen, ist es notwendig, jeden manuellen Arbeitsgang zu überdenken, und bei einigen Schritten unbedingt über den Tellerrand hinauszublicken. Die in das Ausarbeiten einer guten und stabilen Automatisierung investierte Zeit macht sich von selbst bezahlt – nicht nur durch eine unmittelbare Zeitersparnis, sondern indem coole Dinge wie Continuous Delivery möglich werden.

Schöne API-Welt

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! Denn die Benutzeroberfläche (User Interface – UI) ist die Ursache der meisten Probleme, 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. Und dies passiert 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 einen 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 Pay Pal 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.

Über den Autor

Arthur Hicken

Arthur Hicken

, Parasoft® Deutschland GmbH