selenium Database Testing (met behulp van WebDriver en JDBC API)
in onze laatste selenium tutorial hebben we geleerd hoe we terugkerende problemen in selenium scripts kunnen oplossen. We bespraken een aantal vooraf concepten waarin we zouden omgaan met muis en toetsenbord gebeurtenissen, toegang tot meerdere links door het implementeren van lijsten.
verder gaan met onze geavanceerde onderwerpen in de Selenium training serie, willen we u introduceren met het concept van Database testen met behulp van Selenium WebDriver.
we bespreken de basisprocessen zoals databaseverbinding, het uitvoeren van query ‘ s, het ophalen van gegevens en het loskoppelen van databaseinstances etc. We zouden ook verschillende praktische implicaties bespreken waar we Databasetests met automatiseringstests nodig hebben om de complete end-to-end scenario ‘ s te testen.
voordat de technische implicaties van het geautomatiseerd testen van databanken worden voortgezet. Laten we bespreken een paar scenario ‘ s waar we vereisen het uitvoeren van Database testen samen met de automatisering testen. Maar daarvoor, Ik wil hier bevestigen dat Database testen is een zeer eigenaardige vorm van testen, terwijl Selenium WebDriver is een tool die wordt gebruikt om gebruikersinteracties te simuleren en te automatiseren met de toepassing UI.
dus technisch gesproken zijn we niet precies het uitvoeren van Database testen in plaats van We testen onze applicatie in combinatie met Database om ervoor te zorgen dat de veranderingen worden weerspiegeld aan beide uiteinden en zo gebreken vroegtijdig identificeren.
absoluut alle webapplicaties hebben een backend nodig om de gegevens op te slaan. Databases zoals MySQL, Oracle en SQL Server zijn redelijk populair deze dagen.
nu terug naar het oorspronkelijke onderwerp, laten we een paar scenario ‘ s bespreken om de vraag naar Databasetests samen met automatiseringstests te illustreren.
overweeg de volgende scenario ‘ s
#1) Soms moeten we ervoor zorgen dat de gegevens die vanuit de gebruikersinterface worden ingevoerd consistent worden weergegeven in de database. Zo halen we de informatie uit de Database op en verifiëren we de opgehaalde informatie aan de hand van de informatie uit de gebruikersinterface. Bijvoorbeeld registratieformulieren, gebruikersgegevens, gebruikersprofielen, updates en verwijderingen van gebruikersgegevens. Het testscenario om te automatiseren kan dus zijn “om te controleren of de informatie van de gebruiker met succes wordt opgeslagen in de database zodra de gebruiker zich registreert in de applicatie”.
# 2) Een ander gebruik van het uitvoeren van databasetests met Selenium WebDriver kan zich voordoen wanneer de gebruiker de opdracht krijgt de testgegevens of verwachte gegevens uit de Database te laden. In een dergelijk geval zou de gebruiker de verbinding met de Database maken met behulp van een API van derden, query ‘ s uitvoeren om gegevens uit de dataset op te halen en vervolgens de gegevens uit de Database bevestigen met de werkelijke gegevens die in de gebruikersinterface van de toepassing worden ingevuld.
# 3) Een ander gebruik is het testen van associatieve databases. Stel dat we een bewerking hebben uitgevoerd op de gebruikersinterface van de applicatie, en we willen de reflectie in de Database testen. Het kan een geval zijn dat de getroffen gegevens zich in verschillende tabellen van de database als gevolg van de vereniging. Daarom is het altijd raadzaam om gegevensreflectie te testen op alle getroffen gebieden.
Selenium simuleert, zoals ik al zei, de interactie van de gebruiker met de te testen toepassing. Het kan toetsenbordgebeurtenissen, muisacties enz. simuleren. Maar als de gebruiker wenst te automatiseren iets buiten de nabijheid van browser – webapplicatie interacties, dan selenium kan niet van veel hulp. Daarom hebben we andere tools of mogelijkheden nodig om end –to –end testen uit te voeren.
in alle bovenstaande scenario ‘ s kan het dus nodig zijn om Databasetests uit te voeren samen met UI-automatisering. We kunnen zakelijke logica ‘ s controleren door de gegevens te manipuleren en de weerspiegeling ervan te verifiëren. We kunnen ook de technische aspecten van de Database zelf controleren, zoals soft delete, field validation etc.
laten we nu verder gaan met de daadwerkelijke tenuitvoerlegging. Alvorens Selenium WebDriver scripts te ontwikkelen om gegevens uit de gegevensbron te extraheren, laten we testgegevens maken in de database. Voor deze tutorial gebruiken we MySQL als database.
aanmaken van testgegevens in de Database
als u de database nog niet hebt gedownload, download deze dan via de link. Van de gebruiker wordt verwacht dat hij enkele basisstappen volgt om de database te downloaden en te installeren.
=>> Lees deze tutorial om Mysql Database te downloaden en te installeren.
zodra de database met succes is geïnstalleerd, kan de gebruiker de MySQL opdrachtregelprompt starten die eruit zou zien als het volgende screenshot. De toepassing kan de gebruiker vragen om het wachtwoord in te voeren. Het standaardwachtwoord is “root”.
Opmerking: De gebruiker kan ook GUI-gebaseerde clients via internet vinden om verbinding te maken met de database. Om er een paar te noemen, kan de gebruiker de Query Browser of werkbank downloaden en installeren.
aanmaken van een nieuwe Database
de volgende stap is het aanmaken van de testdatabase met enkele tabellen en records die in die tabellen zijn opgeslagen om een verbinding met de database te maken en queries uit te voeren.
Stap 1) Typ “databases weergeven” om alle reeds beschikbare databases te zien
databases weergeven;
Stap 2) Typ “create database user;” Om een database met de naam “user”te maken.
databasegebruiker aanmaken;
merk op dat de database naam als de gebruiker is gemaakt en kan worden gezien in de lijst van databases.
Stap 3) Typ “use user;” om de nieuw aangemaakte database te selecteren. Typ ook “Show tables;” om alle tabellen te bekijken die beschikbaar zijn in de gebruikersdatabase.
gebruik gebruiker;
tabellen tonen;
merk op dat lege set wordt weergegeven in het resultaat van de “show tables;” query omdat er geen tabellen beschikbaar waren in de gebruikersdatabase.
laten we nu een paar tabellen toevoegen en records erin toevoegen.
Stap 4) Typ het volgende commando om een tabel te maken met 4 velden/kolommen (userId, userName, userAge, userAddress).
tabelgebruikersinfo
(
userId int,
userName varchar (255),
userAge int,
useradres varchar(255)
);
de volgende stap is het toevoegen van een aantal gegevensrecords in de “userinfo” tabel.
Stap 5) typ het volgende commando om gegevens in de tabel in te voegen A tabel voor alle vier velden 4 velden/kolommen (userId, userName, userAge, userAddress).
insert into userinfo (userID, userName, userAge, userAddress) values (‘1’, ‘shruti’, ’25’, ‘Noida’);
om de toegevoegde gegevens te bekijken, typt u het volgende commando:
select * from userinfo;
op dezelfde manier kunt u meer gegevens toevoegen aan uw tabel en kunt u ook andere tabellen maken.
nu hebben we onze database aangemaakt. We kunnen verder gaan en de implementatie van geautomatiseerde queries begrijpen om de records uit de database op te halen.
zoals we al eerder hebben herhaald, is Selenium WebDriver een tool voor UI-automatisering. Dus, Selenium WebDriver alleen is niet in aanmerking voor het uitvoeren van database testen, maar dit kan worden gedaan met behulp van Java Database Connectivity API (JDBC). Met de API kan de gebruiker verbinding maken en communiceren met de gegevensbron en de gegevens ophalen met behulp van geautomatiseerde queries. Om de JDBC API te kunnen exploiteren, moet Java Virtual Machine (JVM) op het systeem draaien.
JDBC-Workflow
we zouden onze focus afstemmen op de volgende processen:
- een verbinding maken met de database
- uitvoeren van query ’s en updatecommando’ s om gegevens (CRUD-bewerkingen)
- te extraheren/ophalen met behulp van en manipuleren van de gegevens uit de Database in de vorm van de resultatenreeks. (Result set is een verzameling van gegevens georganiseerd in de rijen en kolommen)
- de verbinding met de database verbreken.
zoals eerder gezegd, om de database automatisch te kunnen testen vanuit onze Selenium WebDriver testscripts, zouden we verbinding maken met de Database via JDBC connectiviteit binnen onze testscripts. Post naar de verbinding, kunnen we zoveel CRUD (creëren, lezen, bijwerken, en verwijderen) operaties in de Database activeren.
in deze handleiding bespreken we “Read operation and its variants” en over hun implementatie in Selenium WebDriver script. Maar voorafgaand aan dat, laten we het testscenario handmatig controleren met behulp van de “MySQL command line”.
Scenario:
1) Open de databaseserver en maak verbinding met de” user ” – database.
2) Toon alle records uit de tabel” userinfo”.Gebruik: select * from userinfo;
3) Sluit de Database verbinding.
merk op dat de leesquery alle gebruikersgegevens in de tabel met gebruikersinfo zal weergeven. De tabel bestaat uit de volgende kolommen.
- userId
- username
- userAge
- user address
het resultaat laat ook zien dat er slechts één gegevensverzameling aanwezig is in de tabel.
laten we nu hetzelfde scenario uitvoeren met behulp van de Java-klasse.
om toegang te krijgen tot de Database, kan de gebruiker kiezen uit de verschillende aansluitopties die beschikbaar zijn om verbinding te maken met de Database. De meeste databaseconnectoren worden vrij gedistribueerd als ” jar ” – bestanden. Omdat we MySQL als gegevensbron gebruiken, zijn we verplicht om het jar-bestand specifiek voor MySQL te downloaden.
het jar-bestand kan worden gedownload van: hier of hier.
Stap 1: de eerste en belangrijkste stap is het configureren van het bouwpad van het project en het toevoegen van ” mysql-connector-java-3.1.13-bin.jar ” bestand als een externe bibliotheek.
Stap 2: Maak een java-klasse aan met de naam “DatabaseTesingDemo”.
Stap 3: kopieer en plak de onderstaande code in de klasse die in de bovenstaande stap is gemaakt.
Codesteekproef
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("\t" + res.getString(2)); System.out.print("\t" + res.getString(3)); System.out.println("\t" + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } }}
de uitvoer van de bovenstaande code is:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
read Statement Variants
Where clause with single condition
String query = ” select * from userinfo where userId='” + 1 + “‘”;
ResultSet res = stmt.executeQuery (query);
Output:
1 shruti 25 Noida
waar clausule met meerdere voorwaarden
String Address =”Mumbai”;
String query = “select * from userinfo where userId='” + 2 + “‘ and user address='”+Address+”‘”;
ResultSet res = stmt.uitvoer (query);
uitvoer:
2 shrivastava 55 Mumbai
Display userId
String query = “select userId from userinfo”;
ResultSet res = stmt.uitvoer (query);
uitvoer:
1
2
Toon userId met where clausule
String Address =”Noida”;
String query = “select userId,userName from userinfo where user address='”+Address+”‘”;
ResultSet res = stmt.executeQuery (query);
Output:
2
shrivastava
op dezelfde manier kan de gebruiker verschillende query ‘ s in de database uitvoeren.
laten we hiermee ook licht werpen op methoden voor resultaattoegankelijkheid.
Resultaten Toegankelijkheidsmethoden:
naam van de Methode | Beschrijving |
---|---|
String getString() | Methode gebruikt voor het ophalen van het type string gegevens uit de resultaatset |
int getInt() | Methode gebruikt voor het ophalen van het type integer gegevens uit de resultaatset |
boolean getBoolean() | Methode gebruikt voor het ophalen van de boolean-waarde van het resultaat |
float getFloat() | Methode gebruikt voor het ophalen van de float type gegevens uit de resultaatset |
lange getLong() | Methode gebruikt voor het ophalen van het lange type de gegevens uit de resultaatset |
korte getShort() | Methode gebruikt voor het ophalen van het korte type de gegevens uit de resultaatset |
dubbele getDouble() | Methode gebruikt voor het ophalen van dubbele gegevens van het type van het resultaat |
Datum getDate() | Methode gebruikt voor het ophalen van de Datum van het type object uit de resultaatset |
Resultaat navigatiesystemen:
naam van de Methode | Beschrijving |
---|---|
boolean volgende() | Methode wordt gebruikt om naar het volgende record in de resultaatset |
boolean vorige() | Methode wordt gebruikt om naar het vorige record in de resultaatset |
boolean eerste() | Methode wordt gebruikt om naar het eerste record in de resultaatset |
boolean laatste (de) | Methode wordt gebruikt om naar het laatste record in de resultaatset |
boolean absoluut (int-rijnummer) |
methode wordt gebruikt om naar de specifieke record in de resultatenreeks te gaan |
conclusie
door middel van deze handleiding hebben we geprobeerd om u vertrouwd te maken met het concept van geautomatiseerde Database testen. Wij hebben duidelijk de nadruk gelegd op de technische implicaties en behoeften van het testen van databanken.
omdat onze hele serie gericht was op Selenium, kan de lezer misleid worden en de indruk wekken dat deze tutorial zou leren om Database testen uit te voeren met Selenium, maar zoals ik al een paar keer eerder zei, alles wat buiten de periferie van UI testen ligt, kan niet worden behandeld door Selenium. Daarom introduceren we Java Database Connectivity (JDBC) API om Database testen uit te voeren door het inbedden van de code in de Selenium WebDriver scripts.
JDBC maakt het mogelijk voor de java-klasse om verbinding te maken met de Database, gegevens uit de database op te halen of in feite een van de CRUD-bewerkingen uit te voeren, de resulterende gegevens te manipuleren en de verbinding te sluiten.
aldus vormt de tutorial de basisvoorbeeldimplementatie van het bovengenoemde proces.
volgende Tutorial # 29: We gaan verder met geavanceerde Selenium onderwerpen. In de volgende tutorial, zullen we betrekking hebben op de selenium GRID-die wordt gebruikt wanneer u multi-browser testen uit te voeren en je hebt een groot aantal testcases.
Laatst Bijgewerkt: 29 November 2021