Tutorial zum Datenbanktest
Was ist Datenbanktest?
Datenbanktests ist eine Art von Softwaretest, bei dem das Schema, die Tabellen, Trigger usw. der zu testenden Datenbank รผberprรผft werden. Auรerdem werden Datenintegritรคt und -konsistenz geprรผft. Mรถglicherweise mรผssen komplexe Abfragen erstellt werden, um die Datenbank einem Belastungs-/Stresstest zu unterziehen und ihre Reaktionsfรคhigkeit zu prรผfen.

Warum sind Datenbanktests wichtig?
Datenbanktests sind wichtig in Softwaretest weil dadurch sichergestellt wird, dass die empfangenen und in der Datenbank gespeicherten Datenwerte und Informationen gรผltig sind oder nicht. Datenbanktests helfen, Datenverluste zu vermeiden, abgebrochene Transaktionsdaten zu speichern und einen unbefugten Zugriff auf die Informationen zu verhindern. Datenbanken sind fรผr jede Softwareanwendung wichtig, daher mรผssen Tester zum Testen von Datenbanken รผber gute SQL-Kenntnisse verfรผgen.
Der GUI wird von den Mitgliedern des Test- und Entwicklungsteams in der Regel die grรถรte Bedeutung beigemessen, da die grafische Benutzeroberflรคche zufรคllig der sichtbarste Teil der Anwendung ist. Wichtig ist jedoch auch die Validierung der Informationen, die das Herzstรผck der Anwendung bilden, auch bekannt als DATENBANK.
Betrachten wir eine Banking-Anwendung, in der ein Benutzer Transaktionen durchfรผhrt. Aus Sicht des Datenbanktests oder DB-Tests sind folgende Dinge wichtig:
- Die Anwendung speichert die Transaktionsinformationen in der Anwendungsdatenbank und zeigt sie dem Benutzer korrekt an.
- Dabei gehen keine Informationen verloren.
- Es werden von der Anwendung keine Informationen zu teilweise ausgefรผhrten oder abgebrochenen Vorgรคngen gespeichert.
- Es ist keiner unbefugten Person gestattet, auf die Informationen des Benutzers zuzugreifen.
Um alle oben genannten Ziele sicherzustellen, mรผssen wir Datenvalidierung oder Datentests verwenden.
Unterschiede zwischen Benutzeroberflรคchentests und Datentests
| Testen der Benutzeroberflรคche | Datenbank- oder Datentests |
|---|---|
| Diese Art von Tests wird auch als grafische Benutzeroberflรคchentests oder Front-End-Tests bezeichnet. | Diese Art von Tests wird auch als Backend-Testing oder Datentests bezeichnet. |
| Bei dieser Art des Testens geht es hauptsรคchlich um alle testbaren Elemente, die dem Benutzer zur Ansicht und Interaktion offen stehen, wie Formulare, Prรคsentationen, Diagramme, Menรผs und Berichte usw. (erstellt mit VB, VB.net, VC++, Delphi โ Front-End-Tools) | Diese Art des Testens befasst sich hauptsรคchlich mit allen testbaren Elementen, die dem Benutzer im Allgemeinen fรผr die Zuschauer verborgen bleiben. Dazu gehรถren interne Prozesse und Speicher wie Assembly, DBMS-รคhnlich Oracle, SQL Server, MySQL usw. |
|
Diese Art von Tests umfasst die Validierung der
|
Diese Art von Tests umfasst die Validierung von:
|
| Der Tester muss รผber umfassende Kenntnisse der Geschรคftsanforderungen sowie der Verwendung der Entwicklungstools und der Verwendung von Automatisierungsframeworks und -tools verfรผgen. | Um Backend-Tests durchfรผhren zu kรถnnen, muss der Tester รผber fundierte Kenntnisse der Konzepte von Datenbankservern und Structured Query Language verfรผgen. |
Arten von Datenbanktests
Es gibt drei Arten von Datenbanktests
In diesem Datenbanktest-Tutorial werden wir jeden Typ und seine Untertypen einzeln untersuchen.
Strukturelle Datenbanktests
Strukturelle Datenbanktests ist eine Datenbanktesttechnik, die alle Elemente im Datenrepository validiert, die hauptsรคchlich zur Datenspeicherung verwendet werden und nicht direkt von Endbenutzern manipuliert werden dรผrfen. Die Validierung von Datenbankservern ist auch ein wichtiger Aspekt bei strukturellen Datenbanktests. Um diesen Test erfolgreich abzuschlieรen, mรผssen Sie SQL-Abfragen beherrschen.
Was ist Schematest?
Schematests Beim Datenbanktest werden verschiedene mit der Datenbank verknรผpfte Schemaformate validiert und รผberprรผft, ob die Zuordnungsformate von Tabellen/Ansichten/Spalten mit den Zuordnungsformaten der Benutzeroberflรคche kompatibel sind. Der Hauptzweck des Schematests besteht darin, sicherzustellen, dass die Schemazuordnung zwischen Front-End und Back-End รคhnlich ist. Daher wird es auch als Mapping-Test bezeichnet.
Lassen Sie uns die wichtigsten Prรผfpunkte fรผr Schematests besprechen.
- Validierung der verschiedenen Schemaformate, die den Datenbanken zugeordnet sind. Oftmals ist das Zuordnungsformat der Tabelle mรถglicherweise nicht mit dem Zuordnungsformat kompatibel, das auf der Benutzeroberflรคchenebene der Anwendung vorhanden ist.
- Bei nicht zugeordneten Tabellen/Ansichten/Spalten besteht รberprรผfungsbedarf.
- Darรผber hinaus muss รผberprรผft werden, ob heterogene Datenbanken in einer Umgebung mit der gesamten Anwendungszuordnung konsistent sind.
Schauen wir uns auch einige der interessanten Datenbanktesttools zur Validierung von Datenbankschemata an.
- DBUnit, das in Ant integriert ist, eignet sich sehr gut fรผr Mapping-Tests.
- Mit SQL Server kรถnnen Tester das Schema der Datenbank รผberprรผfen und abfragen, indem sie einfache Abfragen und nicht Code schreiben.
Wenn die Entwickler beispielsweise eine Tabellenstruktur รคndern oder lรถschen mรถchten, mรถchte der Tester sicherstellen, dass alle gespeicherten Prozeduren und Ansichten, die diese Tabelle verwenden, mit der jeweiligen รnderung kompatibel sind. Ein anderes Beispiel kรถnnte sein, dass die Tester, wenn sie nach Schemaรคnderungen zwischen zwei Datenbanken suchen mรถchten, dies mithilfe einfacher Abfragen tun kรถnnen.
Datenbanktabelle, Spaltentest
Schauen wir uns verschiedene Prรผfungen fรผr Datenbank- und Spaltentests an.
- Ob die Zuordnung der Datenbankfelder und -spalten im Backend mit den Zuordnungen im Frontend kompatibel ist?
- Validierung der Lรคnge und Namenskonvention der Datenbankfelder und -spalten gemรคร den Anforderungen.
- Validierung des Vorhandenseins aller nicht verwendeten/nicht zugeordneten Datenbanktabellen/Spalten.
- Validierung der Kompatibilitรคt der
- Datentyp
- Feldlรคngen
der Back-End-Datenbankspalten mit denen im Front-End der Anwendung.
- Ob die Datenbankfelder es dem Benutzer ermรถglichen, gewรผnschte Benutzereingaben gemรคร den Geschรคftsanforderungsspezifikationsdokumenten bereitzustellen.
Testen von Schlรผsseln und Indizes
Wichtige Prรผfungen fรผr Schlรผssel und Indizes โ
- Prรผfen Sie, ob die erforderlichen
- Primรคrschlรผssel
- Unbekannter Schlรผssel
Fรผr die erforderlichen Tabellen wurden Einschrรคnkungen erstellt.
- Prรผfen Sie, ob die Referenzen fรผr Fremdschlรผssel gรผltig sind.
- รberprรผfen Sie, ob der Datentyp des Primรคrschlรผssels und der entsprechenden Fremdschlรผssel in den beiden Tabellen gleich ist.
- รberprรผfen Sie, ob fรผr alle Schlรผssel und Indizes die erforderlichen Namenskonventionen eingehalten wurden.
- รberprรผfen Sie die Grรถรe und Lรคnge der erforderlichen Felder und Indizes.
- Ob das erforderliche
- Clustered-Indizes
- Nein Clustered-Indizes
wurden gemรคร den Geschรคftsanforderungen fรผr die erforderlichen Tabellen erstellt.
Testen gespeicherter Prozeduren
Wichtige Tests zur รberprรผfung gespeicherter Prozeduren sind:
- Ob das Entwicklungsteam die erforderlichen A) Codierungsstandardkonventionen und B) Ausnahme- und Fehlerbehandlung รผbernommen hat. Fรผr alle gespeicherten Prozeduren fรผr alle Module der zu testenden Anwendung.
- Hat das Entwicklungsteam alle Bedingungen/Schleifen abgedeckt, indem es die erforderlichen Eingabedaten auf die zu testende Anwendung angewendet hat?
- Hat das Entwicklungsteam den TRIM-Vorgang immer ordnungsgemรคร angewendet, wenn Daten aus den erforderlichen Tabellen in der Datenbank abgerufen wurden?
- Ob die manuelle Ausfรผhrung der Stored Procedure dem Endbenutzer das gewรผnschte Ergebnis liefert?
- Stellt die manuelle Ausfรผhrung der gespeicherten Prozedur sicher, dass die Tabellenfelder entsprechend den Anforderungen der zu testenden Anwendung aktualisiert werden?
- Ob die Ausfรผhrung der Stored Procedures das implizite Aufrufen der erforderlichen Trigger ermรถglicht?
- รberprรผfung des Vorhandenseins ungenutzter gespeicherter Prozeduren.
- Validierung fรผr die Bedingung โNull zulassenโ, die auf Datenbankebene durchgefรผhrt werden kann.
- Validierung der Tatsache, dass alle gespeicherten Prozeduren und Funktionen erfolgreich ausgefรผhrt wurden, wenn die zu testende Datenbank leer ist.
- Validierung der Gesamtintegration der gespeicherten Prozedurmodule gemรคร den Anforderungen der zu testenden Anwendung.
Einige der nรผtzlichen Datenbanktesttools zum Testen gespeicherter Prozeduren sind LINQ, das SP-Testtool usw.
Triggertests
- Wurden wรคhrend der Codierungsphase der Trigger die erforderlichen Codierungskonventionen befolgt?
- Prรผfen Sie, ob die fรผr die jeweiligen DML-Transaktionen ausgefรผhrten Trigger die erforderlichen Bedingungen erfรผllt haben.
- Ob der Trigger die Daten nach ihrer Ausfรผhrung korrekt aktualisiert?
- Validierung der erforderlichen Update-/Einfรผge-/Lรถsch-Trigger-Funktionalitรคt im Bereich der zu testenden Anwendung.
Datenbankservervalidierungen
- รberprรผfen Sie die Datenbankserverkonfigurationen gemรคร den Geschรคftsanforderungen.
- รberprรผfen Sie die Berechtigung des erforderlichen Benutzers, nur die Aktionsebenen auszufรผhren, die fรผr die Anwendung erforderlich sind.
- รberprรผfen Sie, ob der Datenbankserver in der Lage ist, die Anforderungen der maximal zulรคssigen Anzahl von Benutzertransaktionen gemรคร den Geschรคftsanforderungsspezifikationen zu erfรผllen.
Funktionale Datenbanktests
Funktionale Datenbanktests ist eine Art von Datenbanktest, der verwendet wird, um die funktionalen Anforderungen einer Datenbank aus der Sicht des Endbenutzers zu validieren. Das Hauptziel des funktionalen Datenbanktests besteht darin, zu prรผfen, ob die von den Endbenutzern durchgefรผhrten Transaktionen und Vorgรคnge, die mit der Datenbank in Zusammenhang stehen, wie erwartet funktionieren oder nicht.
Nachfolgend sind die grundlegenden Bedingungen aufgefรผhrt, die bei Datenbankvalidierungen beachtet werden mรผssen.
- Ob das Feld obligatorisch ist und gleichzeitig NULL-Werte in diesem Feld zulรคssig sind?
- Ob die Lรคnge jedes Feldes ausreichend groร ist?
- Ob alle รคhnlichen Felder tabellenรผbergreifend dieselben Namen haben?
- Gibt es in der Datenbank berechnete Felder?
Bei diesem speziellen Prozess handelt es sich um die Validierung der Feldzuordnungen aus Sicht des Endbenutzers. In diesem speziellen Szenario fรผhrt der Tester einen Vorgang auf Datenbankebene aus und navigiert dann zum entsprechenden Benutzeroberflรคchenelement, um zu beobachten und zu validieren, ob die richtigen Feldvalidierungen durchgefรผhrt wurden oder nicht.
Der umgekehrte Fall, bei dem der Tester zuerst den Vorgang an der Benutzeroberflรคche ausfรผhrt und dieser anschlieรend vom Backend aus validiert wird, muss ebenfalls eingehalten werden.
รberprรผfung der Datenintegritรคt und -konsistenz
Folgende Kontrollen sind wichtig
- Ob die Daten logisch gut organisiert sind?
- Sind die in den Tabellen gespeicherten Daten korrekt und entsprechen den Geschรคftsanforderungen?
- Sind in der getesteten Anwendung unnรถtige Daten vorhanden?
- Wurden die Daten gemรคร den Anforderungen in Bezug auf Daten gespeichert, die รผber die Benutzeroberflรคche aktualisiert wurden?
- Wurden TRIM-Operationen an den Daten durchgefรผhrt, bevor die Daten in die zu testende Datenbank eingefรผgt wurden?
- Ob die Transaktionen gemรคร den Geschรคftsanforderungsspezifikationen durchgefรผhrt wurden und ob die Ergebnisse korrekt sind oder nicht?
- Ob die Daten ordnungsgemรคร festgeschrieben wurden, wenn die Transaktion erfolgreich ausgefรผhrt wurde?
- Ob die Daten erfolgreich zurรผckgesetzt wurden, wenn die Transaktion vom Endbenutzer nicht erfolgreich ausgefรผhrt wurde?
- Ob die Daten zurรผckgesetzt wurden, wenn die Transaktion nicht erfolgreich ausgefรผhrt wurde und mehrere heterogene Datenbanken an der betreffenden Transaktion beteiligt waren?
- Ob alle Transaktionen unter Verwendung der erforderlichen Entwurfsverfahren gemรคร den Geschรคftsanforderungen des Systems ausgefรผhrt wurden?
Anmelde- und Benutzersicherheit
Bei der Validierung der Anmelde- und Benutzersicherheitsdaten mรผssen die folgenden Aspekte berรผcksichtigt werden.
- Ob die Anwendung den Benutzer daran hindert, mit der Anwendung fortzufahren, wenn a
- Ungรผltiger Benutzername, aber gรผltiges Passwort
- gรผltiger Benutzername, aber ungรผltiges Passwort.
- Ungรผltiger Benutzername und ungรผltiges Passwort.
- Darf der Benutzer nur die spezifischen Vorgรคnge ausfรผhren, die in den Geschรคftsanforderungen festgelegt sind?
- Ob die Daten vor unbefugtem Zugriff geschรผtzt sind?
- Gibt es unterschiedliche Benutzerrollen mit unterschiedlichen Berechtigungen?
- Verfรผgen alle Benutzer รผber die erforderlichen Zugriffsebenen auf die angegebene Datenbank, wie in den Geschรคftsspezifikationen gefordert?
- รberprรผfen Sie, ob vertrauliche Daten wie Passwรถrter und Kreditkartennummern verschlรผsselt und nicht als Klartext in der Datenbank gespeichert sind. Es empfiehlt sich, sicherzustellen, dass alle Konten komplexe Passwรถrter haben, die nicht leicht zu erraten sind.
Nicht funktionales Testen
Nicht funktionales Testen im Zusammenhang mit Datenbanktests kรถnnen entsprechend den Geschรคftsanforderungen in verschiedene Kategorien eingeteilt werden. Dies kรถnnen Lasttests, Stresstests, Sicherheitstests, Benutzer-Testsund Kompatibilitรคtstests, und so weiter. Die Belastungstests sowie die Stresstests, die unter der Skala der Leistungstests zusammengefasst werden kรถnnen, dienen zwei spezifischen Zwecken, wenn es um die Rolle nichtfunktionaler Tests geht.
Risikoquantifizierungโ Die Quantifizierung des Risikos hilft den Beteiligten, die verschiedenen Anforderungen an die Systemreaktionszeit unter den erforderlichen Lastniveaus zu ermitteln. Dies ist die ursprรผngliche Absicht von jedem Qualitรคtskontrolle Aufgabe. Wir mรผssen beachten, dass Belastungstests das Risiko nicht direkt mindern, sondern durch die Prozesse der Risikoidentifizierung und Risikoquantifizierung Korrekturmรถglichkeiten und einen Impuls fรผr Abhilfemaรnahmen bieten, die das Risiko mindern.
Mindestanforderungen an die Systemausrรผstungโ Die minimale Systemkonfiguration, die es dem System ermรถglicht, die formal festgelegten Leistungserwartungen der Stakeholder zu erfรผllen. So kรถnnen externe Hardware, Software und die damit verbundenen Betriebskosten minimiert werden. Diese besondere Anforderung kann als allgemeine Geschรคftsoptimierungsanforderung kategorisiert werden.
Load Testing
Der Zweck eines jeden Belastungstests sollte klar verstanden und dokumentiert werden. Die folgenden Konfigurationstypen sind ein Muss fรผr Lastprรผfung.
- Die am hรคufigsten verwendeten Benutzertransaktionen kรถnnen die Leistung aller anderen Transaktionen beeintrรคchtigen, wenn sie nicht effizient sind.
- In die endgรผltige Testsuite sollte mindestens eine Benutzertransaktion ohne Bearbeitung aufgenommen werden, damit die Ausfรผhrung solcher Transaktionen von anderen, komplexeren Transaktionen unterschieden werden kann.
- Die wichtigeren Transaktionen, die die Kernziele des Systems ermรถglichen, sollten einbezogen werden, da ein Ausfall unter der Last dieser Transaktionen per Definition die grรถรten Auswirkungen hat.
- Dazu sollte mindestens eine bearbeitbare Transaktion enthalten sein Leistung Solche Transaktionen kรถnnen von anderen Transaktionen unterschieden werden.
- Optimale Reaktionszeit bei einer groรen Anzahl virtueller Benutzer fรผr alle zukรผnftigen Anforderungen.
- Effektive Zeiten zum Abrufen verschiedener Datensรคtze.
Wichtige Lasttest-Tools sind LoadRunner Professional, Win Runner und JMeter.
Was ist ein Datenbank-Stresstest?
Datenbank-Stresstest ist eine Testmethode, mit der ein Datenbanksystem unter hoher Auslastung einem Stresstest unterzogen wird, sodass es irgendwann ausfรคllt. Dies hilft bei der Identifizierung des Ausfallpunkts des Datenbanksystems. Es erfordert eine angemessene Planung und entsprechende Anstrengungen, um eine รผbermรครige Nutzung der Ressourcen zu vermeiden. Daten Stress-Tests wird auch als quรคlende Prรผfung oder Ermรผdungsprรผfung bezeichnet.
Wichtige Stresstest-Tools sind LoadRunner Professional und JMeter.
Die am hรคufigsten auftretenden Probleme beim Datenbanktest
A significant amount of overhead could be involved to determine the state of the database transactions
Lรถsung: Die gesamte Prozessplanung und -planung sollte so organisiert sein, dass keine zeit- und kostenbedingten Probleme auftreten.
New test data have to be designed after cleaning up of the old test data.
Lรถsung: Ein vorheriger Plan und eine Methodik fรผr die Testdatengenerierung sollten vorliegen.
An SQL generator is required to transform SQL validators in order to ensure the SQL queries are apt for handling the required database test cases.
Lรถsung: Die Pflege der SQL-Abfragen und deren kontinuierliche Aktualisierung ist ein wesentlicher Teil des gesamten Testprozesses, der Teil des Gesamtprozesses sein sollte Teststrategie.
The above mentioned prerequisite ensure that the set-up of the database testing procedure could be costly as well as time consuming.
Lรถsung: Es sollte ein ausgewogenes Verhรคltnis zwischen Qualitรคt und Gesamtdauer des Projektzeitplans bestehen.
Mythen oder Missverstรคndnisse im Zusammenhang mit Datenbanktests
Database Testing requires plenty of expertise and it is a very tedious job
Wirklichkeit: Effektive und effiziente Datenbanktests im Softwaretest sorgen fรผr eine langfristige Funktionsstabilitรคt der gesamten Anwendung und erfordern daher harte Arbeit.
Database testing adds extra work bottleneck
Wirklichkeit: Im Gegenteil, Datenbanktests steigern den Wert der Gesamtarbeit, indem sie versteckte Probleme aufdecken und so proaktiv zur Verbesserung der Gesamtanwendung beitragen.
Database testing slows down the overall development process
Wirklichkeit: Ein erheblicher Umfang an Datenbanktests trรคgt zur allgemeinen Verbesserung der Qualitรคt der Datenbankanwendung bei.
Database testing could be excessively costly
Wirklichkeit: Jeder Aufwand fรผr Datenbanktests ist eine langfristige Investition, die zu einer langfristigen Stabilitรคt und Robustheit der Anwendung fรผhrt. Somit sind Ausgaben fรผr Datenbanktests bzw SQL Tests sind notwendig.
Best Practices
- Alle Daten, einschlieรlich der Metadaten sowie der Funktionsdaten, mรผssen entsprechend ihrer Zuordnung durch die Anforderungsspezifikationsdokumente validiert werden.
- รberprรผfung der Testdaten das vom/in Absprache mit dem Entwicklungsteam erstellt wurde, muss validiert werden.
- Validierung der Ausgabedaten mithilfe sowohl manueller als auch automatisierter Verfahren.
- Einsatz verschiedener Techniken wie der Ursache-Wirkungs-Grafiktechnik, der รquivalenzpartitionierungstechnik und der Randwertanalysetechnik zur Generierung der erforderlichen Testdatenbedingungen.
- Die Validierungsregeln der referenziellen Integritรคt fรผr die erforderlichen Datenbanktabellen mรผssen ebenfalls validiert werden.
- Die Auswahl von Standardtabellenwerten fรผr die Validierung der Datenbankkonsistenz ist ein sehr wichtiges Konzept. Ob die Protokollereignisse fรผr alle erforderlichen Anmeldeereignisse erfolgreich zur Datenbank hinzugefรผgt wurden
- Werden geplante Jobs rechtzeitig ausgefรผhrt?
- Erstellen Sie rechtzeitig ein Backup der Datenbank.
Auch Check- Fragen und Antworten zum Datenbanktest-Interview




