Testdatengenerierung

Synthetische oder Produktivdaten? Unser Tool unterstützt beide Verfahren. Die oft nur der Generierung zugeschriebenen Eigenschaften wie sofortige oder kurzfristige Verfügbarkeit, niedrige Kosten, geringer manueller Aufwand und DSGVO-Sicherheit gelten genau so für die Lieferung anonymisierter Produktivdaten. Welches Verfahren sie auch wählen, die Testdaten werden auf Knopfdruck geliefert. Während bei der Anonymisierung nur einige wenige Prozent der Spalten, nämlich die zu anonymisierenden, applikatorische Regeln berücksichtigen müssen, gilt das bei der Generierung für alle Spalten. Das kann für bestehende Anwendungen einen erheblichen Analyseaufwand bedeuten. Über mehrere Versionen gewachsene Applikationen haben verborgene Eigenheiten. Meist ‘erwischt’ man nicht alle verdeckten Constraints auf Anhieb und kämpft im Test mit ‘false positive’ Fehlern, d.h. mit Fehlern, die gar keine sind. Bei einigen Anwendungen, insbesondere bei Neuentwicklungen ist die Generierung eine Option. Unser Tool lässt Ihnen freie Hand.

Bei der Versorgung mit Testdaten in eine Integrations-, Test- oder Entwicklungsumgebung kann es unter Umständen sinnvoll sein, nicht mit Produktionsdaten zu arbeiten, sondern sich die Testfälle generieren zu lassen. Zur Bereitstellung von Produktionsdaten in den Entwicklungsumgebungen ist eine Anonymisierung unumgänglich. Daher muss man sich ohnehin mit der Bedeutung einzelner Felder und Ihrer Relevanz als personenbezogenes Datum Gedanken machen. Für die Generierung ist in der Regel eine detaillierte Betrachtung der Daten notwendig. Wir bieten einen Ansatz, der die Verwendung von Produktionsdaten vermeidet und dennoch eine detaillierte Modellierung aller Tabellen und Spalten unnötig macht.

Generierung, statt Teilkopien aus Produktion
Die Generierung soll sicherstellen, dass für ein konkretes Nutzungsszenario genau die Fälle erzeugt werden, die zur nötigen Testabdeckung führen. Selbst bei detaillierter Suche in den Produktionsdaten kann es vorkommen, dass die gewünschte Kombination von Eigenschaften auf keinem Geschäftsfall gefunden werden kann. Andererseits schafft ein Test mit Produktionsdaten in der Regel eine größere Streuung in den Daten und deckt ggf. auch unerwartete Fälle ab. Dies ist allerdings auch ein Risiko für die Projektplanung, da die gewählten Testfälle zur Behandlung seltener Sonderfälle zwingen, die eventuell für eine frühe Projektphase nicht vorgesehen waren. Daher bietet die Generierung hier eine wesentlich gezieltere Methode, die eine planhafte und gesicherte Umsetzung von Funktionen und Fehlerbehebungen ermöglicht.

Weiterhin können bei der Generierung in verschiedenen Geschäftsbereichen für einen Testfall genau die passende Eigenschaften für die einzelnen Attribute gewählt werden, die in der Produktion so ggf. nicht vorkommen. So kann mit wenigen Fällen genau die richtige Testabdeckung erreicht werden. Selbst bei sorgfältiger Pseudonymisierung der personenbezogenen Attribute kann anhand der Kardinalitäten zwischen einzelnen Objekten der originale Geschäftsfall erkennbar sein. Eine Generierung kann das vermeiden.

Vorlagen, statt komplette Generierung
Die Generierung soll korrekte Daten erzeugen, die sowohl den Datenbank-Beschränkungen genügen, als auch von der Applikation als korrekt anerkannt werden. Insbesondere die Anforderungen der Applikation können dabei sehr komplex werden, da nur bestimmte Wertebereiche für einzelne Spalten unterstützt werden, tabellenübergreifende Abhängigkeiten korrekt für die Applikation erstellt werden müssen und die Abbildung fachlicher Logik sich über viele Tabellen hinweg ziehen kann.

Daher ist es leichter sich zunächst die Basisobjekte über die Applikation selbst erstellen zu lassen. Die Applikation bietet bereits fertige Workflows zur Erstellung der Objekte, erzeugt technische Einträge nach Bedarf und beinhaltet das Wissen fachliche Abhängigkeiten zu prüfen und korrekt abzulegen. Dieser Ansatz eignet sich natürlich nur, sobald ein Prototyp der Anwendung existiert. Dies ist in der Regel aber kein Problem, da die Komplexität der Tests, für die anwendungsübergreifende Daten benötigt werden, ohnehin nicht in der frühen Projektphase benötigt werden bzw. in der Regel die Weiterentwicklung einer bestehenden Anwendungslandschaft betrachtet wird.

Bei der Generierung aus diesen Vorlagen werden die relevanten Felder variiert. Das bedeutet, das neue Schlüsselwerte erzeugt werden. Die abhängigen Felder auf diese Schlüssel werden automatisch während der Datenbereitstellung nach gepflegt. Es muss demnach nur einmal definiert werden, wie man Schlüsselwerte neu generieren kann. Für die Variation von testbezogenen Identifikationsmerkmalen wie Namen, Straßen und Orten können mitgelieferte Verzeichnisse genutzt werden um einen sprechenden, abwechslungsreichen und realistischen Testdatenbestand zu erhalten.

Die Umgebung zur Erstellung der Testdaten wird immer auf Produktionsstand gehalten. Das heißt mit der Aktualisierung der Produktion wird auch das Testbett aktualisiert. Strukturelle Unterschiede zur Enwicklungsumgebung wie zusätzliche Spalten oder neue Tabellen können automatisch ausgeglichen werden.

Zwei Vorgehensweisen sind denkbar: Grundsätzlich bieten sich bei der Erstellung der Testfallerzeugungs- und bestandsumgebung zwei Möglichkeiten:

a) Testfallerzeugungsumgebung

Die Umgebung zur Erstellung ist gleichzeitig auch der Bestand mit dem die eigentlichen Testumgebungen bestückt werden. Unser Tool führt also eine Row Level Kopie für einzelne Testfälle durch, tauscht Nummern und Namen aus und kann somit den gleichen Basistestfall mehrfach in einer Testumgebung zur Verfügung stellen.

b) Testbestandsumgebung

Die Testfälle werden nach der Erstellung über die Applikation noch in eine Testbestandsumgebung kopiert. Diese Umgebung besteht nur aus Datenbankstrukturen und hat keine Applikationen installiert. Sie dient nur als Datenhalde für die spätere Bereitstellung in die Testumgebung. Der Vorteil dieser zusätzlichen Umgebung ist die deutlichere Trennung, welche Testfälle als fertig gelten und daher zur Kopie in Testumgebungen zur Verfügung stehen. Außerdem können Teilobjekte (Kontaktdaten, Verträge, Transaktionen etc.) hier auch so vereinzelt werden, dass sie später beliebig zu kombinieren sind. Bei der Vereinzelung muss nicht auf Anwendungseinschränkungen in den Daten Rücksicht genommen werden.

Konsistente Kombinationen
Innerhalb des Tools können nun für die verschiedenen Teilobjekte einzelne Tasks erstellt werden. Diese stellen zum Beispiel Kontaktdaten, Vertragsdaten, Transaktionen, Portfolios etc. bereit. Durch die dynamische Anwendung der Regeln ist es bei der Bereitstellung möglich, verschiedene Ausprägungen der Testobjekte beliebig zu kombinieren. Da bei der Bereitstellung der Schlüsselaustausch obligatorisch ist, können diese Schlüssel in den Verbindungsobjekten auch nach Wahl kombiniert werden. Dadurch ergibt sich die Möglichkeit, genau die Testfälle zusammenzustellen, die für den anstehenden Test benötigt werden. Mit diesen Generierungs- und Kombinationsmöglichkeiten erhält man eine sehr dynamische Testdatenfabrik, die vollkommen unabhängig von Produktionsdaten ist.

Erweiterungsmöglichkeiten
Eine denkbare Erweiterung, um ein solches Einsatzszenario noch effizienter zu unterstützen, ist die Möglichkeit, ein einzelnes Testobjekt während der Kopie zu vervielfältigen und dabei unterschiedlich zu variieren. Denkbar wäre etwa den identischen Ausgangsfall mit verschiedenen Daten mehrfach an einen Vertrag zu hängen oder Kontotransaktionen zu vervielfachen.

Statt die generierten Testfalldaten im Testbett zu halten, können sie auch in einem separaten, durchsuchbaren Bereich verwaltet werden. Strukturanpassungen werden automatisch gehandhabt, daher werden auch keine zusätzlichen Ressourcen bei der DBA benötigt.

Zurück