Was ist ein Testautomatisierungs-Framework?
Ein Testautomatisierungsframework besteht aus einer Reihe von Tools, mit denen automatisierte Softwaretests durchgeführt werden. Testautomatisierungs-Frameworks bieten erhebliche Vorteile gegenüber manuellen Tests und werden häufig in der schnellen Softwareentwicklung verwendet. Mit diesen Frameworks können Softwareentwickler Tests erstellen, Tests ausführen und Testergebnisse analysieren. Ein Testautomatisierungsframework kann durch Code, Daten, eine grafische Benutzeroberfläche (GUI) oder eine Kombination aus diesen gesteuert werden.
Testautomatisierungs-Frameworks sind erforderlich, um die Anforderungen einer schnellen Softwareentwicklung zu erfüllen. Im klassischen Lebenszyklus der Wasserfall-Softwareentwicklung war das Testen der Software eine diskrete Phase, die nach der Implementierung oder Codierung durchgeführt wurde. Von Menschen durchgeführte Tests waren daher typisch.
Viele Entwicklungsteams haben das Wasserfallmodell durch verschiedene agile Softwareentwicklungsmethoden ersetzt, die normalerweise eine schnelle, iterative Entwicklung erfordern. Die rasche Entwicklung hat ein Bedürfnis nach schnellen Tests geschaffen. Mithilfe eines Testautomatisierungs-Frameworks kann ein Softwareteam häufige, automatisierte Tests auf Codebasis durchführen. Anstatt nach der Entwicklung eine separate Testphase zu erfordern, kann ein Team, das ein Testautomatisierungsframework verwendet, über Nacht eine vollständige Testsuite sowie kleinere Teile automatisierter Tests im Laufe des Tages ausführen, wenn Änderungen an der Quelle vorgenommen werden Code.
Der am häufigsten verwendete Framework-Typ ist das codegesteuerte Framework, mit dem White-Box-Tests durchgeführt werden. Code-gesteuerte Frameworks erfordern, dass Entwickler kleine Codeausschnitte in Form von Komponententests schreiben, um die Funktionalität oder Leistung der Software zu testen. Entwickler, die codegesteuerte Frameworks verwenden, müssen darauf achten, dass ihre Software auf testbare Weise geschrieben wird. Das heißt, der Code muss so modularisiert werden, dass ein Komponententest einen Codeausschnitt aufrufen und das Ergebnis überprüfen kann. Diese Frameworks enthalten normalerweise eine Implementierung von xUnit, wobei "x" abhängig von der getesteten Programmiersprache variiert.
GUI-gesteuerte Test-Frameworks werden verwendet, um Black-Box-Tests unter Verwendung eines Software-Tools wie ein Benutzer über Maus- und Tastatureingaben durchzuführen. Sie können aus Skripten bestehen, die von Entwicklern geschrieben wurden, um eine Reihe von Funktionen auszuüben, oder aus mit Werkzeugen erstellten Skripten, z. B. Record-and-Playback-Skripten. Ein möglicher Nachteil dieser Frameworks ist, dass das Skript bei jeder Änderung der GUI unterbrochen wird. Einige GUI-Automatisierungsframeworks generieren möglicherweise ein Skript, das von einem Entwickler im Falle von GUI-Änderungen bearbeitet werden kann, und andere erfordern möglicherweise, dass der Benutzer eine neue Aufnahme- und Wiedergabesitzung erstellt.
Datengesteuerte Test-Frameworks führen Softwaretests unter Verwendung von Daten durch. Diese Tests funktionieren normalerweise mit Datentabellen, die sowohl Eingaben als auch Ausgaben angeben. Die Daten können an verschiedenen Orten aufbewahrt werden, z. B. in Datenbanken, Tabellenkalkulationen oder Textdateien. Es können Skripte geschrieben werden, um Softwaremethoden auszuführen, die die Eingaben als Parameter verwenden, und um den Rückgabewert der Softwaremethode anhand der Ausgabe zu validieren. Alles andere, was variiert werden kann, wie beispielsweise die Umgebung, unter der der Test ausgeführt wird, kann ebenfalls mit den Daten gespeichert und vom Testskript getrennt werden. Ein Vorteil dieser Frameworks ist die Trennung von Daten und Logik, die häufig zu einer geringeren langfristigen Wartung führt.