selenium database testing using webdriver
In unserem letzten Selenium-Tutorial haben wir gelernt, wie es geht Beheben Sie einige wiederkehrende Probleme in Selenskripten . Wir haben einige fortgeschrittene Konzepte besprochen, bei denen wir uns mit Maus- und Tastaturereignissen befassen und durch Implementieren von Listen auf mehrere Links zugreifen.
Weiter mit unserem Fortgeschrittene Themen in der Selenium-Trainingsreihe Wir möchten Ihnen das Konzept von vorstellen Datenbanktests mit Selenium WebDriver.
Wir würden die grundlegenden Prozesse wie Datenbankverbindung, Ausführen von Abfragen, Abrufen von Daten und Trennen von Datenbankinstanzen usw. diskutieren. Wir würden auch verschiedene praktische Implikationen diskutieren, bei denen wir Datenbanktests mit Automatisierungstests benötigen, um die zu testen vollständige End-to-End-Szenarien.
Bevor Sie mit den technischen Auswirkungen des automatisierten Datenbanktests fortfahren. Lassen Sie uns einige Szenarien diskutieren, in denen wir zusammen mit dem Automatisierungstest Datenbanktests durchführen müssen. Zuvor möchte ich hier jedoch bestätigen, dass das Testen von Datenbanken eine sehr eigenartige Art des Testens ist, während Selenium WebDriver ein Tool ist, mit dem Benutzerinteraktionen mit der Benutzeroberfläche der Anwendung simuliert und automatisiert werden.
Technisch gesehen führen wir also keine genauen Datenbanktests durch, sondern testen unsere Anwendung in Verbindung mit der Datenbank, um sicherzustellen, dass die Änderungen an beiden Enden berücksichtigt werden und Fehler frühzeitig erkannt werden.
Absolut alle Webanwendungen benötigen ein Backend zum Speichern der Daten. Datenbanken wie MySQL, Oracle und SQL Server sind heutzutage recht beliebt.
Lassen Sie uns nun zum ursprünglichen Thema zurückkehren und einige Szenarien diskutieren, um die Anforderungen des Datenbanktests zusammen mit dem Automatisierungstest zu veranschaulichen.
Was du lernen wirst:
- Betrachten Sie die folgenden Szenarien
- Erstellung von Testdaten in der Datenbank
- Erstellung einer neuen Datenbank
- Fazit
- Literatur-Empfehlungen
Betrachten Sie die folgenden Szenarien
# 1) Manchmal müssen wir sicherstellen, dass die über die Benutzeroberfläche eingegebenen Daten konsistent in der Datenbank wiedergegeben werden. Auf diese Weise rufen wir die Informationen aus der Datenbank ab und überprüfen die abgerufenen Informationen anhand der von der Benutzeroberfläche bereitgestellten Informationen. Zum Beispiel Registrierungsformulare, Benutzerdaten, Benutzerprofile, Aktualisierungen und Löschungen von Benutzerdaten. Das zu automatisierende Testszenario kann daher lauten: 'Überprüfen, ob die Benutzerinformationen erfolgreich in der Datenbank gespeichert wurden, sobald sich der Benutzer in der Anwendung registriert'.
#zwei) Ein weiterer Anwendungsfall für die Durchführung von Datenbanktests mit Selenium WebDriver kann auftreten, wenn der Benutzer angewiesen wird, die Testdaten oder erwarteten Daten aus der Datenbank zu laden. In einem solchen Fall würde der Benutzer die Verbindung mit der Datenbank unter Verwendung einer Drittanbieter-API herstellen, Abfragen ausführen, um Daten aus dem Datensatz abzurufen, und dann die aus der Datenbank abgerufenen Daten mit den tatsächlichen Daten bestätigen, die auf der Anwendungsbenutzeroberfläche ausgefüllt sind .
#3) Ein weiterer Anwendungsfall ist das Durchführen eines assoziativen Datenbanktests. Angenommen, wir haben einen Vorgang auf der Benutzeroberfläche der Anwendung ausgeführt und möchten die Reflexion in der Datenbank testen. Es kann vorkommen, dass sich die betroffenen Daten aufgrund der Zuordnung in verschiedenen Tabellen der Datenbank befinden. Daher ist es immer ratsam, die Datenreflexion in allen betroffenen Bereichen zu testen.
wie man eine JAR-Datei mit Java öffnet
Selen simuliert, wie gesagt, die Benutzerinteraktionen mit der zu testenden Anwendung. Es kann Tastaturereignisse, Mausaktionen usw. simulieren. Wenn der Benutzer jedoch etwas außerhalb der Umgebung von Browser- und Webanwendungsinteraktionen automatisieren möchte, kann Selen keine große Hilfe sein. Daher benötigen wir andere Tools oder Funktionen, um End-to-End-Tests durchzuführen.
Daher müssen wir in allen oben genannten Szenarien möglicherweise Datenbanktests zusammen mit der UI-Automatisierung durchführen. Wir können die Geschäftslogik überprüfen, indem wir die Daten manipulieren und ihre Reflexion überprüfen. Wir können auch die technischen Aspekte der Datenbank selbst wie Soft Delete, Feldvalidierung usw. überprüfen.
Lassen Sie uns nun mit der eigentlichen Implementierung fortfahren. Bevor Sie Selenium WebDriver-Skripte zum Extrahieren von Daten aus der Datenquelle entwickeln, erstellen Sie Testdaten in der Datenbank. Für dieses Tutorial würden wir MySQL als Datenbank verwenden.
Erstellung von Testdaten in der Datenbank
Wenn Sie die Datenbank noch nicht heruntergeladen haben, laden Sie sie mit dem Verknüpfung . Vom Benutzer wird erwartet, dass er einige grundlegende Schritte zum Herunterladen und Installieren der Datenbank ausführt.
= >> Lesen Sie dieses Tutorial zu Laden Sie die MySQL-Datenbank herunter und installieren Sie sie .
Sobald die Datenbank erfolgreich installiert wurde, kann der Benutzer die MySQL-Eingabeaufforderung starten, die wie im folgenden Screenshot aussehen würde. Die Anwendung fordert den Benutzer möglicherweise auf, das Kennwort einzugeben. Das Standardkennwort lautet 'root'.
Hinweis : Der Benutzer kann GUI-basierte Clients auch über das Internet finden, um eine Verbindung mit der Datenbank herzustellen. Um nur einige zu nennen, kann der Benutzer den Abfragebrowser oder die Work Bench herunterladen und installieren.
Erstellung einer neuen Datenbank
Der nächste Schritt besteht darin, die Testdatenbank mit einigen Tabellen und Datensätzen zu erstellen, die in diesen Tabellen gespeichert sind, um eine Verbindung mit der Datenbank herzustellen und Abfragen auszuführen.
Schritt 1) Geben Sie 'show database' ein, um alle bereits verfügbaren Datenbanken anzuzeigen
Datenbanken anzeigen;
Schritt 2) Geben Sie 'Datenbankbenutzer erstellen' ein. um eine Datenbank mit dem Namen 'Benutzer' zu erstellen.
Datenbankbenutzer erstellen;
Beachten Sie, dass der Datenbankname als Benutzer erstellt wird und in der Liste der Datenbanken angezeigt wird.
Schritt 3) Geben Sie 'Benutzer verwenden' ein. um die neu erstellte Datenbank auszuwählen. Geben Sie außerdem 'show tables' ein. um alle in der Benutzerdatenbank verfügbaren Tabellen anzuzeigen.
Benutzer verwenden;
Tabellen anzeigen;
Beachten Sie, dass der leere Satz im Ergebnis der 'Showtabellen' angezeigt wird. Abfrage, da in der Benutzerdatenbank keine Tabellen verfügbar waren.
Lassen Sie uns nun einige Tabellen und Datensätze hinzufügen.
Schritt 4) Geben Sie den folgenden Befehl ein, um eine Tabelle mit 4 Feldern / Spalten (Benutzer-ID, Benutzername, Benutzeralter, Benutzeradresse) zu erstellen.
Tabelle Benutzerinfo erstellen
(
userId int,
Benutzername varchar (255),
userAge int,
userAddress varchar (255)
);
Der nächste Schritt besteht darin, einige Datensätze in die Tabelle 'userinfo' aufzunehmen.
Schritt 5) Geben Sie den folgenden Befehl ein, um Daten in die Tabelle eine Tabelle für alle vier Felder 4 Felder / Spalten (Benutzer-ID, Benutzername, Benutzeralter, Benutzeradresse) einzufügen.
in userinfo (userID, userName, userAge, userAddress) Werte einfügen ('1', 'shruti', '25', 'Noida');
Geben Sie den folgenden Befehl ein, um die hinzugefügten Daten anzuzeigen:
Wählen Sie * aus der Benutzerinfo.
Ebenso können Sie Ihrer Tabelle weitere Daten hinzufügen und auch andere Tabellen erstellen.
Nachdem wir unsere Datenbank erstellt haben. Wir können weitermachen und das verstehen Implementierung automatisierter Abfragen zum Abrufen der Datensätze aus der Datenbank.
Wie bereits erwähnt, ist Selenium WebDriver ein Tool für die UI-Automatisierung. Daher kann Selenium WebDriver allein keine Datenbanktests durchführen. Dies kann jedoch mithilfe der Java Database Connectivity API (JDBC) erfolgen. Mit der API kann der Benutzer eine Verbindung zur Datenquelle herstellen, mit dieser interagieren und die Daten mithilfe automatisierter Abfragen abrufen. Um die JDBC-API nutzen zu können, muss Java Virtual Machine (JVM) auf dem System ausgeführt werden.
JDBC-Workflow
So erstellen Sie ein String-Array Java
Wir würden unseren Fokus auf folgende Prozesse richten:
- Herstellen einer Verbindung mit der Datenbank
- Ausführen von Abfragen und Aktualisieren von Anweisungen zum Extrahieren / Abrufen von Daten (CRUD-Operationen)
- Verwenden und Bearbeiten der aus der Datenbank extrahierten Daten in Form der Ergebnismenge. (Die Ergebnismenge ist eine Sammlung von Daten, die in den Zeilen und Spalten organisiert sind.)
- Trennen der Datenbankverbindung.
Wie bereits erwähnt, würden wir, um die Datenbank automatisch aus unseren Selenium WebDriver-Testskripten testen zu können, über JDBC-Konnektivität in unseren Testskripten eine Verbindung mit der Datenbank herstellen. Nach der Verbindung können wir so viele CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen) in der Datenbank auslösen.
In diesem Tutorial werden „Lesevorgang und seine Varianten“ und ihre Implementierung im Selenium WebDriver-Skript erläutert. Lassen Sie uns zuvor das Testszenario manuell über die „MySQL-Befehlszeile“ überprüfen.
Szenario:
1) Öffnen Sie den Datenbankserver und stellen Sie eine Verbindung zur Benutzerdatenbank her.
zwei) Listen Sie alle Datensätze aus der Tabelle 'userinfo' auf.
Syntax: Wählen Sie * aus der Benutzerinfo.
3) Schließen Sie die Datenbankverbindung.
Beachten Sie, dass die Leseabfrage alle in der Benutzerinfotabelle vorhandenen Benutzerdaten auflistet. Die Tabelle besteht aus den folgenden Spalten.
- Benutzeridentifikation
- Nutzername
- userAge
- userAddress
Das Ergebnis zeigt auch, dass nur ein einziger Datensatz in der Tabelle vorhanden ist.
Lassen Sie uns nun dasselbe Szenario mit der Java-Klasse ausführen.
Um auf die Datenbank zugreifen zu können, kann der Benutzer zwischen den verschiedenen Connector-Optionen wählen, die für die Verbindung mit der Datenbank verfügbar sind. Die meisten Datenbankconnectors werden frei als JAR-Dateien verteilt. Da wir MySQL als Datenquelle verwenden, müssen wir die für MySQL spezifische JAR-Datei herunterladen.
Die JAR-Datei kann heruntergeladen werden von: Hier oder Hier.
Schritt 1 : Der erste und wichtigste Schritt besteht darin, den Erstellungspfad des Projekts zu konfigurieren und die Datei 'mysql-connector-java-3.1.13-bin.jar' als externe Bibliothek hinzuzufügen.
Schritt 2 : Erstellen Sie eine Java-Klasse mit dem Namen 'DatabaseTesingDemo'.
Schritt 3 : Kopieren Sie den folgenden Code und fügen Sie ihn in die im obigen Schritt erstellte Klasse ein.
Codebeispiel
import org.junit.After; import org.junit.Before; import org.junit.Test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class DatabaseTesingDemo { // Connection object static Connection con = null; // Statement object private static Statement stmt; // Constant for Database URL public static String DB_URL = 'jdbc:mysql://localhost:3306/user'; // Constant for Database Username public static String DB_USER = 'root'; // Constant for Database Password public static String DB_PASSWORD = 'root'; @Before public void setUp() throws Exception { try{ // Make the database connection String dbClass = 'com.mysql.jdbc.Driver'; Class.forName(dbClass).newInstance(); // Get connection to DB Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Statement object to send the SQL statement to the Database stmt = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } @Test public void test() { try{ String query = 'select * from userinfo'; // Get the contents of userinfo table from DB ResultSet res = stmt.executeQuery(query); // Print the result untill all the records are printed // res.next() returns true if there is any next record else returns false while (res.next()) { System.out.print(res.getString(1)); System.out.print(' ' + res.getString(2)); System.out.print(' ' + res.getString(3)); System.out.println(' ' + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } } }
Die Ausgabe des obigen Codes lautet:
1 Shruti 25 Noida
2 shrivastava 55 Mumbai
Anweisungsvarianten lesen
Where-Klausel mit Einzelbedingung
String query = 'select * from userinfo where userId = '' + 1 + ''';
ResultSet res = stmt.executeQuery (Abfrage);
Ausgabe:
1 Shruti 25 Noida
Where-Klausel mit mehreren Bedingungen
String Address = ”Mumbai”;
String query = 'select * from userinfo where userId = '' + 2 + '' und userAddress = '' + Address + '';
ResultSet res = stmt.executeQuery (Abfrage);
Ausgabe:
2 shrivastava 55 Mumbai
Benutzer-ID anzeigen
String query = 'Benutzer-ID aus Benutzerinfo auswählen';
ResultSet res = stmt.executeQuery (Abfrage);
Ausgabe:
1
zwei
Zeigen Sie die Benutzer-ID mit der where-Klausel an
String Address = ”Noida”;
String query = 'Benutzer-ID, Benutzername aus Benutzerinfo auswählen, wobei Benutzeradresse =' + Adresse + '';
ResultSet res = stmt.executeQuery (Abfrage);
Ausgabe:
zwei
Shrivastava
Auf die gleiche Weise kann der Benutzer verschiedene Abfragen in der Datenbank ausführen.
Lassen Sie uns damit auch etwas Licht auf die Methoden zur Erreichbarkeit von Ergebnissen werfen.
Methoden zur Barrierefreiheit des Ergebnisses:
Methodenname | Beschreibung |
---|---|
double getDouble () | Die Methode wird verwendet, um die Doppeltypdaten aus der Ergebnismenge abzurufen |
String getString () | Die Methode wird verwendet, um die Zeichenfolgentypdaten aus der Ergebnismenge abzurufen |
int getInt () | Die Methode wird verwendet, um die Daten vom Typ Integer aus der Ergebnismenge abzurufen |
boolean getBoolean () | Die Methode wird verwendet, um den booleschen Wert aus der Ergebnismenge abzurufen |
float getFloat () | Die Methode wird verwendet, um die Float-Typ-Daten aus der Ergebnismenge abzurufen |
lange getLong () | Die Methode wird verwendet, um die langen Typdaten aus der Ergebnismenge abzurufen |
kurz getShort () | Die Methode wird verwendet, um die Kurztypdaten aus der Ergebnismenge abzurufen |
Datum getDate () | Die Methode wird verwendet, um das Objekt vom Typ Datum aus der Ergebnismenge abzurufen |
Ergebnis Navigationsmethoden:
Methodenname | Beschreibung |
---|---|
boolean next () | Die Methode wird verwendet, um zum nächsten Datensatz in der Ergebnismenge zu wechseln |
boolean previous () | Die Methode wird verwendet, um zum vorherigen Datensatz in der Ergebnismenge zu wechseln |
boolean first () | Die Methode wird verwendet, um zum ersten Datensatz in der Ergebnismenge zu wechseln |
boolean last () | Die Methode wird verwendet, um zum letzten Datensatz in der Ergebnismenge zu wechseln |
Boolescher Wert absolut (int rowNumber) | Die Methode wird verwendet, um zu dem bestimmten Datensatz in der Ergebnismenge zu wechseln |
Fazit
Mit diesem Tutorial haben wir versucht, Sie mit dem Konzept von vertraut zu machen Automatisierte Datenbanktests . Wir haben die technischen Implikationen und Anforderungen des Datenbanktests klar betont.
Da sich unsere gesamte Serie auf Selen konzentrierte, kann der Leser irregeführt werden und den Eindruck erwecken, dass dieses Tutorial das Durchführen von Datenbanktests mit Selen lehren würde, aber wie ich bereits mehrfach erwähnt habe, alles, was außerhalb der Peripherie von UI-Tests liegt kann nicht von Selen gehandhabt werden. Daher führen wir die JDBC-API (Java Database Connectivity) ein, um Datenbanktests durchzuführen, indem wir den Code in die Selenium WebDriver-Skripte einbetten.
JDBC ermöglicht es der Java-Klasse, eine Verbindung zur Datenbank herzustellen, Daten aus der Datenbank abzurufen oder tatsächlich eine der CRUD-Operationen auszuführen, die resultierenden Daten zu bearbeiten und die Verbindung zu schließen.
Das Tutorial bildet somit die grundlegende Beispielimplementierung des oben genannten Prozesses.
Nächstes Tutorial Nr. 29 : Wir werden mit fortgeschrittenen Selen-Themen weitermachen. Im nächsten Tutorial werden wir uns mit dem Selenium GRID befassen, das verwendet wird, wenn Sie Tests mit mehreren Browsern durchführen müssen und eine große Anzahl von Testfällen haben.
Literatur-Empfehlungen
- Datenbanktests mit JMeter
- Integration von Selen mit JMeter
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- Implementierung unseres ersten WebDriver-Skripts - Selenium WebDriver Tutorial # 10
- Der beste Online Selenium WebDriver + JAVA Schulungskurs
- Spock für Integration und Funktionstests mit Selen