Datengetriebenes Testen

Was ist datengetriebenes Testen?

Die Möglichkeit, Tests datengetrieben auszuführen, ist einer der zentralen Vorteile von Testautomatisierung. Bei dieser Art des Testens bezieht der Test Eingabewerte von einer Datenquelle, wie zum Beispiel einer Excel-Tabelle oder einer Datenbank. Der Test wird dann für jede in der Datenquelle vorhandene Zeile automatisch iteriert. So kann ein automatisierter datengetriebener Test also 100 Testfälle in einem einzigen Testlauf abdecken, wo bei einem manuellen Zugang 10 Tester 10 Testfälle mit unterschiedlichen Eingabewerten ausführen und auf ihr Resultat überprüfen müssten.

Die Datenquelle für einen Testfall, der den Workflow für die Nutzerregistrierung prüft, würde typischerweise folgende Zeilen und Spalten enthalten:

Vorname Nachname Benutzername Passwort Erwartetes Ergebnis
John Jones jjones14 Mypass123 Erfolg
Jody Jones jjones14 Mypass456 Fehler
Julia Jones jjones15 mypass Fehler
Datenquellen dienen nicht nur dazu, den Test mit Eingabewerten zu füttern. Sie können auch Werte für Validierungen enthalten, die dann während des Testlaufs mit dem Ergebnis, das die eingegebenen Werte verursachen, verglichen werden können. In der obigen Tabelle sind das die einfachen Werte „Erfolg“ oder „Fehler“ in der Spalte „Ergebnis“. Bei einem Taschenrechner könnte die Tabelle wie folgt aussehen, wenn die Multiplizierfunktion geprüft werden soll.
Eingabe 1 Eingabe 2 Erwartetes Ergebnis
12 12 144
15 50 750
-1 18 -18
In beiden Beispielen kann das tatsächliche Ergebnis mit dem erwarteten verglichen werden. Je nach Resultat ist der Test erfolgreich oder schlägt fehl.

Die Vorteile von datengetriebenem Testen

Geringere Ausführungsdauer

Einer der wohl deutlichsten Vorteile ist die stark verringerte Ausführungsdauer, da eine große Anzahl an Testfällen schnell und automatisiert ausgeführt werden können. Das betrifft besonders repetitive Testfälle, die Corner, Edge und Boundary Cases abdecken.

Höhere Genauigkeit

Auch dem gewissenhaftesten Tester können Fehler unterlaufen, besonders bei der manuellen Eingabe von großen Datenmengen. Beim datengetriebenen Testen ist sichergestellt, dass exakt jene Daten in den Test übernommen werden, die in der genutzten Datenquelle vorhanden sind.

Effizientere Nutzung von Ressourcen

Automatisierte datengetriebene Tests können nachts ausgeführt werden, wenn Testserver normalerweise im Leerlauf sind. Tester können sich unterdessen herausfordernderen Testszenarios wie explorativem oder UX-Testen widmen, anstatt stumpf Daten einzugeben.

Weniger Wartungsaufwand

Durch die Trennung der Testdaten vom Testcode ergibt sich in mehrere Hinsicht ein geringerer Wartungsaufwand. Testfälle können einfach hinzugefügt oder entfernt werden, indem die Testdaten geändert werden, ohne dabei den Code ändern zu müssen. Sauber gestaltete datengetriebene Tests mit Fehlerbehandlung und Bedingungen können ebenso dazu beitragen, die Anzahl redundanter Testfälle zu verringern. Zum Beispiel: Anstatt separater Testfälle, die verschiedene Arten von ungültigen Passwörtern für einen Willkommensbildschirm prüfen, brauchen Sie mit datengetriebenem Testen nur noch einen Testfall.

Einfachere Testdatenverwaltung

Datengetriebenes Testen erlaubt es Ihnen, die Testdaten an einem zentralen Ort zu speichern, sei es als Excel-Tabelle, CSV-Datei oder Datenbankdatei. Dadurch lassen sich die Daten einfacher teilen, wiederverwenden, sichern und warten.

Testen und noch mehr

Neben dem Einsatz in Funktionstests kann datengetriebenes Testen auch bei Last- und Leistungstests eingesetzt werden, um viele Zugriffe gleichzeitig zu simulieren. Auch zum Befüllen von Produktdatenbanken kann datengetriebenes Testen verwendet werden.

Best Practices

Testdaten und Testcode trennen

Speichern Sie Ihre Eingabe- und Validierungswerte in einer Datenquelle und nicht direkt in Testfällen. Hard-gecodete Werte führen zu mehr Wartungsaufwand und machen Testfälle auch schwerer nachvollziehbar für andere. Aus demselben Grund sollten Sie auch Datenquellen verwenden, um Werte für Testumgebungseinstellungen wie Systemvariablen bereitzustellen. Mehr zum Thema Parameter und Systemvariablen in Ranorex Studio finden Sie in unserem User Guide.

Realistische Daten verwenden

Stellen Sie sicher, dass die verwendeten Daten Ihre Testszenarios abdecken. Verwenden Sie sowohl positive als auch negative Werte, um das Fehlverhalten zu überprüfen. Eine Grenzwertanalyse kann hilfreich dabei sein, Daten zu erzeugen, die sowohl positive als auch negative Fälle abdecken. Zum Beispiel: Wenn ein Zahlenfeld nur Werte zwischen 1 und 100 akzeptiert, wären positive Testfälle u.a. 1, 2, 99 und 100. Wenn der Testfall mit diesen Zahlen erfolgreich ist, ist es nicht nötig, alle anderen dazwischenliegenden Zahlen auch zu prüfen. Negative Testfälle wären zum Beispiel -1, 0, 101 und 102. Ein weiterer Zugang zum datengetriebenen Testen ist die Ausführung gegen eine Teilmenge Ihrer Produktdatenbank. Dass trägt dazu bei, dass Ihr Test mit der Art von Daten ausgeführt wird, die die Anwendung tatsächlich verarbeitet.

Setup- und Teardown-Module verwenden

Jeder Testfall sollte beim Start die Testumgebung so konfigurieren wie zur Ausführung nötig, inklusive Testdaten, und nach der Ausführung wieder „aufräumen“. Wenn also der Test Daten aus einer Excel-Tabelle in Ihre Anwendung einfügt, sollte ein Teardown-Schritt eingebaut sein, der die erstellten Einträge am Ende des Tests wieder löscht. Auf diese Weise bleiben Ihre Testfälle voneinander unabhängig und Ihr Test läuft eher erfolgreich durch.

Fehlerbehandlung konfigurieren

Ihr datengetriebener Test sollte auch Logik beinhalten, die bestimmt, was passiert, wenn ein Testfall fehlschlägt. Ranorex Studio unterstützt zum Beispiel die folgenden Optionen zur Fehlerbehandlung: Continue with iteration (Weiter mit nächster Iteration) führt den Testfall mit der nächsten vorhandenen Testdatenzeile aus, Continue with sibling (Weiter auf gleicher Ebene) bricht den aktuellen Testfall ab und springt zum nächsten auf gleicher Ebene, Continue with parent (Weiter auf übergeordneter Ebene) bricht den aktuellen Testfall ab und springt zum nächsten übergeordneten Testfall und Stop bricht den Testlauf vollständig ab.

Um mehr über datengetriebenes Testen in Ranorex Studio zu erfahren, werfen Sie einen Blick auf unseren User Guide.