selenium database testing using webdriver
U našem zadnjem tutorijalu za Selen naučili smo kako rješavanje nekih ponavljajućih problema u skriptama selena . Razgovarali smo o nekim naprednim konceptima u kojima bismo se bavili događajima miša i tipkovnice, pristupajući višestrukim vezama implementirajući popise.
Krećemo dalje s našim napredne teme iz serije treninga Selenium , upoznali bismo vas s konceptom Testiranje baze podataka pomoću Selenium WebDriver.
Razgovarali bismo o osnovnim procesima poput povezivanja baze podataka, izvršavanja upita, dohvaćanja podataka i odspajanja instanci baze podataka itd. Također bismo razgovarali o raznim praktičnim implikacijama tamo gdje nam je potrebno testiranje baze podataka s automatskim testiranjem kako bismo testirali cjelovite scenarije od kraja do kraja.
Prije nego što krenemo s tehničkim implikacijama povezanim s testiranjem automatizirane baze podataka. Razmotrimo nekoliko scenarija u kojima trebamo provesti testiranje baze podataka zajedno s automatskim testiranjem. Ali prije toga, želio bih ovdje potvrditi da je testiranje baze podataka vrlo neobična vrsta testiranja, dok je Selenium WebDriver alat koji se koristi za simulaciju i automatizaciju korisničkih interakcija s korisničkim sučeljem aplikacije.
Dakle, tehnički gledano, ne vršimo precizno testiranje baze podataka, već svoju aplikaciju testiramo zajedno s bazom podataka kako bismo osigurali da se promjene odražavaju na oba kraja i tako rano identificiraju nedostatke.
Apsolutno svim web aplikacijama treba pozadinska mreža za pohranu podataka. Baze podataka poput MySQL, Oracle i SQL Server danas su relativno popularne.
Vraćajući se na izvornu temu, razgovarajmo o nekoliko scenarija koji će ilustrirati potražnju za testiranjem baze podataka zajedno s automatskim testiranjem.
Što ćete naučiti:
- Razmotrite sljedeće scenarije
- Stvaranje test podataka u bazi podataka
- Stvaranje nove baze podataka
- Zaključak
- Preporučena literatura
Razmotrite sljedeće scenarije
# 1) Ponekad moramo osigurati da se podaci uneseni iz korisničkog sučelja dosljedno odražavaju u bazi podataka. Stoga podatke dohvaćamo iz baze podataka i provjeravamo preuzete informacije u odnosu na podatke isporučene iz korisničkog sučelja. Na primjer, obrasci za registraciju, korisnički podaci, korisnički profili, ažuriranja i brisanja korisničkih podataka. Dakle, testni scenarij za automatizaciju može biti 'Provjera je li korisnikova informacija uspješno spremljena u bazu podataka čim se korisnik registrira u aplikaciji'.
#dva) Još jedan slučaj upotrebe provođenja testiranja baze podataka pomoću programa Selenium WebDriver može se pojaviti kada se korisniku uputi da učita test podatke ili očekivane podatke iz baze podataka. Dakle, u takvom slučaju korisnik bi uspostavio vezu s bazom podataka pomoću API-ja treće strane, izvršio upite za dohvaćanje podataka iz skupa podataka, a zatim utvrđivao podatke preuzete iz baze podataka sa stvarnim podacima koji se popunjavaju u korisničkom sučelju aplikacije. .
# 3) Sljedeći je slučaj izvedbe asocijativnog testiranja baze podataka. Pretpostavimo da smo izvršili operaciju na korisničkom sučelju aplikacije i želimo testirati odraz u bazi podataka. Može se dogoditi da se zahvaćeni podaci nalaze u raznim tablicama baze podataka zbog povezanosti. Stoga je uvijek poželjno testirati odraz podataka na svim pogođenim područjima.
Selen, kao što sam rekao, simulira interakciju korisnika s testnom aplikacijom. Može simulirati događaje na tipkovnici, radnje mišem itd. Ali ako korisnik želi automatizirati bilo što izvan blizine interakcija preglednika i web aplikacija, tada selen ne može biti od velike pomoći. Stoga su nam potrebni drugi alati ili mogućnosti za provođenje ispitivanja od kraja do kraja.
Stoga, u svim gore navedenim scenarijima, možda ćemo trebati izvršiti testiranje baze podataka zajedno s UI Automation. Možemo provjeriti poslovnu logiku manipuliranjem podacima i provjerom njihovog odraza. Također možemo provjeriti tehničke aspekte same baze podataka, poput mekog brisanja, provjere polja itd.
Krenimo sada sa stvarnom provedbom. Prije razvoja skripti Selenium WebDriver za izdvajanje podataka iz izvora podataka, napravimo testne podatke u bazi podataka. U ovom uputstvu koristili bismo MySQL kao bazu podataka.
Stvaranje test podataka u bazi podataka
Ako još niste preuzeli bazu podataka, preuzmite je pomoću veza . Od korisnika se očekuje da slijedi neke osnovne korake za preuzimanje i instaliranje baze podataka.
= >> Pročitajte ovaj vodič za preuzmite i instalirajte MySQL bazu podataka .
Nakon što je baza podataka uspješno instalirana, korisnik može pokrenuti MySQL redak naredbenog retka koji bi izgledao kao sljedeća snimka zaslona. Aplikacija može tražiti od korisnika da unese lozinku. Zadana lozinka je 'root'.
Bilješka : Korisnik također može putem interneta pronaći klijente temeljene na GUI-u za povezivanje s bazom podataka. Da navedemo neke od njih, korisnik može preuzeti i instalirati Query Browser ili Work Bench.
Stvaranje nove baze podataka
Sljedeći je korak stvaranje testne baze podataka s nekoliko tablica i zapisa pohranjenih u tim tablicama kako bi se uspostavila veza s bazom podataka i izvršili upiti.
Korak 1) Upišite 'prikaži baze podataka' da biste vidjeli sve već dostupne baze podataka
pokazati baze podataka;
Korak 2) Upišite “create user user;” stvoriti bazu podataka s imenom 'korisnik'.
stvoriti korisnika baze podataka;
ostatak api intervju pitanja i odgovori
Imajte na umu da se ime baze podataka prilikom izrade korisnika može vidjeti na popisu baza podataka.
Korak 3) Upišite 'use user;' za odabir novostvorene baze podataka. Također, upišite 'show table;' za pregled svih tablica dostupnih u bazi podataka korisnika.
koristiti korisnika;
izložbeni stolovi;
Zabilježite da je prazan set prikazan u rezultatu 'pokaži tablice;' upit jer u korisničkoj bazi podataka nije bilo dostupnih tablica.
Dopustite nam sada nekoliko tablica i dodajte zapise u njih.
Korak 4) Upišite sljedeću naredbu da biste stvorili tablicu s 4 polja / stupca (userId, userName, userAge, userAddress).
stvoriti korisničke podatke tablice
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar (255)
);
Sljedeći je korak dodati neke zapise podataka u tablicu 'userinfo'.
Korak 5) Upišite sljedeću naredbu za umetanje podataka u tablicu tablice za sva četiri polja 4 polja / stupca (userId, userName, userAge, userAddress).
umetnite u korisničke informacije (userID, userName, userAge, userAddress) vrijednosti (‘1’, ‘shruti’, ’25’, ‘Noida’);
Da biste pogledali dodane podatke, upišite sljedeću naredbu:
odaberite * iz korisničkih podataka;
Slično tome, u tablicu možete dodati više podataka, a možete stvoriti i druge tablice.
Sad, kad smo stvorili našu bazu podataka. Možemo ići naprijed i razumjeti implementacija automatiziranih upita za preuzimanje zapisa iz baze podataka.
Kao što smo i ranije ponavljali, Selenium WebDriver je alat za automatizaciju korisničkog sučelja. Dakle, samo Selenium WebDriver ne ispunjava uvjete za testiranje baze podataka, ali to se može učiniti pomoću Java Database Connectivity API (JDBC). API omogućuje korisniku povezivanje i interakciju s izvorom podataka te dohvaćanje podataka uz pomoć automatiziranih upita. Da biste mogli iskoristiti JDBC API, u sustavu je potreban Java Virtual Machine (JVM).
JDBC tijek rada
Usredotočili bismo se na sljedeće procese:
- Stvaranje veze s bazom podataka
- Izvršavanje upita i ažuriranje izraza radi izdvajanja / dohvaćanja podataka (CRUD operacije)
- Korištenje i manipulacija podacima izvučenim iz baze podataka u obliku skupa rezultata. (Skup rezultata je zbirka podataka organizirana u retke i stupce)
- Prekidanje veze s bazom podataka.
Kao što je ranije rečeno, da bismo mogli automatski testirati bazu podataka iz naših testnih skripti Selenium WebDriver, povezali bismo se s Bazom podataka putem JDBC veze unutar naših testnih skripti. Objavljivanjem veze, možemo pokrenuti što više CRUD (Stvaranje, čitanje, ažuriranje i brisanje) operacija na bazi podataka.
U ovom uputstvu razgovarali bismo o operaciji čitanja i njegovim inačicama te o njihovoj implementaciji u skripti Selenium WebDriver. No prije toga, provjerimo testni scenarij ručno pomoću 'MySQL naredbenog retka'.
Scenarij:
1) Otvorite poslužitelj baze podataka i povežite se s „korisničkom“ bazom podataka.
dva) Navedite sve zapise iz tablice 'userinfo'.
Sintaksa: odaberite * iz korisničkih podataka;
3) Zatvorite vezu baze podataka.
Primijetite da će upit za čitanje navesti sve korisničke podatke prisutne u tablici userinfo. Tablica se sastoji od sljedećih stupaca.
- userId
- Korisničko ime
- userAge
- userAddress
Rezultat također pokazuje da je unutar tablice prisutan samo jedan skup podataka.
Izvršimo sada isti scenarij koristeći Java klasu.
Da bi mogao pristupiti bazi podataka, korisniku se omogućuje odabir između različitih opcija konektora dostupnih za povezivanje s bazom podataka. Većina konektora baze podataka slobodno se distribuiraju kao 'jar' datoteke. Kako MySQL koristimo kao izvor podataka, stoga moramo preuzeti jar datoteku specifičnu za MySQL.
Datoteku jar možete preuzeti s: ovdje ili ovdje.
Korak 1 : Prvi i najvažniji korak je konfiguriranje puta gradnje projekta i dodavanje datoteke 'mysql-connector-java-3.1.13-bin.jar' kao vanjske knjižnice.
Korak 2 : Stvorite java klasu nazvanu “DatabaseTesingDemo”.
3. korak : Kopirajte i zalijepite donji kod u razred stvoren u gornjem koraku.
Uzorak koda
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(); } } }
Rezultat gornjeg koda je:
1 šruti 25 Noida
2 shrivastava 55 Mumbai
Pročitajte varijante izjave
Klauzula s jednim uvjetom
String query = “select * from userinfo where userId = '” + 1 + '‘ ';
ResultSet res = stmt.executeQuery (upit);
Izlaz:
1 šruti 25 Noida
Klauzula s više uvjeta
Adresa niza = 'Mumbai';
String query = “select * from userinfo where userId = '” + 2 + “‘ and userAddress =' ”+ Address +” ‘”;
ResultSet res = stmt.executeQuery (upit);
Izlaz:
2 shrivastava 55 Mumbai
Prikaži userId
String upit = 'odaberite userId iz userinfo';
ResultSet res = stmt.executeQuery (upit);
tvrtke koje nude testiranje proizvoda kod kuće
Izlaz:
1
dva
Prikaži userId s klauzulom where
Adresa niza = ”Noida”;
String query = “select userId, userName from userinfo where userAddress = '” + Address + ”‘ ”;
ResultSet res = stmt.executeQuery (upit);
Izlaz:
dva
šrivastava
Dakle, na isti način korisnik može izvršavati razne upite u bazi podataka.
Ovim ćemo osvijetliti i metode pristupačnosti rezultata.
Rezultat metode pristupačnosti:
Naziv metode | Opis |
---|---|
dvostruki getDouble () | Metoda se koristi za dohvaćanje podataka dvostrukog tipa iz skupa rezultata |
String getString () | Metoda se koristi za dohvaćanje podataka vrste niza iz skupa rezultata |
int getInt () | Metoda se koristi za dohvaćanje podataka cijelog broja iz skupa rezultata |
boolean getBoolean () | Metoda se koristi za dohvaćanje logičke vrijednosti iz skupa rezultata |
float getFloat () | Metoda se koristi za dohvaćanje podataka tipa plutajućeg podatka iz skupa rezultata |
long getLong () | Metoda se koristi za dohvaćanje podataka dugog tipa iz skupa rezultata |
kratki getShort () | Metoda se koristi za dohvaćanje podataka kratkog tipa iz skupa rezultata |
Datum getDate () | Metoda se koristi za dohvaćanje objekta tipa Datum iz skupa rezultata |
Metode navigacije rezultatima:
Naziv metode | Opis |
---|---|
logička naredba () | Metoda se koristi za prelazak na sljedeći zapis u skupu rezultata |
logička prethodna () | Metoda se koristi za pomicanje na prethodni zapis u skupu rezultata |
prvo logičko () | Metoda se koristi za pomicanje do prvog zapisa u skupu rezultata |
boolean last () | Metoda se koristi za pomicanje do posljednjeg zapisa u skupu rezultata |
boolean apsolutno (int rowNumber) | Metoda se koristi za prelazak na određeni zapis u skupu rezultata |
Zaključak
Kroz ovaj tutorial pokušali smo vas upoznati s konceptom Automatizirano testiranje baze podataka . Jasno smo stavili naglasak na tehničke implikacije i potrebe testiranja baze podataka.
Kako je čitava naša serija bila usredotočena na Selenium, čitatelj se može zavarati i stvoriti dojam da će ovaj tutorial naučiti izvoditi testiranje baze podataka koristeći Selenium, ali kao što sam već nekoliko puta spomenuo, sve što leži izvan periferije testiranja korisničkog sučelja , selenom se ne može nositi. Stoga uvodimo API povezivanja Java baze podataka (JDBC) kako bismo izvršili testiranje baze podataka ugrađivanjem koda u skripte Selenium WebDriver.
JDBC omogućuje da se java klasa poveže s bazom podataka, dohvati podatke iz baze podataka ili u stvari izvrši bilo koju od CRUD operacija, manipulira rezultatima i zatvori vezu.
Dakle, tutorial predstavlja osnovni uzorak provedbe gore spomenutog postupka.
Sljedeći vodič # 29 : Krenut ćemo s naprednim temama o selenu. U sljedećem uputstvu obradit ćemo Selenium GRID - koji se koristi kada morate provesti testiranje s više preglednika i imate velik broj testnih slučajeva.
Preporučena literatura
- Ispitivanje baze podataka pomoću JMetera
- Integracija selena s JMeterom
- Vodič za selenij krastavaca: Integracija Java Selenium WebDriver za krastavac
- Uvod u Selenium WebDriver - Vodič za selenij br. 8
- Najbolji alati za testiranje softvera 2021. (Alati za automatizaciju ispitivanja kvalitete)
- Implementacija naše prve skripte WebDriver - Vodič br. 10 za Selenium WebDriver
- Najbolji mrežni tečaj Selenium WebDriver + JAVA
- Spock za integraciju i funkcionalna ispitivanja selenom