Selenium Database Testing (Utilizzando WebDriver e JDBC API)

Nel nostro ultimo tutorial Selenium, abbiamo imparato come risolvere alcuni problemi ricorrenti negli script selenium. Abbiamo discusso alcuni concetti avanzati in cui avremmo a che fare con gli eventi del mouse e della tastiera, l’accesso a più link implementando elenchi.

Andando avanti con i nostri argomenti avanzati nella serie Selenium training, ti presenteremo il concetto di test del database utilizzando Selenium WebDriver.

Discuteremo i processi di base come la connessione al database, l’esecuzione di query, il recupero dei dati e la disconnessione delle istanze del database, ecc. Vorremmo anche discutere varie implicazioni pratiche in cui abbiamo bisogno di test di database con test di automazione al fine di testare gli scenari completi end-to-end.

DB testing utilizzando Selenium

Prima di andare avanti con le implicazioni tecniche associate al test automatico del database. Discutiamo alcuni scenari in cui è necessario eseguire il test del database insieme al test di automazione. Ma prima di ciò, vorrei affermare qui che il test del database è un tipo di test molto particolare mentre Selenium WebDriver è uno strumento utilizzato per simulare e automatizzare le interazioni dell’utente con l’interfaccia utente dell’applicazione.

Quindi, tecnicamente parlando, non stiamo eseguendo con precisione i test del database, ma stiamo testando la nostra applicazione in combinazione con il database per garantire che le modifiche si riflettano su entrambe le estremità identificando così i difetti precocemente.

Assolutamente tutte le applicazioni web hanno bisogno di un backend per memorizzare i dati. Database come MySQL, Oracle e SQL Server sono ragionevolmente popolari in questi giorni.

Ora tornando all’argomento originale, discutiamo alcuni scenari per esemplificare la domanda di test del database insieme ai test di automazione.

Considera i seguenti scenari

#1) A volte, ci viene richiesto di assicurarci che i dati inseriti dall’interfaccia utente si riflettano costantemente nel database. Quindi recuperiamo le informazioni dal database e verifichiamo le informazioni recuperate rispetto alle informazioni fornite dall’interfaccia utente. Ad esempio, moduli di registrazione, dati utente, profili utente, aggiornamenti ed eliminazioni di dati utente. Pertanto, lo scenario di test da automatizzare può essere “Verificare che le informazioni dell’utente vengano salvate correttamente nel database non appena l’utente si registra nell’applicazione”.

#2) Un altro caso d’uso di eseguire test di database con Selenium WebDriver può verificarsi quando l’utente viene indirizzato a caricare i dati di test o i dati attesi dal database. Pertanto, in tal caso, l’utente effettua la connessione con il database utilizzando un’API di terze parti, esegue query per recuperare i dati dal set di dati e quindi afferma i dati recuperati dal database con i dati effettivi che vengono popolati sull’interfaccia utente dell’applicazione.

#3) Un altro caso d’uso è quello di eseguire test del database associativo. Supponiamo di aver eseguito un’operazione sull’interfaccia utente dell’applicazione e vogliamo testare la riflessione nel database. È possibile che i dati interessati risiedano in varie tabelle del database a causa dell’associazione. Pertanto è sempre consigliabile testare la riflessione dei dati in tutte le aree interessate.

Selenium, come ho detto, simula le interazioni dell’utente con l’applicazione in prova. Può simulare eventi della tastiera, azioni del mouse ecc. Ma se l’utente desidera automatizzare qualsiasi cosa al di fuori delle interazioni tra browser e applicazioni Web, il selenio non può essere di grande aiuto. Pertanto, abbiamo bisogno di altri strumenti o funzionalità per eseguire test end –to –end.

Pertanto, in tutti gli scenari di cui sopra, potremmo richiedere di eseguire test del database insieme all’automazione dell’interfaccia utente. Possiamo verificare le logiche aziendali manipolando i dati e verificandone il riflesso. Possiamo anche controllare gli aspetti tecnici del Database stesso come soft delete, field validation ecc.

Andiamo ora avanti con l’effettiva implementazione. Prima di sviluppare script Selenium WebDriver per estrarre i dati dall’origine dati, creiamo dati di test nel database. Per questo tutorial, useremmo MySQL come database.

Creazione di dati di test nel database

Se non hai ancora scaricato il database, scaricalo utilizzando il link. L’utente è tenuto a seguire alcuni passaggi di base per scaricare e installare il database.

=>> Leggi questo tutorial per scaricare e installare il database MySQL.

Una volta installato correttamente il database, l’utente può avviare il prompt della riga di comando MySQL che assomiglierebbe alla seguente schermata. L’applicazione potrebbe chiedere all’utente di inserire la password. La password predefinita è “root”.

 DB test utilizzando Selenio 1

Nota: L’utente può anche trovare client basati su GUI su Internet per connettersi al database. Per citarne alcuni, l’utente può scaricare e installare il browser di query o il banco di lavoro.

Creazione di un nuovo database

Il passo successivo è quello di creare il database di test con alcune tabelle e record memorizzati in tali tabelle al fine di effettuare una connessione con il database ed eseguire query.

Passo 1) Digitare “mostra database” per visualizzare tutti i database già disponibili

mostra database;

Test DB utilizzando il selenio 2

Passo 2) Digitare “crea utente database;” per creare un database denominato “utente”.

crea utente database;

Test DB utilizzando il selenio 3

Prendere nota che il nome del database come l’utente viene creato e può essere visto nella lista dei database.

Passo 3) Digitare “usa utente;” per selezionare il database appena creato. Inoltre, digitare “Mostra tabelle;” per visualizzare tutte le tabelle disponibili nel database utente.

usa utente;
mostra tabelle;

Test DB utilizzando il selenio 4

Prendi nota che Empty set è mostrato nel risultato della query” mostra tabelle; ” poiché non c’erano tabelle disponibili all’interno del database utente.

Vediamo ora un paio di tabelle e aggiungere record in loro.

Passaggio 4) Digitare il seguente comando per creare una tabella con 4 campi / colonne (UserID, userName, userAge, userAddress).

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

DB test di Selenio 5

Il passo successivo è quello di aggiungere alcuni record di dati nella “userinfo” tabella.

Passo 5) Digitare il seguente comando per inserire i dati nella tabella una tabella per tutti i quattro campi 4 campi/colonne (UserID, userName, userAge, userAddress).

insert into userinfo (id utente, nome utente, userAge, userAddress) values (‘1’, ‘shruti’, ’25’, ‘Noida’);

Per visualizzare i dati, digitare il seguente comando:

select * from userinfo;

DB test di Selenio 6

allo stesso modo, è possibile aggiungere più dati a una tabella e possono creare altre tabelle.

Ora, che abbiamo creato il nostro database. Possiamo andare avanti e capire l’implementazione di query automatizzate per recuperare i record dal database.

Come abbiamo anche ripetuto in precedenza, Selenium WebDriver è uno strumento per l’automazione dell’interfaccia utente. Pertanto, Selenium WebDriver da solo non è idoneo per eseguire il test del database, ma ciò può essere fatto utilizzando Java Database Connectivity API (JDBC). L’API consente all’utente di connettersi e interagire con l’origine dati e recuperare i dati con l’aiuto di query automatiche. Per poter sfruttare l’API JDBC, è necessario disporre di Java Virtual Machine (JVM) in esecuzione sul sistema.

JDBC Flusso di lavoro

DB test di Selenio 7

Si dovrebbe tenere la nostra attenzione allineati con i seguenti processi:

  1. Creazione di una connessione con il database
  2. l’Esecuzione di query e aggiornare le istruzioni per estrarre/recupero dati (Operazioni CRUD)
  3. Uso e la manipolazione di dati estratti da un Database in forma di set di risultati. (Set di risultati è una raccolta di dati organizzati in righe e colonne)
  4. Disconnessione della connessione al database.

Come detto in precedenza, per poter testare automaticamente il database dai nostri script di test Selenium WebDriver, ci collegheremo al database tramite la connettività JDBC all’interno dei nostri script di test. Post alla connessione, possiamo attivare il maggior numero di operazioni CRUD (Creare, Leggere, aggiornare ed eliminare) sul database.

In questo tutorial, discuteremo “Leggi l’operazione e le sue varianti” e sulla loro implementazione nello script Selenium WebDriver. Ma prima di questo, controlliamo manualmente lo scenario di test usando la “riga di comando MySQL”.

Scenario:

1) Aprire il server di database e connettersi al database “utente”.

2) Elenca tutti i record dalla tabella “userinfo”.

Sintassi: selezionare * da userinfo;

Test DB utilizzando il selenio 8

3) Chiudere la connessione al database.

Si noti che la query di lettura elencherà tutti i dati utente presenti nella tabella userinfo. La tabella è composta dalle seguenti colonne.

  • UserID
  • userAddress
  • userAge
  • userAddress

Il risultato mostra anche che è presente un solo set di dati all’interno della tabella.

Ora, eseguiamo lo stesso scenario usando la classe Java.

Per poter accedere al Database, l’utente è sfruttato per scegliere tra le diverse opzioni di connettore disponibili per connettersi al database. La maggior parte dei connettori del database sono distribuiti liberamente come file “jar”. Poiché stiamo usando MySQL come fonte di dati, quindi ci viene richiesto di scaricare il file jar specifico per MySQL.

Il file jar può essere scaricato da: qui o qui.

Passo 1: Il primo passo è configurare il percorso di compilazione del progetto e aggiungere “mysql-connector-java-3.1.13-bin.file jar ” come libreria esterna.

Passaggio 2: Creare una classe java denominata “DatabaseTesingDemo”.

Passo 3: copia e incolla il codice sottostante nella classe creata nel passaggio precedente.

Esempio di codice

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

L’uscita del codice di cui sopra è:

1 shruti 25 Noida
2 shrivastava 55 Mumbai

Leggi varianti di istruzioni

Dove clausola con singola condizione

String query = “select * from userinfo where UserID='” + 1 + “‘”;
Set di risultati res = stmt.executeQuery(query);

Output:
1 shruti 25 Noida

Clausola Where con più condizioni

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

Uscita:
2 shrivastava 55 Mumbai

Visualizza ID utente

String query = “seleziona ID utente da userinfo”;
ResultSet res = stmt.executeQuery (query);

Uscita:
1
2

Visualizza l’ID utente con la clausola where

String Address =”Noida”;
String query = “select UserID,userName from userinfo where userAddress='”+Address+”‘”;
ResultSet res = stmt.executeQuery (query);

Output:
2
shrivastava

Così, allo stesso modo l’utente può eseguire varie query sul database.

Con questo, facciamo luce anche sui metodi di accessibilità dei risultati.

Metodi di accessibilità dei risultati:

nome del Metodo Descrizione
Stringa il metodo getString() Metodo è utilizzato per recuperare i dati di tipo stringa dal set di risultati
int getInt() Metodo è utilizzato per recuperare l’intero tipo di dati dal set di risultati
boolean getBoolean() Metodo è utilizzato per recuperare il valore booleano dal set di risultati
float getFloat() Metodo è utilizzato per recuperare il galleggiante tipo di dati dal set di risultati
lungo getLong() Metodo è utilizzato per recuperare il lungo tipo di dati dal set di risultati
breve getShort() Metodo è utilizzato per recuperare il breve tipo di dati dal set di risultati
doppio getDouble() Metodo è utilizzato per recuperare il doppio tipo di dati dal set di risultati
Data getDate() Metodo è utilizzato per recuperare la Data tipo oggetto dal set di risultati

Risultato dei Metodi di Navigazione:

nome del Metodo Descrizione
boolean next() Metodo viene utilizzato per passare al record successivo nel set di risultati
boolean precedente() Metodo viene utilizzato per spostare il record precedente nel set di risultati
boolean primo() Metodo viene utilizzato per spostare il primo record nel set di risultati
boolean last() Metodo viene utilizzato per spostare l’ultimo record nel set di risultati
boolean
absolute (int rowNumber)
Metodo viene utilizzato per passare al record specifico nel set di risultati

Conclusione

Attraverso questo tutorial, abbiamo cercato di farvi conoscere il concetto di test del database automatizzato. Abbiamo chiaramente posto l’accento sulle implicazioni tecniche e le esigenze del test del database.

Poiché tutta la nostra serie era focalizzata sul Selenio, il lettore potrebbe essere fuorviato e può creare l’impressione che questo tutorial insegnerebbe a eseguire test del database usando il Selenio, ma come ho detto un certo numero di volte prima, tutto ciò che si trova al di fuori della periferia del test dell’interfaccia utente, non può essere gestito da Selenio. Pertanto introduciamo l’API Java Database Connectivity (JDBC) per eseguire test del database incorporando il codice all’interno degli script Selenium WebDriver.

JDBC consente alla classe java di connettersi al database, recuperare i dati dal database o, di fatto, eseguire qualsiasi operazione CRUD, manipolare i dati risultanti e chiudere la connessione.

Pertanto, il tutorial costituisce l’implementazione di base del processo sopra menzionato.

Prossimo tutorial #29: Andremo avanti con argomenti avanzati di selenio. Nel prossimo tutorial, copriremo la GRIGLIA di selenio, che viene utilizzata quando è necessario eseguire test multi-browser e si dispone di un gran numero di casi di test.

Ultimo aggiornamento: 29 novembre 2021

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.