selenium database testing using webdriver
I vår siste Selen-opplæring lærte vi hvordan feilsøke noen tilbakevendende problemer i selen-skript . Vi diskuterte noen forhåndskonsepter der vi ville håndtere mus- og tastaturhendelser, få tilgang til flere lenker ved å implementere lister.
Gå videre med vår avanserte temaer i Selenium-treningsserien , vil vi introdusere deg for begrepet Databasetesting ved bruk av Selenium WebDriver.
Vi vil diskutere de grunnleggende prosessene som databasetilkobling, utføring av spørringer, henting av data og frakobling av databaseinstanser osv. Vi vil også diskutere ulike praktiske implikasjoner der vi trenger databasetesting med automatiseringstesting for å teste fullfør end-to-end-scenarier.
angularjs intervju spørsmål og svar for erfarne i .net
Før du går videre med de tekniske implikasjonene knyttet til automatisert databasetesting. La oss diskutere noen få scenarier der vi trenger å utføre databasetesting sammen med automatiseringstesting. Men før det vil jeg her bekrefte at databasetesting er en veldig spesiell type testing, mens Selen WebDriver er et verktøy som brukes til å simulere og automatisere brukerinteraksjoner med applikasjonsgrensesnittet.
Så teknisk sett utfører vi ikke nøyaktig databasetesting, men vi tester søknaden vår i forbindelse med databasen for å sikre at endringene gjenspeiles i begge ender og dermed identifisere feil tidlig.
Absolutt alle webapplikasjoner trenger en backend for å lagre Data. Databaser som MySQL, Oracle og SQL Server er rimelig populære i disse dager.
Nå som vi trekker tilbake til det opprinnelige emnet, la oss diskutere noen få scenarier for å eksemplifisere behovet for databasetesting sammen med automatiseringstesting.
Hva du vil lære:
- Tenk på følgende scenarier
- Oppretting av testdata i databasen
- Opprettelse av ny database
- Konklusjon
- Anbefalt lesing
Tenk på følgende scenarier
#1) Noen ganger er vi pålagt å sørge for at dataene som legges inn fra brukergrensesnittet, gjenspeiles i databasen. Dermed henter vi informasjonen fra databasen og verifiserer den hentede informasjonen mot informasjonen som er levert fra brukergrensesnittet. For eksempel registreringsskjemaer, brukerdata, brukerprofiler, oppdateringer og sletting av brukerdata. Dermed kan testscenariet for å automatisere være 'For å bekrefte at brukerens informasjon er lagret i databasen så snart brukeren registrerer seg i applikasjonen'.
#to) Et annet brukstilfelle for å utføre databasetesting med Selenium WebDriver kan oppstå når brukeren blir bedt om å laste testdataene eller forventede data fra databasen. Dermed, i et slikt tilfelle, vil brukeren opprette forbindelse med databasen ved hjelp av en tredjeparts API, utføre spørringer for å hente data fra datasettet og deretter hevde dataene hentet fra databasen med de faktiske dataene som er fylt ut på applikasjonsgrensesnittet .
# 3) En annen brukssak er å utføre assosiativ databasetesting. Anta at vi utførte en operasjon på applikasjonens brukergrensesnitt, og vi vil teste refleksjonen i databasen. Det kan være et tilfelle at de berørte dataene ligger i forskjellige tabeller i databasen på grunn av tilknytningen. Derfor anbefales det alltid å teste datarefleksjon på alle de berørte områdene.
Selen, som jeg sa, simulerer brukerinteraksjoner med applikasjonen som testes. Det kan simulere tastaturhendelser, mushandlinger osv. Men hvis brukeren ønsker å automatisere noe utenfor nærheten av nettleseren - interaksjoner med webapplikasjoner, kan ikke selen være til stor hjelp. Dermed krever vi andre verktøy eller muligheter for å utføre testing til slutt.
I alle de ovennevnte scenariene kan det hende vi trenger å utføre databasetesting sammen med UI Automation. Vi kan sjekke forretningslogikk ved å manipulere dataene og verifisere refleksjonen av dem. Vi kan også sjekke de tekniske aspektene av selve databasen som soft delete, feltvalidering etc.
La oss nå gå videre med den faktiske implementeringen. Før vi utvikler Selen WebDriver-skript for å trekke ut data fra datakilden, la oss lage testdata i databasen. For denne opplæringen vil vi bruke MySQL som en database.
Oppretting av testdata i databasen
Hvis du ikke har lastet ned databasen ennå, kan du laste den ned med lenke . Det forventes at brukeren følger noen grunnleggende trinn for å laste ned og installere databasen.
= >> Les denne veiledningen til last ned og installer MySQL Database .
Når databasen er installert, kan brukeren starte MySQL Command Line Prompt som vil se ut som følgende skjermbilde. Applikasjonen kan be brukeren om å oppgi passordet. Standardpassordet er 'root'.
Merk : Brukeren kan også finne GUI-baserte klienter over internett for å koble til databasen. For å nevne noen, kan brukeren laste ned og installere Query Browser eller Work Bench.
Opprettelse av ny database
Det neste trinnet er å opprette testdatabasen med noen få tabeller og poster som er lagret i disse tabellene for å få forbindelse med databasen og utføre spørringer.
Trinn 1) Skriv 'vis databaser' for å se alle allerede tilgjengelige databaser
vise databaser;
Steg 2) Skriv inn 'opprett databasebruker;' for å opprette en database med navnet “bruker”.
lage databasebruker;
Vær oppmerksom på at databasenavnet når brukeren blir opprettet og kan sees i listen over databaser.
Trinn 3) Skriv 'bruk bruker;' for å velge den nyopprettede databasen. Skriv også 'vis tabeller;' for å vise alle tabellene som er tilgjengelige i brukerdatabasen.
bruk bruker;
vis bord;
Legg merke til at Tomt sett vises i resultatet av 'visningstabellene;' spørsmålet ettersom det ikke var noen tilgjengelige tabeller i brukerdatabasen.
La oss nå få tabeller og legge til poster i dem.
Trinn 4) Skriv inn følgende kommando for å lage en tabell med fire felt / kolonner (userId, userName, userAge, userAddress).
Opprett tabellbrukerinfo
(
userId int,
brukernavn varchar (255),
userAge int,
userAddress varchar (255)
);
Det neste trinnet er å legge til noen dataposter i 'userinfo' -tabellen.
Trinn 5) Skriv inn følgende kommando for å sette inn data i tabellen, en tabell for alle de fire feltene 4 felt / kolonner (userId, userName, userAge, userAddress).
sett inn i userinfo (userID, userName, userAge, userAddress) verdier (‘1’, ‘shruti’, ‘25’, ‘Noida’);
For å se de tilførte dataene, skriv inn følgende kommando:
velg * fra brukerinfo;
På samme måte kan du legge til mer data i tabellen din og også lage andre tabeller.
Nå som vi har opprettet databasen vår. Vi kan gå videre og forstå implementering av automatiserte spørsmål for å hente postene fra databasen.
Som vi også gjentok tidligere, er Selenium WebDriver et verktøy for UI Automation. Selenium WebDriver er altså ikke kvalifisert for å utføre databasetesting, men dette kan gjøres ved hjelp av Java Database Connectivity API (JDBC). API-en lar brukeren koble til og samhandle med datakilden og hente dataene ved hjelp av automatiserte spørsmål. For å kunne utnytte JDBC API, er det nødvendig å ha Java Virtual Machine (JVM) på systemet.
JDBC arbeidsflyt
Vi vil holde fokus tilpasset følgende prosesser:
- Opprette en forbindelse med databasen
- Utføre spørsmål og oppdatere uttalelser for å hente ut / hente data (CRUD-operasjoner)
- Bruk og manipulering av data hentet fra databasen i form av resultatsettet. (Resultatsettet er en samling av data organisert i radene og kolonnene)
- Koble fra databasetilkoblingen.
Som sagt tidligere, for å kunne teste databasen automatisk fra Selenium WebDriver-testskriptene, vil vi koble oss til databasen via JDBC-tilkobling i testskriptene våre. Innlegg til tilkoblingen, vi kan utløse så mange CRUD (Opprett, Les, Oppdater og Slett) operasjoner på databasen.
I denne veiledningen vil vi diskutere 'Les operasjonen og dens varianter' og om implementeringen av dem i Selenium WebDriver-skript. Men før det, la oss sjekke testscenariet manuelt ved å bruke 'MySQL-kommandolinjen'.
Scenario:
1) Åpne databaseserveren og koble til 'bruker' -databasen.
to) Liste opp alle postene fra “userinfo” -tabellen.
Syntaks: velg * fra brukerinfo;
3) Lukk databasetilkoblingen.
Legg merke til at lesespørringen vil liste opp alle brukerdataene som er tilstede i brukerinfo-tabellen. Tabellen består av følgende kolonner.
- bruker-ID
- brukernavn
- brukeralder
- userAddress
Resultatet viser også at det bare er et enkelt datasett tilstede i tabellen.
La oss nå utføre det samme scenariet ved hjelp av Java-klassen.
For å få tilgang til databasen, er brukeren utnyttet til å velge blant de forskjellige tilkoblingsalternativene som er tilgjengelige for å koble til databasen. De fleste databasekontaktene distribueres fritt som 'jar' -filer. Ettersom vi bruker MySQL som datakilde, må vi derfor laste ned jar-filen som er spesifikk for MySQL.
Jar-filen kan lastes ned fra: her eller her.
Trinn 1 : Det første og fremste trinnet er å konfigurere prosjektets byggesti og legge til 'mysql-connector-java-3.1.13-bin.jar' -filen som et eksternt bibliotek.
Steg 2 : Opprett en java-klasse kalt “DatabaseTesingDemo”.
Trinn 3 : Kopier og lim inn koden nedenfor i klassen som ble opprettet i trinnet ovenfor.
Kodeeksempel
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(); } } }
Resultatet av koden ovenfor er:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Les uttalelsesvarianter
Hvor klausul med enkelt tilstand
Strengspørring = “velg * fra brukerinfo der userId = '” + 1 + “‘ ”;
ResultSet res = stmt.executeQuery (spørring);
Produksjon:
1 shruti 25 Noida
Hvor klausul med flere forhold
Strengadresse = ”Mumbai”;
Strengspørring = “velg * fra brukerinfo der userId = '” + 2 + “‘ og userAddress =' ”+ Adresse +” ‘”;
ResultSet res = stmt.executeQuery (spørring);
Produksjon:
2 shrivastava 55 Mumbai
Vis bruker-ID
String query = “select userId from userinfo”;
ResultSet res = stmt.executeQuery (spørring);
Produksjon:
1
to
Vis bruker-ID med hvor ledd
Strengadresse = ”Noida”;
Strengspørring = “velg userId, brukernavn fra brukerinfo der userAddress = '” + Adresse + ”‘ ”;
ResultSet res = stmt.executeQuery (spørring);
Produksjon:
to
shrivastava
Dermed kan brukeren på samme måte utføre forskjellige spørsmål i databasen.
Med dette, la oss også kaste lys over resultattilgjengelighetsmetoder.
Resultat tilgjengelighetsmetoder:
Metodenavn | Beskrivelse |
---|---|
dobbel getDouble () | Metoden brukes til å hente data av dobbelt type fra resultatsettet |
String getString () | Metoden brukes til å hente strengtypedataene fra resultatsettet |
int getInt () | Metoden brukes til å hente heltallsdataene fra resultatsettet |
boolsk getBoolean () | Metoden brukes til å hente den boolske verdien fra resultatsettet |
float getFloat () | Metoden brukes til å hente data fra flytypen fra resultatsettet |
lang getLong () | Metoden brukes til å hente data fra den lange typen fra resultatsettet |
kort getShort () | Metoden brukes til å hente data av kort type fra resultatsettet |
Dato getDate () | Metoden brukes til å hente datotype-objektet fra resultatsettet |
Resultatnavigasjonsmetoder:
Metodenavn | Beskrivelse |
---|---|
boolsk neste () | Metoden brukes til å gå til neste post i resultatsettet |
boolsk forrige () | Metoden brukes til å gå til forrige rekord i resultatsettet |
boolsk først () | Metoden brukes til å gå til den første posten i resultatsettet |
boolsk sist () | Metoden brukes til å gå til den siste posten i resultatsettet |
boolsk absolutt (int rowNumber) | Metoden brukes til å flytte til den spesifikke posten i resultatsettet |
Konklusjon
Gjennom denne opplæringen prøvde vi å gjøre deg kjent med begrepet Automatisert databasetesting . Vi la tydelig vekt på de tekniske implikasjonene og behovene til databasetesting.
Da hele serien vår var fokusert på selen, kan leseren bli villedet og kan skape et inntrykk av at denne opplæringen vil lære å utføre databasetesting ved bruk av selen, men som jeg nevnte en rekke ganger tidligere, alt som ligger utenfor periferien av UI-testing , kan ikke håndteres av Selen. Derfor introduserer vi Java Database Connectivity (JDBC) API for å utføre databasetesting ved å legge inn koden i Selenium WebDriver-skriptene.
JDBC gjør det mulig for java-klassen å koble seg til databasen, hente data fra databasen eller faktisk utføre noen av CRUD-operasjonene, manipulere de resulterende dataene og lukke forbindelsen.
Dermed utgjør opplæringen den grunnleggende prøveimplementeringen av ovennevnte prosess.
Neste opplæring # 29 : Vi vil gå videre med avanserte Selen-emner. I neste opplæring vil vi dekke Selenium GRID - som brukes når du må utføre testing av flere nettlesere og du har et stort antall testtilfeller.
Anbefalt lesing
- Databasetesting med JMeter
- Integrering av selen med JMeter
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Introduksjon til Selenium WebDriver - Selenium Tutorial # 8
- Beste verktøy for testing av programvare 2021 [QA Test Automation Tools]
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- Det beste online Selenium WebDriver + JAVA-opplæringskurset
- Spock for integrasjon og funksjonstesting med selen