Test-Harnisch
# Test-Harnisch

In der Qualitätssicherung von Software bezeichnet ein Test-Harnisch (engl. test harness) bzw. Testrahmen eine Sammlung von Software und Testdaten, die zum systematischen automatisierten Testen eines Programms unter verschiedenen Umgebungsbedingungen verwendet wird. Dabei werden sowohl das Verhalten als auch die Ausgabe der Software überwacht und ausgewertet.

## Allgemeines

Ein Test-Harnisch besteht aus zwei Hauptbestandteilen: der Testausführungs-Engine, welche für die Abarbeitung der Testlogik verantwortlich ist und das Testdaten-Repository, welches die Testskripte, Testprogramme und sonstige Testressourcen beinhaltet. In der Regel sind die erstellten Testskripte sehr stark auf die jeweils zu testende Umgebung angepasst und daher nicht oder nur eingeschränkt in anderen Bereichen wiederverwendbar.

Die Erstellung eines Test-Harnisch dient der Testautomatisierung, da hiermit alle (oder zumindest die meisten) Programmfunktionen ohne Benutzerinteraktion ausgeführt werden können. Die Ergebnisse werden ausgegeben und zur Ermittlung des Testergebnisses mit Vorgabewerten verglichen. Ein Test-Harnisch wird häufig unter Verwendung eines Testautomatisierungs-Frameworks – wie z. B. STAF oder TPT – erstellt. Solche Frameworks bieten zum Beispiel die Möglichkeit, Tests parallel auf verschiedenen Systemen auszuführen oder die Testumgebung bei Bedarf selbständig einzurichten, indem vordefinierte Aktionen ausgeführt werden (z. B. Kopieren von Tests auf alle Rechner in der Testumgebung).

## Webentwicklung

In der Webentwicklung werden als Test-Harnische kleine Webanwendungen eingesetzt, welche abhängig von der verwendeten Portnummer unterschiedliche Fehlerszenarien von REST- oder SOAP-Schnittstellen simulieren.

### Beispiele

* Erfolgreicher Request mit HTTP-Statuscode 200 und gültigen Daten
* Response mit HTTP-Statuscode 200 und ungültigen Daten
* Response mit ungültigen HTTP-Headern
* Response mit hoher Latenz oder Timeout
* Request auf Port, welcher einen bestimmten HTTP-Statuscode zurückliefert (z. B. Statuscode 301 auf Port 20301)
* Request auf Port mit ungültigem SSL- bzw. TLS-Zertifikat
* Request auf IP-Adresse oder Port ohne Service

## Ziele

* Automatisierung des Testablaufs
* Ausführung von Testsuites und Testfällen
* Generierung von Testberichten

## Vorteile

* Erhöhte Produktivität durch geringeren Bedarf an Personenstunden pro Testzyklus
* Vereinfachung regelmäßiger Ausführung von Regressionstests
* Verbesserte Qualität von Softwarekomponenten und Anwendungen

## Quellen

* What should a test harness include?
* http://www.testingreflections.com/node/view/3655
* ↑ Software Testing Automation Framework (STAF)
* ↑ Offizielle Website von PikeTec und TPT
* ↑ Michael T. Nygard: Release It! Design and Deploy Production-Ready Software. O’Reilly, 2007, ISBN 978-0-9787392-1-8 (englisch, 326 S.).
