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 |

