Unter Testautomatisierung (auch Testautomation) ist die Automatisierung von Aktivitäten im Test zu verstehen, sowohl beim Softwaretest als auch beim automatisierten Test von Hardware, dem Hardwaretest.
Inhaltsverzeichnis |
In der Softwareentwicklung ist es besonders wichtig, einen festen, definierten Status der Software zu kennen, so z. B.:
Automatische Tests, die jeden Tag zu definierten Zeiten die Software testen, machen Software bezüglich ihrer Qualität erst messbar und zeigen mögliche Nebeneffekte von vorgenommenen Änderungen direkt und erkennbar an. Sie dienen als direkte Rückkopplung für den Entwickler, der unter Umständen nicht in der Lage ist, das Gesamtsoftwaresystem auf einmal zu überschauen, zur Erkennung von Nebeneffekten und Folgefehlern.
Die Testautomatisierung liefert demnach eine Metrik der Anzahl der erfolgreichen Testfälle pro Testlauf. Ist die Software so messbar, können jederzeit folgende Fragen beantwortet werden:
Zur Beispielfrage: „Wann ist ein Programmfehler behoben?“ lautet die Antwort in diesem Fall:
Eine Rückmeldung liefert nur der ständige Test, und dieser ist durch Automatisierung erst möglich und realisierbar.
Prinzipiell lassen sich folgende Aktivitäten automatisieren:
Zur Testspezifikation werden Sprachen unterschiedlicher Abstraktionsstufe verwendet: einfache tabellenartige Notationen für Testdaten und Funktionsaufrufe, Skriptsprachen (z. B. TCL, Perl, Python), imperative Sprachen (z. B. C, TTCN-3), objektorientierte Ansätze (JUnit) und deklarative und logische Formalismen sowie modellbasierte Ansätze. Dabei wird eine weitgehende und möglichst vollautomatische Übersetzung von „höheren“ in „niedrigere“ Artefakte angestrebt.
Zur Testfallerstellung kann das Datenmodell einer Software direkt genutzt werden. Basierend auf dem Überlegung von Bob Jenkins zum pairwise testing gibt es ein einfaches DOS-basiertes Tool Jenny, um Testfälle synthetisch zu generieren. Es werden die relevanten Datenfelder und deren Schlüsselwerte bzw. konkrete Testdaten eingegeben und durch Permutation wird ein optimierter Testdatenset erstellt. Die erstellten Testfälle können auch im Zuge von nicht-automatisierten Testdurchführungen genutzt werden und beschleunigen schon durch die automatisierte Erstellung den Testaufwand, und durch den optimalen Aufbau der Testfälle kann bei geringerer Testanzahl eine höhere Testqualität erreicht werden.
Liegt eine Testspezifikation nicht schon, wie oben beschrieben, in ablauffähiger Sprache vor, sondern in einer formaleren Form (z. B. UML, Excel-Tabelle, oder Ähnliches), kann diese mit geeigneten Werkzeugen in ablauffähige Testscripte konvertiert bzw. übersetzt werden. Dieses Verfahren nennt man automatische Testscripterstellung.
Die Testdurchführung erfolgt heute weitgehend durch vollautomatische Testwerkzeuge. Abhängig vom Zielsystem kommen hier Unit-Test-Tools, Testsysteme für Grafische Benutzeroberflächen, Lasttestsysteme, Hardware-in-the-loop-Prüfstände oder andere Werkzeuge zum Einsatz.
Zur Testauswertung muss das erhaltene Testergebnis mit dem Erwartungswert verglichen werden. Im einfachsten Fall ist hier nur ein Tabellenvergleich vorzunehmen; falls das Sollverhalten allerdings durch logische Constraints definiert ist oder extrem komplexe Berechnungen enthält, kann das so genannte Orakelproblem auftreten. Wesentlich aussagekräftiger sind jedoch Ansätze bei denen zwei Software-Versionen oder zwei Testzyklen und damit zwei Testergebnisse gegen das Soll-Ergebnis verglichen werden. Hier lassen sich Tendenzaussagen und Qualitätsstatistiken berechnen.
Bei der Testdokumentation wird aus den erhaltenen Testergebnissen ein nachvollziehbarer und verständlicher Testbericht erzeugt. Hierfür können Dokumentgeneratoren und Schablonenwerkzeuge eingesetzt werden.
Aufgabe der Testadministration ist die Verwaltung und Versionierung von Testsuiten sowie die Bereitstellung einer adäquaten Benutzungsumgebung. Neben Standardwerkzeugen (z. B. CVS, Eclipse) gibt es eine Reihe von Spezialwerkzeugen, die speziell auf die Belange des Softwaretests zugeschnitten sind.
Werkzeuge für automatisiertes Testen von Software sind z. B.