Geschichte der Frage:
Die Automatisierung von Tests ist eng mit der Notwendigkeit verbunden, vorhersehbare und reproduzierbare Testdaten zu erstellen und zu pflegen. Manuelle Tests können beliebige Daten verwenden, aber automatisierte Szenarien erfordern eine genaue Kontrolle über den Zustand der Daten in der Datenbank oder der Umgebung. Der Umfang der Anwendungen, die Arbeit mit Mikrodiensten und die Anforderungen an die Vertraulichkeit haben die Aufgabe der Verwaltung von Testdaten noch komplizierter gemacht.
Problem:
Ohne verwaltete Testdaten werden Tests instabil und ihre Ergebnisse sind nicht repräsentativ. Oft gibt es Situationen, in denen:
Darüber hinaus kann die Verwendung realer Daten die Sicherheit oder Datenschutzrichtlinien verletzen.
Lösung:
Moderne Ansätze umfassen:
Wesentliche Merkmale:
Kann man reale Daten aus der Produktionsumgebung für automatisierte Tests verwenden?
Nein. Das kann zu Datenlecks, Verletzungen von Vorschriften sowie zu instabilen Tests aufgrund ständiger Änderungen im Produktionstsystem führen.
Hilft es, einfach alle Daten zwischen den Tests zu bereinigen, um Stabilität beim Testen zu garantieren?
Nein. Es ist wichtig, die Daten nicht nur zu bereinigen, sondern sie auch richtig auf den benötigten Zustand vorzubereiten. Außerdem kann eine Massenbereinigung parallellaufende Tests oder Dienste beeinträchtigen.
Reicht es aus, eine einzige Testumgebung für alle Teams zu haben?
Nein, das ist der Weg zu Kollisionen und Konflikten zwischen den Tests verschiedener Teams. Optimal sind isolierte Umgebungen oder Containerisierung (Docker-Test-Suiten, temporäre Umgebungen).
Das Testteam verwendete eine einzige Testdatenbank, in der sowohl automatisierte als auch manuelle Tests arbeiteten. Häufig fielen automatisierte Tests aufgrund von manuellen Datenlöschen oder -änderungen aus, was zu langwieriger Fehlersuche und Zeitverlust führte.
Vorteile:
Nachteile:
Das Unternehmen implementierte eine Infrastruktur mit temporären Umgebungen: Jeder Test wurde auf einer separaten Kopie der Datenbank ausgeführt, die über Docker bereitgestellt wurde. Fixtures wurden automatisch über Migrationsskripte geladen.
Vorteile:
Nachteile: