Datenbanktests - Database testing

Das Testen von Datenbanken besteht normalerweise aus einem mehrschichtigen Prozess, einschließlich der Benutzeroberflächenschicht (UI), der Geschäftsschicht, der Datenzugriffsschicht und der Datenbank selbst. Die UI - Ebene befasst sich mit dem Interface - Design der Datenbank, während die Business - Schicht umfasst Datenbanken unterstützt Geschäftsstrategien .

Zwecke

Datenbanken , die Sammlung von miteinander verbundenen Dateien auf einem Server, Speicherung von Informationen, kann nicht mit derselben befaßt Art von Daten, dh Datenbanken kann heterogen . Viele Arten von Implementierung und Integration Als Ergebnis Fehler auftreten können , in großen Datenbanksystemen, die sich negativ auf die Leistung des Systems beeinträchtigen, Zuverlässigkeit, Beständigkeit und Sicherheit. Daher ist es wichtig zu testen , um ein Datenbanksystem zu erhalten, das die ACID- Eigenschaften (Atomizität, Konsistenz, Isolation und Haltbarkeit) eines Datenbankverwaltungssystems erfüllt .

Eine der kritischsten Schichten ist die Datenzugriffsschicht, die sich direkt während des Kommunikationsprozesses mit Datenbanken befasst. Datenbanktests finden hauptsächlich auf dieser Ebene statt und umfassen Teststrategien wie Qualitätskontrolle und Qualitätssicherung der Produktdatenbanken. Tests auf diesen verschiedenen Ebenen werden häufig verwendet, um die Konsistenz von Datenbanksystemen aufrechtzuerhalten. Dies wird am häufigsten in den folgenden Beispielen gezeigt:

  • Daten sind aus geschäftlicher Sicht von entscheidender Bedeutung. Unternehmen wie Google oder Symantec , die mit der Datenspeicherung verbunden sind , benötigen ein dauerhaftes und konsistentes Datenbanksystem. Wenn Datenbankvorgänge wie Einfügen, Löschen und Aktualisieren ausgeführt werden, ohne die Datenbank zuerst auf Konsistenz zu testen, riskiert das Unternehmen einen Absturz des gesamten Systems.
  • Einige Unternehmen haben unterschiedliche Arten von Datenbanken sowie unterschiedliche Ziele und Aufgaben. Um ein Funktionsniveau zu erreichen, um diese Ziele zu erreichen, müssen sie ihr Datenbanksystem testen.
  • Der derzeitige Testansatz reicht möglicherweise nicht aus, um Entwickler die Datenbanken formell zu testen. Dieser Ansatz ist jedoch nicht effektiv genug, da Datenbankentwickler den Testprozess aufgrund von Kommunikationslücken wahrscheinlich verlangsamen. Ein separates Datenbanktestteam erscheint ratsam.
  • Beim Testen von Datenbanken geht es hauptsächlich darum, Fehler in den Datenbanken zu finden, um sie zu beseitigen. Dies verbessert die Qualität der Datenbank oder des webbasierten Systems.
  • Datenbanktests sollten von Strategien zur Bewältigung anderer Probleme wie Datenbankabstürzen, fehlerhaften Einfügungen, Löschungen oder Aktualisierungen unterschieden werden. Hier ist das Datenbank-Refactoring eine evolutionäre Technik, die angewendet werden kann.

Arten von Tests und Prozessen

Black-Box- und White-Box-Test im Datenbanktest

Die Abbildung zeigt die Testbereiche, die bei verschiedenen Datenbanktestmethoden wie Black-Box-Tests und White-Box-Tests beteiligt sind .

Flugschreiber

Black-Box-Tests umfassen das Testen von Schnittstellen und die Integration der Datenbank, einschließlich:

  1. Zuordnung von Daten (einschließlich Metadaten )
  2. Eingehende Daten überprüfen
  3. Überprüfen ausgehender Daten aus Abfragefunktionen
  4. Verschiedene Techniken wie Cause Effect Graphing-Technik, Äquivalenzpartitionierung und Randwertanalyse .

Mit Hilfe dieser Techniken kann die Funktionalität der Datenbank gründlich getestet werden.

Zu den Vor- und Nachteilen von Black-Box-Tests gehören: Die Erstellung von Testfällen beim Black-Box-Testen ist recht einfach. Ihre Generierung ist völlig unabhängig von der Softwareentwicklung und kann in einem frühen Entwicklungsstadium erfolgen. Infolgedessen weiß der Programmierer besser, wie die Datenbankanwendung zu entwerfen ist, und benötigt weniger Zeit für das Debuggen. Die Kosten für die Entwicklung von Black-Box-Testfällen sind niedriger als für die Entwicklung von White-Box-Testfällen. Der Hauptnachteil von Black-Box-Tests besteht darin, dass nicht bekannt ist, wie viel des Programms getestet wird. Außerdem können bestimmte Fehler nicht erkannt werden.

Weiße Kiste

White-Box-Tests befassen sich hauptsächlich mit der internen Struktur der Datenbank. Die Spezifikationsdetails sind dem Benutzer verborgen.

  1. Es umfasst das Testen von Datenbank-Triggern und logischen Ansichten, die das Datenbank-Refactoring unterstützen .
  2. Es führt Modultests von Datenbankfunktionen, Triggern, Ansichten, SQL- Abfragen usw. durch.
  3. Es validiert Datenbanktabellen, Datenmodelle, Datenbankschemata usw.
  4. Es überprüft die Regeln der referenziellen Integrität .
  5. Es werden Standardtabellenwerte ausgewählt, um die Datenbankkonsistenz zu überprüfen.
  6. Die beim White-Box-Testen verwendeten Techniken sind Bedingungsabdeckung, Entscheidungsabdeckung, Anweisungsabdeckung und zyklomatische Komplexität .

Der Hauptvorteil von White-Box-Tests beim Testen von Datenbanken besteht darin, dass Codierungsfehler erkannt werden, sodass interne Fehler in der Datenbank beseitigt werden können. Die Einschränkung beim White-Box-Testen besteht darin, dass SQL-Anweisungen nicht behandelt werden.

Der WHODATE-Ansatz

WHODATE-Ansatz für die SQL-Anweisungstransformation

Beim Generieren von Testfällen für Datenbanktests muss die Semantik der SQL-Anweisung in den Testfällen berücksichtigt werden. Zu diesem Zweck wird eine Technik namens WHite bOx Database Application Technique "(WHODATE)" verwendet. Wie in der Abbildung gezeigt, werden SQL-Anweisungen unabhängig voneinander in GPL-Anweisungen konvertiert, gefolgt von herkömmlichen White-Box-Tests, um Testfälle mit SQL-Semantik zu generieren.

Vier Stufen

  • Gerät einstellen
  • Testlauf
  • Ergebnisüberprüfung
  • Niederreissen

Ein Set Fixture beschreibt den Anfangszustand der Datenbank vor dem Eintritt in den Test. Nach dem Festlegen der Fixtures wird das Datenbankverhalten auf definierte Testfälle getestet. Je nach Ergebnis werden die Testfälle entweder geändert oder unverändert beibehalten. Die Phase "Abreißen" führt entweder zum Beenden des Tests oder zum Fortfahren mit anderen Testfällen.

Für erfolgreiche Datenbanktests wird üblicherweise der folgende Workflow ausgeführt, der von jedem einzelnen Test ausgeführt wird:

  1. Bereinigen der Datenbank: Wenn die testbaren Daten bereits in der Datenbank vorhanden sind, muss die Datenbank geleert werden.
  2. Fixture einrichten: Ein Tool wie PHPUnit durchläuft dann Fixtures und fügt Einfügungen in die Datenbank ein.
  3. Test ausführen, Ergebnis überprüfen und dann abreißen: Nach dem Zurücksetzen der Datenbank auf leer und Auflisten der Geräte wird der Test ausgeführt und die Ausgabe überprüft. Wenn die Ausgabe wie erwartet ist, folgt der Abreißvorgang, andernfalls wird der Test wiederholt.

Grundtechniken

  • SQL Query Analyzer ist ein hilfreiches Tool bei der Verwendung von Microsoft SQL Server .
  • Eine häufig verwendete Funktion create_input_dialog["label"] wird verwendet, um die Ausgabe mit Benutzereingaben zu validieren.
  • Das Entwerfen von Formularen für automatisierte Datenbanktests, Formular-Front-End und Back-End, ist für Mitarbeiter der Datenbankwartung hilfreich.
  • Daten Lasttests :
    • Für das Testen der Datenlast sind Kenntnisse über die Quelldatenbank und die Zieldatenbank erforderlich.
    • Mitarbeiter überprüfen die Kompatibilität zwischen Quelldatenbank und Zieldatenbank mithilfe des DTS- Pakets.
    • Wenn Sie die Quelldatenbank aktualisieren, müssen die Mitarbeiter sicherstellen, dass sie mit der Zieldatenbank verglichen werden.
    • Beim Testen der Datenbanklast wird die Kapazität des Datenbankservers zur Bearbeitung von Abfragen sowie die Antwortzeit von Datenbankserver und Client gemessen.
  • Bei Datenbanktests werden häufig Probleme wie Atomizität, Konsistenz, Isolation, Haltbarkeit, Integrität, Ausführung von Triggern und Wiederherstellung berücksichtigt.
  1. Die Einrichtung für Datenbanktests ist kostspielig und komplex in der Wartung, da sich die Datenbanksysteme mit den erwarteten Einfüge-, Lösch- und Aktualisierungsvorgängen ständig ändern.
  2. Zusätzlicher Overhead ist erforderlich, um den Status der Datenbanktransaktionen zu bestimmen.
  3. Nach dem Bereinigen der Datenbank müssen neue Testfälle entworfen werden.
  4. Ein SQL-Generator wird benötigt, um SQL-Anweisungen zu transformieren, um die SQL-Semantik in Datenbanktestfälle einzubeziehen.


Siehe auch

Verweise

Externe Links