selenium database testing using webdriver
In onze laatste Selenium-tutorial hebben we geleerd hoe los enkele terugkerende problemen in seleniumscripts op We hebben enkele geavanceerde concepten besproken waarbij we te maken zouden hebben met muis- en toetsenbordgebeurtenissen, waarbij we toegang hadden tot meerdere links door lijsten te implementeren.
Vooruit gaan met onze geavanceerde onderwerpen in de Selenium-trainingsreeks , laten we u kennismaken met het concept van Database testen met Selenium WebDriver.
We zouden de basisprocessen bespreken, zoals databaseverbinding, queries uitvoeren, gegevens ophalen en database-instances loskoppelen, enz. We bespreken ook verschillende praktische implicaties waar we databasetests met automatiseringstests nodig hebben om de complete end-to-end scenario's.
pl / sql interviewvragen en antwoorden
Voordat u verder gaat met de technische implicaties van geautomatiseerde databasetests. Laten we een paar scenario's bespreken waarin we databasetests moeten uitvoeren samen met de automatiseringstests. Maar daarvoor zou ik hier willen bevestigen dat databasetesten een heel eigenaardig type testen is, terwijl Selenium WebDriver een hulpmiddel is dat wordt gebruikt om gebruikersinteracties met de gebruikersinterface van de applicatie te simuleren en te automatiseren.
Dus technisch gezien voeren we niet precies databasetests uit, maar testen we onze applicatie in combinatie met Database om ervoor te zorgen dat de veranderingen aan beide uiteinden worden weerspiegeld, waardoor defecten vroegtijdig worden geïdentificeerd.
Absoluut alle webapplicaties hebben een backend nodig om de gegevens op te slaan. Databases zoals MySQL, Oracle en SQL Server zijn tegenwoordig redelijk populair.
Laten we nu teruggaan naar het oorspronkelijke onderwerp en enkele scenario's bespreken om de vraag naar databasetests en automatiseringstests te illustreren.
Wat je leert:
- Beschouw de volgende scenario's
- Aanmaken van testgegevens in de database
- Creëren van een nieuwe database
- Gevolgtrekking
- Aanbevolen literatuur
Beschouw 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 op uit de database en verifiëren we de opgehaalde informatie met de informatie die uit de gebruikersinterface wordt geleverd. Bijvoorbeeld registratieformulieren, gebruikersgegevens, gebruikersprofielen, updates en verwijderingen van gebruikersgegevens. Het te automatiseren testscenario kan dus zijn 'Om te verifiëren dat de informatie van de gebruiker succesvol is opgeslagen in de database zodra de gebruiker zich registreert in de applicatie'.
#twee) Een ander use-case van het uitvoeren van databasetests met Selenium WebDriver kan zich voordoen wanneer de gebruiker wordt gevraagd de testgegevens of verwachte gegevens uit de database te laden. In een dergelijk geval zou de gebruiker dus de verbinding maken met de database met behulp van een API van een derde partij, zoekopdrachten uitvoeren om gegevens uit de gegevensset op te halen en vervolgens de gegevens die uit de database zijn opgehaald, bevestigen met de feitelijke gegevens die zijn ingevuld in de gebruikersinterface van de toepassing. .
# 3) Een andere use case is het uitvoeren van associatieve databasetests. Stel dat we een bewerking hebben uitgevoerd in de gebruikersinterface van de applicatie en dat we de reflectie in de database willen testen. Het kan zijn dat de getroffen gegevens vanwege de koppeling in verschillende tabellen van de database staan. Daarom is het altijd raadzaam om datareflectie te testen op alle getroffen gebieden.
Selenium simuleert, zoals ik al zei, de gebruikersinteracties met de te testen applicatie. Het kan toetsenbordgebeurtenissen, muisacties enz. Simuleren. Maar als de gebruiker iets wil automatiseren buiten de browser-webapplicatie-interacties, dan kan selenium niet veel helpen. Daarom hebben we andere tools of mogelijkheden nodig om end-to-end testen uit te voeren.
In alle bovenstaande scenario's is het dus mogelijk dat we databasetests moeten uitvoeren samen met UI-automatisering. We kunnen de bedrijfslogica 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 zacht verwijderen, veldvalidatie enz.
Laten we nu verder gaan met de daadwerkelijke implementatie. Voordat we Selenium WebDriver-scripts ontwikkelen om gegevens uit de gegevensbron te extraheren, moeten we testgegevens in de database maken. Voor deze tutorial zouden we MySQL als database gebruiken.
Aanmaken van testgegevens in de database
Als u de database nog niet heeft gedownload, download deze dan met de koppeling Van de gebruiker wordt verwacht dat hij enkele basisstappen volgt om de database te downloaden en te installeren.
= >> Lees deze tutorial naar download en installeer MySQL Database
Nadat de database met succes is geïnstalleerd, kan de gebruiker de MySQL-opdrachtregelprompt starten, die eruitziet als de volgende schermafbeelding. De toepassing kan de gebruiker vragen om het wachtwoord in te voeren. Het standaardwachtwoord is 'root'.
Notitie : De gebruiker kan ook op 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 Work Bench downloaden en installeren.
Creëren van een nieuwe database
De volgende stap is het maken van de testdatabase met een paar tabellen en records die in die tabellen zijn opgeslagen om verbinding te maken met de database en queries uit te voeren.
Stap 1) Typ 'show databases' om alle reeds beschikbare databases te zien
toon databases;
Stap 2) Typ 'create database user;' om een database met de naam 'gebruiker' te maken.
databasegebruiker maken;
Houd er rekening mee dat de databasenaam zoals de gebruiker wordt gemaakt, wordt weergegeven in de lijst met databases.
Stap 3) Typ 'gebruik gebruiker;' om de zojuist gemaakte database te selecteren. Typ ook 'toon tabellen;' om alle tabellen te bekijken die beschikbaar zijn in de gebruikersdatabase.
gebruik gebruiker;
toon tafels;
Houd er rekening mee dat Lege set wordt weergegeven in het resultaat van de 'showtabellen'; vraag omdat er geen tabellen beschikbaar waren in de gebruikersdatabase.
Laten we nu een paar tabellen volgen en er records aan toevoegen.
Stap 4) Typ de volgende opdracht om een tabel met 4 velden / kolommen te maken (userId, userName, userAge, userAddress).
tabel userinfo maken
userId int,
gebruikersnaam varchar (255),
userAge int,
gebruikersadres varchar (255)
De volgende stap is het toevoegen van een aantal gegevensrecords in de “userinfo” -tabel.
Stap 5) Typ de volgende opdracht om gegevens in de tabel in te voegen, een tabel voor alle vier velden 4 velden / kolommen (userId, userName, userAge, userAddress).
invoegen in userinfo (userID, userName, userAge, userAddress) waarden (‘1’, ‘shruti’, ’25’, ‘Noida’);
Typ de volgende opdracht om de toegevoegde gegevens te bekijken:
selecteer * uit gebruikersinfo;
Op dezelfde manier kunt u meer gegevens aan uw tabel toevoegen en ook andere tabellen maken.
Nu we onze database hebben gemaakt. We kunnen verder gaan en de implementatie van geautomatiseerde zoekopdrachten om de records uit de database op te halen.
Zoals we ook eerder hebben herhaald, is Selenium WebDriver een tool voor UI-automatisering. Selenium WebDriver alleen komt dus niet in aanmerking om databasetests uit te voeren, 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 zoekopdrachten. Om de JDBC API te kunnen exploiteren, moet Java Virtual Machine (JVM) op het systeem draaien.
beste youtube video-downloader voor pc
JDBC-werkstroom
We houden onze focus afgestemd op de volgende processen:
- Verbinding maken met de database
- Query's uitvoeren en instructies bijwerken om gegevens op te halen / op te halen (CRUD-bewerkingen)
- Gebruik en manipulatie van de gegevens die uit de database zijn geëxtraheerd in de vorm van de resultaatset. (Resultaatset is een verzameling gegevens georganiseerd in de rijen en kolommen)
- De databaseverbinding 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, we kunnen zoveel CRUD-bewerkingen (maken, lezen, bijwerken en verwijderen) in de database activeren.
In deze tutorial bespreken we 'Leesbewerking en zijn varianten' en over hun implementatie in het Selenium WebDriver-script. Maar laten we eerst het testscenario handmatig controleren met behulp van de 'MySQL-opdrachtregel'.
Scenario:
1) Open de databaseserver en maak verbinding met de gebruikersdatabase.
twee) Maak een lijst van alle records uit de tabel 'gebruikersinfo'.
Syntaxis: selecteer * uit gebruikersinfo;
3) Sluit de databaseverbinding.
Merk op dat de leesquery alle gebruikersgegevens in de userinfo-tabel laat zien. De tabel is opgebouwd uit de volgende kolommen.
- gebruikersnaam
- gebruikersnaam
- userAge
- userAddress
Het resultaat laat ook zien dat er maar één dataset in de tabel aanwezig is.
Laten we nu hetzelfde scenario uitvoeren met de Java Class.
Om toegang te krijgen tot de database, wordt de gebruiker gebruikt om te kiezen uit de diverse beschikbare connectoropties om verbinding te maken met de database. De meeste databaseconnectoren worden gratis verspreid als 'jar' -bestanden. Omdat we MySQL als gegevensbron gebruiken, moeten we het jar-bestand specifiek voor MySQL downloaden.
hoe je instagram-berichten gratis kunt plannen
Het jar-bestand kan worden gedownload van: hier of hier.
Stap 1 : De eerste en belangrijkste stap is om het buildpad van het project te configureren en het bestand 'mysql-connector-java-3.1.13-bin.jar' toe te voegen als een externe bibliotheek.
Stap 2 : Maak een Java-klasse met de naam 'DatabaseTesingDemo'.
Stap 3 : Kopieer en plak de onderstaande code in de klasse die in de bovenstaande stap is gemaakt.
Code Voorbeeld
De output van de bovenstaande code is:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Lees Statement Variants
Where-clausule met enkele voorwaarde
String query = “select * from userinfo where userId = '” + 1 + “‘ ”;
ResultSet res = stmt.executeQuery (query);
Uitgang:
1 shruti 25 Noida
Where-clausule met meerdere voorwaarden
String Address = ”Mumbai”;
String query = 'select * from userinfo where userId = '' + 2 + '‘ and userAddress =' '+ Address +' ‘';
ResultSet res = stmt.executeQuery (query);
Uitgang:
2 shrivastava 55 Mumbai
Geef gebruikers-ID weer
String query = 'selecteer userId from userinfo';
ResultSet res = stmt.executeQuery (query);
Uitgang:
1
twee
Geef userId weer met where-clausule
String Address = ”Noida”;
String query = 'selecteer userId, userName from userinfo where userAddress = '' + Address + '‘ ”;
ResultSet res = stmt.executeQuery (query);
Uitgang:
twee
Shrivastava
Zo kan de gebruiker op dezelfde manier verschillende zoekopdrachten in de database uitvoeren.
Laten we hiermee ook wat licht werpen op methoden voor resultaattoegankelijkheid.
Resultaat Toegankelijkheidsmethoden:
Methode naam | Omschrijving |
---|---|
dubbele getDouble () | De methode wordt gebruikt om de gegevens van het dubbele type uit de resultaatset op te halen |
Tekenreeks getString () | De methode wordt gebruikt om de gegevens van het stringtype uit de resultatenset op te halen |
int getInt() | De methode wordt gebruikt om de gegevens van het type integer uit de resultaatset op te halen |
boolean getBoolean () | De methode wordt gebruikt om de booleaanse waarde op te halen uit de resultaatset |
zweven getFloat () | De methode wordt gebruikt om de gegevens van het type float uit de resultatenset op te halen |
lang getLong () | De methode wordt gebruikt om de gegevens van het lange type uit de resultaatset op te halen |
korte getShort () | De methode wordt gebruikt om de korte-typegegevens uit de resultaatset op te halen |
Datum getDate () | De methode wordt gebruikt om het object Date type op te halen uit de resultatenset |
Resultaten navigatie methoden:
Methode naam | Omschrijving |
---|---|
boolean volgende () | De methode wordt gebruikt om naar het volgende record in de resultatenset te gaan |
boolean vorige () | De methode wordt gebruikt om naar het vorige record in de resultatenset te gaan |
booleaanse eerste () | De methode wordt gebruikt om naar het eerste record in de resultatenset te gaan |
booleaanse laatste () | De methode wordt gebruikt om naar het laatste record in de resultatenset te gaan |
boolean absoluut (int rowNumber) | De methode wordt gebruikt om naar het specifieke record in de resultatenset te gaan |
Gevolgtrekking
Via deze tutorial hebben we geprobeerd je kennis te laten maken met het concept van Geautomatiseerde databasetests We hebben duidelijk de nadruk gelegd op de technische implicaties en behoeften van databasetests.
Omdat onze hele serie op Selenium was gericht, kan de lezer worden misleid en de indruk wekken dat deze tutorial zou leren om databasetests uit te voeren met Selenium, maar zoals ik al een aantal keer eerder heb gezegd, alles dat buiten de periferie van UI-testen ligt , kan niet worden gehanteerd door Selenium. Daarom introduceren we Java Database Connectivity (JDBC) API om databasetests uit te voeren door de code in de Selenium WebDriver-scripts in te bedden.
JDBC maakt het voor de java-klasse mogelijk om verbinding te maken met de database, gegevens uit de database op te halen of feitelijk een van de CRUD-bewerkingen uit te voeren, de resulterende gegevens te manipuleren en de verbinding te verbreken.
De tutorial vormt dus de basisvoorbeeldimplementatie van het bovengenoemde proces.
Volgende les # 29 : We gaan verder met geavanceerde Selenium-onderwerpen. In de volgende tutorial behandelen we de Selenium GRID - die wordt gebruikt wanneer u multi-browser testen moet uitvoeren en u een groot aantal testcases heeft.
Aanbevolen literatuur
- Database testen met JMeter
- Integratie van selenium met JMeter
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- Beste softwaretesttools 2021 (QA Test Automation Tools)
- Implementatie van ons eerste WebDriver-script - Selenium WebDriver-zelfstudie # 10
- De beste online Selenium WebDriver + JAVA-training
- Spock voor integratie en functioneel testen met selenium