Was ist ein Testgeschirr? (Beispiele)
⚡ Intelligente Zusammenfassung
Test Harness in Software Testing vereint Stubs, Treiber, Testdaten und Ausführungswerkzeuge, sodass Teams Module validieren können, bevor jede Abhängigkeit existiert. Dadurch werden blockierte Testzyklen in wiederholbare, automatisierte Verifizierung umgewandelt, die Ergebnisse ohne manuellen Aufwand liefert.

Testgeschirr im Softwaretest
Testgeschirr im Softwaretest ist eine Sammlung von Stubs, Treibern und anderen unterstützenden Tools, die zur Automatisierung der Testausführung erforderlich sind. Das Test-Harness führt Tests mithilfe einer Testbibliothek aus und generiert Testberichte. Der Test-Harness enthält alle Informationen, die zum Kompilieren und Ausführen eines Tests erforderlich sind, z. B. Testfälle, Zielbereitstellungsport (TDP), zu testende Quelldatei, Stubs usw.
Vereinfacht gesagt, umschließt ein Testsystem die zu prüfende Komponente in einer kontrollierten Umgebung. Fehlende benachbarte Module werden durch kleine Dummy-Programme ersetzt, die Eingaben stammen aus einem festen Datensatz, und jedes Ergebnis wird in ein Protokoll geschrieben, anstatt auf dem Bildschirm angezeigt zu werden. In den folgenden Abschnitten wird erläutert, warum Teams ein solches Testsystem entwickeln, woraus es besteht, wie es funktioniert und wo es eingesetzt wird.
Warum Testgeschirr verwenden?
Ein Testsystem dient dazu, Wartezeiten im Testzyklus zu eliminieren. Da es alles simuliert, was noch nicht bereit ist, … Softwaretest Das Team kann bereits im ersten Sprint mit der Überprüfung des Verhaltens beginnen, anstatt erst nach der finalen Integration. Das folgende Diagramm zeigt, wo ein Testframework zwischen den Testskripten und der zu testenden Anwendung positioniert ist.
- Automatisieren Sie den Testprozess
- Führen Sie Testreihen von Testfällen aus
- Generieren Sie zugehörige Testberichte
- Unterstützung für das Debuggen
- Um die Testergebnisse für jeden einzelnen Test aufzuzeichnen
- Hilft den Entwicklern, die Codeabdeckung auf Codeebene zu messen
- Steigern Sie die Produktivität der Anlage durch Automatisierung
- Verbessern Sie die Qualität von Softwarekomponenten und Anwendungen
- Um die komplexen Bedingungen zu bewältigen, die für Tester nur schwer zu simulieren sind
Diese Vorteile sind besonders bei kurzen Releasezyklen relevant. Wenn Code mehrmals pro Woche ausgeliefert wird, verursacht ein Fehler, der bis zur Integrationsphase erhalten bleibt, weitaus höhere Kosten. tracEs ist besser, als wenn man am Tag seiner Entstehung an einem Stumpf hängen bleibt. Dieser Erfolg stellt sich jedoch erst ein, wenn das Geschirr aus den richtigen Teilen zusammengesetzt ist.
Wichtige Komponenten eines Testaufbaus
Ein Testsystem ist kein einzelnes Programm, sondern eine Zusammenstellung von Teilen, von denen jedes ein Hindernis beseitigt, das ansonsten einen unbeaufsichtigten Testlauf verhindern würde.
- Testskripte: Automatisierte Anweisungen, die die auszuführenden Schritte und das zu erwartende Ergebnis beschreiben, verfasst gemäß dem Testskript Konventionen.
- Testausführungs-Engine: Der Runner, der Skripte der Reihe nach liest, Abhängigkeiten auflöst und die sequentielle oder parallele Ausführung auslöst.
- Testdaten-Repository: Eingabewerte, die außerhalb des Skripts in CSV-, JSON-, XML- oder einer vordefinierten Datenbank gespeichert sind und häufig von folgenden Quellen befüllt werden: Testen Sie Tools zur Datengenerierung.
- Treiber: Dummy-Aufrufmodule, die die zu testende Komponente aufrufen, wenn die eigentliche darüberliegende Schicht, wie beispielsweise eine Benutzeroberfläche, noch nicht fertiggestellt ist.
- Stummel: Dummy-Module, die vordefinierte Antworten zurückgeben, beispielsweise ein Zahlungsdienst, der „Zahlung erfolgreich“ zurückgibt, ohne eine Bank zu kontaktieren.
- Ausgabevalidierung: Assertionslogik, die die tatsächliche Ausgabe mit dem erwarteten Wert vergleicht und jeden Fall als bestanden oder nicht bestanden kennzeichnet.
- Protokollierungs- und Berichtsschicht: Zeitstempel, Screenshots, Konsolenausgabe und eine Zusammenfassung des Laufs, die jeden Fehler sichtbar machen tracanschließend essbar.
Entfernt man ein einziges Teil, verliert der Kabelbaum seine automatische Funktion, da dann bei jeder Fahrt etwas von Hand nachgerüstet werden muss.
Wie funktioniert ein Testkabelbaum?
Ein Harness wiederholt bei jeder Ausführung dieselbe Schleife. Die Kenntnis dieser Schleife verrät Ihnen genau, wo Ihr eigenes Harness ansetzen muss. Automatisierungstests Assets werden eingebunden, und welcher Schritt schlägt fehl, wenn ein Durchlauf rot wird.
- Bereiten Sie die Umgebung vor: Das Kabelbündel löst die Umgebungskonfiguration auf, öffnet Verbindungen und lädt die Geräte, sodass jeder Durchlauf vom gleichen bekannten Zustand aus startet.
- Laden Sie die Testskripte: Skripte, Parameter und erwartete Ergebnisse werden aus dem Repository gelesen. Zur Laufzeit muss nichts eingegeben werden, wodurch ein zweiter Durchlauf mit dem ersten vergleichbar ist.
- Ersetzen Sie die fehlenden Module: Fahrer stehen stellvertretend für Anrufer, die noch nicht existieren, und Stubs stehen stellvertretend für Dienste, die noch nicht fertiggestellt, instabil oder zu teuer sind.
- Die zu testende Anwendung aufrufen: Die Ausführungs-Engine löst den im Skript beschriebenen Workflow aus, sei es ein Methodenaufruf oder ein API Anfrage oder Browserinteraktion.
- Erfassen Sie die tatsächliche Ausgabe: Rückgabewerte, Antwortnutzdaten, Datenbankzeilen, Protokollzeilen und der Bildschirmstatus werden alle während ihrer Entstehung protokolliert.
- Vergleich mit den erwarteten Ergebnissen: Der Ausgabevalidator prüft jeden erfassten Wert. Jede Abweichung kennzeichnet den Fall als fehlgeschlagen und protokolliert sowohl den erwarteten als auch den beobachteten Wert.
- Protokollieren und berichten: Das Geschirr schreibt einen Zeitstempel trace des Laufs und generiert einen Bericht über Erfolg/Misserfolg, den ein Entwickler lesen kann, ohne irgendetwas erneut ausführen zu müssen.
- Abreißen: Temporäre Daten, Verbindungen und Stub-Zustände werden gelöscht, damit der nächste Fall keine Reste von diesem übernehmen kann.
💡 Tipp: Aktualisieren Sie Ihre Stubs, sobald sich das eigentliche Modul ändert. Ein Stub, der noch das Format des letzten Quartals verwendet, meldet einen erfolgreichen Durchlauf, obwohl die Live-Integration bereits unterbrochen ist.
Ein praktisches Beispiel verdeutlicht den Ablauf. Angenommen, die Checkout-Seite ist bereit, das Zahlungsgateway jedoch nicht. Ein Treiber sendet die Anfrage, die normalerweise die Schnittstelle senden würde. Ein Stub antwortet zunächst mit „Zahlung erfolgreich“ und dann mit einem Timeout. Der Validator bestätigt im einen Fall die Bestellung und fordert im anderen Fall zur Wiederholung auf. Beide Abläufe werden geprüft, bevor das Gateway-Team auch nur eine Zeile Code schreibt.
Es gibt zwei Kontexte, in denen Test Harness verwendet wird
Derselbe Mechanismus dient zwei unterschiedlichen Zwecken, und die Terminologie ändert sich leicht, je nachdem, in welchem Bereich man sich befindet.
- Automatisierungstests: Es enthält die Testskripte, Parameter, die zum Ausführen dieser Skripte und zum Sammeln von Ergebnissen zur Analyse erforderlich sind
- Integrationstests: Es wird verwendet, um zwei Code- oder Moduleinheiten zusammenzustellen, die miteinander interagieren, um zu überprüfen, ob das kombinierte Verhalten wie erwartet ist oder nicht
Betrachten wir ein Anmeldemodul und ein Profilmodul, die ein Benutzertoken austauschen müssen. Im Integrationskontext simuliert ein Treiber eine erfolgreiche Anmeldung und übergibt das Token an die Profillogik, sodass die DatenzuordnungpingDie Berechtigungsprüfung und die Bildschirmdarstellung können alle überprüft werden, bevor der eigentliche Authentifizierungsdienst abgeschlossen ist. Im Automatisierungskontext wird dasselbe Fallpaar einer Testsuite hinzugefügt und bei jedem Build erneut ausgeführt, ohne dass dies von jemandem manuell erledigt wird.
Arten von Testkabelbäumen
Da Software in Schichten aufgebaut ist, ist ein Testsystem in der Regel auf die Schicht spezialisiert, die es überprüft. Vier Typen decken nahezu jedes Projekt ab.
A Unit-Test-Rahmen Es testet die kleinsten Codeabschnitte, wie z. B. einzelne Funktionen oder Methoden, wobei jede Abhängigkeit durch einen Stub ersetzt wird. Es ist am schnellsten auszuführen und am günstigsten zu warten, weshalb Unit-Test Testsuiten sind üblicherweise die erste Infrastruktur, die ein Team erstellt. Ein typischer Anwendungsfall ist das Testen einer Steuerberechnung, ohne das Abrechnungsmodul zu verändern.
An Integrationstestrahmen Sie prüft, ob zwei oder mehr Module korrekt zusammenarbeiten, und ist die Schicht, in der Datenabweichungen und fehlgeschlagene Aufrufe sichtbar werden. Es handelt sich um das im Abschnitt beschriebene Framework. Integrationstests Im obigen Kontext geht es beispielsweise darum zu überprüfen, ob ein Bestellservice die richtige Nutzlast an einen Zahlungsservice übergibt.
A Systemtestvorrichtung steuert einen vollständigen End-to-End-Workflow über Schnittstelle, Dienst und Datenbank hinweg, so Systemtests kann bestätigen, dass die Geschäftsregeln gelten, sobald alle Ebenen vorhanden sind. Regressionstest-Rahmen Anschließend wird die gesamte Testsuite nach jeder Änderung erneut ausgeführt, was den Effekt auslöst. Regressionstests Praktisch dann, wenn bei jedem Merge mehrere hundert Szenarien wiederholt werden müssen.
Testkabelbaumwerkzeuge
Jeder dieser Typen basiert in der Regel auf einem bestehenden Werkzeug und wird nicht von Grund auf neu entwickelt. Die beiden klassischen Optionen bleiben die Unit-Level-Frameworks:
- Juni: Werkzeug, das während der Verwendung verwendet wird Java
- Nunit: Zur Verwendung verwendetes Werkzeug .Net-Framework
Neben diesen beiden ergänzen die meisten Teams die Funktionalität durch Tools, die das Framework auf den Browser, die API-Schicht oder das Lastprofil ausweiten. Die folgende Tabelle ordnet die gängigen Optionen ihrer jeweiligen Funktion zu.
| Werkzeug | am besten geeignet für | Rolle innerhalb des Geschirrs |
|---|---|---|
| JUnit | Java Unit- und Integrationssuiten | Lieferanten, Einrichtungsgegenstände und Zusicherungen |
| NUnit | C#- und VB.NET-Code auf der .NET-Plattform | Gleiche Rolle wie JUnit für .NET-Sprachen |
| Selenium | Browserbasierte End-to-End-Abläufe | Fungiert als Treiber für die Benutzerschnittstellenschicht |
| TestNG | Large Java Suiten, die Gruppen benötigenping und parallele Läufe | Dient als Testausführungs-Engine |
| PyTest | Python Dienste und API-Level-Prüfungen | Die Anschlüsse dienen gleichzeitig als Stubs und Datenanbieter. |
| Apache JMeter | Last-, Belastungs- und Leistungsszenarien | Erzeugt synthetischen Datenverkehr für die zu testende Anwendung. |
| Postman | REST API-Verbindungtract-Verifizierung | Bietet simulierte Server, die als Ersatz für unfertige Endpunkte dienen. |
Egal für welche Kombination Sie sich entscheiden, der Kabelbaum amortisiert sich erst, wenn er unbeaufsichtigt läuft. Schließen Sie ihn daher an einen kontinuierliche integration Erledigen Sie den Job frühzeitig. Eine größere Auswahl an Optionen finden Sie in der Guru99 Testwerkzeuge Zusammenfassung. Eine Unterscheidung sorgt noch immer für Verwirrung, und es lohnt sich, diese zu klären, bevor Sie eine Entscheidung treffen.
Test-Harness vs. Test-Framework
Ein Testharness und ein Automatisierungsframework werden oft als dasselbe betrachtet, obwohl sie unterschiedliche Fragen beantworten: Der Testharness führt einen Test aus, während das Framework die Struktur darstellt, innerhalb derer Tests entworfen werden. Die folgende Tabelle stellt sie einander gegenüber.
| Test Harness | Testautomatisierungs-Framework |
|---|---|
| Ein Test-Harness besteht aus Treibern und Stubs, kleinen Dummy-Programmen, die mit der zu testenden Software interagieren | Es handelt sich um eine Reihe von Prozessen, Verfahren, Abs.tracDas Konzept und eine Umgebung, in der automatisierte Tests entworfen und implementiert werden |
| Sie können in Test Harness kein Skript „Aufzeichnen und Wiedergeben“ verwenden | Ein Tester kann in diesem Framework manuell ein Skript zur „Aufzeichnung und Wiedergabe“ erstellen |
| Der Test-Harness enthält alle Informationen, die zum Kompilieren und Ausführen eines Tests erforderlich sind, z. B. Testfälle, Zielbereitstellungsport (TDP), zu testende Quelldatei, Stubs usw. | Das Testautomatisierungs-Framework enthält Informationen wie Testbibliothek, Testtools, automatisierte Testpraktiken, eine Testplattform usw. |
| Ein Testgeschirr wird kategorisiert in Automatisierungstests Integrationstests |
Automatisierungs-Framework Beispiele Datengesteuertes Testen Schlüsselwortgesteuertes Testen Modularitätsgesteuertes Testen Hybridtests Modellbasiertes Testen Code getriebenes Testen Verhaltensgesteuertes Testen |

