testarea bazei de date Selenium (folosind webdriver și JDBC API)
în ultimul nostru tutorial Selenium, am învățat cum să depanăm unele probleme recurente în scripturile selenium. Am discutat câteva concepte avansate în care ne-am ocupa de evenimentele mouse-ului și tastaturii, accesând Mai multe linkuri prin implementarea listelor.
Mergând mai departe cu subiectele noastre avansate din seria Selenium training, vă vom prezenta conceptul de testare a bazelor de date folosind Selenium WebDriver.
am discuta despre procesele de bază cum ar fi conexiunea bazei 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 testarea automatizării pentru a testa scenariile complete end-to-end.
înainte de a trece mai departe cu implicațiile tehnice asociate cu testarea automată a bazei de date. Să discutăm câteva scenarii în care avem nevoie de 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 foarte ciudat de testare, în timp ce Selenium WebDriver este un instrument folosit pentru a simula și automatiza interacțiunile utilizatorilor cu interfața de utilizare a aplicației.
deci, 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 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 aceste zile.
acum semn înapoi la subiectul original, să discutăm câteva scenarii pentru a exemplifica cererea de testare a bazei de date, împreună cu testarea de automatizare.
luați în considerare următoarele scenarii
#1) uneori, suntem obligați să ne asigurăm că datele introduse din UI sunt reflectate în mod constant în baza de date. Astfel, vom prelua informațiile din Baza de date și să verifice informațiile preluate împotriva informațiilor furnizate de UI. De exemplu, formulare de înregistrare, date de utilizator, profiluri de utilizator, actualizări și ștergeri ale datelor 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 imediat ce utilizatorul se înregistrează în aplicație”.
#2) Un alt caz de utilizare a efectuării testării bazei de date cu Selenium WebDriver poate apărea atunci când utilizatorul este direcționat 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, executa interogări pentru a prelua date din setul de date și apoi afirmând datele preluate din Baza de date cu datele reale care sunt populate pe interfața de utilizare a aplicației.
#3) Un alt caz de utilizare este de a efectua testarea bazei de date asociative. Să presupunem că am efectuat o operație pe UI aplicației, și vrem să testeze reflexia în baza de date. Poate fi un caz în care datele afectate se află în diferite tabele ale bazei de date datorită asocierii. Prin urmare, este întotdeauna recomandabil să testați reflectarea datelor în toate zonele afectate.
seleniul, 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 end –to –end.
astfel, în toate scenariile de mai sus, este posibil să solicităm testarea bazei de date împreună cu automatizarea UI. Putem verifica logica de afaceri prin manipularea datelor și verificarea reflecției acestora. De asemenea, putem verifica aspectele tehnice ale bazei de date în sine, cum ar fi ștergerea ușoară, validarea câmpului etc.
să mergem acum mai departe cu punerea în aplicare efectivă. Înainte de a dezvolta Scripturi Selenium WebDriver pentru a extrage date din sursa de date, să creăm date de testare în baza de date. Pentru acest tutorial, vom 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 utilizând linkul. Utilizatorul este de așteptat să urmeze câțiva pași de bază pentru a descărca și instala baza de date.
=>> citiți acest tutorial pentru a descărca și instala 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”.
notă: utilizatorul poate găsi, de asemenea, clienții bazate pe GUI pe internet pentru a se conecta cu baza de date. Pentru a numi câteva, utilizatorul poate descărca și instala browserul de interogare sau Banca de lucru.
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 aceste tabele pentru a face o conexiune cu baza de date și a executa interogări.
Pasul 1) Tastați „afișați bazele de date” pentru a vedea toate bazele de date deja disponibile
afișați bazele de date;
Pasul 2) Tastați „Creare utilizator bază de date;” pentru a crea o bază de date numită „utilizator”.
Creare utilizator bază de date;
ia act de faptul că numele bazei de date ca utilizator este creat și poate fi văzut în lista de baze de date.
Pasul 3) Tastați „utilizați utilizatorul;” pentru a selecta baza de date nou creată. De asemenea, tastați „afișați tabelele;” pentru a vizualiza toate tabelele disponibile în baza de date a utilizatorului.
utilizare utilizator;
afișare tabele;
rețineți că setul gol este afișat în rezultatul interogării „afișați tabele;” deoarece nu au existat tabele disponibile în baza de date a utilizatorului.
să ne acum câteva tabele și adăugați î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).
Creare tabel userinfo
(
userId int,
nume utilizator 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 tabelul dvs. și puteți crea și alte tabele.
acum, că ne-am creat baza de date. Putem merge mai departe și să înțeleagă punerea în aplicare a interogări automate pentru a prelua înregistrările 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 a efectua testarea 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 Java Virtual Machine (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 a declarațiilor de actualizare pentru a extrage/prelua date (operații brute)
- folosind și manipulând datele 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 bazei de date.
așa cum am spus mai devreme, pentru a putea testa baza de date automat din scripturile noastre de testare Selenium WebDriver, ne-am conecta cu baza de date prin conectivitatea JDBC în scripturile noastre de testare. Postați la conexiune, putem declanșa cât mai multe operații crude (creați, citiți, actualizați și ștergeți) în baza de date.
în acest tutorial, vom discuta despre „citiți operațiunea ș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 bazei de date și conectați-vă la baza de date „utilizator”.
2) enumerați toate înregistrările din tabelul „userinfo”.
sintaxă: selectați * din userinfo;
3) închideți conexiunea bazei de date.
observați că interogarea de citire va lista toate datele de utilizator prezente în tabelul userinfo. Tabelul este format din următoarele coloane.
- userId
- username
- userAge
- userAddress
rezultatul arată, de asemenea, că există un singur set de date prezent în tabel.
acum, să executăm același scenariu folosind clasa Java.
pentru a putea accesa baza de date, Utilizatorul este obligat să aleagă între diferitele opțiuni de conectare disponibile pentru conectarea la baza de date. Majoritatea conectorilor bazei de date sunt distribuite gratuit 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 la: 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 „mysql-connector-java-3.1.13-bin.jar ” fișier ca o bibliotecă externă.
Pasul 2: Creați o clasă java numită „DatabaseTesingDemo”.
Pasul 3: Copiați și inserați codul de mai jos în clasa creată în pasul de mai sus.
eșantion 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("\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(); } }}
ieșirea codului de mai sus este:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
citiți variantele de instrucțiuni
unde clauza cu o singură condiție
string query = „selectați * din userinfo unde userId='” + 1 + „‘”;
ResultSet res = stmt.executeQuery(interogare);
ieșire:
1 shruti 25 Noida
unde clauza cu mai multe condiții
string Address =”Mumbai”;
string query = „selectați * din userinfo unde userId='” + 2 + „‘ și userAddress='”+Address+”‘”;
ResultSet res = stmt.executeQuery (interogare);
ieșire:
2 shrivastava 55 Mumbai
afișare userId
string query = „selectați userId din userinfo”;
ResultSet res = stmt.executeQuery (interogare);
ieșire:
1
2
afișează userId cu clauza where
string Address =”Noida”;
string query = „Selectează userId,userName din userinfo unde userAddress='”+Address+”‘”;
ResultSet res = stmt.executeQuery (interogare);
ieșire:
2
shrivastava
astfel, în același mod utilizatorul poate executa diverse interogări în 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 |
---|---|
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 |
getShort scurt () | metoda este utilizată pentru a prelua datele de tip scurt din setul de rezultate |
double getDouble () | metoda este utilizată pentru a prelua datele de tip dublu din setul de rezultate |
data getDate () | metoda este utilizată pentru a prelua obiectul Tip dată 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 anterior () | metoda este utilizată pentru a trece la înregistrarea anterioară în setul de rezultate |
boolean first () | 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 |
booleene absolut(număr rând int) |
metoda este utilizată pentru a trece la înregistrarea specifică din setul de rezultate |
concluzie
prin acest tutorial, am încercat să vă familiarizăm cu conceptul de testare automată a bazelor de date. Am pus în mod clar accentul pe implicațiile tehnice și nevoile testării bazelor de date.
deoarece î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 seleniu. Prin urmare, introducem Java Database Connectivity (JDBC) API 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ă recupereze date din Baza de date sau, de fapt, să efectueze oricare dintre operațiile brute, să manipuleze datele rezultate și să închidă conexiunea.
astfel, tutorialul constituie implementarea eșantionului de bază al procesului menționat mai sus.
următorul Tutorial #29: vom merge mai departe cu subiecte avansate de seleniu. În următorul tutorial, vom acoperi grila Selenium-care este utilizată atunci când trebuie să efectuați teste multi-browser și aveți un număr mare de cazuri de testare.
Ultima Actualizare: 29 Noiembrie 2021