Jede Codeänderung birgt die Gefahr, unerwünschte Nebeneffekte zu verursachen, die zu Fehlerzuständen in der Software führen. Um solche Fehler frühzeitig (und nicht erst beim Kunden) zu finden, müssen automatisierte Tests die bisherige, sowie auch neue Funktionalität der Software sicherstellen.
Zuerst sollten die Projektziele (Vision) und eine grobe Roadmap definiert werden. Das nötige Budget darf hierbei nicht vernachlässigt werden. Erwartungsgemäß ist der initiale Aufwand zur Entwicklung von vollautomatisierten Tests am Projektanfang viel höher als später dann im laufenden Betrieb. Ein gewisses "Grundrauschen" bleibt allerdings immer vorhanden, da Testergebnisse ausgewertet, Testfälle angepasst und neue Testfunktionalitäten implementiert werden müssen.
Nachdem die Abläufe und Prozesse der zu testenden Software klar definiert sind, erfolgt die Auswahl der Tools und Frameworks. Anschließend sollten in einem Kick-Off erste Prototypen vorgestellt werden, um somit die Akzeptanz für die eingesetzten Tools zu schaffen.
Automatisiertes Softwaretesting - die Einführung
Nach erfolgreichem Bauen der (neuen) Software wird die Testautomatisierung mit der zu testenden Softwareversion automatisch gestartet. Im Falle von installierbarer Software muss diese ohne manuelles Zutun im sogenannten "Silent-Modus" geschehen. Die meisten Software Installer bieten übrigens eine "Antwort-Datei" an, diese enthält die entsprechenden Dialoge und Eingaben als Textdatei, die der Benutzer beim erstmaligen Installieren angegeben hat.
Anschließend wird die Software automatisch eingerichtet und parametrisiert, sowie die korrekte Funktionsweise von Applikationen, Services, Browser, GUI, etc. getestet. Unterstützt das zu testende Softwareprodukt unterschiedliche Plattformen (Unix, Linux, Windows), so müssen all diese Betriebssysteme bestenfalls parallel und im nächtlichen Durchlauf getestet werden. Somit können langlaufende Tests effizient durchgeführt werden. Die Auslastung der Hardware-Ressourcen wird besser verteilt und schon morgens stehen die Testergebnisse zur weiteren Analyse bereit.
Laufen sehr viele Tests parallel und auf mehreren unterschiedlichen Testsystemen, dann ist der Einsatz eines virtuellen Computersystems also einer "virtuellen Maschine" (VM) empfehlenswert. Falls keine eigene Hardware genutzt werden soll, ist Cloud Computing eine interessante Alternative. Hierbei werden die IT-Ressourcen bereitgestellt, die auch benötigt werden.
Softwaretesting - das Robot Framework
Zur Entwicklung vollautomatisierter Softwaretests steht das Robot Framework für mich als klarer Favorit an erster Stelle. Entscheidende Faktoren sind u.a. das umfangreiche Baukastenprinzip zur Erweiterung des Funktionsumfangs, sowie die einfache Handhabung mit guter Integrationsmöglichkeit in bestehende Projekte. Als weiter Pluspunkt ist die einfache, tabellenartige Struktur der Testfälle zu nennen, hierdurch ist nur eine kurze Einarbeitungszeit nötig.
Das Robot Framework legt seinen Schwerpunkt auf Benutzertests (Abnahmetests und End-to-End Tests), wird aber auch für Systemtests und Smoke-Tests eingesetzt. Das in Python entwickelte Robot Framework steht als Open Source Software (Apache-Lizenz) zur freien Verfügung. Mit der Version 6 kann seit Februar 2023 ein neues Major Release installiert werden.
Die Installation des Frameworks gestaltet sich unkompliziert, da nur Python 3 und seine Paketverwaltung "pip" vorausgesetzt wird.
Lesetipp: Wie Sie Phyton richtig installieren
Zur Entwicklung und Testausführung stehen zwei etablierte Systeme zur Auswahl, die allerdings auch gemeinsam eingesetzt werden können, um die Vorteile der jeweiligen Umgebung zu genießen:
Testing-Automatisierung - Szenarien
Wie oben beschrieben, sollen möglichst alle Funktionen der Software automatisch getestet werden. Hierbei hilft uns das Robot Framework mit vielfältigen Bibliotheken und zusätzlichen Paketen die problemlos eingebunden werden können. Als Beispiel ist die sehr stabile SSH-Library zu nennen, die es ermöglicht, alle Tests auf Windows, Linux, Unix und Co. remote und wiederverwertbar auszuführen.
Im Bereich der End-to-End User Interface (UI) Tests für Webbrowser stehen seit Anfang 2021 die neue und moderne Browser Library von Playwright, oder das seit vielen Jahren etablierte Selenium bereit. Diese Bibliotheken können komfortabel in das Robot Framework eingebunden werden. Somit ist das Prüfen grafisch basierter Funktionen wie Mausklicks, oder Ein- und Ausgaben von Benutzern, sowohl auf Webseiten als auch in der GUI einfach umzusetzen.
Natürlich können selbstgeschriebene Testskripte ebenso problemlos in das Robot Framework integriert werden. Dabei spielt es keine Rolle, ob Java, Python oder Shell-Skripte bevorzugt werden, lediglich die Return-Werte 0 oder ungleich 0 sollten für ein funktionierendes Reporting beachtet werden.
Lesetipp: Von A wie Assembler bis V wie Visual Basic - Eine kleine Geschichte der Programmiersprachen
Softwaretesting - Auswertung
Umfangreiche Testreports werden vom Robot Framework automatisch als HTML-Seiten erzeugt. Zusätzlich können die Testergebnisse in ein Testmanagement System wie z.B. TestLink importiert werden. Um Fehler schneller analysieren zu können, ist eine genaue Fehlerbeschreibung mit Ausgabe der Logfiles sehr hilfreich. Bei sehr vielen Tests macht es zudem Sinn, Verantwortlichkeiten der Tests zu definieren. Hierdurch lassen sich gezielt per automatisierter E-Mail die entsprechenden Kolleginnen und Kollegen mit dem Fehlerbericht adressieren.
Als i-Tüpfelchen zur grafischen Aufbereitung der Testergebnisse ist die Integration mit zum Beispiel einem Splunk Dashboard zu sehen. Hierdurch lässt sich besonders bei sehr vielen Softwaretests auf einen Blick die aktuelle Situation komfortabel ablesen.
Wem das nicht reicht, der ist mit einem Ampelsystem bestens ausgestattet. Mit den zuvor definierten Schwellenwerten lassen sich somit die unterschiedlichen Farben einer USB-Ampel ansteuern. Kommt man beispielsweise morgens ins Büro und sieht die Ampel rot leuchten, dann ist sofort klar: es sind Fehler aufgetreten. Andernfalls kann bei einer "grünen" Ampel der Tag entspannt starten, da alle Tests durchgelaufen sind und die Software somit fehlerfrei getestet wurde!
Vollautomatisierte Tests sind besonders bei agiler Softwareentwicklung ein unerlässlicher Faktor, um kontinuierlich fehlerfrei Software zu gewährleisten. Durch nächtlich laufende Testautomatisierungen lassen sich wertvolle Ressourcen einsparen. Mit dem Robot Framework steht ein hervorragendes Tool zur Verfügung, mit dem alle Softwaretests automatisiert werden können. (bw)