selen Database test (ved hjælp af selen og JDBC API)
i vores sidste selen tutorial, lærte vi at fejlfinde nogle tilbagevendende problemer i selen scripts. Vi diskuterede nogle forskudskoncepter, hvor vi ville beskæftige os med mus-og tastaturbegivenheder, adgang til flere links ved at implementere lister.
når vi går videre med vores avancerede emner i selen-træningsserien, introducerer vi dig begrebet Databasetest ved hjælp af selen-chauffør.
vi ville diskutere de grundlæggende processer som databaseforbindelse, udførelse af forespørgsler, hentning af data og afbrydelse af databaseforekomster osv. Vi vil også diskutere forskellige praktiske implikationer, hvor vi har brug for Databasetest med automatiseringstest for at teste de komplette end-to-end-scenarier.
før du går videre med de tekniske implikationer forbundet med automatiseret Databasetest. Lad os diskutere et par scenarier, hvor vi har brug for at udføre Databasetest sammen med Automatiseringstesten. Men før det vil jeg gerne bekræfte her, at Databasetestning er en meget ejendommelig type test, mens selen driver er et værktøj, der bruges til at simulere og automatisere brugerinteraktioner med applikationsgrænsefladen.
så teknisk set udfører vi ikke nøjagtigt Databasetest, men vi tester vores applikation i forbindelse med databasen for at sikre, at ændringerne afspejles i begge ender og derved identificerer defekter tidligt.
absolut alle internetapplikationer har brug for en backend for at gemme dataene. Databaser som f.eks.
nu bevæger vi os tilbage til det oprindelige emne, lad os diskutere et par scenarier for at eksemplificere efterspørgslen efter Databasetest sammen med Automatiseringstest.
overvej følgende scenarier
#1) til tider er vi forpligtet til at sikre, at de indtastede data fra brugergrænsefladen konsekvent afspejles i databasen. Således henter vi oplysningerne fra databasen og verificerer de hentede oplysninger mod de oplysninger, der leveres fra brugergrænsefladen. For eksempel registreringsformularer, brugerdata, brugerprofiler, opdateringer og sletninger af brugerdata. Testscenariet, der skal automatiseres, kan således være “at kontrollere, at brugerens oplysninger gemmes med succes i databasen, så snart brugeren registrerer sig i applikationen”.
#2) En anden brugssag til udførelse af databasetest med selen-chauffør kan opstå, når brugeren bliver bedt om at indlæse testdataene eller forventede data fra databasen. I et sådant tilfælde vil brugeren således oprette forbindelse til databasen ved hjælp af en tredjeparts API, udføre forespørgsler for at hente data fra datasættet og derefter hævde de data, der er hentet fra databasen, med de faktiske data, der er befolket på applikationsgrænsefladen.
#3) En anden brugssag er at udføre associativ Databasetest. Antag, at vi udførte en operation på applikationens brugergrænseflade, og vi vil teste refleksionen i databasen. Det kan være tilfældet, at de påvirkede data findes i forskellige tabeller i databasen på grund af tilknytningen. Derfor er det altid tilrådeligt at teste data refleksion på alle de berørte områder.
selen, som jeg sagde, simulerer brugerinteraktionerne med den applikation, der testes. Det kan simulere tastatur begivenheder, mus handlinger osv. Men hvis brugeren ønsker at automatisere noget uden for nærheden af applikationsinteraktioner, kan selen ikke være til stor hjælp. Derfor kræver vi andre værktøjer eller evner til at udføre end –to –end test.
Således kan vi i alle ovenstående scenarier kræve at udføre Databasetestning sammen med UI-automatisering. Vi kan kontrollere forretningslogik ved at manipulere dataene og verificere dens refleksion. Vi kan også kontrollere de tekniske aspekter af selve databasen som blød sletning, feltvalidering osv.
lad os nu gå videre med den faktiske implementering. Før vi udvikler selen-Driverskripter til at udtrække data fra datakilden, lad os oprette testdata i databasen. Til denne tutorial vil vi bruge
oprettelse af testdata i databasen
hvis du ikke har hentet databasen endnu, skal du hente den ved hjælp af linket. Brugeren forventes at følge nogle grundlæggende trin for at hente og installere databasen.
=>> Læs denne vejledning for at hente og installere
når databasen er installeret, kan brugeren starte Kommandolinjeprompten, der ligner følgende skærmbillede. Programmet kan bede brugeren om at indtaste adgangskoden. Standardadgangskoden er”root”.
Bemærk: brugeren kan også finde GUI baserede klienter over internettet til at forbinde med databasen. For at nævne nogle få kan brugeren hente og installere Forespørgselssøgeren eller arbejdsbænken.
oprettelse af ny Database
det næste trin er at oprette testdatabasen med et par tabeller og poster gemt i disse tabeller for at oprette forbindelse til databasen og udføre forespørgsler.
Trin 1) Skriv “Vis databaser” for at se alle de allerede tilgængelige databaser
Vis databaser;
Trin 2) Skriv “Opret databasebruger;” for at oprette en database med navnet “bruger”.
Opret database bruger;
Vær opmærksom på, at databasenavnet som brugeren er oprettet og kan ses på listen over databaser.
Trin 3) Skriv “brug bruger;” for at vælge den nyoprettede database. Skriv også “Vis tabeller;” for at se alle de tilgængelige tabeller i brugerdatabasen.
brug bruger;
Vis tabeller;
Bemærk, at tomt sæt vises i resultatet af forespørgslen” Vis tabeller;”, da der ikke var nogen tabeller tilgængelige i brugerdatabasen.
lad os nu et par tabeller og tilføje poster i dem.
Trin 4) Skriv følgende kommando for at oprette en tabel med 4 felter/kolonner (userId, brugernavn, userAge, userAddress).
Opret tabel userinfo
(
userId int,
brugernavn varchar(255),
userAge int,
userAddress varchar(255)
);
det næste trin er at tilføje nogle dataposter i tabellen “userinfo”.
Trin 5) Skriv følgende kommando for at indsætte data i tabellen en tabel for alle de fire felter 4 felter/kolonner (userId, brugernavn, userAge, userAddress).
indsæt i userinfo (userID, userName, userage, userAddress) værdier (‘1’, ‘shruti’, ’25’, ‘Noida’);
for at se de tilføjede data skal du skrive følgende kommando:
vælg * fra userinfo;
på samme måde kan du tilføje flere data til din tabel og også oprette andre tabeller.
nu, at vi har oprettet vores database. Vi kan komme videre og forstå implementeringen af automatiserede forespørgsler for at hente posterne fra databasen.
som vi også gentog tidligere, er Selendriver et værktøj til UI-automatisering. Det er således ikke muligt at udføre databasetest, men dette kan gøres ved hjælp af Java Database Connectivity API (JDBC). API ‘ en lader brugeren forbinde og interagere med datakilden og hente dataene ved hjælp af automatiserede forespørgsler. For at kunne udnytte JDBC API, er det nødvendigt at have Java Virtual Machine (JVM) kører på systemet.
jdbc arbejdsgang
vi vil holde vores fokus på linje med følgende processer:
- oprettelse af en forbindelse med databasen
- udførelse af forespørgsler og opdateringsopgørelser for at udtrække/hente data (CRUD-operationer)
- brug og manipulation af de data, der er ekstraheret fra databasen i form af resultatsættet. (Resultatsæt er en samling af data organiseret i rækker og kolonner)
- afbrydelse af databaseforbindelsen.
som tidligere nævnt, for at kunne teste databasen automatisk fra vores selen-Testscripts, ville vi oprette forbindelse til databasen via JDBC-forbindelse inden for vores testscripts. Post til forbindelsen, kan vi udløse så mange CRUD (oprette, læse, opdatere og slette) operationer på databasen.
i denne tutorial vil vi diskutere “Læs operation og dens varianter” og om deres implementering i selen. Men før det, lad os kontrollere testscenariet manuelt ved hjælp af “kommandolinjen”.
scenarie:
1) Åbn databaseserveren og opret forbindelse til databasen “bruger”.
2) Liste ned alle poster fra tabellen “userinfo”.
syntaks: vælg * fra userinfo;
3) Luk Databaseforbindelsen.
Bemærk, at læseforespørgslen viser alle brugerdata, der findes i userinfo-tabellen. Tabellen består af følgende kolonner.
- userId
- brugernavn
- userAge
- userAddress
resultatet viser også, at der kun er et enkelt datasæt til stede i tabellen.
lad os nu udføre det samme scenario ved hjælp af Java-klassen.
for at kunne få adgang til databasen er brugeren gearet til at vælge blandt de forskellige forbindelsesmuligheder, der er tilgængelige for at oprette forbindelse til databasen. De fleste af databasestikene distribueres frit som “jar” – filer. Da vi bruger Jar som datakilde, er vi derfor forpligtet til at hente jar-filen, der er specifik for Jar.
jar-filen kan hentes fra: her eller her.
Trin 1: det første skridt er at konfigurere projektets byggesti og tilføje “java-3.1.13-bin.jar ” fil som et eksternt bibliotek.
Trin 2: Opret en java-klasse navngivet som “DatabaseTesingDemo”.
Trin 3: Kopier og indsæt nedenstående kode i klassen oprettet i ovenstående trin.
Kodeprøve
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(); } }}
udgangen af ovenstående kode er:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Læs Udsagnsvarianter
hvor klausul med enkelt betingelse
Strengforespørgsel = ” vælg * fra userinfo hvor userId='” + 1 + “‘”;
resultatsæt res = stmt.(forespørgsel);
udgang:
1 shruti 25 Noida
hvor klausul med flere betingelser
String Address =”Mumbai”;
String forespørgsel = “vælg * fra userinfo hvor userId='” + 2 + “‘ og userAddress='”+Address+”‘”;
ResultSet res = stmt.eksekveringsforespørgsel (forespørgsel);
udgang:
2 shrivastava 55 Mumbai
Display userId
String forespørgsel = “vælg userId fra userinfo”;
ResultSet res = stmt.eksekveringsforespørgsel (forespørgsel);
udgang:
1
2
Vis userId med hvor klausul
String Address =”Noida”;
String forespørgsel = “vælg userId,brugernavn fra userinfo hvor userAddress='”+Address+”‘”;
ResultSet res = stmt.(forespørgsel);
Output:
2
shrivastava
således kan brugeren på samme måde udføre forskellige forespørgsler på databasen.
med dette, lad os kaste lys over resultat tilgængelighed metoder også.
Resultat Tilgængelighedsmetoder:
Metodenavn | beskrivelse |
---|---|
String getString () | metode bruges til at hente strengtype data fra resultatsættet |
int getInt () | metoden bruges til at hente heltalstypedata fra resultatsættet |
boolsk getboolsk () | metode bruges til at hente den boolske værdi fra resultatsættet |
float getFloat () | metode bruges til at hente float type data fra resultatsættet |
lang getLong () | metoden bruges til at hente de lange type data fra resultatsættet |
short getShort () | metoden bruges til at hente de korte type data fra resultatsættet |
double getDouble () | metoden bruges til at hente data med dobbelt type fra resultatsættet |
Dato getDate () | metoden bruges til at hente Datotypeobjektet fra resultatsættet |
resultat navigationsmetoder:
Metodenavn | beskrivelse |
---|---|
boolsk næste () | metode bruges til at flytte til den næste post i resultatsættet |
boolsk forrige () | metode bruges til at flytte til den forrige post i resultatsættet |
boolean first () | metoden bruges til at flytte til den første post i resultatsættet |
boolsk sidste () | metode bruges til at flytte til den sidste post i resultatsættet |
boolsk absolut(int rækkenummer) |
metode bruges til at flytte til den specifikke post i resultatsættet |
konklusion
gennem denne tutorial forsøgte vi at gøre dig bekendt med begrebet automatiseret Databasetest. Vi lagde klart vægt på de tekniske konsekvenser og behov for Databasetest.
da hele vores serie var fokuseret på selen, kan læseren blive vildledt og kan skabe et indtryk af, at denne tutorial ville lære at udføre Databasetest ved hjælp af selen, men som jeg nævnte et antal gange tidligere, kan alt, hvad der ligger uden for periferien af UI-test, ikke håndteres af selen. Derfor introducerer vi Java Database Connectivity (JDBC) API for at udføre Databasetestning ved at indlejre koden i selen-Driverskripterne.
JDBC gør det muligt for java-klassen at oprette forbindelse til databasen, hente data fra databasen eller faktisk udføre nogen af CRUD-operationerne, manipulere de resulterende data og lukke forbindelsen.
således udgør selvstudiet den grundlæggende prøveimplementering af ovennævnte proces.
næste Tutorial #29: vi vil gå videre med avancerede selen emner. I den næste tutorial vil vi dække Selengitteret – som bruges, når du skal udføre multi-bro.ser-test, og du har et stort antal testsager.
Sidst Opdateret: 29. November 2021