selenium database testing using webdriver
V naši zadnji vaji o selenu smo se naučili, kako odpraviti nekatere ponavljajoče se težave v skriptih selena . Razpravljali smo o nekaterih vnaprejšnjih konceptih, v katerih bi se ukvarjali z dogodki miške in tipkovnice ter z izvajanjem seznamov dostopali do več povezav.
Gremo naprej z našimi napredne teme v seriji treningov Selenium , predstavili bi vam koncept Preizkušanje zbirke podatkov s pomočjo programa Selenium WebDriver.
Razpravljali bi o osnovnih procesih, kot so povezava z bazo podatkov, izvajanje poizvedb, pridobivanje podatkov in odklop primerkov baze podatkov itd. Razpravljali bi tudi o različnih praktičnih posledicah, kjer potrebujemo testiranje zbirke podatkov s testiranjem avtomatizacije, da bi lahko preizkusili popolni scenariji od konca do konca.
Preden nadaljujete s tehničnimi posledicami, povezanimi s samodejnim testiranjem zbirke podatkov. Pogovorimo se o nekaj scenarijih, v katerih moramo skupaj s preizkusom avtomatizacije opraviti testiranje zbirke podatkov. Pred tem pa bi rad potrdil, da je testiranje baze podatkov zelo poseben tip testiranja, medtem ko je Selenium WebDriver orodje za simulacijo in avtomatizacijo uporabniških interakcij z uporabniškim uporabniškim vmesnikom.
Torej tehnično gledano ne izvajamo natančno preskušanja zbirke podatkov, temveč svojo aplikacijo preizkušamo v povezavi z zbirko podatkov, da bi zagotovili, da se spremembe odražajo na obeh koncih in tako zgodaj prepoznajo napake.
Absolutno vse spletne aplikacije potrebujejo zaledje za shranjevanje podatkov. Podatkovne baze, kot so MySQL, Oracle in SQL Server, so danes precej priljubljene.
Zdaj, ko se vrnemo k prvotni temi, se pogovorimo o nekaj scenarijih, ki bodo ponazorili povpraševanje po testiranju baz podatkov skupaj s samodejnim testiranjem.
Kaj se boste naučili:
- Upoštevajte naslednje scenarije
- Ustvarjanje testnih podatkov v zbirki podatkov
- Ustvarjanje nove zbirke podatkov
- Zaključek
- Priporočeno branje
Upoštevajte naslednje scenarije
# 1) Včasih moramo zagotoviti, da se podatki, vneseni iz uporabniškega vmesnika, dosledno odražajo v zbirki podatkov. Tako pridobimo informacije iz zbirke podatkov in jih preverimo glede na informacije, ki jih dobimo iz uporabniškega vmesnika. Na primer obrazci za registracijo, uporabniški podatki, uporabniški profili, posodobitve in brisanja uporabniških podatkov. Tako je testni scenarij za avtomatizacijo lahko 'Preverjanje, ali se podatki o uporabniku uspešno shranijo v bazo podatkov, takoj ko se uporabnik registrira v aplikaciji'.
#two) Drug primer uporabe izvajanja testiranja baze podatkov s programom Selenium WebDriver se lahko pojavi, ko je uporabniku naloženo, da naloži testne podatke ali pričakovane podatke iz baze podatkov. Tako bi v takem primeru uporabnik vzpostavil povezavo z bazo podatkov z uporabo API-ja tretje osebe, izvedel poizvedbe za pridobivanje podatkov iz nabora podatkov in nato uveljavil podatke, pridobljene iz baze podatkov, z dejanskimi podatki, ki so napolnjeni v uporabniškem vmesniku aplikacije .
# 3) Drug primer uporabe je izvajanje asociativnega testiranja zbirke podatkov. Predpostavimo, da smo izvedli operacijo na uporabniškem vmesniku aplikacije in želimo preizkusiti odsev v zbirki podatkov. Mogoče je, da so prizadeti podatki v povezavi z različnimi tabelami zbirke podatkov. Zato je vedno priporočljivo preskusiti odsev podatkov na vseh prizadetih območjih.
Kot sem že rekel, selen simulira interakcije uporabnikov s preizkušeno aplikacijo. Lahko simulira dogodke na tipkovnici, dejanja z miško itd. Če pa uporabnik želi avtomatizirati karkoli zunaj bližine interakcij brskalnika in spletnih aplikacij, selen ne more biti v veliko pomoč. Zato potrebujemo druga orodja ali zmožnosti za izvajanje preskusov od konca do konca.
Tako bomo v vseh zgornjih scenarijih morda morali izvesti preskušanje zbirke podatkov skupaj z UI Automation. Poslovno logiko lahko preverjamo z manipulacijo podatkov in preverjanjem njihovega odražanja. Prav tako lahko preverimo tehnične vidike same zbirke podatkov, kot so mehko brisanje, preverjanje polj itd.
Nadaljujmo z dejanskim izvajanjem. Preden razvijemo skripte Selenium WebDriver za pridobivanje podatkov iz vira podatkov, v zbirki podatkov ustvarimo testne podatke. V tej vadnici bi MySQL uporabili kot bazo podatkov.
Ustvarjanje testnih podatkov v zbirki podatkov
Če še niste prenesli baze podatkov, jo prenesite s pomočjo povezava . Uporabnik naj bi sledil nekaj osnovnih korakov za prenos in namestitev baze podatkov.
= >> Preberite to vadnico na prenesite in namestite MySQL bazo podatkov .
Ko je baza podatkov uspešno nameščena, lahko uporabnik zažene poziv ukazne vrstice MySQL, ki bo videti kot naslednji posnetek zaslona. Aplikacija lahko od uporabnika zahteva, da vnese geslo. Privzeto geslo je 'root'.
prednostna vrsta izvedbe c ++
Opomba : Uporabnik lahko po internetu najde tudi odjemalce, ki temeljijo na GUI, da se poveže z bazo podatkov. Če jih naštejemo le nekaj, lahko uporabnik prenese in namesti brskalnik poizvedb ali delovni pult.
Ustvarjanje nove zbirke podatkov
Naslednji korak je ustvariti testno bazo podatkov z nekaj tabelami in zapisi, shranjenimi v teh tabelah, da vzpostavite povezavo z bazo podatkov in izvedete poizvedbe.
Korak 1) Vnesite 'show databases', da si ogledate vse že na voljo baze podatkov
prikazujejo zbirke podatkov;
2. korak) Vnesite “create user user;” ustvariti bazo podatkov z imenom 'uporabnik'.
ustvari uporabnika baze podatkov;
Upoštevajte, da je ime baze podatkov, ko je uporabnik ustvarjen, vidno na seznamu baz podatkov.
3. korak) Vnesite »use user;« , da izberete novo ustvarjeno bazo podatkov. Vnesite tudi »show table;« za ogled vseh tabel, ki so na voljo v zbirki podatkov o uporabnikih.
uporabnik uporabnik;
razstavne mize;
Upoštevajte, da je rezultat Empty set prikazan v rezultatu »show table;« poizvedba, saj v uporabniški zbirki podatkov ni na voljo tabel.
Zdaj pa nekaj tabel in v njih dodajte zapise.
4. korak) Vnesite naslednji ukaz, da ustvarite tabelo s 4 polji / stolpci (userId, userName, userAge, userAddress).
ustvari uporabniške informacije o tabeli
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar (255)
);
Naslednji korak je dodati nekaj podatkovnih zapisov v tabelo 'userinfo'.
5. korak) Vnesite naslednji ukaz, da v tabelo vstavite podatke v tabelo za vsa štiri polja 4 polja / stolpci (userId, userName, userAge, userAddress).
vstavite v uporabniške informacije (userID, userName, userAge, userAddress) vrednosti (‘1’, ‘shruti’, ’25’, ‘Noida’);
Če si želite ogledati dodane podatke, vnesite naslednji ukaz:
izberite * iz uporabniške informacije;
Podobno lahko v tabelo dodate več podatkov in lahko ustvarite tudi druge tabele.
Zdaj, ko smo ustvarili svojo bazo podatkov. Lahko gremo naprej in razumemo izvajanje avtomatiziranih poizvedb za pridobivanje zapisov iz baze podatkov.
Kot smo že ponovili, je Selenium WebDriver orodje za avtomatizacijo uporabniškega vmesnika. Tako Selenium WebDriver sam ni primeren za testiranje baze podatkov, vendar je to mogoče storiti s pomočjo Java Database Connectivity API (JDBC). API omogoča uporabniku povezavo in interakcijo z virom podatkov ter pridobivanje podatkov s pomočjo avtomatiziranih poizvedb. Da bi lahko izkoristili API JDBC, mora imeti sistem navidezni stroj Java (JVM).
Potek dela JDBC
Naš fokus bi bil usklajen z naslednjimi procesi:
- Ustvarjanje povezave z bazo podatkov
- Izvajanje poizvedb in posodobitev stavkov za pridobivanje / pridobivanje podatkov (CRUD operacije)
- Uporaba in obdelava podatkov, pridobljenih iz baze podatkov v obliki nabora rezultatov. (Nabor rezultatov je zbirka podatkov, organizirana v vrsticah in stolpcih)
- Prekinitev povezave z bazo podatkov.
Kot smo že omenili, bi se za samodejno preskušanje zbirke podatkov iz naših testnih skriptov Selenium WebDriver povezali z zbirko podatkov prek povezave JDBC znotraj naših testnih skriptov. Objavi v povezavo, lahko v bazi podatkov sprožimo čim več CRUD (ustvarjanje, branje, posodabljanje in brisanje) operacij.
V tej vadnici bi razpravljali o »Dejanju branja in njegovih različicah« ter o njihovi izvedbi v skriptu Selenium WebDriver. Pred tem pa preverimo testni scenarij ročno z uporabo ukazne vrstice MySQL.
Scenarij:
1) Odprite strežnik baze podatkov in se povežite z bazo podatkov 'uporabnik'.
dva) V tabeli »userinfo« navedite vse zapise.
Sintaksa: izberite * iz uporabniške informacije;
3) Zaprite povezavo z zbirko podatkov.
Upoštevajte, da bodo v poizvedbi za branje navedeni vsi uporabniški podatki, ki so prisotni v tabeli userinfo. Tabela je sestavljena iz naslednjih stolpcev.
- Uporabniško ime
- uporabniško ime
- userAge
- userAddress
Rezultat tudi kaže, da je v tabeli samo en nabor podatkov.
izvajanje povezanega seznama v javi
Zdaj pa izvedimo isti scenarij z uporabo razreda Java.
Če želi uporabnik dostopati do zbirke podatkov, lahko izbere med različnimi možnostmi priključkov, ki so na voljo za povezavo z bazo podatkov. Večina priključkov baze podatkov se prosto distribuira kot 'jar' datoteke. Ker MySQL uporabljamo kot vir podatkov, moramo prenesti jar datoteko, specifično za MySQL.
Datoteko jar lahko prenesete iz: tukaj ali tukaj.
Korak 1 : Prvi in najpomembnejši korak je konfiguriranje poti gradnje projekta in dodajanje datoteke »mysql-connector-java-3.1.13-bin.jar« kot zunanjo knjižnico.
2. korak : Ustvarite java razred z imenom 'DatabaseTesingDemo'.
3. korak : Kopirajte in prilepite spodnjo kodo v razred, ustvarjen v zgornjem koraku.
Vzorec kode
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 zgornje kode je:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Preberite različice izjave
Kje klavzula z enim pogojem
String query = “select * from userinfo where userId = '” + 1 + “‘ ”;
ResultSet res = stmt.executeQuery (poizvedba);
Izhod:
1 shruti 25 Noida
Klavzula z več pogoji
Naslov niza = 'Mumbai';
String query = “select * from userinfo where userId = '” + 2 + “‘ and userAddress =' ”+ Address +” ‘”;
ResultSet res = stmt.executeQuery (poizvedba);
Izhod:
2 shrivastava 55 Mumbai
Prikaži userId
String query = 'izberite userId iz userinfo';
ResultSet res = stmt.executeQuery (poizvedba);
Izhod:
1.
dva
Prikaži userId s klavzulo where
Naslov niza = 'Noida';
String query = “select userId, userName from userinfo where userAddress = '” + Address + ”‘ ”;
ResultSet res = stmt.executeQuery (poizvedba);
Izhod:
dva
shrivastava
Tako lahko uporabnik na enak način izvede različne poizvedbe v zbirki podatkov.
S tem naj osvetlimo tudi metode dostopnosti rezultatov.
Rezultat Dostopnost metode:
Ime metode | Opis |
---|---|
dvojni getDouble () | Metoda se uporablja za pridobivanje podatkov dvojnega tipa iz nabora rezultatov |
String getString () | Metoda se uporablja za pridobivanje podatkov vrste niza iz nabora rezultatov |
int getInt () | Metoda se uporablja za pridobivanje podatkov vrste celo število iz nabora rezultatov |
boolean getBoolean () | Metoda se uporablja za pridobitev logične vrednosti iz nabora rezultatov |
float getFloat () | Metoda se uporablja za pridobivanje podatkov vrste float iz nabora rezultatov |
long getLong () | Metoda se uporablja za pridobivanje podatkov dolgega tipa iz nabora rezultatov |
kratek getShort () | Metoda se uporablja za pridobivanje podatkov kratkega tipa iz nabora rezultatov |
Datum getDate () | Metoda se uporablja za pridobivanje predmeta tipa datum iz nabora rezultatov |
Rezultati navigacijskih metod:
Ime metode | Opis |
---|---|
boolean next () | Metoda se uporablja za premik na naslednji zapis v nizu rezultatov |
logična prejšnja () | Metoda se uporablja za premik na prejšnji zapis v nizu rezultatov |
najprej logično () | Metoda se uporablja za premik do prvega zapisa v nizu rezultatov |
logična last () | Metoda se uporablja za premik na zadnji zapis v nizu rezultatov |
logično absolutno (int rowNumber) | Metoda se uporablja za premik do določenega zapisa v nizu rezultatov |
Zaključek
V tej vadnici smo vas poskušali seznaniti s konceptom Avtomatizirano testiranje zbirke podatkov . Jasno smo poudarili tehnične posledice in potrebe testiranja baz podatkov.
Ker je bila naša celotna serija osredotočena na selenij, se lahko bralec zavede in ustvari vtis, da bi ta vadnica naučila izvajati testiranje zbirke podatkov s pomočjo selena, toda kot sem že večkrat omenil, vse, kar leži zunaj obrobja testiranja uporabniškega vmesnika , selena ne more obravnavati. Zato uvajamo API za povezljivost Java Database Connectivity (JDBC), da izvedemo preskušanje zbirke podatkov z vdelavo kode v skripte Selenium WebDriver.
JDBC omogoča, da se razred jave poveže z bazo podatkov, pridobi podatke iz baze podatkov ali dejansko izvede katero koli operacijo CRUD, manipulira s temi podatki in prekine povezavo.
Tako je vadnica osnovni vzorec izvajanja zgoraj omenjenega postopka.
Naslednja vadnica št. 29 : Nadaljujemo z naprednimi temami o selenu. V naslednji vadnici bomo obravnavali selenium GRID - ki se uporablja, kadar morate izvesti testiranje z več brskalniki in imate veliko število testnih primerov.
Priporočeno branje
- Testiranje zbirke podatkov z JMeter
- Integracija selena z JMeter
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Najboljša orodja za testiranje programske opreme 2021 (QA Test Automation Tools)
- Implementacija našega prvega skripta WebDriver - vadnica # 10 za selenium WebDriver
- Najboljši spletni tečaj Selenium WebDriver + JAVA
- Spock za integracijo in funkcionalno testiranje s selenom