Publication
Generating meaningful test databases
Carsten Binnig
PhD-Thesis, University of Heidelberg, Germany, 2008.
Abstract
In heutigen Softwareentwicklungsprojekten ist das Testen eine der kosten-und zeitintensivsten Tätigkeiten. Wie ein aktueller Bericht des NIST [RTI02] zeigt, verursachten Softwarefehler in den USA im Jahr 2000 zwischen 22, 2 und 59, 5 Milliarden Dollar an Kosten. Demzufolge wurden in den letzten Jahren verschiedene Methoden und Werkzeuge entwickelt, um diese hohen Kosten zu reduzieren. Viele dieser Werkzeuge dienen dazu die verschiedenen Testaufgaben (zB das Erzeugen von Testfällen, die Ausführung von Testfällen und das Überprüfen der Testergebnisse) zu automatisieren. Jedoch existieren fast keine Forschungsarbeiten zur Testautomatisierung von Datenbankanwendungen (wie zB eines E-Shops) oder von relationalen Datenbankmanagementsystemen (DBMS). Hierzu sind neue Lösungen erforderlich, da das Verhalten der zu testenden Anwendung stark vom Inhalt der Datenbank abhängig ist. Folglich ergeben sich für den Test von Datenbankanwendungen oder von Datenbankmanagementsystemen neue Probleme und Herausforderungen im Vergleich zum traditionellen Testen von Anwendungen ohne Datenbank. Die vorliegende Arbeit diskutiert ein bestimmtes Problem aus diesem Umfeld: Die Generierung von Testdatenbanken. Die Generierung von Testdatenbanken ist eine entscheidende Tätigkeit für den erfolgreichen Test einer Datenbankanwendung oder eines Datenbankmanagementsystems (im weiteren Verlauf auch Testobjekt genannt). Um eine bestimmte Funktionalität des Testobjekts zu testen, müssen die Daten in den Testdatenbanken bestimmte Charakteristika aufweisen. Zur Erzeugung einer Testdatenbank existieren verschiedene Forschungsprototypen wie auch kommerzielle Datenbankgeneratoren. Jedoch sind die existierenden Datenbankgeneratoren meist Universallösungen, welche die Testdatenbanken unabhängig von den auszuführenden Testfällen erzeugen. Demzufolge weisen die generierten Testdatenbanken meist nicht die notwendigen Datencharakteristika auf, die zur Ausführung einer bestimmten Menge von Testfällen notwendig sind. Die vorliegende Doktorarbeit stellt zwei innovative Ansätze vor (Reverse Query Processing und Symbolic Query Processing), die dieses Problem für unterschiedliche Anwendungen (dh für das funktionale Testen von Datenbankanwendungen und Datenbankmanagementsystemen) lösen. Die generelle Idee beider Ansätze ist, dass der Benutzer explizit für jeden Testfall die notwendigen Bedingungen an die Testdaten formulieren kann. Diese Bedingungen werden dann dazu genutzt, um eine oder mehrere Testdatenbanken zu generieren, die die gewünschten Datencharakteristika aufweisen, welche zur Ausführung der Testfälle notwendig sind. ii