Selen Database Testing (Ved Hjelp Av WebDriver OG JDBC API)
i vår siste Selen opplæringen, lærte vi å feilsøke noen tilbakevendende problemer i selen skript. Vi diskuterte noen forhåndskonsepter der vi skulle håndtere mus og tastaturhendelser, få tilgang til flere lenker ved å implementere lister.
Fortsett med våre avanserte emner I Selenium training series, vi vil introdusere deg med begrepet Databasetesting ved Hjelp Av Selenium WebDriver.
vi vil diskutere de grunnleggende prosessene som databasetilkobling, utføring av spørringer, henting av data og frakobling av databaseforekomster etc. Vi vil også diskutere ulike praktiske implikasjoner der vi trenger Databasetesting med automatiseringstesting for å teste de komplette ende-til-ende-scenariene.
Før du går videre med de tekniske implikasjonene forbundet Med Automatisert Databasetesting. La oss diskutere noen scenarier der vi krever å utføre Databasetesting sammen med Automatiseringstesting. Men før det vil jeg gjerne bekrefte at Databasetesting er en veldig merkelig type testing, Mens Selenium 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 vår applikasjon i forbindelse med Databasen for å sikre at endringene reflekteres i begge ender og dermed identifiserer feil tidlig.
Absolutt alle webapplikasjoner trenger en backend for å lagre Dataene. Databaser som MySQL, Oracle og SQL Server er rimelig populære i disse dager.
nå beveger vi oss tilbake til det opprinnelige emnet, la oss diskutere noen scenarier for å eksemplifisere etterspørselen Etter Databasetesting sammen med Automatiseringstesting.
Vurder følgende scenarier
#1) til tider må vi sørge for at dataene som er angitt fra BRUKERGRENSESNITTET, gjenspeiles konsekvent i databasen. Dermed henter vi informasjonen fra Databasen og verifiserer den hentede informasjonen mot informasjonen som leveres fra BRUKERGRENSESNITTET. For eksempel registreringsskjemaer, brukerdata, brukerprofiler, oppdateringer og sletting av brukerdata. Dermed kan testscenariet for å automatisere være «for å verifisere at brukerens informasjon er lagret i databasen så snart brukeren registrerer seg i søknaden».
#2) Et annet tilfelle av å utføre databasetesting med Selenium WebDriver kan oppstå når brukeren blir bedt om å laste testdataene eller forventede data fra Databasen. I et slikt tilfelle vil brukeren gjøre forbindelsen 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 brukstilfelle er å utføre assosiativ Databasetesting. Anta at vi utforte en operasjon pa programmets BRUKERGRENSESNITT, og vi vil teste refleksjonen i Databasen. Det kan være tilfelle at de berørte dataene ligger i ulike tabeller i databasen på grunn av foreningen. Derfor er det alltid tilrådelig å teste datarefleksjon på alle de berørte områdene.
Selen, som sagt, simulerer brukerinteraksjonene med applikasjonen under test. Det kan simulere tastatur hendelser, mus handlinger etc. Men hvis brukeren ønsker å automatisere noe utenfor nærheten av nettleser-webapplikasjonsinteraksjoner, kan selen ikke være til stor hjelp. Dermed krever vi andre verktøy eller evner til å utføre end –to-end testing.
i alle de ovennevnte scenariene kan Vi derfor kreve Å utføre Databasetesting sammen med UI-Automatisering. Vi kan sjekke forretningslogikk ved å manipulere dataene og verifisere refleksjonen. Vi kan også sjekke de tekniske aspektene Ved Selve Databasen som myk sletting, feltvalidering etc.
La oss nå gå videre med den faktiske implementeringen. Før vi utvikler Selenium 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.
Opprettelse av testdata I Databasen
hvis du ikke har lastet ned databasen ennå, last den ned ved hjelp av linken. Brukeren forventes å følge noen grunnleggende trinn for å laste ned og installere databasen.
=>> Les denne veiledningen for å laste ned Og installere MySQL Database.
når databasen er installert, kan brukeren starte MySQL Kommandolinjeprompt som vil se ut som følgende skjermbilde. Programmet kan be brukeren om å skrive inn passordet. Standard passord er «root».
Merk: Brukeren kan også finne GUI baserte klienter over internett for å få kontakt med databasen. For å nevne noen, kan brukeren laste ned og installere Spørringen Leseren eller Arbeidsbenk.
Opprettelse av Ny Database
det neste trinnet er å opprette testdatabasen med noen få tabeller og poster lagret i disse tabellene for å opprette forbindelse med databasen og utføre spørringer.
Trinn 1) Skriv «vis databaser» for å se alle allerede tilgjengelige databaser
vis databaser;
Trinn 2) Skriv » opprett databasebruker;» for å opprette en database som heter «bruker».
opprett databasebruker;
Vær oppmerksom på at databasenavnet som brukeren er opprettet og kan ses 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 tabeller;
Legg merke Til At Tomt sett vises i resultatet av spørringen » vis tabeller;», da det ikke var noen tabeller tilgjengelig i brukerdatabasen.
La oss na et par tabeller og legge til poster i dem.
Trinn 4) Skriv inn følgende kommando for å lage et bord med 4 felt/kolonner(userId, brukernavn, userAge, userAddress).
opprett tabell userinfo
(
userId int,
brukernavn varchar (255),
useraddress varchar,
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, brukernavn, userAge, userAddress).
sett inn i userinfo (userID, userName, userAge, userAddress) verdier (‘1’, ‘shruti’, ’25’, ‘Noida’);
skriv inn følgende kommando:
velg * fra userinfo;
På Samme måte kan du legge til flere data i tabellen og kan opprette andre tabeller også.
Nå, at vi har opprettet vår database. Vi kan gå videre og forstå gjennomføringen av automatiserte spørringer for å hente postene fra databasen.
Som vi også iterert tidligere, Er Selenium WebDriver et verktøy for UI-Automatisering. Selenium WebDriver alene er dermed ikke kvalifisert til å utføre databasetesting, men dette kan gjøres ved Hjelp Av Java Database Connectivity API (JDBC). API lar brukeren koble til og samhandle med datakilden og hente dataene ved hjelp av automatiserte spørringer. For å kunne utnytte JDBC API, er Det nødvendig Å Ha Java Virtual Machine (JVM) kjører på systemet.
Jdbc Arbeidsflyt
vi vil holde vårt fokus på linje med følgende prosesser:
- Opprette en forbindelse med databasen
- Utføre spørringer og oppdatere setninger for å trekke ut / hente data (CRUD Operasjoner)
- Bruke og manipulere data hentet fra Databasen i form av resultatsettet. (Resultatsett er en samling av data organisert i rader og kolonner)
- Koble fra databasetilkoblingen.
som sagt tidligere, for å kunne teste databasen automatisk fra Våre Selenium WebDriver testskript, ville vi koble Til Databasen via JDBC-tilkobling i våre testskript. Post til tilkoblingen, kan vi utløse så Mange CRUD (Opprette, Lese, Oppdatere Og Slette) operasjoner På Databasen.
i denne opplæringen vil vi diskutere «Les drift og dens varianter» og om deres implementering I Selenium WebDriver script. Men før det, la oss sjekke testscenariet manuelt ved hjelp av «MySQL command line».
Scenario:
1) Åpne Databaseserveren og koble til» bruker » – databasen.
2) Liste ned alle postene fra» userinfo » tabellen.
Syntaks: velg * fra userinfo;
3) Lukk Databasetilkoblingen.
Legg Merke til at lesespørringen vil liste ned alle brukerdataene som finnes i userinfo-tabellen. Tabellen består av følgende kolonner.
- userId
- brukernavn
- userAge
- userAddress
resultatet viser også at det bare finnes et enkelt datasett i tabellen.
la Oss nå utføre det samme scenariet ved Hjelp Av Java-Klassen.
for å få Tilgang Til Databasen, er brukeren belånt til å velge blant de ulike koblingsalternativene som er tilgjengelige for å koble Til Databasen. De fleste databasekontaktene distribueres fritt som» jar » – filer. Siden Vi bruker MySQL som datakilde, er vi derfor pålagt å 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 byggebane og legge til » mysql-connector-java-3.1.13-bin.jar » fil som et eksternt bibliotek.
Trinn 2: Opprett en java-klasse kalt «DatabaseTesingDemo».
Trinn 3: Kopier og lim inn koden nedenfor i klassen 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("\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(); } }}
utgangen av koden ovenfor er:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Les Setningsvarianter
hvor klausul med enkelt betingelse
String query = » velg * fra userinfo hvor userId='» + 1 + «‘»;
Resultat res = stmt.executeQuery(spørring);
Utdata:
1 shruti 25 Noida
hvor klausul med flere betingelser
String Address =»Mumbai»;
String query = «velg * fra userinfo hvor userId='» + 2 + «‘ og userAddress='»+Address+»‘»;
Resultatset res = stmt.executeQuery (spørring);
Utdata:
2 shrivastava 55 Mumbai
Vis bruker-id
Streng spørring = «velg bruker-id fra brukerinfo»;
ResultSet res = stmt.executeQuery (spørring);
Utdata:
1
2
Vis userId med where clause
String Address =»Noida»;
String query = «velg userId, brukernavn fra userinfo hvor userAddress= ‘» + Address+»‘»;
Resultatset res = stmt.executeQuery (query);
Output:
2
shrivastava
dermed, på samme måte brukeren kan utføre ulike spørringer på databasen.
Med dette, La oss kaste litt lys på resultat tilgjengelighetsmetoder også.
Resultat Tilgjengelighetsmetoder:
Metodenavn | Beskrivelse |
---|---|
String getString () | Metoden brukes til å hente strengtypedataene fra resultatsettet |
int getInt () | Metoden brukes til å hente heltall type data fra resultatsettet |
boolsk getboolsk () | Metoden brukes til å hente den boolske verdien fra resultatsettet |
float getFloat () | Metoden brukes til å hente flytype data fra resultatsettet |
lang getLong () | Metoden brukes til å hente lang type data fra resultatsettet |
short getShort () | Metoden brukes til å hente korttypedataene fra resultatsettet |
dobbel getDouble () | Metoden brukes til å hente dobbel type data fra resultatsettet |
Dato getDate () | Metoden brukes til å hente Datotype-objektet fra resultatsettet |
Resultat Navigasjonsmetoder:
Metodenavn | Beskrivelse |
---|---|
boolsk next () | Metoden brukes til å flytte til neste post i resultatsettet |
boolsk forrige () | Metoden brukes til å flytte til forrige post i resultatsettet |
boolsk første() | Metoden brukes til å flytte til den første posten i resultatsettet |
boolsk siste () | Metoden brukes til å flytte til den siste posten i resultatsettet |
boolsk absolutt(int radnummer) |
Metoden brukes til å flytte til den bestemte posten i resultatsettet |
Konklusjon
gjennom denne opplæringen, vi prøvde å gjøre deg kjent med begrepet Automatisert Database Testing. Vi la tydelig vekt på de tekniske implikasjonene og behovene Til Databasetesting.
da hele serien var fokusert På Selen, kan leseren bli villedet og kan skape et inntrykk av at denne opplæringen ville lære Å utføre Databasetesting ved Hjelp Av Selen, men som jeg nevnte flere ganger tidligere, kan alt som ligger utenfor periferien AV UI-testing, ikke håndteres Av Selen. Derfor introduserer Vi Java Database Connectivity (JDBC) API for å utføre Database Testing ved å bygge inn koden i Selen WebDriver skript.
JDBC gjør det mulig for java klasse for å koble Til Databasen, hente data fra databasen eller for saken faktisk utføre NOEN AV CRUD operasjoner, manipulere de resulterende data og lukke forbindelsen.
opplæringen utgjør således den grunnleggende utvalgsimplementeringen av ovennevnte prosess.
Neste Tutorial # 29: Vi vil gå videre med avanserte Selen emner. I neste veiledning vil vi dekke Selenettet – som brukes når du må utføre multi-browser testing og du har et stort antall testtilfeller.
Sist Oppdatert: 29. November 2021