2.4.2. Zuordnung von Testdaten und tatsächliche Daten

Bei dem Vergleich der erwarteten Testdaten mit dem aktuellen Datenbankinhalt stellt checkerberry db fest, welche Tabellenzeilen hinzugefügt, gelöscht oder geändert wurden. Zu diesem Zweck stellt checkerberry db eine eindeutige Zuordnung zwischen den Tabellenzeilen in der Datenbank und den Zeilen der Testdaten her. Die Zuordnung erfolgt über ausgewählte Spalten, die in checkerberry db als Lookup-Keys bezeichnet werden. Die Lookup-Keys werden für jede Datenbanktabelle definiert.

Lookup-Keys sind konzeptionell identisch mit Primary Keys. In beiden Fällen ist das Ziel die Identifikation von Datensätzen. Da die Lookup-Keys einer Tabelle von ihren Primary Keys abweichen können, wurde der neue Begriff Lookup-Keys für eine bessere Unterscheidbarkeit in checkerberry db eingeführt.

Im Gegensatz zu den Primary Keys definieren die Lookup-Keys in der Regel fachliche Schlüssel, da diese in den Testdaten intuitiver zu verwenden sind. Die Verwendung von fachlichen Schlüsseln hat den weiteren Vorteil, dass die Werte bereits zum Zeitpunkt der Testerstellung bekannt sind. Primary Keys werden hingegen häufig in der Datenbank generiert, sodass deren Werte zum Zeitpunkt der Testdatenerstellung noch nicht feststehen.

Lookup-Keys werden durch eine Liste von Spaltennamen definiert. Eine Tabellenzeile wird einer Zeile aus den Testdaten zugeordnet, wenn die Werte der Lookup-Keys dieser beiden Zeilen übereinstimmen. Die Lookup-Keys müssen somit jede Zeile der Testdaten und der zugehörigen Tabelle eindeutig identifizieren.

Abbildung 2.8. Lookup-Keys

Lookup-Keys


Abbildung 2.8, „Lookup-Keys“ stellt eine Zuordnung von Datenbankinhalt und Testdaten anhand von Lookup-Keys dar. Die Datenbank enthält zwei Einträge in der Tabelle USERS. Als Lookup-Key werden die Spalten NAME und SURNAME verwendet. In den Testdaten sind ebenfalls zwei Datensätze für die Tabelle USERS definiert. Über die Werte der Lookup-Keys kann eine eindeutige Zuordnung zwischen den Daten in der Datenbank und den Testdaten hergestellt werden.

Die Lookup-Keys können innerhalb einer Test-Methode einfach geändert werden, wie das folgende Code-Beispiel zeigt.

Beispiel 2.8. Anpassen der Lookup-Keys

public void testGetUser() throws Exception {
  …
  // Holen des Testhandlers.
  DbTestHandler testHandler = getEnvironment().getTestHandler();
  // Allgemeine Datenbankbeschreibung holen.
  DatabaseDescription dbDescription = testHandler.getDatabaseDescription();
  // Tabellenbeschreibung für Tabelle USERS holen.
  DatabaseTableDescription tableDescription
      = dbDescription.getTableDescription("USERS");
  // Lookup-Keys ändern: Neuer Lookup-Key ist die Spalte SURNAME.
  tableDescription.setLookupKeyColumns("SURNAME");
  …
}


Über die checkerberry db-Umgebung ist der Zugriff auf die Datenbank- und Tabellenbeschreibungen möglich. In dem Beispiel wird der Lookup-Key für die Tabelle USERS auf die Spalte SURNAME gesetzt. In den anschließenden Vergleichen verwendet checkerberry db diesen neuen Lookup-Key. Da jeder Test eine eigene Kopie der Datenbankbeschreibung verwendet, hat diese Umstellung keine Auswirkungen auf nachfolgende Testfälle.

Die Anpassung im obigen Beispiel wirkt auf den ersten Blick fehlerhaft, da sie voraussetzt, dass die Nachnamen in der Tabelle USERS eindeutig sind. Es muss dabei allerdings berücksichtigt werden, dass die Eindeutigkeit lediglich für den aktuellen Test erforderlich ist. Die Eindeutigkeit ist somit auf die Testdaten des entsprechenden Tests beschränkt. Dieser Sachverhalt ist sehr hilfreich, da für spezielle Tests die Lookup-Keys individuell angepasst werden können.