Zum Inhalt springen
SDETRole
SDETRole

Glossar · UI-Automatisierung

Datengetriebenes Testen

Englisch: Data-driven testing

Auch genannt: datengetriebene Tests, parametrisierte Tests, Parameterized Tests, DDT

Definition

Dieselbe Testlogik mit vielen Sätzen aus Eingaben und erwarteten Ergebnissen ausführen, die in einer Tabelle, Datei oder Datenquelle liegen statt in jedem Test.

Datengetriebenes Testen trennt, was ein Test tut, von den Daten, mit denen er es tut. Sie schreiben die Schritte einmal und speisen dann Datenzeilen ein: Eingaben und das Ergebnis, das jede davon liefern soll. Jede Zeile läuft als eigener Testfall mit eigenem Ergebnis, bestanden oder fehlgeschlagen. Es ist der naheliegende Weg, die Ergebnisse von Verfahren wie Grenzwertanalyse und Äquivalenzklassenbildung zu automatisieren.

Beispiel (JUnit 5)

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ShippingFeeTest {

    @ParameterizedTest(name = "order of {0} costs {1} to ship")
    @CsvSource({
        "0.00,   4.99",
        "49.99,  4.99",
        "50.00,  0.00",
        "250.00, 0.00"
    })
    void shippingFee(double orderTotal, double expectedFee) {
        assertEquals(expectedFee, Shipping.feeFor(orderTotal), 0.001);
    }
}

Dafür wird das Artefakt junit-jupiter-params benötigt. Weitere Quellen sind @ValueSource, @MethodSource und @CsvFileSource für Daten in einer CSV-Datei.

Beispiel (Playwright)

Playwright hat keine spezielle Annotation; Sie erzeugen die Tests in einer Schleife und geben jedem einen eindeutigen Titel:

import { test, expect } from '@playwright/test';

const cases = [
  { email: '', error: 'Email is required' },
  { email: 'not-an-email', error: 'Enter a valid email' },
];

for (const { email, error } of cases) {
  test(`login rejects "${email}"`, async ({ page }) => {
    await page.goto('/login');
    await page.getByLabel('Email').fill(email);
    await page.getByRole('button', { name: 'Sign in' }).click();
    await expect(page.getByRole('alert')).toHaveText(error);
  });
}

Häufige Fehler

  • Zeilen, die unterschiedliche Schritte brauchen. Braucht die Hälfte der Zeilen einen zusätzlichen Klick, haben Sie zwei Tests, nicht einen mit Bedingungen.
  • Unlesbare Namen. Nehmen Sie die wichtigsten Eingaben in den Namen jedes Falls auf, damit ein Fehlerbericht zeigt, welche Zeile gebrochen ist.
  • Riesige externe Tabellen. Daten, die weit vom Test entfernt liegen, lassen sich schwer reviewen. Halten Sie kleine Tabellen inline; lagern Sie nur dann in Dateien aus, wenn die Daten wirklich umfangreich sind oder jemand anderem gehören.
  • Masse statt Nutzen. Fünfzig Zeilen aus derselben Äquivalenzklasse kosten Laufzeit, bringen aber keine Abdeckung.

Tippen Sie, um SDETRole zu durchsuchen.

Volltextsuche mit Pagefind · läuft in Ihrem Browser Suchseite öffnen →