Datenbanktests bestehen aus Black-Box-Tests, White-Box-Tests und ACID (Atomizität, Konsistenz, Isolation und Dauerhaftigkeit). In diesem Leitfaden gebe ich Ihnen Definitionen, Anleitungen und Beispiele.
Was ist Datenbanktest?
Datenbanktests, auch Backend-Tests oder Datentests genannt, unterscheiden sich von ihrem Gegenstück aus der Benutzeroberfläche dadurch, dass sie sich überhaupt nicht mit der visuellen Oberfläche der Systemsoftware beschäftigen. Ihr Hauptanliegen ist es, zu überprüfen, dass alle internen Prozesse ordnungsgemäß ablaufen und Daten schnell, genau und sicher abgerufen werden können.
Datenbanktests prüfen das Datenbankschema, Tabellen und Trigger der Datenbank. Die Datenbank wird unter Stress gesetzt und es können komplexe Abfragen ausgeführt werden, um ihre Fähigkeiten und Reaktionsfähigkeit gründlich zu testen. Es werden auch Datenbankverwaltungssysteme (DBMS) wie Oracle und SQL Server getestet.
Verwandter Artikel: DIE POSITIVEN AUSWIRKUNGEN NEGATIVER TESTS
Was ist ein Datenbankschema?
Ein Datenbankschema ist eine logische Struktur, die die Organisation und Beziehung von Daten in einer Datenbank definiert. Es legt den Bauplan fest, wie Daten in einem DBMS gespeichert, abgerufen und verarbeitet werden. Das Schema beschreibt die Datentypen, Einschränkungen und Beziehungen zwischen Datenbankobjekten wie Tabellen, Sichten, Indizes und Triggern.
Das Datenbankschema ist entscheidend für die Sicherstellung der Integrität und Konsistenz von Daten innerhalb einer Datenbank. Es bietet Entwicklern und Datenbankadministratoren ein Rahmenwerk, um Daten sinnvoll zu organisieren und zu strukturieren. Es hilft auch sicherzustellen, dass die in der Datenbank gespeicherten Daten bestimmten Anforderungen wie Datenvalidierung, Datensicherheit und Datenzugänglichkeit entsprechen. Organisationen können ein Datenbankschema nutzen, um ihre Datenbanken für effizientes Datenmanagement, eine verbesserte Geschäftsabwicklung und bessere Entscheidungsfindung zu organisieren und zu optimieren.
Warum ist Datenbanktest wichtig?
Datenbanktests sind wichtig, weil
- Einige Fehler nur durch Datenbanktests gefunden werden können
- Bestimmte Nutzungsszenarien nur mit Datenbanktests geprüft werden können
- Datenbanktests die Stabilität und Sicherheit verbessern
- Datenbanktests für Konsistenz sorgen
Beispiel einer Datenbankfunktion
Stellen Sie sich vor, Sie öffnen eine Online-Banking-Anwendung auf Ihrem Handy (oder öffnen Sie tatsächlich die Online-Banking-App auf Ihrem Handy). Überweisen Sie nun einen kleinen Betrag von Ihrem Giro- auf Ihr Sparkonto. Wenn Sie fertig sind, überlegen Sie, was hinter den Kulissen in diesen wenigen Sekunden alles passieren musste.
- Die App hat die Transaktionsdaten an die Datenbank gesendet.
- Keine Ihrer Informationen (d.h. GELD) ist auf dem Weg verloren gegangen.
- Die App ist nicht abgestürzt und die Überweisung wurde nicht abgebrochen.
- Die Transaktion wurde sicher durchgeführt.
- Ihr Geld liegt jetzt sicher auf Ihrem Sparkonto (herzlichen Glückwunsch!)
All diese Funktionen laufen innerhalb der Datenbank ab. Der Prozess des Datenbanktests ist wichtig, denn wenn ein Datenbanksystem kritisch ausfällt, kommt das System zum Stillstand. Es kann keine Information mehr gesendet, abgerufen, übertragen oder gesichert werden. Die Anwendung wirkt an der Oberfläche weiterhin funktionsfähig (man kann Fenster öffnen und Überweisungen vorbereiten), aber es wird nichts Entscheidendes passieren.
Nach außen erscheint alles in Ordnung, aber intern herrscht Chaos.

Datenbanktests sorgen dafür, dass es keine Katastrophen gibt. Kein Feuer, kein Stillstand und kein fehlendes Geld. Es liegt im Interesse aller, Datenbanktests durchzuführen. Deshalb habe ich einen umfassenden Leitfaden geschrieben, damit Sie sicher sein können, dass nach Abschluss alles gründlich getestet wurde.
Grundsätze des Datenbanktests
Das Wort „Grundsätze“ klingt vielleicht eher nach Warum als Wie. Glauben Sie mir, dies sind zwei wichtige, praxisnahe Konzepte.
- ACID-Eigenschaften
- Atomizität
- Konsistenz
- Isolation
- Dauerhaftigkeit
- Datenintegrität
Was sind ACID-Eigenschaften?
Dies ist die sicherste Version von Säure, die Sie je verwenden werden. Keine Handschuhe nötig, denn die ACID-Eigenschaften stehen für Atomares Verhalten, Konsistenz, Isolation und Dauerhaftigkeit. Jede einzelne Transaktion beim Datenbanktest muss diese Prinzipien erfüllen.
Eine Transaktion ist eine Gruppe von Aufgaben. Selbst eine einfache Transaktion in der realen Welt, wie die zuvor erwähnte Banküberweisung, umfasst mehrere untergeordnete Aufgaben. Die ACID-Eigenschaften stellen sicher, dass jede Transaktion genau, vollständig und mit Integrität ausgeführt wird.
ACID-Eigenschaften
- Atomarität besagt, dass jede Transaktion als atomare Einheit behandelt werden muss. Nicht-molekular betrachtet bedeutet das, dass jede Transaktion entweder vollständig abgeschlossen wird oder andernfalls fehlschlägt. Die Behandlung jeder Transaktion auf diese Weise vermeidet die unangenehme Situation einer halbfertig durchgeführten Geldüberweisung. Das klingt doch einfach stressig, oder? Mit der Atomarität gilt: Sollte die Transaktion nur zur Hälfte abgeschlossen sein, wenn etwas schief läuft, wird die gesamte Transaktion abgebrochen. Geld zurück. Kein Stress.
- Konsistenz erfordert, dass die Datenbank nach einer Transaktion konsistent bleibt. Keine Transaktion darf sich negativ auf andere Daten in der Datenbank auswirken. Eine Einzahlung auf Ihr Bankkonto führt nicht dazu, dass von einem anderen Konto Geld abgebucht wird.
- Isolation verhindert das Vermischen von Abläufen. Sie stellt sicher, dass bei mehreren gleichzeitig ablaufenden Transaktionen jede Transaktion so behandelt wird, als wäre sie die einzige in der Datenbank. Niemand bekommt seine Informationen mit denen anderer durcheinander.
- Dauerhaftigkeit verlangt von der Datenbank, beständig genug zu sein, um alle aktuellen Transaktionen auch bei einem Systemausfall zu speichern. Auch hierfür gibt es praktische Gründe: Wenn Sie eine Überweisung tätigen und die Datenbank zehn Minuten später ausfällt – woher wüssten Sie, dass Sie die Überweisung erneut durchführen müssen? Solch strikte Anforderungen vermeiden Verwirrung bei den Endnutzern.
Datenintegrität
Datenintegrität bedeutet, sicherzustellen, dass alle aktuellen Daten überall aktualisiert werden. Es gibt vier einzelne Aspekte, die gemeinsam bestätigen, dass die Daten integer sind. Für ein hohes Maß an Datenintegrität muss ein QA-Tester folgendes bestätigen:
- Die Daten sind überprüfbar
- Die Daten sind abrufbar
- Die Daten sind korrekt
- Die Daten sind vollständig
Wenn die Daten diese vier Anforderungen nicht erfüllen, erfüllen sie wahrscheinlich nicht den Standard der Datenintegrität. Datenmanagement-Tools können hierbei helfen, aber letztendlich liegt es an Ihnen, für höchste Datenqualität zu sorgen.
Wie Huw Price in der Folge des The QA Lead Podcasts mit dem Titel Your Data Quality Sucks feststellte, gewinnt die Sicherstellung, dass Ihre Systeme auf hochwertigen und sicheren Daten laufen, an Bedeutung, da immer mehr Unternehmen eigene Datenbanken aufbauen.
Datenmanipulationssprache
Eine Datenmanipulationssprache (DML) ist eine Programmiersprache, die verwendet wird, um Daten innerhalb eines Datenbankmanagementsystems zu bearbeiten. DML wird hauptsächlich genutzt, um Aufgaben wie das Einfügen, Aktualisieren, Löschen und Abrufen von Daten aus einer Datenbank durchzuführen. Im Wesentlichen stellt die DML eine Reihe von Befehlen und Funktionen bereit, mit denen Anwender mit den Daten einer Datenbank interagieren und diese nach bestimmten Kriterien abfragen oder ändern können. Die DML ist ein wesentlicher Bestandteil jedes Datenbanksystems, da sie Anwendern ermöglicht, Operationen an Daten durchzuführen, ohne die zugrunde liegende Struktur oder Technologie der Datenbank verstehen zu müssen.
DML-Befehle werden typischerweise zusammen mit einer Datenbeschreibungssprache (DDL) verwendet, mit deren Hilfe Datenbankobjekte wie Tabellen, Sichten und Indizes erstellt und geändert werden. DDL und DML sind die Kernbestandteile eines Datenbanksystems und ermöglichen es, Daten sicher, effizient und zuverlässig zu erstellen, zu verändern und zu bearbeiten. Der Einsatz von DML im Datenbankmanagement ermöglicht es Unternehmen, große Mengen an Daten zu speichern, zu verwalten und zu analysieren, und ist damit ein entscheidendes Werkzeug für Unternehmen in der heutigen datengetriebenen Welt.
Arten des Datenbank-Testings
Nachdem wir zwei der zentralen Grundsätze des Datenbank-Testings behandelt haben, können wir uns nun den verschiedenen Testarten zuwenden. Wahrscheinlich haben Sie von einigen dieser Ansätze schon einmal gehört. Denken Sie dran, ich sagte bereits: Wer das QA-Testing versteht, wird auch beim Datenbank-Testing problemlos zurechtkommen. Hier erkläre ich, wie jedes dieser Konzepte beim Datenbank-Testing angewendet wird.
Es gibt drei Arten von Datenbank-Testing:
- Strukturell
- Funktional
- Nicht-funktional
Innerhalb dieser drei Arten des Datenbank-Testings gibt es weitere Untertypen. Keine Sorge, auch diese werde ich erläutern.
Strukturelles Testing
Strukturelles Testing validiert Elemente im Datenspeicher, die für die Datenspeicherung verwendet werden. Diese Elemente sind für Endnutzer unsichtbar und laufen vollständig im Hintergrund ab. Datenbank-Tester führen diese Tests durch, indem sie SQL-Abfragen schreiben.
Daten-Mapping-Tests
Datenstrukturen zuzuordnen bedeutet, Verbindungen zwischen zwei unterschiedlichen Datenmodellen herzustellen. Auch als Schemantests bezeichnet, validiert ein Daten-Mapping-Test sowohl das Frontend als auch das Backend. Sie stellen sicher, dass beide ordnungsgemäß miteinander kommunizieren.
Wenn Sie beispielsweise ein Anmeldeformular auf einer Website ausfüllen, sorgt korrektes Daten-Mapping dafür, dass das Webformular in die Datenbank übertragen wird. Ihr Name, Ihre E-Mail-Adresse und Ihr Passwort werden dort gespeichert, wo sie hingehören. Mit Data-Mapping-Tests wird bestätigt, dass dieser Prozess korrekt funktioniert.
Ein QA-Tester arbeitet mit verschiedenen Data-Mapping-Tools. Eine kurze Liste von Data-Mapping-Tools umfasst:
Testen von Datenbanktabellen
Das Testen von Tabellen führt mehrere Prüfungen der Data-Mapping-Struktur durch. Es wird überprüft, dass die Felder im Frontend und Backend miteinander kompatibel sind. Die Länge der Datenbankfelder wird validiert. Zudem wird kontrolliert, ob es nicht zugeordnete Datenbanktabellen oder Spalten gibt, die beachtet werden müssen.
Datenbankserver-Validierungen
Server-Validierungen stellen sicher, dass die Serverkonfiguration den Anforderungen entspricht. Außerdem wird geprüft, ob jeder, der auf bestimmte Bereiche des Datenbankservers zugreifen möchte, über die entsprechende Berechtigung verfügt. Dies ist ein wichtiger Schritt, um die Datenbank für ihre Nutzer sicher und geschützt zu halten. Schließlich sorgt die Server-Validierung dafür, dass der Server die maximal mögliche Anzahl gleichzeitiger Transaktionen verarbeiten kann.
Ein Beispiel: Eine Server-Validierung für eine Banking-App überprüft, ob der Server die finanziellen Transaktionen einer bestimmten Anzahl von Nutzern abwickeln kann und dass jeder Nutzer nur Zugriff auf seine eigenen Informationen hat.
Funktionales Testen
Wir bringen den Spaß zurück ins funktionale Testen. Ehrlich, das tun wir. Beim funktionalen Testen geht es darum zu prüfen, ob die Datenbank den Vorgaben des Kunden entspricht und ob die Handlungen des Endanwenders mit diesen Anforderungen übereinstimmen. Das bedeutet, dass man oft in die Rolle des Endanwenders schlüpft. Klingt das nicht spaßig? Ich finde, das klingt spaßig.
Black-Box-Testen
Black-Box-Testen ist eine Methode der Softwareprüfung, bei der dem Tester das Design des zu prüfenden Softwaresystems nicht bekannt ist. Ohne detaillierte Kenntnisse des Designs nähert sich der Tester der Software mit ähnlichen Erwartungen wie der Endanwender.
Black-Box-Testen wird beim Datenbanktesten eingesetzt, da so Fehler in den Nutzungswegen gefunden werden, die der Endanwender wahrscheinlich durchlaufen wird. Es ist der ultimative Testlauf aus Sicht des Endanwenders.
Wir haben das Black-Box-Testen ausführlich in unserem Leitfaden 9 Arten von Softwaretests, die jeder QA-Analyst kennen sollte behandelt.
White-Box-Testen
White-Box-Testen ist das genaue Gegenteil von Black-Box-Testen. Beim White-Box-Testen kennt das QA-Mitglied die interne Struktur und das Design der zu prüfenden Software vollständig.
Hier agiert der Tester wie ein Inspektor. Das White-Box-Testen wird auch als Clear-Box-Testen bezeichnet, weil der Tester die Interaktionen zwischen den Einheiten während des Tests beobachtet. Im Gegensatz zum Black-Box-Testen ist dem White-Box-Tester die Nutzererfahrung weniger wichtig.
Komponententest
Komponententest (Unit Testing) ist eine Software-Testtechnik, bei der einzelne Einheiten oder Komponenten einer Anwendung isoliert vom restlichen System getestet werden. Diese Testart dient dazu, einzelne Datenbankobjekte wie Tabellen, Sichten, gespeicherte Prozeduren und Funktionen zu testen. Durch das isolierte Testen dieser Objekte können Entwickler sicherstellen, dass jedes Objekt wie vorgesehen funktioniert.
Komponententests für Datenbanken beinhalten üblicherweise das Schreiben automatisierter Tests, die bestimmte SQL-Befehle gegen ein Datenbankobjekt oder Modul ausführen und überprüfen, ob die erwarteten Ergebnisse geliefert werden. Beispielsweise könnte ein Komponententest für eine gespeicherte Prozedur darin bestehen, dieser bestimmte Eingabeparameter zu übergeben und das korrekte Ergebnis zu überprüfen. Durch solche Komponententests können Entwickler gewährleisten, dass jedes Datenbankobjekt wie erwartet arbeitet und Änderungen am Datenbankschema oder am Anwendungscode keine unerwünschten Folgen oder Fehler verursachen.
Nicht-funktionales Testen
Nicht-funktionales Testen kümmert sich wenig um den Endanwender – nicht, weil er unwichtig wäre, sondern weil andere Aspekte im Fokus stehen. Nicht-funktionale Tests prüfen die Leistungsfähigkeit der Datenbank unter Last und Stress und suchen nach Möglichkeiten zur Performance-Optimierung.
Lasttest
Datenbank-Lasttests sind eine Art von Performancetests für Datenbanken, die überprüfen, dass eine Benutzerlast keine dramatisch negativen Auswirkungen auf die Datenbankleistung hat. Die QA-Tester führen eine Reihe von Lastabfragen durch und wiederholen diese immer und immer wieder, um eine aktive Benutzerbasis zu simulieren.
Stresstest
Stresstests sind Lasttests, aber härter. Sie wollen nicht sehen, ob die Datenbank langsamer wird, sondern wo sie kaputtgehen kann. Das ist wesentlich destruktiver. Also, das macht Spaß.
Hast du jemals voller Vorfreude auf die Veröffentlichung eines neuen Videospiels oder Handys gewartet? Falls ja, kennst du vielleicht das Gefühl, wenn du die Webseite lädst oder die App öffnest, um deinen Einkauf zu tätigen, und auf ungewöhnlich lange Ladezeiten, unerwartete Fehlercodes und das Scheitern bei der Verarbeitung deiner Informationen stößt. Genau das ist eine Datenbank unter Stress.
Es unterscheidet sich vom Lasttest, weil hier die Datenbank einem plötzlichen, unerwartet hohen Datenverkehr ausgesetzt wird.
Automatisiertes Testen von Datenbanken
Das automatisierte Testen von Datenbanken hat in den letzten Jahren an Popularität gewonnen. Wenn die Datenbank manuell getestet werden müsste, würde das zu lange dauern, zu viele Personen erfordern und schlichtweg zu viel Geld kosten.
Es gibt viele Möglichkeiten, automatisierte Tests durchzuführen. Hier findest du eine Liste einiger Datenbankmanagement-Tools, die Testfunktionen anbieten.
Datenbankmanagement-Tool-Liste
Testen einer Datenbank mit API
Eine API (Application Programming Interface) ist eine Sammlung von Protokollen und Standards, die es unterschiedlichen Softwareanwendungen ermöglichen, miteinander zu kommunizieren. Beim Testen von Datenbanken kann eine API mit einer Datenbank verbinden und verschiedene Operationen wie das Einfügen, Aktualisieren, Löschen und Abrufen von Daten durchführen.
Die Verbindung zwischen einer API und dem Testen von Datenbanken besteht darin, dass APIs zur Automatisierung und Optimierung des Testprozesses eingesetzt werden können. Durch die Verwendung einer API zur Verbindung mit einer Datenbank können Tester Aufgaben wie Daten einfügen, aktualisieren und löschen sowie Abfragen zur Datenabfrage und Ergebnisvalidierung automatisieren. Dadurch lässt sich der Zeit- und Arbeitsaufwand für manuelle Tests erheblich reduzieren und die Genauigkeit sowie Konsistenz der Testergebnisse verbessern.
Weitere Ressourcen
Nach dem Lesen dieses Artikels solltest du wissen, wie du Datenbanktests durchführst. Natürlich ist es unmöglich, wirklich alles in einem Artikel abzudecken. Hier sind zwei zusätzliche Ressourcen, die dir helfen können, spezielle Probleme zu lösen.
- Wie man eine relationale Datenbank Regressionstestet
- Wie man einen Performancetest auf einer SQL-Server-Instanz durchführt
Was meinst du?
Das Testen einer Datenbank zu verantworten, kann sich nach viel Verantwortung anfühlen. Ich bin mir sicher, dass du das hinbekommst. Fühlst du dich sicherer im Umgang mit dem Testen von Datenbanken? Schreib es mir in die Kommentare!
