selenium database testing using webdriver
Nel nostro ultimo tutorial sul selenio, abbiamo imparato come farlo risolvere alcuni problemi ricorrenti negli script di selenio . Abbiamo discusso alcuni concetti avanzati in cui avremmo affrontato gli eventi del mouse e della tastiera, accedendo a più collegamenti mediante l'implementazione di elenchi.
Andando avanti con il nostro argomenti avanzati nella serie di formazione Selenium , ti presenteremo il concetto di Test di database utilizzando Selenium WebDriver.
Discuteremmo i processi di base come la connessione al database, l'esecuzione di query, il recupero di dati e la disconnessione di istanze di database ecc. Discuteremmo anche varie implicazioni pratiche in cui abbiamo bisogno di test di database con test di automazione per testare il scenari completi end-to-end.
Prima di andare avanti con le implicazioni tecniche associate al test automatizzato del database. Parliamo di 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 il test del database, piuttosto stiamo testando la nostra applicazione insieme al database per garantire che le modifiche si riflettano su entrambe le estremità, identificando così i difetti in anticipo.
Assolutamente tutte le applicazioni web necessitano di un backend per memorizzare i dati. I database come MySQL, Oracle e SQL Server sono ragionevolmente popolari in questi giorni.
Tornando ora all'argomento originale, discutiamo alcuni scenari per esemplificare la domanda di test di database insieme al test di automazione.
Cosa imparerai:
- Considera i seguenti scenari
- Creazione dei dati di prova nel Database
- Creazione di un nuovo database
- Conclusione
- Lettura consigliata
Considera i seguenti scenari
# 1) A volte, ci viene richiesto di assicurarci che i dati inseriti dall'interfaccia utente si riflettano in modo coerente nel database. Pertanto 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'.
#Due) Un altro caso d'uso dell'esecuzione di test del database con Selenium WebDriver può verificarsi quando l'utente viene indirizzato a caricare i dati del test oi dati previsti dal database. Pertanto, in tal caso, l'utente stabilirà la connessione con il database utilizzando un'API di terze parti, eseguirà query per recuperare i dati dal set di dati e quindi asserirà i dati recuperati dal database con i dati effettivi che sono popolati sull'interfaccia utente dell'applicazione .
# 3) Un altro caso d'uso è eseguire test di database associativi. Supponiamo di aver eseguito un'operazione sull'interfaccia utente dell'applicazione e di voler testare il riflesso 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.
Il selenio, 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 capacità per eseguire test end-to-end.
Pertanto, in tutti gli scenari precedenti, potrebbe essere necessario eseguire il test del database insieme all'automazione dell'interfaccia utente. Possiamo controllare le logiche di business manipolando i dati e verificandone il riflesso. Potremmo anche controllare gli aspetti tecnici del database stesso come l'eliminazione graduale, la convalida dei campi, ecc.
Andiamo ora avanti con l'attuazione effettiva. Prima di sviluppare gli script Selenium WebDriver per estrarre i dati dall'origine dati, creiamo i dati di test nel database. Per questo tutorial, utilizzeremo MySQL come database.
Creazione dei dati di prova nel Database
Se non hai ancora scaricato il database, scaricalo utilizzando il collegamento . L'utente deve seguire alcuni passaggi di base per scaricare e installare il database.
= >> Leggi questo tutorial per scarica e installa il database MySQL .
Una volta che il database è stato installato con successo, l'utente può avviare il prompt della riga di comando di MySQL che assomiglierà allo screenshot seguente. L'applicazione potrebbe chiedere all'utente di inserire la password. La password predefinita è 'root'.
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 delle query o il banco di lavoro.
Creazione di un nuovo database
Il passaggio successivo consiste nel creare il database di prova con alcune tabelle e record memorizzati in tali tabelle per stabilire una connessione con il database ed eseguire query.
Passo 1) Digita 'mostra database' per vedere tutti i database già disponibili
mostra database;
Passo 2) Digita 'create database user;' per creare un database denominato 'utente'.
creare utente database;
Tieni presente che il nome del database quando l'utente viene creato e può essere visualizzato nell'elenco dei database.
Passaggio 3) Digita 'usa utente;' per selezionare il database appena creato. Inoltre, digita 'mostra tabelle'; per visualizzare tutte le tabelle disponibili nel database utenti.
utilizzare l'utente;
mostra le tabelle;
Prendi nota che il set vuoto è mostrato nel risultato della 'mostra tabelle'; query in quanto non c'erano tabelle disponibili all'interno del database utente.
Vediamo ora alcune tabelle e aggiungiamo record in esse.
Passaggio 4) Digita il seguente comando per creare una tabella con 4 campi / colonne (userId, userName, userAge, userAddress).
creare tabella userinfo
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar (255)
);
Il passaggio successivo consiste nell'aggiungere alcuni record di dati nella tabella 'userinfo'.
Passaggio 5) Digita il seguente comando per inserire i dati nella tabella una tabella per tutti i quattro campi 4 campi / colonne (userId, userName, userAge, userAddress).
inserire nei valori userinfo (userID, userName, userAge, userAddress) ('1', 'shruti', '25', 'Noida');
Per visualizzare i dati aggiunti, digita il seguente comando:
seleziona * da info utente;
Allo stesso modo, puoi aggiungere più dati alla tua tabella e puoi anche creare altre tabelle.
Ora che abbiamo creato il nostro database. Possiamo andare avanti e capire il 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 automatizzate. Per poter sfruttare l'API JDBC, è necessario che Java Virtual Machine (JVM) sia in esecuzione sul sistema.
Flusso di lavoro JDBC
Manterremo la nostra attenzione in linea con i seguenti processi:
- Creazione di una connessione con il database
- Esecuzione di query e istruzioni di aggiornamento per estrarre / recuperare dati (operazioni CRUD)
- Utilizzo e manipolazione dei dati estratti dal database sotto forma di set di risultati. (Il set di risultati è una raccolta di dati organizzati in righe e colonne)
- Disconnessione della connessione al database.
Come detto in precedenza, per essere in grado di testare il database automaticamente dai nostri script di test Selenium WebDriver, ci collegheremo al database tramite la connettività JDBC all'interno dei nostri script di test. Invia alla connessione, possiamo attivare quante più operazioni CRUD (Crea, Leggi, Aggiorna ed Elimina) sul database.
In questo tutorial, discuteremo 'Operazione di lettura e sue varianti' e sulla loro implementazione nello script Selenium WebDriver. Ma prima di questo, controlliamo manualmente lo scenario di test utilizzando la 'riga di comando di MySQL'.
Scenario:
1) Aprire il server database e connettersi al database 'utente'.
2) Elenca tutti i record dalla tabella 'userinfo'.
Sintassi: seleziona * da info utente;
3) Chiudi 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.
- ID utente
- nome utente
- userAge
- userAddress
Il risultato mostra anche che nella tabella è presente un solo set di dati.
Ora, eseguiamo lo stesso scenario utilizzando la classe Java.
Per poter accedere al database, l'utente può scegliere tra le diverse opzioni di connettore disponibili per connettersi con il database. La maggior parte dei connettori di database sono distribuiti liberamente come file 'jar'. Poiché stiamo utilizzando MySQL come origine dati, 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 e più importante passaggio è configurare il percorso di compilazione del progetto e aggiungere il file 'mysql-connector-java-3.1.13-bin.jar' come libreria esterna.
Passo 2 : Crea una classe java denominata 'DatabaseTesingDemo'.
Passaggio 3 : Copia e incolla il codice seguente 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(' ' + 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(); } } }
L'output del codice precedente è:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Leggi varianti di istruzione
Where clausola con condizione unica
Stringa query = 'seleziona * da userinfo dove userId = '' + 1 + '‘ ';
ResultSet res = stmt.executeQuery (query);
Produzione:
1 shruti 25 Noida
Where clausola con più condizioni
Indirizzo stringa = 'Mumbai';
String query = 'select * from userinfo dove userId = '' + 2 + '' e userAddress = '' + Address + '‘ ';
ResultSet res = stmt.executeQuery (query);
Produzione:
2 shrivastava 55 Mumbai
Visualizza userId
Stringa query = 'seleziona userId da userinfo';
ResultSet res = stmt.executeQuery (query);
Produzione:
uno
Due
Visualizza userId con la clausola where
Indirizzo stringa = 'Noida';
String query = 'select userId, userName from userinfo dove userAddress = '' + Address + '‘ ';
ResultSet res = stmt.executeQuery (query);
Produzione:
Due
shrivastava
Pertanto, allo stesso modo l'utente può eseguire varie query sul database.
Con questo, facciamo luce anche sui metodi di accessibilità dei risultati.
cos'è un codice di sicurezza di rete
Metodi di accessibilità dei risultati:
Nome del metodo | Descrizione |
---|---|
double getDouble () | Il metodo viene utilizzato per recuperare i dati di tipo double dal set di risultati |
String getString () | Il metodo viene utilizzato per recuperare i dati di tipo stringa dal set di risultati |
int getInt () | Il metodo viene utilizzato per recuperare i dati di tipo intero dal set di risultati |
booleano getBoolean () | Il metodo viene utilizzato per recuperare il valore booleano dal set di risultati |
float getFloat () | Il metodo viene utilizzato per recuperare i dati di tipo float dal set di risultati |
long getLong () | Il metodo viene utilizzato per recuperare i dati di tipo lungo dal set di risultati |
short getShort () | Il metodo viene utilizzato per recuperare i dati di tipo breve dal set di risultati |
Date getDate () | Il metodo viene utilizzato per recuperare l'oggetto di tipo Date dal set di risultati |
Metodi di navigazione dei risultati:
Nome del metodo | Descrizione |
---|---|
booleano successivo () | Il metodo viene utilizzato per passare al record successivo nel set di risultati |
booleano precedente () | Il metodo viene utilizzato per passare al record precedente nel set di risultati |
booleano per primo () | Il metodo viene utilizzato per passare al primo record nel set di risultati |
booleano last () | Il metodo viene utilizzato per passare all'ultimo record nel set di risultati |
booleano assoluto (int rowNumber) | Il metodo viene utilizzato per passare al record specifico nel set di risultati |
Conclusione
Attraverso questo tutorial, abbiamo cercato di farti conoscere il concetto di Test automatizzato del database . Abbiamo chiaramente posto l'accento sulle implicazioni tecniche e sulle esigenze del test del database.
Poiché la nostra intera serie era incentrata sul selenio, il lettore potrebbe essere fuorviato e può creare l'impressione che questo tutorial insegnerebbe a eseguire il test del database utilizzando il selenio, ma come ho detto più volte prima, tutto ciò che si trova al di fuori della periferia del test dell'interfaccia utente , non può essere maneggiato dal selenio. Pertanto introduciamo l'API Java Database Connectivity (JDBC) per eseguire il test del database incorporando il codice negli script Selenium WebDriver.
JDBC consente alla classe java di connettersi al database, recuperare i dati dal database o, per la verità, eseguire qualsiasi operazione CRUD, manipolare i dati risultanti e chiudere la connessione.
Pertanto, il tutorial costituisce l'implementazione di esempio di base del processo sopra menzionato.
Prossimo tutorial n. 29 : Andremo avanti con argomenti avanzati sul selenio. Nel prossimo tutorial tratteremo il Selenium GRID, che viene utilizzato quando devi eseguire test multi-browser e hai un gran numero di casi di test.
Lettura consigliata
- Test di database con JMeter
- Integrazione del selenio con JMeter
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)
- Implementazione del nostro primo script WebDriver - Selenium WebDriver Tutorial # 10
- Il miglior corso di formazione online Selenium WebDriver + JAVA
- Spock per integrazione e test funzionali con selenio