selenium database testing using webdriver
Al nostre últim tutorial de Selenium, vam aprendre a fer-ho solucionar alguns problemes recurrents en scripts de seleni . Vam discutir alguns conceptes avançats en què tractaríem els esdeveniments del ratolí i del teclat, accedint a diversos enllaços mitjançant la implementació de llistes.
Avançar amb el nostre temes avançats de la sèrie de formació Selenium , us presentarem el concepte de Proves de bases de dades mitjançant Selenium WebDriver.
Discutiríem els processos bàsics com la connexió a la base de dades, l'execució de consultes, la recuperació de dades i la desconnexió d'instàncies de bases de dades, etc. completar escenaris d'extrem a extrem.
Abans de seguir endavant amb les implicacions tècniques associades a les proves de bases de dades automatitzades. Analitzem alguns escenaris en què necessitem realitzar proves de base de dades juntament amb les proves d'automatització. Abans, però, voldria afirmar aquí que la prova de bases de dades és un tipus de prova molt peculiar, mentre que Selenium WebDriver és una eina que s’utilitza per simular i automatitzar les interaccions dels usuaris amb la interfície d’usuari de l’aplicació.
Per tant, tècnicament parlant no estem realitzant proves de base de dades amb precisió, sinó que estem provant la nostra aplicació juntament amb la base de dades per tal de garantir que els canvis es reflecteixin en els dos extrems, identificant així els defectes abans.
Absolutament totes les aplicacions web necessiten un backend per emmagatzemar les dades. Bases de dades com MySQL, Oracle i SQL Server són avui bastant populars.
Ara tornem al tema original, anem a discutir alguns escenaris per exemplificar la demanda de proves de base de dades junt amb les proves d'automatització.
Què aprendreu:
- Penseu en els escenaris següents
- Creació de dades de proves a la base de dades
- Creació de nova base de dades
- Conclusió
- Lectura recomanada
Penseu en els escenaris següents
# 1) De vegades, hem d’assegurar-nos que les dades introduïdes des de la IU es reflecteixen constantment a la base de dades. Així, recuperem la informació de la base de dades i comprovem la informació recuperada amb la informació subministrada des de la IU. Per exemple, formularis de registre, dades d’usuari, perfils d’usuari, actualitzacions i eliminacions de dades d’usuari. Per tant, l'escenari de prova per automatitzar pot ser 'Per verificar que la informació de l'usuari es desi correctament a la base de dades tan bon punt l'usuari es registri a l'aplicació'.
# 2) Un altre cas d'ús de realitzar proves de bases de dades amb Selenium WebDriver pot sorgir quan es dirigeix a l'usuari a carregar les dades de prova o les dades esperades de la base de dades. Per tant, en aquest cas, l'usuari establiria la connexió amb la base de dades mitjançant una API de tercers, executaria consultes per recuperar dades del conjunt de dades i, a continuació, afirmaria les dades obtingudes de la base de dades amb les dades reals que es poblen a la IU de l'aplicació. .
# 3) Un altre cas d'ús és realitzar proves associatives de bases de dades. Suposem que hem realitzat una operació a la interfície d’usuari de l’aplicació i volem provar la reflexió a la base de dades. Pot ser que les dades afectades es trobin en diverses taules de la base de dades a causa de l'associació. Per tant, sempre és aconsellable provar la reflexió de dades a totes les zones afectades.
El seleni, com he dit, simula les interaccions de l'usuari amb l'aplicació que es prova. Pot simular esdeveniments de teclat, accions del ratolí, etc. Però si l'usuari vol automatitzar qualsevol cosa fora de les interaccions navegador-aplicació web, el seleni no pot ser de gran ajuda. Per tant, necessitem altres eines o capacitats per realitzar proves d’extrem a extrem.
Per tant, en tots els escenaris anteriors, és possible que hàgim de realitzar proves de base de dades juntament amb Automatització de la IU. Podem comprovar les lògiques empresarials manipulant les dades i verificant-ne la reflexió. També podem comprovar els aspectes tècnics de la mateixa base de dades, com ara supressió suau, validació de camps, etc.
Avancem ara amb la implementació real. Abans de desenvolupar scripts Selenium WebDriver per extreure dades de la font de dades, creem dades de prova a la base de dades. Per a aquest tutorial, faríem servir MySQL com a base de dades.
Creació de dades de proves a la base de dades
Si encara no heu baixat la base de dades, descarregueu-la mitjançant enllaç . S'espera que l'usuari segueixi alguns passos bàsics per descarregar i instal·lar la base de dades.
= >> Llegiu aquest tutorial a descarregar i instal·lar la base de dades MySQL .
Quan la base de dades s’instal·li correctament, l’usuari pot iniciar l’indicatiu de línia de comandes MySQL, que semblaria la següent captura de pantalla. L'aplicació pot demanar a l'usuari que introdueixi la contrasenya. La contrasenya per defecte és 'root'.
Nota : L'usuari també pot trobar clients basats en GUI a través d'Internet per connectar-se amb la base de dades. Per esmentar-ne alguns, l’usuari pot descarregar i instal·lar el navegador de consultes o el banc de treball.
Creació de nova base de dades
El següent pas és crear la base de dades de prova amb algunes taules i registres emmagatzemats en aquestes taules per establir una connexió amb la base de dades i executar consultes.
què és un fitxer torrent i com l'obro
Pas 1) Escriviu 'mostra bases de dades' per veure totes les bases de dades ja disponibles
mostrar bases de dades;
Pas 2) Escriviu 'crear usuari de base de dades;' per crear una base de dades anomenada 'usuari'.
crear un usuari de base de dades;
Tingueu en compte que el nom de la base de dades a mesura que es crea l'usuari es pot veure a la llista de bases de dades.
Pas 3) Escriviu 'use user;' per seleccionar la base de dades recentment creada. A més, escriviu 'mostra taules;' per veure totes les taules disponibles a la base de dades d'usuaris.
utilitzar l'usuari;
mostrar taules;
Tingueu en compte que el conjunt buit es mostra al resultat de les 'taules de mostra'; consulta ja que no hi havia taules disponibles a la base de dades d'usuaris.
Permeteu-nos ara algunes taules i afegiu-hi registres.
Pas 4) Escriviu l'ordre següent per crear una taula amb 4 camps / columnes (userId, userName, userAge, userAddress).
crear informació d'usuari de la taula
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar (255)
);
El següent pas és afegir alguns registres de dades a la taula 'userinfo'.
Pas 5) Escriviu l'ordre següent per inserir dades a la taula una taula per als quatre camps / columnes de quatre camps (userId, userName, userAge, userAddress).
inseriu a userinfo (userID, userName, userAge, userAddress) valors ('1', 'shruti', '25', 'Noida');
Per veure les dades afegides, escriviu l'ordre següent:
seleccioneu * a userinfo;
De la mateixa manera, podeu afegir més dades a la taula i també podeu crear altres taules.
Ara, ja hem creat la nostra base de dades. Podem avançar i comprendre el implementació de consultes automatitzades per obtenir els registres de la base de dades.
Com també hem iterat anteriorment, Selenium WebDriver és una eina per a l'automatització de la interfície d'usuari. Per tant, Selenium WebDriver només no és apte per realitzar proves de bases de dades, però es pot fer mitjançant Java Database Connectivity API (JDBC). L'API permet a l'usuari connectar-se i interactuar amb la font de dades i obtenir-les amb l'ajut de consultes automatitzades. Per poder explotar l'API JDBC, cal que tingueu a màquina virtual Java (JVM) al sistema.
Flux de treball JDBC
Mantindríem el nostre enfocament alineat amb els processos següents:
- Creació d’una connexió amb la base de dades
- Executar consultes i actualitzar sentències per extreure / recuperar dades (Operacions CRUD)
- Ús i manipulació de les dades extretes de la base de dades en forma de conjunt de resultats. (El conjunt de resultats és una col·lecció de dades organitzades a les files i columnes)
- Desconnectant la connexió de la base de dades.
Com s’ha dit anteriorment, per poder provar la base de dades automàticament des dels nostres scripts de prova Selenium WebDriver, ens connectaríem amb la base de dades mitjançant la connectivitat JDBC dins dels nostres scripts de prova. Publicat a la connexió, podem activar tantes operacions CRUD (crear, llegir, actualitzar i suprimir) a la base de dades.
En aquest tutorial, parlaríem sobre 'Llegir l'operació i les seves variants' i sobre la seva implementació a l'script Selenium WebDriver. Abans d'això, anem a comprovar l'escenari de prova manualment mitjançant la 'línia d'ordres MySQL'.
Escenari:
1) Obriu el servidor de bases de dades i connecteu-vos a la base de dades 'usuari'.
2) Enumereu tots els registres de la taula 'userinfo'.
Sintaxi: seleccioneu * a userinfo;
3) Tanqueu la connexió a la base de dades.
Tingueu en compte que la consulta de lectura mostrarà totes les dades d’usuari presents a la taula d’informació d’usuari. La taula consta de les columnes següents.
- ID d'usuari
- nom d'usuari
- userAge
- Adreça d’usuari
El resultat també mostra que només hi ha un únic conjunt de dades a la taula.
Ara, executem el mateix escenari amb la classe Java.
Per poder accedir a la base de dades, l'usuari es pot aprofitar per triar entre les diverses opcions de connectors disponibles per connectar-se amb la base de dades. La majoria dels connectors de la base de dades es distribueixen lliurement com a fitxers 'jar'. Com que fem servir MySQL com a font de dades, per tant, hem de descarregar el fitxer jar específic de MySQL.
El fitxer jar es pot descarregar des de: aquí o bé aquí.
Pas 1 : El primer pas i principal és configurar el camí de construcció del projecte i afegir el fitxer 'mysql-connector-java-3.1.13-bin.jar' com a biblioteca externa.
Pas 2 : Creeu una classe java anomenada 'DatabaseTesingDemo'.
Pas 3 : Copieu i enganxeu el codi següent a la classe creada al pas anterior.
configuració eclipsi per a c ++
Mostra de codi
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(); } } }
La sortida del codi anterior és:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Llegiu les variants de les declaracions
Clàusula Where amb condició única
Consulta de cadena = 'seleccioneu * a userinfo on userId = '' + 1 + ''';
ResultSet res = stmt.executeQuery (consulta);
Sortida:
1 shruti 25 Noida
Clàusula Where amb múltiples condicions
String Address = 'Mumbai';
Consulta de cadena = 'seleccioneu * a userinfo on userId = '' + 2 + '' i userAddress = '' + Adreça + ''';
ResultSet res = stmt.executeQuery (consulta);
Sortida:
2 shrivastava 55 Mumbai
Mostra UserId
Consulta de cadena = 'seleccioneu userId de userinfo';
ResultSet res = stmt.executeQuery (consulta);
Sortida:
1
2
Mostra UserId amb la clàusula where
String Address = 'Noida';
Consulta de cadena = 'seleccioneu UserId, userName a userinfo on userAddress = '' + Adreça + ''';
ResultSet res = stmt.executeQuery (consulta);
Sortida:
2
shrivastava
Així, de la mateixa manera l'usuari pot executar diverses consultes a la base de dades.
Amb això, deixem una mica de llum sobre els mètodes d’accessibilitat dels resultats.
Mètodes d’accessibilitat als resultats:
Nom del mètode | Descripció |
---|---|
doble getDouble () | S’utilitza un mètode per obtenir les dades de doble tipus del conjunt de resultats |
String getString () | El mètode s’utilitza per obtenir les dades del tipus de cadena del conjunt de resultats |
int getInt () | El mètode s'utilitza per obtenir les dades del tipus enter del conjunt de resultats |
booleà getBoolean () | S’utilitza un mètode per obtenir el valor booleà del conjunt de resultats |
float getFloat () | El mètode s'utilitza per obtenir les dades del tipus flotant del conjunt de resultats |
llarg getLong () | El mètode s’utilitza per obtenir les dades de tipus llarg del conjunt de resultats |
short getShort () | El mètode s’utilitza per obtenir les dades de tipus curt del conjunt de resultats |
Data getDate () | El mètode s’utilitza per obtenir l’objecte tipus Data del conjunt de resultats |
Mètodes de navegació de resultats:
Nom del mètode | Descripció |
---|---|
booleà next () | S’utilitza el mètode per passar al següent registre del conjunt de resultats |
booleà anterior () | S’utilitza un mètode per passar al registre anterior del conjunt de resultats |
booleà primer () | S’utilitza un mètode per passar al primer registre del conjunt de resultats |
booleà últim () | S’utilitza el mètode per passar a l’últim registre del conjunt de resultats |
booleà absolut (int rowNumber) | S’utilitza un mètode per passar al registre específic del conjunt de resultats |
Conclusió
Mitjançant aquest tutorial, hem intentat fer-vos conèixer el concepte de Proves automatitzades de bases de dades . Vam posar èmfasi clarament en les implicacions tècniques i les necessitats de les proves de bases de dades.
Com que tota la nostra sèrie es va centrar en Selenium, el lector pot resultar enganyat i pot donar la impressió que aquest tutorial ensenyaria a realitzar proves de base de dades mitjançant Selenium, però com he esmentat diverses vegades abans, qualsevol cosa que es trobi fora de la perifèria de les proves de la IU , no pot ser manejat per Selenium. Per tant, introduïm l'API Java Database Connectivity (JDBC) per tal de realitzar proves de base de dades incrustant el codi als scripts Selenium WebDriver.
JDBC permet que la classe java es connecti a la base de dades, recuperi dades de la base de dades o, de fet, realitzi alguna de les operacions CRUD, manipuli les dades resultants i tanqui la connexió.
Per tant, el tutorial constitueix la implementació bàsica de la mostra del procés esmentat anteriorment.
Pròxim tutorial núm. 29 : Seguirem endavant amb temes avançats de seleni. En el següent tutorial, tractarem el Selenium GRID, que s’utilitza quan heu de realitzar proves de diversos navegadors i teniu un gran nombre de casos de prova.
Lectura recomanada
- Proves de bases de dades amb JMeter
- Integració de seleni amb JMeter
- Tutorial de Cogombre Selenium: Integració de Cogombre Java Selenium WebDriver
- Introducció a Selenium WebDriver - Tutorial Selenium núm. 8
- Les millors eines de prova de programari 2021 (Eines d'automatització de proves de control de qualitat)
- Implementació del nostre primer script WebDriver - Tutorial Selenium WebDriver # 10
- El millor curs de formació en línia Selenium WebDriver + JAVA
- Spock per a la integració i proves funcionals amb seleni