selenium database testing using webdriver
În ultimul nostru tutorial Selenium, am învățat cum depanați unele probleme recurente în scripturile de seleniu . Am discutat câteva concepte avansate în care ne-am ocupa de evenimente de la mouse și tastatură, accesând mai multe linkuri prin implementarea listelor.
Mergând mai departe cu subiecte avansate din seria de formare Selenium , vă vom introduce cu conceptul de Testarea bazei de date folosind Selenium WebDriver.
Am discuta despre procesele de bază cum ar fi conexiunea la baza de date, executarea interogărilor, preluarea datelor și deconectarea instanțelor bazei de date etc. Am discuta, de asemenea, diverse implicații practice în care avem nevoie de testarea bazei de date cu teste de automatizare pentru a testa completează scenarii end-to-end.
Înainte de a continua cu implicațiile tehnice asociate testării bazei de date automate. Să discutăm câteva scenarii în care trebuie să efectuăm testarea bazei de date împreună cu testarea automatizării. Dar înainte de asta, aș dori să afirm aici că testarea bazei de date este un tip de testare foarte particular, în timp ce Selenium WebDriver este un instrument utilizat pentru a simula și automatiza interacțiunile utilizatorilor cu interfața de utilizare a aplicației.
Din punct de vedere tehnic, nu efectuăm cu precizie testarea bazei de date, ci testăm aplicația noastră împreună cu baza de date, pentru a ne asigura că modificările sunt reflectate la ambele capete, identificând astfel defectele mai devreme.
Absolut toate aplicațiile web au nevoie de un backend pentru a stoca datele. Bazele de date precum MySQL, Oracle și SQL Server sunt destul de populare în zilele noastre.
Revenind acum la subiectul original, permiteți-ne să discutăm câteva scenarii pentru a exemplifica cererea de testare a bazei de date împreună cu testarea automatizării.
Ce veți învăța:
- Luați în considerare următoarele scenarii
- Crearea datelor de testare în baza de date
- Crearea unei noi baze de date
- Concluzie
- Lectură recomandată
Luați în considerare următoarele scenarii
# 1) Uneori, trebuie să ne asigurăm că datele introduse din interfața de utilizare sunt reflectate în mod constant în baza de date. Astfel preluăm informațiile din baza de date și verificăm informațiile preluate în raport cu informațiile furnizate din interfața de utilizare. De exemplu, formulare de înregistrare, date de utilizator, profiluri de utilizator, actualizări și ștergeri de date de utilizator. Astfel, scenariul de testare pentru automatizare poate fi „Pentru a verifica dacă informațiile utilizatorului sunt salvate cu succes în baza de date de îndată ce utilizatorul se înregistrează în aplicație”.
#Două) Un alt caz de utilizare a efectuării testării bazei de date cu Selenium WebDriver poate apărea atunci când utilizatorul este îndreptat să încarce datele de testare sau datele așteptate din baza de date. Astfel, într-un astfel de caz, utilizatorul ar face conexiunea cu baza de date folosind un API terță parte, va executa interogări pentru a extrage date din setul de date și apoi va afirma datele preluate din baza de date cu datele reale care sunt populate în interfața de utilizare a aplicației. .
# 3) Un alt caz de utilizare este efectuarea testării asociative a bazelor de date. Să presupunem că am efectuat o operațiune pe interfața de utilizare a aplicației și vrem să testăm reflectarea în baza de date. Este posibil ca datele afectate să se afle în diferite tabele ale bazei de date datorită asocierii. Prin urmare, este întotdeauna recomandabil să testați reflectarea datelor în toate zonele afectate.
Seleniu, așa cum am spus, simulează interacțiunile utilizatorului cu aplicația testată. Poate simula evenimente de la tastatură, acțiuni ale mouse-ului etc. Dar dacă utilizatorul dorește să automatizeze orice în afara vecinătății interacțiunilor browser-aplicație web, atunci seleniul nu poate fi de mare ajutor. Astfel, avem nevoie de alte instrumente sau capabilități pentru a efectua teste de la capăt la cap.
Astfel, în toate scenariile de mai sus, putem solicita efectuarea testării bazei de date împreună cu UI Automation. Putem verifica logica afacerii prin manipularea datelor și verificarea reflectării acestora. De asemenea, putem verifica aspectele tehnice ale bazei de date în sine, cum ar fi ștergerea soft, validarea câmpului etc.
Să mergem acum cu implementarea efectivă. Înainte de a dezvolta scripturi Selenium WebDriver pentru a extrage date din sursa de date, permiteți-ne să creăm date de testare în baza de date. Pentru acest tutorial, am folosi MySQL ca bază de date.
Crearea datelor de testare în baza de date
Dacă nu ați descărcat încă baza de date, descărcați-o folosind legătură . Se așteaptă ca utilizatorul să urmeze câțiva pași de bază pentru a descărca și instala baza de date.
= >> Citiți acest tutorial la descărcați și instalați baza de date MySQL .
Odată ce baza de date este instalată cu succes, utilizatorul poate lansa linia de comandă MySQL, care ar arăta ca următoarea captură de ecran. Aplicația ar putea cere utilizatorului să introducă parola. Parola implicită este „root”.
cum deschideți fișiere torrentate
Notă : Utilizatorul poate găsi, de asemenea, clienți GUI pe internet pentru a se conecta la baza de date. Pentru a numi câteva, utilizatorul poate descărca și instala Query Browser sau Work Bench.
Crearea unei noi baze de date
Următorul pas este crearea bazei de date de testare cu câteva tabele și înregistrări stocate în acele tabele pentru a face o conexiune cu baza de date și a executa interogări.
Pasul 1) Tastați „arată baze de date” pentru a vedea toate bazele de date deja disponibile
arată baze de date;
Pasul 2) Tastați „creați utilizatorul bazei de date;” pentru a crea o bază de date numită „utilizator”.
crearea utilizatorului bazei de date;
Rețineți că numele bazei de date pe măsură ce utilizatorul este creat și poate fi văzut în lista bazelor de date.
Pasul 3) Tastați „utilizați utilizatorul;” pentru a selecta baza de date nou creată. De asemenea, tastați „arată tabele;” pentru a vizualiza toate tabelele disponibile în baza de date a utilizatorilor.
utilizați utilizatorul;
mese de spectacol;
Rețineți că setul gol este afișat în rezultatul „arată tabelele”; interogare deoarece nu au existat tabele disponibile în baza de date a utilizatorilor.
Haideți acum câteva tabele și adăugăm înregistrări în ele.
Pasul 4) Tastați următoarea comandă pentru a crea un tabel cu 4 câmpuri / coloane (userId, userName, userAge, userAddress).
creați tabela userinfo
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar (255)
);
Următorul pas este să adăugați câteva înregistrări de date în tabelul „userinfo”.
Pasul 5) Tastați următoarea comandă pentru a insera date în tabel un tabel pentru toate cele patru câmpuri 4 câmpuri / coloane (userId, userName, userAge, userAddress).
introduceți în userinfo (userID, userName, userAge, userAddress) valori („1”, „shruti”, „25”, „Noida”);
Pentru a vizualiza datele adăugate, tastați următoarea comandă:
selectați * din userinfo;
În mod similar, puteți adăuga mai multe date la tabela dvs. și puteți crea și alte tabele.
Acum, că ne-am creat baza de date. Putem merge mai departe și să înțelegem implementarea interogărilor automate pentru preluarea înregistrărilor din baza de date.
Așa cum am iterat și mai devreme, Selenium WebDriver este un instrument pentru automatizarea UI. Astfel, Selenium WebDriver singur nu este eligibil pentru efectuarea testării bazei de date, dar acest lucru se poate face folosind Java Database Connectivity API (JDBC). API-ul permite utilizatorului să se conecteze și să interacționeze cu sursa de date și să preia datele cu ajutorul interogărilor automate. Pentru a putea exploata API-ul JDBC, este necesar ca mașina virtuală Java (JVM) să ruleze pe sistem.
Flux de lucru JDBC
Ne-am menține concentrarea aliniată cu următoarele procese:
- Crearea unei conexiuni cu baza de date
- Executarea interogărilor și actualizarea declarațiilor pentru a extrage / prelua date (Operații CRUD)
- Utilizarea și manipularea datelor extrase din baza de date sub forma setului de rezultate. (Setul de rezultate este o colecție de date organizate în rânduri și coloane)
- Deconectarea conexiunii la baza de date.
Așa cum am spus mai devreme, pentru a putea testa baza de date în mod automat din scripturile de testare Selenium WebDriver, ne-am conecta cu baza de date prin conectivitate JDBC în cadrul scripturilor noastre de testare. Postați la conexiune, putem declanșa cât mai multe operații CRUD (Creați, Citiți, Actualizați și Ștergeți) în baza de date.
În acest tutorial, am discuta despre „Operația de citire și variantele sale” și despre implementarea lor în scriptul Selenium WebDriver. Dar înainte de aceasta, să verificăm manual scenariul de testare folosind „linia de comandă MySQL”.
Scenariu:
1) Deschideți serverul de baze de date și conectați-vă la baza de date „utilizator”.
Două) Enumerați toate înregistrările din tabelul „userinfo”.
Sintaxă: selectați * din userinfo;
3) Închideți conexiunea la baza de date.
Observați că interogarea citită va afișa toate datele despre utilizatori prezente în tabelul userinfo. Tabelul este format din următoarele coloane.
- numele de utilizator
- nume de utilizator
- userAge
- userAddress
Rezultatul arată, de asemenea, că există doar un singur set de date prezent în tabel.
Acum, haideți să executăm același scenariu folosind Java Class.
Pentru a putea accesa baza de date, utilizatorul este pârghiat să aleagă dintre diversele opțiuni de conectare disponibile pentru a se conecta la baza de date. Majoritatea conectorilor bazei de date sunt distribuite liber ca fișiere „jar”. Deoarece folosim MySQL ca sursă de date, de aceea suntem obligați să descărcăm fișierul jar specific MySQL.
Fișierul jar poate fi descărcat de pe: Aici sau Aici.
Pasul 1 : Primul și cel mai important pas este să configurați calea de construire a proiectului și să adăugați fișierul „mysql-connector-java-3.1.13-bin.jar” ca bibliotecă externă.
Pasul 2 : Creați o clasă java denumită „DatabaseTesingDemo”.
Pasul 3 : Copiați și lipiți codul de mai jos în clasa creată în pasul de mai sus.
Exemplu de cod
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(); } } }
Ieșirea codului de mai sus este:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Citiți variantele declarației
Clauza unde cu condiție unică
String interogare = „selectați * din userinfo unde userId = '” + 1 + „‘ ”;
ResultSet res = stmt.executeQuery (interogare);
Ieșire:
1 shruti 25 Noida
Clauza unde cu condiții multiple
String Address = ”Mumbai”;
Interogare șir = „selectați * din userinfo unde userId = '” + 2 + „‘ și userAddress =' ”+ Adresă +” ‘”;
ResultSet res = stmt.executeQuery (interogare);
Ieșire:
2 shrivastava 55 Mumbai
Afișează ID utilizator
String query = „selectați userId din userinfo”;
ResultSet res = stmt.executeQuery (interogare);
Ieșire:
1
Două
Afișează userId cu clauza where
String Address = ”Noida”;
String query = „select userId, userName din userinfo unde userAddress = '” + Adresa + ”‘ ”;
ResultSet res = stmt.executeQuery (interogare);
Ieșire:
Două
shrivastava
Astfel, în același mod, utilizatorul poate executa diverse interogări pe baza de date.
Cu aceasta, Să aruncăm o lumină și asupra metodelor de accesibilitate a rezultatelor.
Metode de accesibilitate a rezultatelor:
Numele metodei | Descriere |
---|---|
dublu getDouble () | Metoda este utilizată pentru a prelua datele de tip dublu din setul de rezultate |
String getString () | Metoda este utilizată pentru a prelua datele de tip șir din setul de rezultate |
int getInt () | Metoda este utilizată pentru a prelua datele de tip întreg din setul de rezultate |
boolean getBoolean () | Metoda este utilizată pentru a prelua valoarea booleană din setul de rezultate |
float getFloat () | Metoda este utilizată pentru a prelua datele de tip float din setul de rezultate |
lung getLong () | Metoda este utilizată pentru a prelua datele de tip lung din setul de rezultate |
scurt getShort () | Metoda este utilizată pentru a prelua datele de tip scurt din setul de rezultate |
Data getDate () | Metoda este utilizată pentru a prelua obiectul de tip Date din setul de rezultate |
Metode de navigare a rezultatelor:
Numele metodei | Descriere |
---|---|
boolean next () | Metoda este utilizată pentru a trece la următoarea înregistrare din setul de rezultate |
boolean precedent () | Metoda este utilizată pentru a trece la înregistrarea anterioară din setul de rezultate |
primul boolean () | Metoda este utilizată pentru a trece la prima înregistrare din setul de rezultate |
boolean last () | Metoda este utilizată pentru a trece la ultima înregistrare din setul de rezultate |
boolean absolut (int rowNumber) | Metoda este utilizată pentru a trece la înregistrarea specifică din setul de rezultate |
Concluzie
Prin acest tutorial, am încercat să vă facem familiarizați cu conceptul de Testarea automatizată a bazei de date . Am pus clar accentul pe implicațiile tehnice și pe nevoile Testării bazelor de date.
Întrucât întreaga noastră serie a fost axată pe Seleniu, cititorul poate fi indus în eroare și poate crea impresia că acest tutorial ar învăța să efectueze testarea bazei de date folosind Seleniu, dar așa cum am menționat de mai multe ori mai devreme, orice se află în afara periferiei testării UI , nu poate fi manipulat de Selenium. Prin urmare, introducem API-ul Java Database Connectivity (JDBC) pentru a efectua testarea bazei de date prin încorporarea codului în scripturile Selenium WebDriver.
JDBC face posibil ca clasa java să se conecteze la baza de date, să preia date din baza de date sau să efectueze oricare dintre operațiunile CRUD, să manipuleze datele rezultate și să închidă conexiunea.
Astfel, tutorialul constituie eșantionul de bază de implementare a procesului menționat mai sus.
Următorul tutorial # 29 : Vom merge mai departe cu subiecte avansate despre seleniu. În următorul tutorial, vom acoperi Selenium GRID - care este utilizat atunci când trebuie să efectuați teste multi-browser și aveți un număr mare de cazuri de testare.
Lectură recomandată
- Testarea bazei de date cu JMeter
- Integrarea seleniului cu JMeter
- Tutorial Castravete Seleniu: Integrare Castravete Java Seleniu WebDriver
- Introducere în Selenium WebDriver - Tutorial Selenium # 8
- Cele mai bune instrumente de testare software 2021 (Instrumente de automatizare a testelor de calitate)
- Implementarea primului nostru script WebDriver - Selenium WebDriver Tutorial # 10
- Cel mai bun curs online de seleniu WebDriver + JAVA
- Spock pentru integrare și testare funcțională cu seleniu