Unter Testautomation ist die Automatisierung von Aktivitäten im Test zu verstehen, sowohl beim Softwaretest als auch beim automatisierten Test von Hardware, dem Hardwaretest. 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.
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.
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.