7.2.8. Datenbank-Sequences mit Puffer verwenden

Für die Erzeugung von Primärschlüsseln werden in der Datenbank häufig Sequences verwendet. Bei einer Sequence handelt es sich im Wesentlichen um einen Zähler, der einen Anfangswert hat und der nach jeder Abfrage um einen Offset erhöht wird. Über die Sequence können so eindeutige technische Schlüssel erzeugt werden.

Bei der Verwendung von Testdaten kann es dazu kommen, dass Konflikte in den Primärschlüsseln auftreten. Folgendes Beispiel zeigt ein mögliches Szenario: In den Testdaten wird für die Tabelle USERS ein Eintrag mit der ID 42 in der Datenbank angelegt. Danach wird ein neuer User in der Datenbank erzeugt. Die ID des neuen Datensatzes wird über eine Sequence erzeugt, die zufällig den Wert 42 zurückliefert. Da diese ID bereits vorhanden ist, kommt es zu einem Datenbankfehler und der Test schlägt fehl.

Eine grundlegende Eigenschaft von Tests besteht in der Robustheit, d.h. Tests müssen immer deterministische Ergebnisse liefern. Dies ist dem oben beschriebenen Beispiel nicht der Fall, da das Ergebnis des Tests abhängig von dem Wert der verwendeten Sequence ist. Das Problem lässt sich dadurch lösen, dass für die Testdaten ein eigener Wertebereich für die Primärschlüssel verwendet wird. Dies erreicht man leicht durch die Verwendung eines erhöhten Anfangswerts für die Sequences. Wenn jede Sequence nicht bei 0 sondern bei 1.000 startet, können die Werte von 0 bis 999 von den Testdaten verwendet werden, ohne dass es zu Konflikten kommt. Die Größe des Anfangswertes sollte dabei nicht zu klein gewählt werden