28.11.2013, 06:00 Uhr

Testautomatisierung

Viele Argumente sprechen für die Automatisierung von Software-Tests. Die grosse Auswahl an möglichen Tools sollte die Entscheidung eigentlich leicht machen. Trotzdem ist der Weg dorthin nicht ganz einfach. Wie geht man am besten vor?
Der Autor ist Senior Testmanager bei der bbv Softwares AG in Luzern. Entwicklungsabteilungen, die sich für die Automatisierung ihrer Software-Tests entscheiden, scheinen am Anfang vor einem schier unüberwindlichen Berg an Aufgaben zu stehen – und vor der Frage, ob sich der ganze Aufwand am Ende überhaupt lohnen wird. In der Praxis hat sich gezeigt, dass beim Thema Testautomatisierung auf verschiedenen Stufen in der Software-Entwicklung angesetzt werden muss, damit diese erfolgreich umgesetzt werden kann. Dabei gilt: Je früher im Entwicklungsprozess Tests automatisiert werden, desto grösser ist der Nutzen. Prinzipiell lässt sich das Testen von Software in drei Stufen gliedern: entwicklungsnahe, funktionsnahe (Integrations- und Systemtests) sowie kundennahe Tests (Abnahmetests). In allen drei Bereichen kann Testautomation zum Einsatz kommen (vgl. Box). Entwicklungsnahe Tests Entwickler führen Tests durch, die sich meist relativ einfach als Unit-Tests automatisieren lassen. Diese werden immer wieder durch­geführt, also nach jedem Entwicklungsschritt, jedem Build beziehungsweise bei jedem Deployment. Sind alle Tests erfolgreich durchlaufen, wird weiterentwickelt. Oft geht es dabei allerdings nur um eine technische Prüfung. Die fachlichen Aspekte fehlen, obwohl man sie ohne viel Aufwand, aber mit grossem Nutzen für das spätere Produkt einbauen könnte. Ein Beispiel: Im täglichen Zahlungsverkehr in der Schweiz existieren keine Münzen, die kleiner als fünf Rappen sind. Im Gegensatz zu einem normalen Betragsfeld, beispielsweise bei einem Bankkonto, muss ein Betragsfeld für den Einsatz an einer Kasse daher mit entsprechend gerundeten Werten arbeiten. Dieser fachliche Aspekt könnte also bereits in einem automatisierten, entwicklungsnahen Test geprüft werden. Ein besonders wichtiger Punkt, der leider nur allzu oft vernachlässigt wird: Fehler müssen sofort behoben werden. Entsprechend sind auch hinfällig gewordene Prüfungen konsequent aus der Testsuite zu entfernen, zumindest durch Inaktivierung. Nächste Seite: Funktionsnaher Systemtest Funktionsnaher Systemtest Im Systemtest wird zum ersten Mal das komplette System funktionsnah und damit auch fachlich geprüft. Ziel ist hier, alle schweren und in der Produktion nur teuer zu behebenden Fehler frühzeitig in der Software zu finden. Jede Weiterentwicklung und jede Fehlerbehebung führt dazu, dass Tests wiederholt werden müssen. Diese Regressionstests sind das Haupteinsatzgebiet für Testautomatisierung. Dafür bieten Capture-&-Replay-Tools Hilfestellung: Zum Beispiel lassen sich damit GUI-Tests beschleunigen. Denken Sie an eine Textverarbeitung, bei der eine Datei mit mehreren Menüfunktionen gespeichert werden kann – ein Vorgang, der bei vielen mit der Hand durchgeführten Aktionen immer wieder benötigt wird. Er lässt sich schnell und ohne grossen Aufwand automatisieren, indem die Capture-Funktion den Vorgang aufzeichnet, der sich dann per Replay so oft wie nötig abspielen lässt. Ähnliches gilt für das Erzeugen von Adressdaten in einer Datenbank. Eine einfache Wiederholung des Vorgangs genügt hier jedoch nicht. Schon bei der Eingabe von Adressdaten reicht die aufgezeichnete Sequenz alleine nicht aus, denn derselbe Datensatz kann nicht zweimal angelegt werden. Das Problem lässt sich jedoch mit verschiedenen Ansätzen lösen: Entweder wird die Datenbasis zurückgesetzt oder der Datensatz wird mit einer weiteren Funktion in einem zweiten Testfall gelöscht. Testszenarien erstellen Bei der Erstellung von Testszenarien hat sich folgende Vorgehensweise bewährt: Die zu überprüfenden Abfolgen (Testszenarien) definieren.Das Testszenarium manuell durchführen.Prüfen, ob das Szenarium öfters benötigt wird.Das Testszenarium in Teilschritte zerlegen.Mit dem Vorgang beginnen, der am häufigsten benötigt wird.Die Umsetzung dem Tester und seinem Fachwissen überlassen.Das Testszenarium zeitnah und schrittweise vervollständigen. Um hier Kosten zu sparen, ist die schrittweise Vervollständigung eines Testszenariums entscheidend. Das heisst, erste kleine Umsetzungen werden sofort angewendet. Dadurch sind Einsparungen und Return on Investment schnell umsetzbar. Im Beispiel der Adress­eingabe wird zum Start nur der Eintrag angelegt. Per Hand muss dieser noch gelöscht oder in der Datenbank zurückgesetzt werden. In einem zweiten Schritt wird das Szenarium zum Löschen des Eintrags hinzugefügt. In Schritt drei werden weitere Prüfungen eingebaut. Alle Funktionen müssen mit der zu prüfenden Software ausgeführt werden. Wie beim entwicklungsnahen Test muss jedes automatisierte Testszenarium laufend auf das erwartete Ergebnis überprüft werden. Nicht erfolgreiche Durchläufe sind sofort zu prüfen, gegebenenfalls muss der Testfall angepasst oder inaktiv gesetzt werden. Im Fehlerfall wird sofort ein Befund erfasst. Fast immer helfen dabei Log-Daten und Screenshots. Nächste Seite: Kundennaher Abnahmetest Kundennaher Abnahmetest Der kundennahe Abnahmetest ist der letzte in der Reihenfolge der Teststufen. Testautomatisierung hat hier in der Regel nur einen geringen Einfluss auf Nutzen und Kosten. Eine Ausnahme sind inkrementelle und iterative Vorgehensweisen, bei denen sich Methoden wie Acceptance Test Driven Development (ATDD) oder Behavior Driven Development (BDD) etabliert haben. Exploratives Testen ist in der Abnahme sehr beliebt, weil es schnelles Feedback liefert und Risiken gezielt angegangen werden können. Das Recording der Benutzeraktionen spielt dabei eine wichtige Rolle. Hier kann Capture & Replay seine Stärken ausspielen. Tritt ein Fehler auf, weiss der Tester andernfalls oft nicht genau, was er gemacht hat. Besonders bei nicht regelmässig auftretenden Problemen fehlt häufig die Beweisfähigkeit. Die Aufzeichnung hilft, das Problem immer wieder anzuzeigen. Für eine erfolgreiche Testautomatisierung in kundennahen Abnahmetests wird ein Tool benötigt, das die Arbeit des Anwenders aufzeichnet und wieder abspielt. Diese Aufzeichnungen erleichtern die Auswertung und Beurteilung bei nicht gewünschtem Verhalten der neuen Software. Das Angebotsspektrum reicht dabei von kostenloser Freeware bis zu kommerziellen, professionellen Werkzeugen. Fazit: über alle Stufen Um Testautomatisierung vom Start weg erfolgreich und kostengünstig einzusetzen, müssen auf allen Entwicklungsstufen Tests automatisiert werden. Wichtig ist, dass jede Automatisierung in kleinen Schritten erfolgt, damit sie langfristig Vorteile bringt. Dies ist mit Aufwand verbunden, verspricht aber nachhaltigen Erfolg und Nutzen. Nächste Seite: Regeln für die Testautomation Regeln für die Testautomation ! KASTEN !


Das könnte Sie auch interessieren