automation testing using cucumber tool
Nell'ultimo tutorial sul selenio, ti abbiamo presentato Griglia di selenio che è per esecuzione di test distribuita ambiente per velocizzare l'esecuzione di un test superato .
Ora, alla fine di questa serie completa di formazione sul selenio, stiamo imparando a migliorare Test del selenio e concetti correlati.
In questo e nel prossimo tutorial, ti presenteremo il Cetriolo - a Framework Behaviour Driven Development (BDD) che viene utilizzato con Selenium per eseguire test di accettazione.
Cosa imparerai:
- Introduzione al cetriolo
- Nozioni di base di cetriolo
- Configurazione del progetto cetriolo:
- Conclusione
- Lettura consigliata
Introduzione al cetriolo
Un cetriolo è uno strumento basato sul framework BDD (Behaviour Driven Development) utilizzato per scrivere test di accettazione per l'applicazione web. Consente l'automazione della convalida funzionale in un formato facilmente leggibile e comprensibile (come l'inglese normale) per analisti aziendali, sviluppatori, tester, ecc.
I file delle caratteristiche del cetriolo possono essere un buon documento per tutti. Ci sono molti altri strumenti come JBehave che supportano anche il framework BDD. Inizialmente, Cucumber è stato implementato in Ruby e poi esteso al framework Java. Entrambi gli strumenti supportano JUnit nativo.
Behaviour Driven Development è un'estensione di Test Driven Development e viene utilizzato per testare il sistema piuttosto che testare il particolare pezzo di codice. Discuteremo più il BDD e lo stile di scrittura dei test BDD.
Cucumber può essere usato insieme a Selenium, Watir e Capybara ecc. Cucumber supporta molti altri linguaggi come Perl, PHP, Python, Net ecc. In questo tutorial, ci concentreremo su Cucumber con Java come linguaggio.
Nozioni di base di cetriolo
Per capire il cetriolo, dobbiamo conoscere tutte le caratteristiche del cetriolo e il suo utilizzo.
java j2ee domande e risposte dell'intervista
# 1) File di funzionalità:
I file delle funzionalità sono la parte essenziale di cucumber che viene utilizzata per scrivere passaggi di automazione dei test o test di accettazione. Può essere utilizzato come documento live. I passaggi sono le specifiche dell'applicazione. Tutti i file delle funzionalità terminano con l'estensione .feature.
File di caratteristiche di esempio:
Caratteristica : Funzionalità di funzionalità di accesso
Per garantire il funzionamento della funzionalità di accesso,
Voglio eseguire il test del cetriolo per verificare che funzioni
Scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando il nome utente come 'UTENTE' e la password 'PASSWORD'
Poi il login dovrebbe avere successo
Scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando il nome utente come 'USER1' e la password 'PASSWORD1'
Poi dovrebbe essere lanciato un messaggio di errore
# 2) Caratteristica:
T Questo fornisce informazioni sulla funzionalità aziendale di alto livello (fare riferimento all'esempio precedente) e lo scopo dell'applicazione in prova. Tutti dovrebbero essere in grado di comprendere l'intento del file di funzionalità leggendo il primo passaggio di funzionalità. Questa parte è fondamentalmente mantenuta breve.
# 3) Scenario:
Fondamentalmente, uno scenario rappresenta una particolare funzionalità che è sotto test. Vedendo lo scenario, l'utente dovrebbe essere in grado di capire l'intento dietro lo scenario e di cosa tratta il test. Ogni scenario dovrebbe seguire dato, quando e poi formato. Questa lingua è chiamata 'cetriolino'.
- Dato: Come accennato in precedenza, dato specifica le pre-condizioni. È fondamentalmente uno stato noto.
- quando : Viene utilizzato quando è necessario eseguire un'azione. Come nell'esempio precedente, abbiamo visto che quando l'utente tenta di accedere utilizzando nome utente e password, diventa un'azione .
- Poi: Il risultato o il risultato atteso dovrebbe essere inserito qui. Ad esempio: verifica che il login sia riuscito, navigazione della pagina riuscita.
- Sfondo: Ogni volta che è necessario eseguire un passaggio in ogni scenario, tali passaggi devono essere inseriti in Background. Ad esempio: se un utente deve cancellare il database prima di ogni scenario, questi passaggi possono essere messi in background.
- E : E viene utilizzato per combinare due o più dello stesso tipo di azione.
Esempio:
Caratteristica : Funzionalità di funzionalità di accesso
Scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando il nome utente come 'USER'
E password come 'password'
Poi il login dovrebbe avere successo
E La home page dovrebbe essere visualizzata
qual è il nome utente e la password del mio router
Esempio di sfondo:
Sfondo:
Dato utente connesso come amministratore di database
E tutti i valori spazzatura vengono cancellati
# 4) Schema dello scenario:
Gli schemi di scenario vengono utilizzati quando lo stesso test deve essere eseguito con diversi set di dati. Prendiamo lo stesso esempio. Dobbiamo testare la funzionalità di accesso con più set diversi di nome utente e password.
Caratteristica : Funzionalità di funzionalità di accesso
Per garantire il funzionamento della funzionalità di accesso,
Voglio eseguire il test del cetriolo per verificare che funzioni
Schema dello scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETESTINGHELP.COM
quando l'utente accede utilizzando il nome utente come< nome utente > e password< parola d'ordine >
Poi il login dovrebbe avere successo
Esempi:
| nome utente | password |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
Nota:
- Come mostrato nell'esempio precedente, i nomi delle colonne vengono passati come parametro a quando dichiarazione.
- Al posto di Scenario, devi usare Scenario Outline.
- Gli esempi vengono utilizzati per passare diversi argomenti nel formato tabulare. I tubi verticali vengono utilizzati per separare due colonne diverse. Un esempio può contenere molte colonne differenti.
# 5) Tag:
Cucumber per impostazione predefinita esegue tutti gli scenari in tutti i file delle funzionalità. Nei progetti in tempo reale, potrebbero esserci centinaia di file di funzionalità che non è necessario eseguire in ogni momento.
Per esempio : I file delle funzionalità relativi al test del fumo non devono essere sempre eseguiti. Quindi, se menzioni un tag come senza fumo in ogni file di funzionalità che è correlato al test del fumo ed esegue il test del cetriolo con il tag @SmokeTest. Cucumber eseguirà solo quei file di funzionalità specifici per determinati tag. Si prega di seguire l'esempio di seguito. È possibile specificare più tag in un file di caratteristiche.
Esempio di utilizzo di tag singoli:
@Test del fumo
Caratteristica : Funzionalità di funzionalità di accesso
Per garantire il funzionamento della funzionalità di accesso,
Voglio eseguire il test del cetriolo per verificare che funzioni
Schema dello scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETESTINGHELP.COM
quando l'utente accede utilizzando il nome utente come< nome utente > e password< parola d'ordine >
Poi il login dovrebbe avere successo
Esempi:
| nome utente | password |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
Esempio di utilizzo di più tag:
Come mostrato nell'esempio di seguito, lo stesso file di funzionalità può essere utilizzato per scenari di test del fumo e per scenari di test di accesso. Quando intendi eseguire il tuo script per un test del fumo, usa @SmokeTest. Allo stesso modo, quando si desidera eseguire lo script per il test di accesso, utilizzare il tag @LoginTest.
È possibile menzionare un numero qualsiasi di tag per un file di funzionalità così come per lo scenario.
@SmokeTest @LoginTest
Caratteristica : Funzionalità di funzionalità di accesso
Per garantire il funzionamento della funzionalità di accesso,
Voglio eseguire il test del cetriolo per verificare che funzioni
miglior software di ripping di dvd per mac
Schema dello scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando Nome utente come e Password
Poi il login dovrebbe avere successo
Esempi:
| nome utente | password |
| Tom | password1 |
| Harry | password2 |
| Jerry | password3 |
Allo stesso modo, è possibile specificare i tag per eseguire lo scenario specifico in un file di funzionalità. Controlla l'esempio seguente per eseguire uno scenario specifico.
Caratteristica : Funzionalità di funzionalità di accesso
Per garantire il funzionamento della funzionalità di accesso,
Voglio eseguire il test del cetriolo per verificare che funzioni
@positiveScenario
Scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando il nome utente come 'UTENTE' e la password 'PASSWORD'
Poi il login dovrebbe avere successo
@negaviveScenario
Scenario : Funzionalità di accesso
Dato l'utente accede a SOFTWARETINGHELP.COM
quando l'utente accede utilizzando il nome utente come 'USER1' e la password 'PASSWORD1'
Poi il messaggio di errore dovrebbe generare
# 6) JUnit Runner:
Per eseguire il file delle caratteristiche specifiche, cucumber utilizza lo standard JUnit Runner e specifica i tag in @Cucumber. Opzioni. È possibile assegnare più tag utilizzando una virgola separata. Qui puoi specificare il percorso del rapporto e il tipo di rapporto che desideri generare.
Esempio di Junit Runner:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Classe pubblica JUnitRunner {} Allo stesso modo, puoi dare istruzioni al cetriolo per eseguire più tag. L'esempio seguente illustra come utilizzare più tag in cucumber per eseguire diversi scenari.
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
# 7) Rapporto sui cetrioli:
Cucumber genera il proprio formato HTML. Tuttavia, è possibile creare rapporti migliori utilizzando Jenkins o lo strumento bambù. I dettagli della segnalazione sono trattati nel prossimo argomento del cetriolo.
Configurazione del progetto cetriolo:
La spiegazione dettagliata della configurazione del progetto cetriolo è disponibile separatamente nel prossimo tutorial. Fare riferimento a Cucumber Tutorial Part2 per ulteriori informazioni sulla configurazione del progetto. Ricorda che non sono necessarie installazioni software aggiuntive per il cetriolo.
Implementazione del file Feature:
Dobbiamo implementare questi passaggi in Java per testare i file delle funzionalità. Necessità di creare una classe che contenga quelle date, quando e poi le istruzioni. Cucumber usa le sue annotazioni e tutti i passaggi sono incorporati in quelle annotazioni (date, when, then). Ogni frase inizia con '^' in modo che il cetriolo capisca l'inizio del passaggio. Allo stesso modo, ogni passaggio termina con '$'. L'utente può utilizzare espressioni regolari per passare diversi dati di test. Le espressioni regolari prendono i dati dai passaggi della funzione e passano alle definizioni dei passaggi. L'ordine dei parametri dipende da come vengono passati dal file delle caratteristiche. Fare riferimento al prossimo tutorial per l'impostazione del progetto e la mappatura tra i file di funzionalità e le classi Java.
Esempio:
L'esempio seguente serve a illustrare come implementare i file di funzionalità.
In questo esempio, non abbiamo utilizzato alcuna API di selenio. Questo è solo per mostrare come funziona il cetriolo come framework autonomo. Segui il prossimo tutorial per l'integrazione del selenio con il cetriolo.
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
Quando esegui la classe cucumber runner, cucumber inizierà a leggere i passaggi del file di funzionalità. Ad esempio, quando esegui @smokeTest, cucumber leggerà Caratteristica passo e Dato una dichiarazione di scenario . Non appena il cetriolo trova Data la dichiarazione, lo stesso Dato L'istruzione verrà cercata per i tuoi file java. Se lo stesso passaggio viene trovato nel file java, cucumber esegue la funzione specificata per lo stesso passaggio, altrimenti cucumber salterà il passaggio.
Conclusione
In questo tutorial, abbiamo coperto le funzionalità dello strumento cetriolo e il suo utilizzo in uno scenario in tempo reale.
Il cetriolo è uno strumento preferito per molti progetti in quanto è facile da capire, leggibile e contiene funzionalità aziendali.
Nel prossimo capitolo , tratteremo come impostare un progetto cetriolo - java e come integrare Selenium WebDriver con Cucumber.
Lettura consigliata
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- 30+ Migliori tutorial sul selenio: impara il selenio con esempi reali
- Selenium Grid Tutorial: configurazione ed esempio di test cross browser
- Spock per integrazione e test funzionali con selenio
- Uso di Maven Build Automation Tool e Maven Project Setup for Selenium - Selenium Tutorial # 24
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Tutorial approfonditi su Eclipse per principianti
- Tutorial sullo strumento di test dell'accessibilità di WAVE