Seleenitietokannan testaus (käyttäen WebDriver ja JDBC API)

viimeisessä Seleeniopetuksessa opimme vianmäärityksen joistakin toistuvista ongelmista selenium-skripteissä. Keskustelimme joitakin ennakkokäsitteitä, joissa käsittelemme hiiren ja näppäimistön tapahtumia, pääsy useita linkkejä toteuttamalla luetteloita.

Edetessämme selenium training-sarjan edistyneiden aiheiden kanssa esittelemme teille Tietokantatestauksen käsitteen Selenium Webdriverillä.

keskustelimme perusprosesseista, kuten tietokantayhteydestä, kyselyjen suorittamisesta, tietojen hakemisesta ja tietokantaesiintymien irrottamisesta jne. Keskustelisimme myös erilaisista käytännön vaikutuksista, joissa tarvitsemme Tietokantatestausta automaatiotestauksella, jotta voimme testata kaikkia päästä päähän-skenaarioita.

DB-testaus käyttäen seleeniä

ennen kuin jatketaan automaattiseen Tietokantatestaukseen liittyviä teknisiä vaikutuksia. Keskustelkaamme muutamia skenaarioita, joissa vaadimme suorittaa tietokannan testaus yhdessä automaation testaus. Mutta ennen sitä, haluaisin vakuuttaa täällä, että tietokannan testaus on hyvin erikoinen tyyppi testaus taas seleeni WebDriver on työkalu, jota käytetään simuloimaan ja automatisoimaan käyttäjän vuorovaikutusta sovelluksen UI.

joten teknisesti ottaen emme tarkasti suorittaa tietokannan testaus pikemminkin testaamme sovelluksemme yhdessä tietokannan, jotta varmistetaan, että muutokset näkyvät molemmissa päissä siten tunnistaa vikoja aikaisin.

ehdottomasti kaikki verkkosovellukset tarvitsevat taustajärjestelmän tietojen tallentamiseen. Tietokannat, kuten MySQL, Oracle, ja SQL Server ovat kohtuullisen suosittuja näinä päivinä.

palataan nyt alkuperäiseen aiheeseen ja keskustellaan muutamasta skenaariosta, jotka valaisevat Tietokantatestauksen kysyntää Automaatiotestauksen ohella.

harkitse seuraavia skenaarioita

#1) toisinaan meidän on varmistettava, että käyttöliittymästä syötetyt tiedot näkyvät johdonmukaisesti tietokannassa. Näin haemme tiedot tietokannasta ja verifioimme haetut tiedot käyttöliittymästä toimitettuihin tietoihin nähden. Esimerkiksi rekisteröintilomakkeet, käyttäjätiedot, käyttäjäprofiilit, päivitykset ja käyttäjätietojen poistot. Näin ollen automatisoitavana testiskenaariona voi olla ”varmistaa, että käyttäjän tiedot tallennetaan onnistuneesti tietokantaan heti, kun käyttäjä rekisteröityy sovellukseen”.

#2) toinen käyttötapaus tietokannan testauksesta Selenium Webdriverillä voi syntyä, kun käyttäjää ohjataan lataamaan testitiedot tai odotetut tiedot tietokannasta. Näin, tällaisessa tapauksessa, käyttäjä tekisi yhteyden tietokantaan käyttämällä kolmannen osapuolen API, suorittaa kyselyitä hakea tietoja dataset ja sitten väittää tiedot haetaan tietokannasta todellisia tietoja, jotka on kansoitettu sovelluksen UI.

#3) toinen käyttötapaus on tehdä assosiatiivinen Tietokantatestaus. Oletetaan, että suoritimme toiminnon sovelluksen käyttöliittymässä, ja haluamme testata heijastusta tietokannassa. Voi olla niin, että vaikuttunut aineisto sijaitsee tietokannan eri taulukoissa assosiaation vuoksi. Siksi on aina suositeltavaa testata tietojen heijastus kaikilla vaikutti alueilla.

seleeni, kuten sanoin, simuloi käyttäjän vuorovaikutusta testattavan sovelluksen kanssa. Se voi simuloida näppäimistön tapahtumia, hiiren toimia jne. Mutta jos käyttäjä haluaa automatisoida mitään muualla kuin selaimen ja verkkosovelluksen vuorovaikutusten läheisyydessä, seleenistä ei voi olla paljon apua. Näin ollen tarvitsemme muita työkaluja tai valmiuksia päästä päähän –testaukseen.

näin ollen kaikissa edellä mainituissa skenaarioissa saatetaan vaatia Tietokantatestausta KÄYTTÖLIITTYMÄAUTOMAATION ohella. Voimme tarkistaa liiketoiminnan logiikan manipuloimalla tietoja ja varmistamalla niiden heijastuksen. Voimme myös tarkistaa itse tietokannan tekniset näkökohdat, kuten soft delete, field validation jne.

edetkäämme nyt varsinaisessa täytäntöönpanossa. Ennen Selenium WebDriver skriptejä poimia tietoja tietolähteestä, meidän luoda testitietoja tietokantaan. Tätä opetusohjelma, käyttäisimme MySQL tietokantana.

testitietojen luominen tietokantaan

jos et ole vielä ladannut tietokantaa, lataa se linkin kautta. Käyttäjän odotetaan noudattavan joitakin perusvaiheita tietokannan lataamiseksi ja asentamiseksi.

=>> Lue tämä opetusohjelma ladata ja asentaa MySQL tietokanta.

kun tietokanta on asennettu onnistuneesti, käyttäjä voi käynnistää MySQL-Komentorivikehotteen, joka näyttäisi seuraavalta kuvakaappaukselta. Sovellus saattaa pyytää käyttäjää syöttämään salasanan. Oletussalasana on ”root”.

 dB-testaus seleenillä 1

Huomautus: käyttäjä voi myös löytää GUI-pohjaisia asiakkaita internetin kautta yhteyden tietokantaan. Muutamia mainitaksemme käyttäjä voi ladata ja asentaa Kyselyselaimen tai Työpenkin.

uuden tietokannan luominen

seuraava vaihe on luoda testitietokanta, johon on tallennettu muutamia taulukoita ja tietueita, jotta voidaan muodostaa yhteys tietokantaan ja suorittaa kyselyjä.

Vaihe 1) kirjoita ”näytä tietokannat” nähdäksesi kaikki jo saatavilla olevat tietokannat

Näytä tietokannat;

DB-testaus seleenin avulla 2

Vaihe 2) Kirjoita ” luo tietokannan käyttäjä; ”luoda tietokannan nimeltä”käyttäjä”.

luo tietokannan käyttäjä;

DB-testaus seleenin avulla 3

huomaa, että tietokannan nimi käyttäjänä on luotu ja se näkyy tietokantojen luettelossa.

Vaihe 3) Kirjoita ”use user;” valitaksesi uuden tietokannan. Kirjoita myös ”Näytä taulukot;” nähdäksesi kaikki käyttäjätietokannassa olevat taulukot.

use user;
Näytä taulukot;

DB-testaus seleenin avulla 4

huomaa, että tyhjä joukko näkyy ”Näytä taulukot;” – kyselyn tuloksessa, koska käyttäjätietokannassa ei ollut taulukoita käytettävissä.

let us now a few tables and add records in them.

Vaihe 4) kirjoita seuraava komento luodaksesi taulukon, jossa on 4 kenttää/saraketta (userId, userName, userAge, userAddress).

create table userinfo
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar(255)
);

DB-testaus seleenin avulla 5

seuraava askel on lisätä joitakin tietueita ”userinfo” – taulukkoon.

Vaihe 5) kirjoita seuraava komento lisätäksesi taulukkoon taulukon kaikille neljälle kentälle 4 kenttää/saraketta (userId, userName, userAge, userAddress).

lisää userinfo (userID, userName, userAge, userAddress) – arvoihin (”1”, ”shruti”, ”25”, ”Noida”);

nähdäksesi lisätyt tiedot, kirjoita seuraava komento:

valitse * userinfosta;

DB-testaus seleenin avulla 6

samoin, voit lisätä enemmän tietoa taulukkoon ja voi luoda muita taulukoita sekä.

nyt, että olemme luoneet tietokantamme. Voimme edetä ja ymmärtää täytäntöönpanoa automaattisia kyselyitä hakea tietueita tietokannasta.

kuten myös aiemmin toistimme, selenium WebDriver on käyttöliittymien automaation työkalu. Näin, Selenium WebDriver yksin ei ole oikeutettu suorittamaan tietokannan testaus, mutta tämä voidaan tehdä Java Database Connectivity API (JDBC). API: n avulla käyttäjä voi muodostaa yhteyden tietolähteeseen ja olla vuorovaikutuksessa sen kanssa sekä noutaa tiedot automaattisten kyselyiden avulla. Voidakseen hyödyntää JDBC API, se on oltava Java Virtual Machine (JVM) käynnissä järjestelmässä.

JDBC Workflow

DB-testaus seleenin avulla 7

pidämme painopisteemme linjassa seuraavien prosessien kanssa:

  1. luodaan yhteys tietokantaan
  2. suoritetaan kyselyjä ja päivitysilmoituksia tietojen poimimiseksi/hakemiseksi (CRUD-operaatiot)
  3. käyttäen ja manipuloimalla tietokannasta tulosjoukon muodossa saatuja tietoja. (Tulosjoukko on riveihin ja sarakkeisiin järjestetty tiedonkeruu)
  4. tietokantayhteyden katkaiseminen.

kuten aiemmin todettiin, jotta voisimme testata tietokantaa automaattisesti Selenium WebDriver – testiskripteistämme, muodostaisimme yhteyden tietokantaan JDBC-yhteyden kautta testiskripteissämme. Lähetä yhteyden, voimme laukaista niin monta CRUD (luoda, lukea, päivittää, ja poistaa) toimintoja tietokantaan.

tässä opetusohjelmassa keskustelisimme ”Lukuoperaatiosta ja sen muunnelmista” ja niiden toteutuksesta Selenium WebDriver-skriptissä. Mutta ennen sitä, tarkastakaamme testi skenaario manuaalisesti käyttäen ”MySQL komentorivi”.

skenaario:

1) Avaa tietokantapalvelin ja muodosta yhteys ”käyttäjä” – tietokantaan.

2) listaa kaikki levyt ”userinfo” – taulukosta.

syntaksi: valitse * userinfosta;

DB-testaus seleenin avulla 8

3) Sulje tietokantayhteys.

huomaa, että lukupyyntö listaa alas kaikki käyttäjätiedot, jotka ovat userinfo-taulukossa. Taulukko koostuu seuraavista sarakkeista.

  • userId
  • userage
  • userAge
  • userAddress

tulos osoittaa myös, että taulukossa on vain yksi tietojoukko.

nyt, toteuttakaamme sama skenaario Java-luokalla.

voidakseen käyttää tietokantaa, käyttäjä on käytettävissä valita erilaisia liitinvaihtoehtoja yhteyden tietokantaan. Suurin osa tietokantaliittimistä on vapaasti jaettavissa ” jar ” – tiedostoina. Koska käytämme MySQL tietolähteenä, siksi meidän on ladattava jar-tiedosto, joka on tarkoitettu MySQL: lle.

jar-tiedoston voi ladata täältä tai täältä.

Vaihe 1: Ensimmäinen ja tärkein vaihe on määrittää projektin rakentamispolku ja lisätä ”mysql-liitin-java-3.1.13-bin.jar ” – tiedosto ulkoisena kirjastona.

Vaihe 2: Luo java-luokka, jonka nimi on ”DatabaseTesingDemo”.

Vaihe 3: Kopioi ja liitä alla oleva koodi yllä olevassa vaiheessa luotuun luokkaan.

Koodinäyte

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(); } }}

yllä olevan koodin ulostulo on:

1 shruti 25 Noida
2 shrivastava 55 Mumbai

Read Statement Variants

Where clause with single condition

String query = ” select * from userinfo where userId='” + 1 + ”’”;
ResultSet res = stmt.executeQuery(query);

Lähtö:
1 shruti 25 Noida

Where clause with multiple conditions

String Address =”Mumbai”;
String query = ”select * from userinfo where userId=” ” + 2 + ””and userAddress=” ” +Address+””;
ResultSet res = stmt.executeQuery (query);

Output:
2 shrivastava 55 Mumbai

Näyttökäyttäjä

String query = ”valitse käyttäjätunnus käyttäjäinfosta”;
tulokset res = stmt.executeQuery (query);

Output:
1
2

Näytä käyttäjätunnus, jossa lauseke

String Address = ”Noida”;
String query = ”valitse käyttäjätunnus,käyttäjänimi käyttäjäninfosta jossa userAddress=””+Address+””;
ResultSet res = stmt.executeQuery (query);

Lähtö:
2
shrivastava

näin ollen käyttäjä voi samalla tavalla suorittaa erilaisia kyselyitä tietokannassa.

Valottakaamme tämän avulla myös tulosten saavutettavuusmenetelmiä.

Tulosten Saavutettavuusmenetelmät:

menetelmän nimi kuvaus
String getString () menetelmää käytetään merkkijonotyypin tietojen hakemiseen tulosjoukosta
int getInt () menetelmällä haetaan kokonaislukutyypin tiedot tulosjoukosta
boolean getBoolean () menetelmällä haetaan boolean-arvo tulosjoukosta
float getFloat () menetelmää käytetään float-tyypin tietojen hakemiseen tulosjoukosta
pitkä getLong () menetelmää käytetään pitkän tyypin tietojen hakemiseen tulosjoukosta
short getShort () menetelmää käytetään hakemaan lyhyen tyypin tiedot tulosjoukosta
double getDouble () menetelmällä haetaan tulosjoukosta kaksoistyypin tiedot
Date getDate () menetelmää käytetään hakemaan päivämäärän tyyppi objekti tulosjoukosta

Tulossuunnistusmenetelmät:

menetelmän nimi kuvaus
boolean next () menetelmällä siirrytään tulosjoukossa seuraavaan ennätykseen
boolean previous () menetelmällä siirrytään tulosjoukon edelliseen ennätykseen
boolean first () menetelmällä siirrytään tulosjoukon ensimmäiseen ennätykseen
boolean last () menetelmällä siirrytään tulosjoukon viimeiseen ennätykseen
boolean
absoluuttinen (int riviluku)
menetelmällä siirrytään tulosjoukon erityiseen ennätykseen

johtopäätös

tämän opetusohjelman kautta yritimme tutustuttaa sinut automaattisen Tietokantatestauksen käsitteeseen. Korostimme selvästi Tietokantatestauksen teknisiä vaikutuksia ja tarpeita.

koska koko sarjamme keskittyi seleeniin, lukija voi saada harhaan ja voi luoda vaikutelman, että tämä opetusohjelma opettaisi suorittamaan Tietokantatestausta seleenin avulla, mutta kuten mainitsin useita kertoja aiemmin, seleeni ei voi käsitellä mitään, mikä sijaitsee KÄYTTÖLIITTYMÄTESTAUKSEN reuna-alueiden ulkopuolella. Siksi otamme käyttöön Java Database Connectivity (JDBC) API, jotta voidaan suorittaa tietokannan testaus upottamalla koodi Selenium WebDriver skriptejä.

JDBC mahdollistaa java-luokan yhteyden tietokantaan, datan hakemisen tietokannasta tai itse asiassa minkä tahansa CRUD-operaation suorittamisen, tuloksena olevan datan manipuloinnin ja yhteyden sulkemisen.

näin opetusohjelma muodostaa edellä mainitun prosessin perusotoksen.

seuraava opetusohjelma #29: etenemme edistyneillä Seleeniaiheilla. Seuraavassa opetusohjelmassa katamme Seleeniruudukon – jota käytetään, kun sinun on suoritettava usean selaimen testaus ja sinulla on suuri määrä testitapauksia.

Viimeksi Päivitetty: 29. Marraskuuta 2021

Leave a Reply

Sähköpostiosoitettasi ei julkaista.