Automatisierte Softwaretests spielen eine wichtige Rolle bei der Gewährleistung der Qualität in jeder Phase der Softwareentwicklung. Dieser Artikel beschreibt, wie Sie mit dem Robot Framework von Python loslegen können. [...]
Jede Codeänderung birgt das Risiko, unerwünschte Nebeneffekte zu verursachen, bei denen es zu einem Fehlerzustand in der Software kommt. Um solche Fehler frühzeitig (und nicht erst in der Produktion) zu finden, müssen automatisierte Tests sowohl die bisherige als auch die neue Funktionalität der Software validieren.
Zunächst sollten die Projektziele (Vision) und ein grober Projektplan (Roadmap) festgelegt werden. Das notwendige Budget darf dabei nicht vernachlässigt werden. Erwartungsgemäß ist der Aufwand für die Entwicklung vollautomatisierter Tests zu Beginn des Projekts deutlich höher als später im Betrieb. Ein gewisses „Grundrauschen“ bleibt aber immer, 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, werden die Werkzeuge und Frameworks ausgewählt. Anschließend sollten die ersten Prototypen in einem Kick-off vorgestellt werden, um für die eingesetzten Werkzeuge die notwendige Akzeptanz zu schaffen.
Automatisierte Softwaretests – Einführung
Nach erfolgreicher Erstellung der (neuen) Software wird die Testautomatisierung automatisch mit der zu testenden Softwareversion gestartet. Bei installierbarer Software muss dies ohne manuelles Eingreifen im sogenannten „silent mode“ erfolgen. Übrigens bieten die meisten Software-Installationsprogramme eine „Antwortdatei“ an. Eine Antwortdatei ist eine Textdatei, die die entsprechenden Dialoge und Eingaben enthält, die der Benutzer bei der Erstinstallation angegeben hat.
Die Software wird dann automatisch eingerichtet und parametrisiert, und die korrekte Funktion von Anwendungen, Diensten, Browser, GUI usw. wird getestet. Unterstützt das zu testende Softwareprodukt verschiedene Plattformen (Unix, Linux, Windows), müssen alle diese Betriebssysteme getestet werden, am besten parallel und in einem nächtlichen Lauf. Auf diese Weise können langlaufende Tests effizient durchgeführt werden, die Auslastung der Hardwareressourcen wird besser verteilt und die Testergebnisse stehen am Morgen zur weiteren Analyse zur Verfügung.
Läuft eine große Anzahl von Tests parallel auf mehreren unterschiedlichen Testsystemen, empfiehlt sich der Einsatz eines virtuellen Computersystems, einer virtuellen Maschine (VM). Wenn Sie keine eigene Hardware einsetzen wollen, ist Cloud Computing eine interessante Alternative. Hier werden die benötigten IT-Ressourcen ebenfalls zur Verfügung gestellt.
Testen mit dem Robot-Framework
Für die Entwicklung von vollautomatischen Softwaretests ist das Robot Framework mein klarer Favorit. Entscheidende Faktoren sind das umfangreiche Baukastensystem zur Erweiterung des Funktionsumfangs sowie die einfache Handhabung mit guten Integrationsmöglichkeiten. Ein weiterer Pluspunkt ist die einfache, tabellenartige Struktur der Testfälle, die nur eine kurze Einarbeitungszeit erfordert.
Das Robot Framework konzentriert sich auf Benutzertests (Akzeptanztests und End-to-End-Tests), wird aber auch für Systemtests und Smoke-Tests eingesetzt. Das in Python entwickelte Robot Framework ist als Open-Source-Software frei verfügbar (Apache-Lizenz). Ein neues Major Release, Robot Framework 5.0, wurde Ende März 2022 veröffentlicht.
Die Installation des Frameworks ist unkompliziert, da lediglich Python 3 und dessen Paketmanager „pip“ benötigt werden.
Für die Entwicklung und Testausführung stehen zwei etablierte Systeme zur Verfügung, die aber auch gemeinsam genutzt werden können, um die Vorteile der jeweiligen Umgebung zu nutzen. RIDE ist die Robot-eigene Entwicklungsumgebung (IDE), die Neueinsteigern den Umgang mit dem Framework leicht macht.
RED ist eine Eclipse-basierte Entwicklungsumgebung, die erfahrene Softwareentwickler begeistern wird.
Testautomatisierungs-Szenarien
Wie oben beschrieben, sollen alle Funktionen der Software automatisch getestet werden. Das Robot Framework hilft uns dabei mit einer Vielzahl von Bibliotheken und zusätzlichen Paketen, die einfach integriert werden können. Ein Beispiel ist die sehr stabile SSH-Bibliothek, die es ermöglicht, alle Tests remote und wieder verwendbar auf Windows, Linux und Unix auszuführen.
Im Bereich des End-to-End User Interface (UI)-Tests für Webbrowser stehen die neue und moderne Browser-Bibliothek von Playwright (seit Anfang 2021) oder das alteingesessene Selenium-Framework zur Verfügung. Diese Bibliotheken können bequem in das Robot Framework integriert werden. Damit lassen sich grafisch basierte Funktionen wie Mausklicks oder Benutzereingaben und -ausgaben auf Webseiten einfach testen.
Natürlich können auch selbst geschriebene Testskripte problemlos in das Robot Framework integriert werden. Dabei spielt es keine Rolle, ob Java-, Python- oder Shell-Skripte bevorzugt werden, lediglich die Rückgabewerte von 0 oder nicht 0 müssen für ein sinnvolles Reporting beachtet werden.
Software testing – Auswertung
Umfangreiche Testberichte werden vom Robot Framework automatisch als HTML-Seiten generiert. Darüber hinaus können die Testergebnisse in ein Testmanagementsystem wie TestLink importiert werden. Um Fehler schneller analysieren zu können, ist eine genaue Fehlerbeschreibung mit Ausgabe der Logdateien sehr hilfreich. Bei einer Vielzahl von Tests ist es zudem sinnvoll, die Verantwortlichkeiten für die Tests zu definieren. So ist es möglich, die entsprechenden Kollegen mit dem Fehlerbericht über eine automatisierte E-Mail anzusprechen.
Das i-Tüpfelchen für die grafische Darstellung der Testergebnisse ist die Integration mit z.B. einem Splunk Dashboard. So lässt sich gerade bei einer großen Anzahl von Softwaretests die aktuelle Situation bequem einsehen.
Wenn das Dashboard nicht ausreicht, ist ein Ampelsystem die beste Lösung. Mit den vorher definierten Schwellenwerten können die verschiedenen Farben einer USB-Ampel verwendet werden.
Kommt man zum Beispiel morgens ins Büro und sieht die Ampel rot leuchten, ist sofort klar: Es sind Fehler aufgetreten. Sieht man dagegen eine grüne Ampel, kann der Tag entspannter beginnen, weil alle Tests gelaufen sind und die Software ohne Fehler bestanden hat.
Gerade in der agilen Softwareentwicklung sind vollautomatisierte Tests ein unverzichtbarer Faktor, um kontinuierlich fehlerfreie Software zu gewährleisten. Durch Testautomatisierungen, die nachts ablaufen, können wertvolle Ressourcen eingespart werden. Das Robot Framework ist ein hervorragendes Werkzeug, mit dem sich alle Softwaretests automatisieren lassen.
*Timo Füg ist Softwareentwickler mit dem Schwerpunkt Software-Qualitätssicherung. Er arbeitet bei der Uniserv GmbH als technischer Leiter der Software-Qualitätssicherung.
Be the first to comment