Datenbanktests - Kurzanleitung
Das Testen der Datenbank umfasst das Durchführen der Datengültigkeit, das Testen der Datenintegrität, die Leistungsprüfung in Bezug auf die Datenbank sowie das Testen von Prozeduren, Triggern und Funktionen in der Datenbank.
Beispiel
Stellen Sie sich eine Anwendung vor, die die täglichen Transaktionsdetails für Benutzer erfasst und die Details in der Datenbank speichert. Aus Sicht der Datenbanktests sollten die folgenden Überprüfungen durchgeführt werden:
Die Transaktionsinformationen aus der Anwendung sollten in der Datenbank gespeichert sein und dem Benutzer korrekte Informationen liefern.
Informationen sollten nicht verloren gehen, wenn sie in die Datenbank geladen werden.
Es sollten nur abgeschlossene Transaktionen gespeichert und alle unvollständigen Vorgänge von der Anwendung abgebrochen werden.
Die Zugriffsberechtigung für die Datenbank sollte beibehalten werden. Es sollte kein nicht genehmigter oder nicht autorisierter Zugriff auf Benutzerinformationen gewährt werden.
Warum müssen Sie Datenbanktests durchführen?
Es gibt mehrere Gründe, warum Datenbanktests durchgeführt werden. Es ist erforderlich, Datenintegrität, Validierung und Datenkonsistenzprüfung für die Datenbank durchzuführen, da das Backend-System für die Speicherung der Daten verantwortlich ist und für mehrere Zwecke zugegriffen wird.
Im Folgenden sind einige häufige Gründe für Datenbanktests aufgeführt:
Um die Komplexität der Aufrufe des Datenbank-Backends zu verringern, erhöhen Entwickler die Verwendung von View und Stored Verfahren.
Diese Stored Verfahren und ViewsEnthält wichtige Aufgaben wie das Einfügen von Kundendaten (Name, Kontaktinformationen usw.) und Verkaufsdaten. Diese Aufgaben müssen auf mehreren Ebenen getestet werden.
Black-box testingDie Ausführung am Frontend ist wichtig, macht es jedoch schwierig, das Problem einzugrenzen. Tests im Backend-System erhöhen die Robustheit der Daten. Aus diesem Grund werden Datenbanktests auf dem Back-End-System durchgeführt.
In einer Datenbank stammen Daten aus mehreren Anwendungen, und es besteht die Möglichkeit, dass schädliche oder falsche Daten in der Datenbank gespeichert werden. Daher müssen die Datenbankkomponenten regelmäßig überprüft werden. Darüber hinaus sollten Datenintegrität und -konsistenz regelmäßig überprüft werden.
Datenbanktests vs. Front-End-Tests
Das Testen von Datenbanken unterscheidet sich vom Testen der Front-End-Benutzeroberfläche. Die folgende Tabelle zeigt die wichtigsten Unterschiede -
Datenbanktests | UI-Tests |
---|---|
Datenbanktests werden als Datenvalidierungs- und Integritätstests oder Back-End-Tests bezeichnet. |
UI-Tests oder Front-End-Tests werden auch als Anwendungstests oder GUI-Tests bezeichnet. |
Beim Testen von Datenbanken werden Back-End-Komponenten getestet, die für Benutzer nicht sichtbar sind. Dies umfasst Datenbankkomponenten und DBMS-Systeme wie My SQL, Oracle. |
Beim Testen der Benutzeroberfläche werden die Funktionen einer Anwendung und ihrer Komponenten wie Formulare, Diagramme, Menüs, Berichte usw. überprüft. Diese Komponenten werden mit Front-End-Entwicklungstools wie VB.net, C #, Delphi usw. erstellt. |
Beim Testen von Datenbanken werden gespeicherte Prozeduren, Ansichten, Schemas in der Datenbank, Tabellen, Indizes, Schlüssel, Trigger, Datenüberprüfungen und Datenkonsistenzprüfungen überprüft. |
Beim Testen der Benutzeroberfläche werden die Funktionalität der Anwendung, Schaltflächen, Formulare und Felder, Kalender und Bilder, die Navigation von einer Seite zur anderen und die Gesamtfunktionalität der Anwendung überprüft. |
Um DB-Tests durchführen zu können, benötigt ein Tester gründliche Kenntnisse des Datenbankkonzepts - wie Prozeduren und Funktionen, Ansichten, Indizes, Schlüssel und gutes praktisches SQL. |
Um UI-Tests durchführen zu können, benötigt ein Tester ein gutes Verständnis der Geschäftsanforderungen, der Anwendungsfunktionskenntnisse, der Codierung usw. |
Daten stammen aus mehreren heterogenen Datenquellen über Webanwendungen, Intranetanwendungen und verschiedene andere Anwendungen. |
Daten werden manuell in Anwendungen eingegeben. Es beinhaltet Funktionstests von Front-End-Anwendungen. |
Basierend auf der Funktion und Struktur einer Datenbank können DB-Tests in drei Kategorien eingeteilt werden:
Structural Database Testing - Es befasst sich mit Tabellen- und Spaltentests, Schematests, Tests mit gespeicherten Prozeduren und Ansichten, Überprüfen von Triggern usw.
Functional Testing- Es beinhaltet die Überprüfung der Funktionalität der Datenbank aus Anwendersicht. Die gebräuchlichste Art von Funktionstests sind White-Box- und Black-Box-Tests.
Nonfunctional Testing - Es umfasst Lasttests, Risikotests in der Datenbank, Stresstests, Mindestsystemanforderungen und befasst sich mit der Leistung der Datenbank.
Testen von Strukturdatenbanken
Beim Testen struktureller Datenbanken werden die Datenbankkomponenten überprüft, die Endbenutzern nicht zugänglich sind. Es umfasst alle Komponenten des Repositorys, die zum Speichern der Daten verwendet werden und von den Endbenutzern nicht geändert werden. Datenbankadministratoren mit guten Kenntnissen über gespeicherte SQL-Prozeduren und andere Konzepte führen diese Tests normalerweise durch.
Diskutiert werden die gängigen Komponenten, die im Hinblick auf Strukturprüfungen getestet wurden -
Schema- / Zuordnungstests
Dabei werden die Objekte der Front-End-Anwendung mit einer Datenbankobjektzuordnung überprüft.
In Schematests -
Manchmal kommt es vor, dass die Endbenutzeranwendungsobjekte nicht korrekt zugeordnet oder mit Datenbankobjekten kompatibel sind. Daher ist eine Überprüfung der Validierung der verschiedenen Schemaformate erforderlich, die den Datenbanken zugeordnet sind.
Es ist erforderlich, die nicht zugeordneten Objekte in der Datenbank zu finden, z. B. Tabellen, Ansichten, Spalten usw.
Es gibt verschiedene Tools auf dem Markt, mit denen Objektzuordnungen in Schemas durchgeführt werden können.
Example - In Microsoft SQL Server kann ein Tester einfache Abfragen schreiben, um Schemas in der Datenbank zu überprüfen und zu validieren.
Wenn der Tester Änderungen an einer Tabellenstruktur vornehmen möchte, sollte er sicherstellen, dass alle stored Prozeduren mit dieser Tabelle sind mit dieser Änderung kompatibel.
Testen gespeicherter Prozeduren und Ansichten
Bei diesem Test stellt ein Tester sicher, dass die manuelle Ausführung gespeicherter Prozeduren und Ansichten das erforderliche Ergebnis generiert.
Der Tester sorgt dafür -
Wenn es ermöglicht, dass die erforderlichen Trigger wie erwartet ausgeführt werden.
Wenn das Entwicklungsteam alle Schleifen und Bedingungen abgedeckt hat, indem es Eingaben an Anwendungen in den Verfahren weiterleitet.
Wenn nicht verwendete gespeicherte Prozeduren in der Datenbank vorhanden sind.
TRIM-Operationen werden ordnungsgemäß angewendet, wenn die Daten aus den erforderlichen Tabellen in der Datenbank abgerufen werden.
Validierung der Gesamtintegration der gespeicherten Prozedurmodule gemäß den Anforderungen der zu testenden Anwendung.
Ausnahme- und Fehlerbehandlungsmechanismen werden befolgt.
Die gebräuchlichsten Tools zum Testen gespeicherter Prozeduren sind: LINQ, SP Test tool, usw.
Trigger-Test
Beim Trigger-Test muss ein Tester Folgendes sicherstellen:
Gibt an, ob die Codierungskonventionen während der Codierungsphase der Trigger eingehalten werden.
Die ausgeführten Trigger erfüllen die erforderlichen Bedingungen.
Gibt an, ob der Trigger die Daten nach ihrer Ausführung korrekt aktualisiert.
Die Validierung von Aktualisieren / Einfügen / Löschen löst die Funktionalität der zu testenden Anwendung aus.
Tabellen- und Säulentests
Die Schlüsselbereiche, die in diesen Tests abgedeckt werden, sind -
Überprüfen der Datentypen in der Datenbank auf Feldwerte in der Front-End-Anwendung.
Überprüfen der Länge des Datenfelds in der Datenbank auf die Länge der Datentypen in der Anwendung.
Überprüfen, ob in der Datenbank nicht zugeordnete Tabellen oder Spalten von Anwendungsfeldobjekten vorhanden sind.
Namenskonventionen von Datenbanktabellen und -spalten werden überprüft, ob sie den Geschäftsanforderungen entsprechen oder nicht.
Die Überprüfung der Schlüssel und Indizes in der Datenbank, dh der Primär- und Fremdschlüssel in Tabellen, wird gemäß den Anforderungen definiert.
Überprüfen Sie in zwei Tabellen, ob die Primärschlüssel und die entsprechenden Fremdschlüssel identisch sind.
Überprüfen Sie, ob die eindeutigen und NICHT NULL-Eigenschaften der Schlüssel erhalten bleiben.
Länge und Datentyp der Schlüssel und Indizes werden gemäß den Anforderungen beibehalten.
Datenbankserverprüfung
Bei der Datenbankserverprüfung wird Folgendes überprüft:
Wenn der Datenbankserver die erwartete Anzahl von Transaktionen gemäß den Geschäftsanforderungen verarbeiten kann.
Wenn die Konfigurationsdetails von Datenbankservern den Geschäftsanforderungen entsprechen.
Wenn die Benutzerberechtigung gemäß Anforderung beibehalten wird.
Funktionsprüfung
Funktionstests werden unter Berücksichtigung des Endbenutzers durchgeführt. ob die von den Endbenutzern ausgeführten erforderlichen Transaktionen und Vorgänge den Geschäftsspezifikationen entsprechen.
Black-Box-Test
Beim Black-Box-Test wird die Integration der Datenbank überprüft, um die Funktionalität zu überprüfen. Die Testfälle sind einfach und werden verwendet, um eingehende und ausgehende Daten von der Funktion zu überprüfen.
Verschiedene Techniken wie die Ursache-Wirkungs-Grafiktechnik, die Äquivalenzpartitionierung und die Randwertanalyse werden verwendet, um die Funktionalität der Datenbank zu testen.
Es ist advantages sind wie folgt -
- Es ist ziemlich einfach und wird in den frühen Stadien der Entwicklung durchgeführt.
- Die Kosten für die Entwicklung von Testfällen sind im Vergleich zu White-Box-Tests geringer.
Seine Nachteile sind wie folgt:
- Einige Fehler können nicht erkannt werden
- Es ist nicht bekannt, wie viel Programm getestet werden muss.
White-Box-Test
White Box Testing befasst sich mit der internen Struktur der Datenbank und die Spezifikationsdetails sind den Benutzern verborgen. Es umfasst das Testen von Datenbank-Triggern und logischen Ansichten, die das Datenbank-Refactoring unterstützen.
Es führt Modultests von Datenbankfunktionen, Triggern, Ansichten, SQL-Abfragen usw. durch. Diese Art des Testens validiert Datenbanktabellen, Datenmodelle, Datenbankschemata usw. Es überprüft Regeln der referenziellen Integrität. Es werden Standardtabellenwerte ausgewählt, um die Datenbankkonsistenz zu überprüfen.
Die gebräuchlichsten Techniken zur Durchführung von White-Box-Tests sind Bedingungsabdeckung, Entscheidungsabdeckung, Anweisungsabdeckung usw.
Bei White-Box-Tests können 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.
Nicht funktionierende Tests
Nichtfunktionale Tests umfassen die Durchführung von Lasttests, Stresstests, die Überprüfung der Mindestsystemanforderungen zur Erfüllung der Geschäftsspezifikationen, die Risikofindung und die Leistungsoptimierung der Datenbank.
Lasttest
Das Hauptziel von Lasttests besteht darin, zu überprüfen, ob die meisten ausgeführten Transaktionen Auswirkungen auf die Leistung der Datenbank haben.
Beim Lasttest prüft der Tester -
- Die Antwortzeit für die Ausführung der Transaktionen für mehrere Remotebenutzer.
- Zeit, die die Datenbank benötigt, um bestimmte Datensätze abzurufen.
Examples of load testing in different testing types - -
- Ausführen der am häufigsten verwendeten Transaktion wiederholt, um die Leistung des Datenbanksystems zu überprüfen.
- Herunterladen einer Reihe großer Dateien aus dem Internet.
- Ausführen mehrerer Anwendungen auf einem Computer oder Server gleichzeitig.
Belastbarkeitstest
Stresstests werden durchgeführt, um den Systembruchpunkt zu identifizieren. Bei diesem Test wird die Anwendung so geladen, dass das System an einem Punkt ausfällt. Dieser Punkt wird als bezeichnetbreakpoint des Datenbanksystems.
Das Ermitteln des Status von Datenbanktransaktionen ist mit einem erheblichen Aufwand verbunden. Eine ordnungsgemäße Planung ist erforderlich, um zeit- und kostenbezogene Probleme zu vermeiden.
Die am häufigsten verwendeten Stresstest-Tools sind LoadRunner und WinRunner.
Nehmen wir eine examplevon Stresstests. Eine CRM-Anwendung kann eine maximale Benutzerlast von 50000 gleichzeitigen Benutzern aufnehmen. Angenommen, Sie erhöhen die Last auf 51000 und führen einige Transaktionen durch, z. B. das Aktualisieren von Datensätzen oder das Hinzufügen eines Eintrags. Sobald Sie die Transaktion ausführen, kann die Anwendung mit dem Datenbanksystem synchronisiert werden. Der nächste Test besteht also darin, mit einer Benutzerlast von 52000 durchzuführen. Manchmal wird auch Stresstest genanntFatigue Testing.
Der Prozess zum Durchführen von Datenbanktests ähnelt dem Testen anderer Anwendungen. DB-Tests können mit den unten angegebenen Schlüsselprozessen beschrieben werden.
- Richten Sie die Umgebung ein
- Führen Sie einen Test durch
- Überprüfen Sie das Testergebnis
- Validieren Sie gemäß den erwarteten Ergebnissen
- Melden Sie die Ergebnisse den jeweiligen Stakeholdern
Zur Entwicklung der Testfälle werden verschiedene SQL-Anweisungen verwendet. Die häufigste SQL-Anweisung, mit der DB-Tests durchgeführt werden, ist dieSelectErklärung. Abgesehen davon können auch verschiedene DDL-, DML- und DCL-Anweisungen verwendet werden.
Example - Erstellen, Einfügen, Auswählen, Aktualisieren usw.
Teststufen der Datenbank
Das Testen von DBs ist kein langwieriger Prozess und umfasst verschiedene Phasen des Lebenszyklus von Datenbanktests gemäß den Testprozessen.
Die wichtigsten Phasen beim Testen von Datenbanken sind:
- Überprüfen des Ausgangszustands
- Testlauf
- Ergebnisvalidierung gemäß erwartetem Ergebnis
- Ergebnisse generieren
First stageBeim DB-Testen wird der Anfangszustand der Datenbank überprüft, bevor der Testprozess gestartet wird. Anschließend wird das Datenbankverhalten auf definierte Testfälle getestet. Entsprechend den erzielten Ergebnissen werden Testfälle angepasst.
Für erfolgreiche Datenbanktests wird der unten angegebene Workflow von jedem einzelnen Test ausgeführt.
Cleaning up the database - Wenn die Datenbank testbare Daten enthält, sollten diese geleert werden.
Set up Fixture - Dazu müssen die Daten in die Datenbank eingegeben und der aktuelle Status der Datenbank überprüft werden.
Perform test, verify results and generate results- Der Test wird ausgeführt und die Ausgabe wird überprüft. Wenn die Ausgabe den erwarteten Ergebnissen entspricht, besteht der nächste Schritt darin, die Ergebnisse gemäß den Anforderungen zu generieren. Andernfalls wird der Test wiederholt, um die Fehler in der Datenbank zu finden.
In diesem Kapitel werden die gängigsten Techniken zum Ausführen von Datenbanktests erläutert.
Testen des Datenbankschemas
Wie bereits erwähnt, wird jedes Objekt im Schema getestet.
Überprüfen von Datenbanken und Geräten
- Überprüfen des Datenbanknamens
- Überprüfen des Datengeräts, des Protokollgeräts und des Speicherauszugs
- Überprüfen, ob für jede Datenbank genügend Speicherplatz zugewiesen ist
- Überprüfen der Einstellung der Datenbankoptionen
Überprüfung von Tabellen, Spalten und Spaltentypenregeln
Überprüfen Sie die unten angegebenen Punkte, um die Unterschiede zwischen der tatsächlichen und der angewendeten Einstellung herauszufinden.
Name aller Tabellen in der Datenbank
Spaltennamen für jede Tabelle
Spaltentypen für jede Tabelle
NULL Wert geprüft oder nicht
Gibt an, ob ein Standard an die korrekten Tabellenspalten gebunden ist
Regeldefinitionen zum Korrigieren von Tabellennamen und Zugriffsrechten
Schlüssel und Indizes
Überprüfen Sie den Schlüssel und die Indizes in jeder Tabelle -
Primärschlüssel für jede Tabelle
Fremdschlüssel für jede Tabelle
Datentypen zwischen einer Fremdschlüsselspalte und einer Spalte in einer anderen Tabelle Indizes, gruppiert oder nicht gruppiert eindeutig oder nicht eindeutig
Gespeicherte Prozedurtests
Dabei wird geprüft, ob eine gespeicherte Prozedur definiert ist, und die Ausgabeergebnisse werden verglichen. Bei einem Test mit gespeicherten Prozeduren werden die folgenden Punkte überprüft:
Name der gespeicherten Prozedur
Parameternamen, Parametertypen usw.
Output- Ob die Ausgabe viele Datensätze enthält. Es werden keine Zeilen ausgeführt oder nur wenige Datensätze extrahiert.
Was ist die Funktion der gespeicherten Prozedur und was soll eine gespeicherte Prozedur nicht tun?
Übergeben von Beispiel-Eingabeabfragen, um zu überprüfen, ob eine gespeicherte Prozedur korrekte Daten extrahiert.
Stored Procedure Parameters- Speichern Sie die gespeicherte Prozedur mit Grenzdaten und mit gültigen Daten. Machen Sie jeden Parameter einmal ungültig und führen Sie eine Prozedur aus.
Return values- Überprüfen Sie die Werte, die von der gespeicherten Prozedur zurückgegeben werden. Im Fehlerfall muss ein Wert ungleich Null zurückgegeben werden.
Error messages check- Nehmen Sie Änderungen so vor, dass die gespeicherte Prozedur fehlschlägt, und generieren Sie jede Fehlermeldung mindestens einmal. Überprüfen Sie alle Ausnahmeszenarien, wenn keine vordefinierte Fehlermeldung vorliegt.
Tests auslösen
In einem Trigger-Test muss der Tester die folgenden Aufgaben ausführen:
- Stellen Sie sicher, dass der Triggername korrekt ist.
- Überprüfen Sie den Trigger, wenn er für eine bestimmte Tabellenspalte generiert wird.
- Update-Validierung des Triggers.
- Aktualisieren Sie einen Datensatz mit gültigen Daten.
- Aktualisieren Sie einen Datensatz mit ungültigen Daten und decken Sie jeden Triggerfehler ab.
- Aktualisieren Sie einen Datensatz, wenn er noch von einer Zeile in einer anderen Tabelle referenziert wird.
- Stellen Sie sicher, dass Transaktionen zurückgesetzt werden, wenn ein Fehler auftritt.
- Finden Sie alle Fälle heraus, in denen ein Trigger keine Transaktionen rückgängig machen soll.
Server-Setup-Skripte
Es sollten zwei Arten von Tests durchgeführt werden:
- Einrichten der Datenbank von Grund auf neu und
- So richten Sie eine vorhandene Datenbank ein
Integrationstests von SQL Server
Integrationstests sollten durchgeführt werden, nachdem Sie mit dem Komponententest fertig sind.
Gespeicherte Prozeduren sollten intensiv aufgerufen werden, um Datensätze in verschiedenen Tabellen auszuwählen, einzufügen, zu aktualisieren und zu löschen, um Konflikte und Inkompatibilitäten festzustellen.
Alle Konflikte zwischen Schema und Triggern.
Alle Konflikte zwischen gespeicherten Prozeduren und Schema.
Alle Konflikte zwischen gespeicherten Prozeduren und Triggern.
Funktionstestmethode
Funktionstests können durchgeführt werden, indem die Datenbank gemäß der Funktionalität in Module unterteilt wird. Es gibt zwei Arten von Funktionen:
Type 1- Informieren Sie sich beim Testen vom Typ 1 über die Funktionen des Projekts. Ermitteln Sie für jedes Hauptmerkmal das Schema, die Trigger und die gespeicherten Prozeduren, die für die Implementierung dieser Funktion verantwortlich sind, und ordnen Sie sie einer Funktionsgruppe zu. Dann testen Sie jede Gruppe zusammen.
Type 2- Bei Typ-2-Tests ist die Grenze der Funktionsgruppen in einem Back-End nicht offensichtlich. Sie können den Datenfluss überprüfen und sehen, wo Sie die Daten überprüfen können. Beginnen Sie am Frontend.
Der folgende Prozess findet statt -
Wenn ein Dienst eine Anforderung hat oder Daten speichert, werden einige gespeicherte Prozeduren aufgerufen.
Die Prozeduren aktualisieren einige Tabellen.
Diese gespeicherten Prozeduren sind der Ort, an dem mit dem Testen begonnen wird, und diese Tabellen sind der Ort, an dem die Testergebnisse überprüft werden.
Belastbarkeitstest
Stresstests umfassen das Abrufen einer Liste der wichtigsten Datenbankfunktionen und der entsprechenden gespeicherten Prozeduren. Befolgen Sie die unten angegebenen Schritte für Stresstests -
Schreiben Sie Testskripte, um diese Funktionen auszuprobieren, und jede Funktion muss mindestens einmal in einem vollständigen Zyklus überprüft werden.
Führen Sie die Testskripte für einen bestimmten Zeitraum immer wieder aus.
Überprüfen der Protokolldateien auf Deadlocks, Speicherausfälle, Datenbeschädigung usw.
Benchmark-Tests
Wenn Ihre Datenbank keine Datenprobleme oder Fehler aufweist, kann die Systemleistung überprüft werden. Eine schlechte Systemleistung kann bei Benchmark-Tests festgestellt werden, indem die unten angegebenen Parameter überprüft werden -
- Leistung auf Systemebene
- Identifizieren Sie die am häufigsten verwendeten Funktionen / Merkmale
- Timing - maximale Zeit, minimale Zeit und durchschnittliche Zeit für die Ausführung von Funktionen
- Zugriffsvolumen
Testen einer Datenbank über das Front-End
Back-End-Fehler können manchmal auch durch Front-End-Tests gefunden werden. Sie können die folgenden einfachen Schritte ausführen, um Fehler durch Front-End-Tests zu erkennen.
Schreiben Sie Abfragen vom Frontend und geben Sie die Suchanfragen aus.
Nehmen Sie einen vorhandenen Datensatz auf, ändern Sie die Werte in einigen Feldern und speichern Sie den Datensatz. (Es handelt sich um die UPDATE-Anweisung oder um das Aktualisieren gespeicherter Prozeduren und das Aktualisieren von Triggern.)
Fügen Sie einen neuen Menüpunkt in das Front-End-Fenster ein. Geben Sie die Informationen ein und speichern Sie den Datensatz. (Es handelt sich um die INSERT-Anweisungen oder gespeicherten Prozeduren zum Einfügen und Löschauslöser.)
Nehmen Sie einen vorhandenen Datensatz auf, klicken Sie auf die Schaltfläche LÖSCHEN oder ENTFERNEN und bestätigen Sie den Löschvorgang. (Es handelt sich um die DELETE-Anweisung oder um gespeicherte Löschprozeduren und Löschauslöser.)
Wiederholen Sie diese Testfälle mit ungültigen Daten und sehen Sie, wie die Datenbank reagiert.
In diesem Kapitel werden einige gängige Datenbanktestszenarien in Bezug auf verschiedene Testmethoden vorgestellt.
Strukturierte Datenbanktests
Im Folgenden werden gängige Datenbankszenarien für strukturierte Datenbanktests aufgeführt.
Überprüfen des Datenbanknamens, Überprüfen des Datengeräts, des Protokollgeräts und des Speicherauszugs, Überprüfen, ob für jede Datenbank genügend Speicherplatz zugewiesen ist, und Überprüfen der Einstellung der Datenbankoptionen.
Namen aller Tabellen in der Datenbank, Spaltennamen für jede Tabelle, Spaltentypen für jede Tabelle, Nullwertprüfung oder nicht. Überprüfen Sie den Schlüssel und die Indizes in jeder Tabelle: Primärschlüssel für jede Tabelle, Fremdschlüssel für jede Tabelle.
Datentypen zwischen einer Fremdschlüsselspalte und einer Spalte in einer anderen Tabelle Indizes, gruppiert oder nicht gruppiert eindeutig oder nicht eindeutig.
Funktionale Datenbanktests
Allgemeine Datenbanktestszenarien in Bezug auf Functional Database Testing sind -
Finden Sie das Schema, die Trigger und die gespeicherten Prozeduren heraus, die für die Implementierung dieser Funktion verantwortlich sind, und machen Sie sie zu einer Funktionsgruppe. Anschließend kann jede Gruppe zusammen getestet werden.
Überprüfen Sie den Datenfluss und sehen Sie, wo Sie die Daten überprüfen können. Beginnen Sie am Frontend.
Testen nicht funktionierender Datenbanken
Allgemeine Datenbanktestszenarien in Bezug auf Non-Functional Database Testing sind -
Schreiben Sie Testskripte, um wichtige Funktionen auszuprobieren, und jede Funktion muss mindestens einmal in einem vollständigen Zyklus überprüft werden.
Führen Sie die Testskripte für einen bestimmten Zeitraum immer wieder aus.
Überprüfen der Protokolldateien auf Deadlock, Speicherausfall, Datenbeschädigung usw.
Schreiben Sie Abfragen von einem Frontend und geben Sie die Suchanfragen aus. Nehmen Sie einen vorhandenen Datensatz auf, ändern Sie die Werte in einigen Feldern und speichern Sie den Datensatz. (Es beinhaltet UPDATE-Anweisung oder Aktualisierung gespeicherter Prozeduren, Aktualisierung von Triggern.)
Fügen Sie einen neuen Menüpunkt in ein Front-End-Fenster ein. Geben Sie Informationen ein und speichern Sie den Datensatz. (Es handelt sich um INSERT-Anweisungen oder das Einfügen gespeicherter Prozeduren sowie um Löschauslöser.)
Nehmen Sie einen vorhandenen Datensatz auf, klicken Sie auf die Schaltfläche LÖSCHEN oder ENTFERNEN und bestätigen Sie den Löschvorgang. (Es handelt sich um DELETE-Anweisungen oder gespeicherte Löschprozeduren, Löschauslöser.)
Wiederholen Sie diese Testfälle mit ungültigen Daten und sehen Sie, wie die Datenbank reagiert.
Schemas, tables, stored procedures, und Triggerssind Schlüsselobjekte einer Datenbank. Wir haben bereits DB-Testtypen und Testszenarien für diese Datenbankobjekte freigegeben.
Schemata
Ein Datenbankschema definiert die Struktur eines Datenbanksystems in einem vom Datenbankverwaltungssystem unterstützten Format. Ein Schema bezieht sich auf die Struktur einer Datenbank (bestehend aus Datenbanktabellen bei relationalen Datenbanken).
Das Datenbankschema besteht aus einer Reihe von Formeln, die als Integritätsbeschränkungen bezeichnet werden und einer Datenbank auferlegt werden. Diese Integritätsbeschränkungen stellen die Kompatibilität zwischen Teilen des Schemas sicher.
In einer relationalen Datenbank besteht das Schema aus Tabellen, Feldern, Ansichten, Indizes, Paketen, Prozeduren, Funktionen, Triggern, Typen, materialisierten Ansichten, Synonymen, Datenbankverknüpfungen und anderen Elementen.
Schemata werden im Allgemeinen in einem Datenwörterbuch gespeichert. Obwohl ein Schema in der Sprache der Textdatenbank definiert ist, wird der Begriff häufig verwendet, um sich auf eine grafische Darstellung der Datenbankstruktur zu beziehen. Mit anderen Worten, Schema ist die Struktur der Datenbank, die die Objekte in der Datenbank definiert.
In einem Data Warehouse werden häufig Schemata verwendet:
- Sternschema
- Schneeflocken-Schema
- Galaxy Schema
Tabellen in der Datenbank
In einer relationalen Datenbank wird eine Tabelle verwendet, um die Informationen in Zeilen und Spalten zu organisieren.
Example - Eine Kundentabelle enthält Informationen wie Kunden-ID, Adressen, Telefonnummern usw. als eine Reihe von Spalten.
Jedes einzelne Datenelement ist ein Feld in der Tabelle. Eine Spalte besteht aus allen Einträgen in einem einzigen Feld, z. B. den Telefonnummern aller Kunden. Felder sind als Datensätze organisiert, bei denen es sich um vollständige Informationssätze handelt (z. B. um Informationen zu einem bestimmten Kunden), die jeweils eine Zeile umfassen.
Gespeicherte Prozeduren
Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen, die in kompilierter Form in der Datenbank gespeichert sind und von mehreren Programmen gemeinsam genutzt werden können. Die Verwendung gespeicherter Prozeduren kann hilfreich sein, um die Datenintegrität aufrechtzuerhalten, den Zugriff auf die Datenkontrolle zu gewährleisten und die Produktivität zu verbessern.
Löst aus
Ein Datenbank-Trigger ist Code, der als Reaktion auf bestimmte Ereignisse in einer bestimmten Tabelle oder Ansicht in einer Datenbank ausgeführt wird. Der Trigger wird hauptsächlich zur Aufrechterhaltung der Integrität der Informationen in der Datenbank verwendet.
Datenintegrität ist in einer Datenbank wichtig. Es umfasst die Datenüberprüfung vor dem Einfügen, Aktualisieren und Löschen. Trigger müssen vorhanden sein, um Referenztabellendatensätze zu validieren.
Um die Datenintegrität zu überprüfen, müssen Sie die folgenden Vorgänge ausführen:
Sie müssen die Hauptspalten in jeder Tabelle überprüfen und überprüfen, ob falsche Daten vorhanden sind. (Zeichen im Namensfeld, negativer Prozentsatz usw.)
Finden Sie inkonsistente Daten heraus, fügen Sie sie in relevante Tabellen ein und prüfen Sie, ob ein Fehler auftritt.
Fügen Sie untergeordnete Daten ein, bevor Sie die übergeordneten Daten einfügen. Versuchen Sie, einen Datensatz zu löschen, auf den die Daten in einer anderen Tabelle noch verweisen.
Wenn Daten in einer Tabelle aktualisiert werden, prüfen Sie, ob auch die anderen relevanten Daten aktualisiert werden. Sie müssen sicherstellen, dass replizierte Server oder Datenbanken synchron sind und konsistente Informationen enthalten.
Die Datenzuordnung in einer Datenbank ist eines der Schlüsselkonzepte, die von jedem Tester validiert werden müssen. Normalerweise müssen die Tester die Front-End-Feldzuordnung der Benutzeroberfläche mit dem entsprechenden Back-End-Datenbankfeld überprüfen.
Diese Informationen finden Sie in der SRS / BRS-Dokumentation zur Softwareanforderungsspezifikation oder zur Geschäftsanforderungsspezifikation. Wenn keine Zuordnung bereitgestellt wird, müssen Sie den Codierungsteil überprüfen.
Wenn Sie eine Aktion in der Front-End-Anwendung ausführen, wird eine entsprechende CRUD-Aktion aufgerufen, und der Tester muss überprüfen, ob jede aufgerufene Aktion erfolgreich ist oder nicht.
Schlüsselaspekte der Datenzuordnung
Im Folgenden sind die wichtigsten Aspekte der Datenzuordnung aufgeführt:
So überprüfen Sie die Felder in den UI / Front-End-Formularen und ordnen sie konsistent der entsprechenden DB-Tabelle zu. Diese Zuordnungsinformationen sind in den oben genannten Anforderungsdokumenten definiert.
Für jede Aktion, die im Front-End einer Anwendung ausgeführt wird, wird am Back-End eine entsprechende CRUD-Aktion "Erstellen, Abrufen, Aktualisieren und Löschen" eingeleitet.
Ein Tester muss prüfen, ob die richtige Aktion aufgerufen wird und die aufgerufene Aktion an sich erfolgreich ist oder nicht.
Schritte zum Testen der Datenzuordnung
Im Folgenden sind die Schritte zum Testen der Datenzuordnung aufgeführt:
Step 1 - Überprüfen Sie zuerst jedes Skript auf Syntaxfehler.
Step 2 - Als Nächstes wird nach Tabellenzuordnung, Spaltenzuordnung und Datentypzuordnung gesucht.
Step 3 - Überprüfen Sie die Zuordnung der Suchdaten.
Step 4 - Führen Sie jedes Skript aus, wenn keine Datensätze in Zieltabellen vorhanden sind.
Step 5 - Führen Sie jedes Skript aus, wenn die Datensätze bereits in den Zieltabellen vorhanden sind.
Eine Anwendung mit längerer Reaktionszeit und schlechter Leistung kann zu großen Problemen führen. Mit dem Testen der Datenbanklast werden Leistungsprobleme ermittelt, bevor Sie Ihre Datenbankanwendungen für Endbenutzer bereitstellen.
Mit dem Testen der Datenbanklast können Sie Datenbankanwendungen auf Leistung, Zuverlässigkeit und Skalierbarkeit hin entwerfen. Beim Testen der Last von Datenbankanwendungen müssen Sie die Leistung und Skalierbarkeit Ihrer Datenbankanwendung bei unterschiedlicher Benutzerlast testen.
Beim Testen der Datenbanklast wird die tatsächliche Benutzerlast für die Zieldatenbankanwendung simuliert. Mithilfe dieser Funktion können Sie feststellen, wie sich Ihre Datenbankanwendung verhält, wenn mehrere Benutzer gleichzeitig darauf zugreifen.
Lasttest
Das Hauptziel von Load Testing besteht darin, zu überprüfen, ob die meisten ausgeführten Transaktionen Auswirkungen auf die Leistung der Datenbank haben. Beim Lasttest müssen Sie die folgenden Aspekte überprüfen:
Die Antwortzeit für die Ausführung der Transaktionen für mehrere Remotebenutzer sollte überprüft werden.
Bei normalen Transaktionen sollten Sie eine bearbeitbare Transaktion einschließen, um die Leistung der Datenbank für diese Art von Transaktionen zu überprüfen.
Bei normalen Transaktionen sollten Sie eine nicht bearbeitete Transaktion einschließen, um die Leistung der Datenbank für diese Art von Transaktionen zu überprüfen.
Die Zeit, die die Datenbank benötigt, um bestimmte Datensätze abzurufen, sollte überprüft werden.
Belastbarkeitstest
Stresstests werden durchgeführt, um das System zu identifizieren breakpoint. Hier wird die Anwendung so geladen, dass das System an einer Stelle ausfällt. Dieser Punkt wird als Haltepunkt des Datenbanksystems bezeichnet. Stresstests sind auch bekannt alsFatigue Testing.
Das Ermitteln des Status von Datenbanktransaktionen ist mit einem erheblichen Aufwand verbunden. Eine ordnungsgemäße Planung ist erforderlich, um zeit- und kostenbezogene Probleme zu vermeiden.
Die gebräuchlichsten Stresstest-Tools sind LoadRunner und WinRunner.
Von Anbietern werden verschiedene Tools bereitgestellt, mit denen Testdaten generiert, Testdaten verwaltet und Datenbanktests wie Lasttests und Regressionstests durchgeführt werden können.
Im Folgenden werden einige häufig verwendete Tools aufgeführt.
Sr.Nr. | Kategorie beschreibung | Beispiele |
---|---|---|
1 | Load Testing Tools Mit diesen Tools wird Ihre Datenbank stark ausgelastet, sodass Sie feststellen können, ob die Landschaft Ihres Systems Ihren Geschäftsanforderungen entspricht. |
Webleistung Rad Ansicht Merkur |
2 | Data Security Tools Diese Tools werden verwendet, um Compliance und Standards gemäß den Vorschriften zur Informationssicherheit zu implementieren. |
IBM Optim Datenschutz |
3 | Test Data generator tools Ein Tester verwendet diese Tools, um die Testdaten für ein Datenbanksystem zu generieren. Diese werden meistens benötigt, wenn Sie über eine große Datenmenge verfügen und ein Beispiel für die Durchführung von DB-Tests benötigen. Es wird üblicherweise für Last- und Stresstests verwendet. |
Datenfabrik DTM-Datengenerator Turbodaten |
4 | Test Data Management Tool Diese Tools werden verwendet, um die Versionskontrolle für Testdaten aufrechtzuerhalten. Sie müssen die erwarteten Ergebnisse definieren und diese dann mit den tatsächlichen Ergebnissen der Tests vergleichen. |
IBM Optim Test Data Management |
5 | Tools to perform Unit Testing Diese Tools werden verwendet, um Regressionstests für Ihre Datenbank durchzuführen. |
SQLUnit TSQLUnit DBFit DBUnit |
Der wichtigste Teil eines organisatorischen Wachstums sind seine Daten. Bei einem Systemausfall müssen die Daten wiederhergestellt werden. Die Sicherung ist eine exakte Kopie der Datenbank, mit deren Hilfe Sie Ihre Daten im Falle eines Datenverlusts wiederherstellen können.
Stellen Sie sich ein Finanzunternehmen vor, das Daten zu seinen Kunden hat, wie z. B. A / C-Nummer, Kundennamen, Gutschriften und Belastungen, Laufzeit usw. Wie würde eine solche Organisation mit dem Druck umgehen, solche wichtigen Informationen im Falle eines Datenfehlers zu verlieren?
Dies ist der Grund, warum Sie die Daten sichern, damit Sie sich bei einem Ausfall einer Festplatte, eines Festplattencontrollers usw. auf die Sicherung verlassen können, um sie in der Datenbank wiederherzustellen.
Arten von Datensicherungen
Es gibt zwei Arten von Backups, die verwendet werden können:
Physical Backups - Die physische Sicherung umfasst die Sicherung mit Sicherungstools von Drittanbietern wie Veritas Net Back, IBM Tivoli Manager oder Benutzermanager-Sicherungen mithilfe von Betriebssystemdienstprogrammen.
Logical Backups - Die logische Sicherung der Datenbank umfasst die Sicherung logischer Objekte wie Tabellen, Indizes, Prozeduren usw.
Example - Eines der gängigsten Tools für die Datensicherung ist Oracle Recovery Manager (RMAN) Dies ist ein Oracle-Dienstprogramm zum Erstellen einer Datenbanksicherung.
RMAN besteht aus zwei Komponenten -
Target database für welche Sicherung erforderlich ist.
RMAN Der Client wird verwendet, um Befehle zum Erstellen einer Datensicherung auszuführen.
BACKUP VALIDATEwird verwendet, um zu testen, ob Sie eine gültige Sicherung von Datenbankdateien erstellen können. Es sorgt dafür -
- Wenn eine Sicherung für physische oder logische Objekte der Datenbank vorhanden ist.
- Wenn regelmäßige Sicherungen für unschätzbare Daten eingerichtet werden.
- Wenn das Sicherungstool die Sicherungsanforderungen einer Organisation erfüllt.
Database recovery testingwird verwendet, um sicherzustellen, dass die Datenbank wiederhergestellt wird. Mithilfe von Wiederherstellungstests können Sie feststellen, ob die Anwendung ordnungsgemäß ausgeführt wird, und überprüfen, ob Sie wertvolle Daten abrufen können, die verloren gegangen wären, wenn Ihre Wiederherstellungsmethode nicht ordnungsgemäß eingerichtet worden wäre.
Sie überprüfen auch, ob mehrere kritische Prozesse reibungslos ablaufen, um sicherzustellen, dass die Datenwiederherstellung die Testphase reibungslos durchläuft.
Sie können die folgenden Überprüfungen für die Datenbankwiederherstellung durchführen:
Alle Fehler oder Irrtümer in der Sicherungssoftware, und Sie müssen diese Probleme zu einem früheren Zeitpunkt beheben.
Sie müssen die Wiederherstellungstests durchführen, damit Sie wissen, was im Notfall zu tun ist.
Sie müssen die Anforderungen für Wiederherstellungstests überprüfen, damit Sie eine effektive Wiederherstellungsstrategie planen können.
Sie sollten auch wissen, wie Sie die Dokumente wiederherstellen können.
Sie müssen die Wiederherstellungstests in der frühen Phase des Projekts ausführen. Auf diese Weise können Sie alle Arten von Fehlern aus dem System entfernen und wegwerfen. Hier ist eine Liste einiger wichtiger Punkte, die zum Zeitpunkt des Tests berücksichtigt werden sollten -
Zeitspanne, in der Änderungen oder Modifikationen im Datenbanksystem auftreten.
Der Zeitraum, bis zu dem Ihr Wiederherstellungsplan durchgeführt werden soll.
Die Empfindlichkeit von Daten im Datenbanksystem. Je kritischer die Daten sind, desto regelmäßiger müssen Sie die Software testen.
Allgemeine Schritte beim Testen der Datenbanksicherung und -wiederherstellung
Beim Testen der Datenbankwiederherstellung müssen Sie den Test in der tatsächlichen Umgebung ausführen, um zu überprüfen, ob das System oder die Daten im Falle von Katastrophen und anderen unvorhergesehenen Ereignissen in der Geschäftsumgebung tatsächlich wiederhergestellt werden können.
Im Folgenden sind die allgemeinen Aktionen aufgeführt, die beim Testen der Datenbankwiederherstellung ausgeführt werden.
- Testen des Datenbanksystems
- Testen der SQL-Dateien
- Testen von Teildateien
- Testen der Datensicherung
- Testen des Backup-Tools
- Testen von Protokollsicherungen
Datenbanksicherheitstests werden durchgeführt, um die Lücken in den Sicherheitsmechanismen zu ermitteln und um die Schwachstellen oder Schwachstellen des Datenbanksystems zu ermitteln.
Das Hauptziel von Datenbanksicherheitstests besteht darin, Schwachstellen in einem System herauszufinden und festzustellen, ob seine Daten und Ressourcen vor potenziellen Eindringlingen geschützt sind. Sicherheitstests definieren eine Möglichkeit, potenzielle Schwachstellen bei regelmäßiger Durchführung effektiv zu identifizieren.
Nachstehend sind die Hauptziele der Durchführung von Datenbanksicherheitstests aufgeführt:
- Authentication
- Authorization
- Confidentiality
- Availability
- Integrity
- Resilience
Arten von Bedrohungen in einem Datenbanksystem
SQL-Injektion
Dies ist die häufigste Art von Angriff in einem Datenbanksystem, bei dem schädliche SQL-Anweisungen in das Datenbanksystem eingefügt und ausgeführt werden, um wichtige Informationen aus dem Datenbanksystem abzurufen. Dieser Angriff nutzt Lücken bei der Implementierung von Benutzeranwendungen. Um dies zu verhindern, sollten Benutzereingabefelder sorgfältig behandelt werden.
Berechtigungserhöhung in der Datenbank
Bei diesem Angriff hat ein Benutzer bereits Zugriff auf das Datenbanksystem und versucht nur, diesen Zugriff auf eine höhere Ebene zu erhöhen, damit er einige nicht autorisierte Aktivitäten im Datenbanksystem ausführen kann.
Denial of Service
Bei dieser Art von Angriff macht ein Angreifer ein Datenbanksystem oder eine Anwendungsressource für seine legitimen Benutzer nicht verfügbar. Anwendungen können auch auf eine Weise angegriffen werden, die die Anwendung und manchmal den gesamten Computer unbrauchbar macht.
Nicht autorisierter Zugriff auf Daten
Eine andere Art von Angriff besteht darin, unbefugten Zugriff auf Daten innerhalb einer Anwendung oder eines Datenbanksystems zu erhalten. Nicht autorisierter Zugriff umfasst -
- Nicht autorisierter Zugriff auf Daten über benutzerbasierte Anwendungen
- Nicht autorisierter Zugriff durch Überwachung des Zugriffs anderer
- Nicht autorisierter Zugriff auf wiederverwendbare Clientauthentifizierungsinformationen
Identitäts-Spoofing
Beim Identity Spoofing verwendet ein Hacker die Anmeldeinformationen eines Benutzers oder Geräts, um Angriffe auf Netzwerkhosts zu starten, Daten zu stehlen oder Zugriffskontrollen auf das Datenbanksystem zu umgehen. Um diesen Angriff zu verhindern, sind Maßnahmen auf IT-Infrastruktur- und Netzwerkebene erforderlich.
Datenmanipulation
Bei einem Datenmanipulationsangriff ändert ein Hacker Daten, um einen Vorteil zu erzielen oder das Image von Datenbankbesitzern zu beschädigen.
Testtechniken für die Datenbanksicherheit
Penetrationstests
Ein Penetrationstest ist ein Angriff auf ein Computersystem mit der Absicht, Sicherheitslücken zu finden und möglicherweise Zugriff auf dieses System, seine Funktionalität und Daten zu erhalten.
Risikofindung
Risk Finding ist ein Prozess zur Bewertung und Entscheidung des mit der Art des Verlusts verbundenen Risikos und der Möglichkeit des Auftretens von Sicherheitslücken. Dies wird innerhalb der Organisation durch verschiedene Interviews, Diskussionen und Analysen bestimmt.
SQL Injection Test
Dabei werden die Benutzereingaben in Anwendungsfeldern überprüft. Geben Sie beispielsweise ein Sonderzeichen wie ',' oder ';' ein. in einem Textfeld in einer Benutzeranwendung sollte nicht erlaubt sein. Wenn ein Datenbankfehler auftritt, bedeutet dies, dass die Benutzereingabe in eine Abfrage eingefügt wird, die dann von der Anwendung ausgeführt wird. In einem solchen Fall ist die Anwendung für SQL-Injection anfällig.
Diese Angriffe stellen eine große Bedrohung für Daten dar, da die Angreifer auf wichtige Informationen aus der Serverdatenbank zugreifen können. Um SQL-Injection-Einstiegspunkte in Ihre Webanwendung zu überprüfen, ermitteln Sie Code aus Ihrer Codebasis, in dem direkte MySQL-Abfragen in der Datenbank ausgeführt werden, indem Sie einige Benutzereingaben akzeptieren.
SQL Injection Testing kann für Klammern, Kommas und Anführungszeichen durchgeführt werden.
Passwort knacken
Dies ist die wichtigste Überprüfung beim Durchführen von Datenbanksystemtests. Um auf wichtige Informationen zuzugreifen, können Hacker ein Tool zum Knacken von Passwörtern verwenden oder einen gemeinsamen Benutzernamen / Passwort erraten. Diese gebräuchlichen Passwörter sind im Internet leicht verfügbar und auch Tools zum Knacken von Passwörtern sind frei verfügbar.
Daher muss zum Zeitpunkt des Tests überprüft werden, ob die Kennwortrichtlinie im System beibehalten wird. Bei Bank- und Finanzanwendungen muss für alle kritischen Informationsdatenbanksysteme eine strikte Kennwortrichtlinie festgelegt werden.
Sicherheitsüberprüfung des Datenbanksystems
Bei einem Sicherheitsaudit werden die Sicherheitsrichtlinien des Unternehmens in regelmäßigen Abständen bewertet, um festzustellen, ob die erforderlichen Standards eingehalten werden oder nicht. Je nach Geschäftsanforderung können verschiedene Sicherheitsstandards befolgt werden, um die Sicherheitsrichtlinie zu definieren, und anschließend kann eine Bewertung der festgelegten Richtlinien anhand dieser Standards durchgeführt werden.
Beispiele für die gängigsten Sicherheitsstandards sind ISO 27001, BS15999 usw.
Tools zum Testen der Datenbanksicherheit
Auf dem Markt sind verschiedene Systemtest-Tools erhältlich, mit denen das Betriebssystem und die Anwendungsprüfung getestet werden können. Einige der gebräuchlichsten Tools werden unten erläutert.
Zed Attack Proxy
Es ist ein Penetrationstest-Tool zum Auffinden von Schwachstellen in Webanwendungen. Es wurde für Personen mit einem breiten Spektrum an Sicherheitserfahrungen entwickelt und ist daher ideal für Entwickler und Funktionstester, die noch keine Erfahrung mit Penetrationstests haben. Es wird häufig für Windows, Linux und Mac OS verwendet.
Paros
Alle HTTP- und HTTPS-Daten zwischen Server und Client, einschließlich Cookies und Formularfelder, können mit diesen Scannern abgefangen und geändert werden. Es wird für plattformübergreifendes Java JRE / JDK 1.4.2 oder höher verwendet.
Social Engineer Toolkit
Es ist ein Open-Source-Tool und menschliche Elemente werden eher angegriffen als das Systemelement. Sie können damit E-Mails, Java-Applets usw. senden, die den Angriffscode enthalten. Es wird für Linux, Apple Mac OS X und Microsoft Windows bevorzugt.
Skipfish
Dieses Tool wird verwendet, um ihre Websites auf Schwachstellen zu scannen. Mit dem Tool erstellte Berichte sollen als Grundlage für professionelle Sicherheitsbewertungen von Webanwendungen dienen. Es wird für Linux, FreeBSD, MacOS X und Windows bevorzugt.
Vega
Es handelt sich um ein Open Source-Tool für die plattformübergreifende Web-Sicherheit, mit dem Instanzen von SQL-Injection, Cross-Site-Scripting (XSS) und anderen Schwachstellen in Webanwendungen gefunden werden. Es wird für Java, Linux und Windows bevorzugt.
Wapiti
Wapiti ist ein Open Source- und webbasiertes Tool, das die Webseiten der Webanwendung durchsucht und nach Skripten und Formularen sucht, in die Daten eingefügt werden können. Es wurde mit Python erstellt und kann Fehler bei der Dateiverwaltung, Datenbank-, XSS-, LDAP- und CRLF-Injektionen sowie die Erkennung der Befehlsausführung erkennen.
Web-Skarabäus
Es ist in Java geschrieben und wird zur Analyse der Anwendungen verwendet, die über HTTP / HTTPS-Protokolle kommunizieren. Dieses Tool richtet sich in erster Linie an Entwickler, die selbst Code schreiben können. Dieses Tool ist nicht vom Betriebssystem abhängig.
Um Datenbanktests erfolgreich durchzuführen, sollte ein Tester die Anforderungen aus allen Quellen erfassen, z. B. technische und funktionale Anforderungen. Es besteht die Möglichkeit, dass einige Anforderungen auf einem hohen Niveau liegen, sodass diese Anforderungen in kleine Teile unterteilt werden müssen. Das Testen der Datenbank ist eine komplexe Aufgabe, und die Tester stehen bei diesen Tests vor vielen Herausforderungen. Die häufigsten Herausforderungen beim Testen von Datenbanken sind:
Der Testumfang ist zu groß
Ein Tester muss die Testelemente beim Datenbanktest identifizieren, da er sonst möglicherweise nicht genau weiß, was er testen und was nicht. Wenn Sie sich über die Anforderung im Klaren sind, verschwenden Sie möglicherweise viel Zeit damit, unkritische Objekte in der Datenbank zu testen.
Wenn Sie eine Liste der zu testenden Objekte haben, müssen Sie als Nächstes den Aufwand abschätzen, der zum Entwerfen der Tests und Ausführen der Tests für jedes Testelement erforderlich ist. Je nach Design und Datengröße kann die Ausführung einiger Datenbanktests lange dauern.
Da die Datenbank zu groß ist, wird es zu einer großen Herausforderung, herauszufinden, welche Objekte getestet werden müssen und welche nicht.
Verkleinerte Testdatenbank
Normalerweise erhalten Tester eine Kopie der zu testenden Entwicklungsdatenbank. Diese Datenbank enthält nur wenige Daten, was ausreicht, um die Anwendung auszuführen. Daher müssen das Entwicklungs-, Staging- und Produktionsdatenbanksystem getestet werden.
Änderungen in der Datenbankstruktur
Dies ist eine der häufigsten Herausforderungen beim Testen von DBs. Manchmal kommt es vor, dass Sie einen Test entwerfen oder ausführen und die Datenbankstruktur zu diesem Zeitpunkt geändert wurde. Dies ist erforderlich, damit Sie die während des Tests an der Datenbank vorgenommenen Änderungen kennen.
Sobald sich die Datenbankstruktur ändert, sollten Sie die Auswirkungen der Änderungen analysieren und die Tests ändern. Wenn mehrere Benutzer die Testdatenbank verwenden, sind Sie sich über die Testergebnisse nicht sicher. Stellen Sie daher sicher, dass die Testdatenbank nur zu Testzwecken verwendet wird.
Eine weitere Herausforderung beim DB-Testen besteht darin, dass Sie mehrere Tests gleichzeitig ausführen. Sie sollten mindestens für die Leistungstests jeweils einen Test ausführen. Sie möchten nicht, dass Ihre Datenbank mehrere Aufgaben ausführt und die Leistung unterberichtet.
Komplexe Testpläne
Die Datenbankstruktur ist normalerweise komplex und enthält große Datenmengen. Daher besteht die Möglichkeit, dass Sie unvollständige oder dieselben Tests wiederholt ausführen. Es ist daher erforderlich, einen Testplan zu erstellen, entsprechend vorzugehen und den Fortschritt regelmäßig zu überprüfen.
Gutes Verständnis von SQL
Um eine Datenbank zu testen, sollten Sie über gute Kenntnisse der SQL-Abfragen und der erforderlichen Datenbankverwaltungstools verfügen.
Das Testen der Datenbank umfasst das Durchführen der Datengültigkeit, das Testen der Datenintegrität, die Leistungsprüfung in Bezug auf die Datenbank und das Testen von Prozeduren, Triggern und Funktionen in der Datenbank.
Es gibt mehrere Gründe, warum Datenbanktests durchgeführt werden. Es ist erforderlich, Datenintegrität, Validierung und Datenkonsistenzprüfung für die Datenbank durchzuführen, da das Backend-System für die Speicherung der Daten verantwortlich ist und für mehrere Zwecke zugegriffen wird.
Einige der häufigsten Gründe, warum Datenbanktests durchgeführt werden müssen, sind folgende:
Um die Komplexität der Aufrufe des Datenbank-Backends zu verringern, erhöhen Entwickler die Verwendung von View und Stored Verfahren.
Diese Stored Verfahren und ViewsEnthält wichtige Aufgaben wie das Einfügen von Kundendaten (Name, Kontaktinformationen usw.) und Verkaufsdaten. Diese Aufgaben müssen auf mehreren Ebenen getestet werden.
Black-Box-Tests am Front-End sind wichtig, machen es jedoch schwierig, das Problem einzugrenzen. Tests im Backend-System erhöhen die Robustheit der Daten. Aus diesem Grund werden Datenbanktests auf dem Back-End-System durchgeführt.
In einer Datenbank stammen Daten aus mehreren Anwendungen, und es besteht die Möglichkeit, dass schädliche oder falsche Daten in der Datenbank gespeichert werden. Daher müssen die Datenbankkomponenten regelmäßig überprüft werden. Darüber hinaus sollten Datenintegrität und -konsistenz regelmäßig überprüft werden.
Die Schritte, die Sie beim Durchführen von Datenbanktests ausführen müssen, sind folgende:
- Die Daten in der Datenbank müssen überprüft werden.
- Überprüfen Sie, ob die Einschränkungen beibehalten werden.
- Die Leistung der Prozeduren und die Ausführung von Triggern müssen überprüft werden.
- Rollback und Commit der Transaktion müssen überprüft werden.
Aufgrund der Funktion und Struktur einer Datenbank können DB-Tests in die folgenden Kategorien eingeteilt werden:
Structural Database testing - Es befasst sich mit Tabellen- und Spaltentests, Schematests, Tests mit gespeicherten Prozeduren und Ansichten, Überprüfen von Triggern usw.
Functional Testing- Es beinhaltet die Überprüfung der Funktionalität der Datenbank aus Anwendersicht. Die gebräuchlichste Art von Funktionstests sind White-Box- und Black-Box-Tests.
Nonfunctional Testing - Es umfasst Lasttests, Risikotests in der Datenbank, Stresstests, Mindestsystemanforderungen und die Leistung der Datenbank.
Die gebräuchlichsten Tools zum Testen gespeicherter Prozeduren sind LINQ, SP Test Tool usw.
Joins werden verwendet, um zwei oder mehr Tabellen auf logische Weise zu verbinden. Zu den gebräuchlichen Arten von Verknüpfungen gehören: Innerer Join, Nicht-Equijoin, Äußerer Join, Selbst-Join und Cross-Join.
Sie können eine einzelne Tabelle mit sich selbst verbinden. In diesem Fall verwenden Sie dieselbe Tabelle zweimal.
Step 1 - Stellen Sie eine Verbindung zur Datenbank her
db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
PWD password;DBQ database_name );
Step 2 - Führen Sie die Abfrage der Datenbank aus. -
db_excecute_query (write the required query that is to execute); Specify the appropriate condition
Step 3 - Trennen Sie die Datenbankverbindung mit
db_disconnect(query);
Bei Verwendung von Ausgabedatenbankprüfpunkten müssen Optionen für manuelle SQL-Abfragen ausgewählt werden. Hier kann die Auswahlabfrage geschrieben werden.
Überprüfen Sie zunächst die Anforderungen der gespeicherten Prozedur. Der nächste Schritt besteht darin, zu überprüfen, ob Indizes, Verknüpfungen, Löschungen und Aktualisierungen im Vergleich zu den in der gespeicherten Prozedur genannten Tabellen korrekt sind.
Führen Sie als Nächstes die folgenden Aufgaben aus:
Überprüfen Sie den Namen der aufrufenden Prozedur, die aufrufenden Parameter und die erwarteten Antworten für verschiedene Sätze von Eingabeparametern.
Führen Sie die Prozedur mit TOAD oder MySQL oder Query Analyzer aus.
Führen Sie die verfügbaren Prozeduren erneut aus, indem Sie verschiedene Parameter senden, und überprüfen Sie die Ergebnisse anhand der erwarteten Werte.
Automatisieren Sie abschließend die Tests mit WinRunner.
Der Tester sollte die in der Datenbank gespeicherte Prozedur mit dem Befehl EXEC aufrufen. Wenn Parameter erforderlich sind, müssen diese übergeben werden. Es müssen unterschiedliche Parameterwerte übergeben werden, um zu bestätigen, ob die gespeicherte Prozedur ausgeführt wird oder nicht. Beim Aufrufen dieses Befehls muss die Art und das Verhalten der Datenbank überprüft und überprüft werden.
Example - Wenn die gespeicherte Prozedur zum Auffüllen einer Tabelle geschrieben wurde, müssen die Tabellenwerte überprüft werden.
Wir haben drei Arten von SQL-Anweisungen -
- Datenmanipulationssprache (DML)
- Datendefinitionssprache (DDL)
- Datensteuerungssprache (DCL)
DDL-Anweisungen werden verwendet, um die Datenbankstruktur oder das Schema zu definieren. Einige Beispiele -
CREATE - um Objekte in der Datenbank zu erstellen
ALTER - ändert die Struktur der Datenbank
DROP - Objekte aus der Datenbank löschen
Operatoren werden verwendet, um Bedingungen in einer SQL-Anweisung anzugeben und als Konjunktionen für mehrere Bedingungen in einer Anweisung zu dienen.
- Rechenzeichen
- Vergleichs- / Vergleichsoperatoren
- Logische Operatoren
- Operatoren einstellen
- Operatoren, mit denen Bedingungen negiert werden
Union wird verwendet, um die Ergebnisse von zwei oder mehr Select-Anweisungen zu kombinieren. Es werden jedoch die doppelten Zeilen entfernt. Union ist ein Set-Operator.
Unionwird verwendet, um die Ergebnisse von zwei oder mehr Select-Anweisungen zu kombinieren. Es werden jedoch doppelte Zeilen entfernt
Union All Die Operation ähnelt der von Union, zeigt jedoch auch die doppelten Zeilen an.
Trigger werden verwendet, um die Integrität der Datenbank aufrechtzuerhalten. Um zu überprüfen, ob der Trigger ausgelöst wurde oder nicht, können Sie Überwachungsprotokolle einchecken.
Trigger können nicht bei Bedarf aufgerufen werden. Sie werden aufgerufen, wenn eine zugehörige Aktion (Einfügen, Löschen und Aktualisieren) für die Tabelle ausgeführt wird, für die sie definiert sind. Trigger werden verwendet, um Geschäftsregeln, die Überwachung und auch die referenzielle Integritätsprüfung anzuwenden.
Holen Sie sich zunächst die funktionale Anforderung. Verstehen Sie dann die Tabellenstruktur, Verknüpfungen, Cursor und Trigger, die verwendete gespeicherte Prozedur und andere Parameter. Als nächstes können Sie einen Testfall mit verschiedenen Werten als Eingabe für diese Objekte schreiben.
Beim DB-Testen werden Back-End-Komponenten getestet, die für Benutzer nicht sichtbar sind. Es enthält Datenbankkomponenten und DBMS-Systeme wie MySQL und Oracle.
Beim Front-End-Testen werden die Funktionen einer Anwendung und ihrer Komponenten wie Formulare, Diagramme, Menüs, Berichte usw. überprüft. Diese Komponenten werden mit Front-End-Entwicklungstools wie VB.net, C #, Delphi usw. erstellt.
Der Prozess zum Durchführen von Datenbanktests ähnelt dem Testen anderer Anwendungen. DB-Tests können mit den folgenden Schlüsselprozessen beschrieben werden:
- Umgebung einrichten
- Führen Sie einen Test durch
- Überprüfen Sie das Testergebnis
- Validierung gemäß den erwarteten Ergebnissen
- Melden Sie die Ergebnisse den jeweiligen Stakeholdern
Zur Entwicklung der Testfälle werden verschiedene SQL-Anweisungen verwendet. Die häufigste SQL-Anweisung, die zum Ausführen von DB-Tests verwendet wird, ist die select-Anweisung. Daneben können auch verschiedene DDL-, DML- und DCL-Anweisungen verwendet werden.
Example - Erstellen, Einfügen, Auswählen, Aktualisieren usw.
Eine Ansicht ist eine Tabelle, die nicht wirklich eigenständig existiert, sondern von einer oder mehreren Basistabellen abgeleitet wird. Mit anderen Worten, es gibt keine gespeicherte Datei, die die Ansicht direkt darstellt, stattdessen wird eine Definition der Ansicht im Datenwörterbuch gespeichert.
Das Wachstum und die Umstrukturierung von Basistabellen spiegeln sich nicht in den Ansichten wider. Somit kann die Ansicht Benutzer von den Änderungen in der Datenbank isolieren. Berücksichtigt daher die logische Datenunabhängigkeit.
Es gibt Benutzeransichten und deren Zuordnungen zum konzeptionellen Schema an.
Es ist ein Prozess, bei dem eine Tabelle in mehrere Tabellen zerlegt wird, ohne dass Informationen verloren gehen. Die Normalisierung wird durchgeführt, um die folgenden Ziele zu erreichen:
- Redundanz minimieren.
- Um das Einfügen, Löschen und Aktualisieren von Anomalien zu minimieren.
Die Indizierung ist eine Technik, mit der ermittelt wird, wie schnell bestimmte Daten gefunden werden können. Es wird zur Optimierung der Abfrageleistung verwendet. Es gibt folgende Arten der Indizierung:
- Indizierung des binären Suchstils
- B-Tree-Indizierung
- Indizierte Listenindizierung
- Speicherresidente Tabelle
- Tabellenindizierung
SQL ist eine strukturierte Abfragesprache, die speziell für Datenzugriffsvorgänge auf normalisierten relationalen Datenbankstrukturen entwickelt wurde.
Der Hauptunterschied zwischen SQL und anderen herkömmlichen Programmiersprachen besteht darin, dass SQL-Anweisungen angeben, welche Datenoperationen ausgeführt werden sollen, anstatt wie sie ausgeführt werden sollen.
Gespeicherte Prozeduren werden verwendet, um eine benutzerdefinierte Operation auszuführen. Eine gespeicherte Prozedur kann eine Reihe zusammengesetzter SQL-Anweisungen enthalten. Eine gespeicherte Prozedur führt die SQL-Befehle aus und gibt das Ergebnis an den Client zurück.
PL / SQL verwendet Cursor für alle Datenbankinformationen, die auf Anweisungen zugreifen. Die Sprache unterstützt die Verwendung von zwei Arten von Cursorn - implizit und explizit.
Cold Backup- Cold Back wird als Sicherung von Datenbankdateien, Redo-Protokollen und Steuerdateien bezeichnet, wenn die Instanz heruntergefahren wird. Dies ist eine Dateikopie, normalerweise von der Festplatte direkt auf Band. Sie müssen die Instanz herunterfahren, um eine konsistente Kopie zu gewährleisten.
Wenn eine kalte Sicherung durchgeführt wird, ist die einzige Option, die bei Verlust von Datendateien verfügbar ist, die Wiederherstellung aller Dateien aus der letzten Sicherung. Alle Änderungen, die nach der letzten Sicherung vorgenommen werden, gehen verloren.
Hot Backup- Einige Datenbanken können nicht heruntergefahren werden, während eine Sicherungskopie der Dateien erstellt wird. Daher ist eine kalte Sicherung nicht verfügbar. Für diese Datenbanktypen verwenden wir Hot Backup.
Mit der SQL-Unterabfrage können zwei oder mehr Tabellen gleichzeitig abgefragt werden. Die Unterabfrage selbst ist eine SQL SELECT-Anweisung, die in der WHERE-Klausel einer anderen SQL SELECT-Anweisung enthalten ist und durch Klammern getrennt ist. Einige Unterabfragen haben äquivalente SQL-Join-Strukturen, korrelierte Unterabfragen können jedoch nicht von einem Join dupliziert werden
In einem solchen Fall müssen Sie die folgenden Aspekte testen:
- Mehrwertige Abhängigkeiten
- Funktionale Abhängigkeiten
- Kandidatenschlüssel
- Primärschlüssel
- Fremde Schlüssel
Sie können zur Datenbank gehen und eine relevante SQL-Abfrage ausführen. In WinRunner können Sie die Datenbankprüfpunktfunktion verwenden. Wenn die Anwendung eine Ansichtsfunktion bietet, können Sie diese im Front-End überprüfen.
Datengesteuertes Testen ist definiert als ein Automatisierungstestprozess, bei dem die Anwendung mit mehreren Testdaten getestet wird. Es ist einfach und unkompliziert als ein erneuter Test, bei dem der Tester einfach vor dem System sitzt und verschiedene neue Eingabewerte manuell über die Front-End-Schnittstelle eingibt.
Sobald Sie die Testfälle ausgeführt haben, finden Sie die Fehler, die bereits erkannt und behoben wurden. Die erneute Ausführung desselben Tests mit unterschiedlichen Eingabewerten, um zu bestätigen, dass der ursprüngliche Fehler erfolgreich behoben wurde, wird als erneutes Testen bezeichnet.
Das erneute Testen wird mit einem kleinen Unterschied auch als datengesteuertes Testen bezeichnet.
Retesting - Es handelt sich um einen manuellen Testprozess, bei dem Anwendungstests mit vollständig neuen Daten durchgeführt werden.
Data-driven Testing- Es handelt sich um einen Automatisierungstestprozess, bei dem die Anwendung mit mehreren Testdaten getestet wird. Es ist einfach und unkompliziert als ein erneuter Test, bei dem der Tester einfach vor dem System sitzt und verschiedene neue Eingabewerte manuell über die Front-End-Schnittstelle eingibt.
Es gibt vier Arten von datengesteuerten Tests:
- Dynamische Übermittlung von Testdaten über die Tastatur
- Datengesteuerte Tests über TXT- und DOC-Flatfiles
- Datengesteuerte Tests über Front-End-Objekte
- Datengesteuerte Tests über Excel-Tabelle
Leistungstests sind Softwaretesttechniken, mit denen ermittelt wird, wie sich ein System unter hoher Arbeitsbelastung in Bezug auf Geschwindigkeit, Empfindlichkeit und Stabilität verhält.
Die folgenden wichtigen Punkte sind bei der Durchführung von Datenbankwiederherstellungstests zu berücksichtigen:
Zeitspanne, in der Änderungen oder Modifikationen im Datenbanksystem auftreten.
Der Zeitraum, bis zu dem Ihr Wiederherstellungsplan durchgeführt werden soll.
Die Empfindlichkeit von Daten im Datenbanksystem. Je kritischer die Daten sind, desto regelmäßiger müssen Sie die Software testen.
Die folgenden Tools werden zum Generieren von Testdaten verwendet:
- Datenfabrik
- DTM-Datengenerator
- Turbodaten
Es gibt zwei Arten von Backups, die verwendet werden können:
Physical Backups- Physikalische Sicherung beinhaltet bis unter Verwendung von 3 zurück nehmen rd Party Backup - Tools wie Veritas Netz zurück, IBM Tivoli Manager oder Benutzer - Manager Sicherungen OS Dienstprogramme verwenden.
Logical Backups - Die logische Sicherung der Datenbank umfasst die Sicherung logischer Objekte wie Tabellen, Indizes, Prozeduren usw.
Ein gängiges Tool für die Datensicherung ist Oracle Recovery Manager (RMAN), ein Oracle-Dienstprogramm für die Datenbanksicherung.
Die folgenden Aktionen werden beim Testen der Datenbankwiederherstellung ausgeführt:
- Testen des Datenbanksystems
- Testen der SQL-Dateien
- Testen von Teildateien
- Testen der Datensicherung
- Testen des Backup-Tools
- Testen von Protokollsicherungen
Datenbanksicherheitstests werden durchgeführt, um die Lücken in Sicherheitsmechanismen zu ermitteln und um die Schwachstellen oder Schwächen des Datenbanksystems zu ermitteln.
Datenbanksicherheitstests werden durchgeführt, um die folgenden Aspekte zu überprüfen:
- Authentication
- Authorization
- Confidentiality
- Availability
- Integrity
- Resilience
SQL Injection-Bedrohung ist die häufigste Art von Angriff in einem Datenbanksystem, bei dem böswillige SQL-Anweisungen in das Datenbanksystem eingefügt und ausgeführt werden, um wichtige Informationen aus dem Datenbanksystem abzurufen. Dieser Angriff nutzt Lücken bei der Implementierung von Benutzeranwendungen. Um dies zu verhindern, sollten Benutzereingaben sorgfältig behandelt werden.
Die folgenden Tools können zum Durchführen von Datenbanksicherheitstests verwendet werden: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti und Web Scarab.
Die häufigsten Herausforderungen beim Ausführen von Datenbanktests sind folgende:
- Der Testumfang ist zu groß
- Verkleinerte Testdatenbank
- Änderungen in der Datenbankstruktur
- Komplexe Testpläne
- Gutes Verständnis von SQL