Visual Studio Database Edition: Erstellen von Testdaten

14. Februar 2011

Jeder Entwickler stand sicher schon einmal vor der Aufgabe, schnell Daten für einen Test erstellen zu müssen.
Auch hierfür gibt es in der Database Edition ein hilfreiches Tool: Den sog. Data Generation Plan.

Ein Data Generation Plan ist schnell angelegt:
Datenbankprojekt mit Rechtsklick auswählen -> Add -> Data Generation Plan

clip_image002

Visual Studio bietet zwei grundlegende Möglichkeiten den Data Generation Plan anzulegen:

  • Data Generation Plan
    Erzeugt einen Plan, welcher für jede Spalte zufällige Werte generiert.
  • Data Transform Plan
    Der Plan wird an eine Quelldatenbank gebunden. Hiermit kann quasi ein Backup einer Datenbank eingespielt werden. Allerdings mit der zusätzlichen Möglichkeit, Einfluss auf Anzahl und Verteilung der Datensätze zu nehmen.

Zu beachten ist, dass die Auswahl nur die initiale Erstellung betrifft. Der Plan kann später noch angepasst werden.

Im folgenden Dialog wählen wir den „Data Generation Plan“:

clip_image004

Visual Studio erstellt nun, basierend auf den Informationen des Datenbankprojektes, einen Data Generation Plan:

clip_image006

Für jede Tabelle kann definiert werden, wie viele Datensätze erstellt werden sollen. Besteht eine Fremdschlüsselbeziehung, kann ein Verteilungsverhältnis zwischen den Tabellen definiert werden. Beispielsweise sollen für jede Order zwei passende OrderDetails angelegt werden.

Für jede Spalte kann ein so genannter Datengenerator ausgewählt werden. Dieser generiert zufällige Daten nach einem definierten Muster. Zum Beispiel kann mit dem Integer Generator eine zufällige Integer Zahl erzeugt werden und der String Generator erzeugt eine zufällige Zeichenfolge vorgegebener Länge. Visual Studio enthält standardmäßig bereits Generatoren für alle SQL-Server Datentypen, aber auch andere wie z. B. für Reguläre Ausdrücke. Bei Bedarf können auch eigene Generatoren geschrieben werden.

Ein besonders interessanter Generator ist der datengebundene Generator. Dieser kopiert bestehende Daten aus einer Quell- in die Zieldatenbank.

clip_image008

Für jeden Datentyp gibt es wiederum unzählige weitere Einstellungsmöglichkeiten wie minimale/ maximale Länge, Anteil an NULL-Werten, Verteilung der Datensätze etc.

clip_image010

Zum besseren Verständnis lassen wir uns mit Preview Data Generation nun anzeigen, wie die generierten Daten aussehen würden:

clip_image012

Hier sieht man sehr gut, dass die Daten tatsächlich zufällig sind. Ist eine Spalte als String gekennzeichnet, wird auch die volle Bandbreite der möglichen Zeichen ausgenutzt.

Auf den ersten Blick mag dies wie ein Nachteil erscheinen, allerdings werden robustere Tests möglich, da gegen alle technisch möglichen Daten getestet werden kann.

Mit Generate Data können wir nun die Testdaten tatsächlich erzeugen.

clip_image013

Die Testdaten werden anschließend direkt in die Datenbank geschrieben und können für Tests verwendet werden.