1 Introduzione
I test automatizzati possono essere creati con diversi strumenti, a seconda del tipo di test. I test di integrazione possono essere creati con soapUI, unit test con il modulo Unit Testing e UI test con Selenium IDE. Con Selenium IDE è possibile creare script per aiutare nei test esplorativi automatizzati. Se stai cercando di creare test robusti e basati su browser, dovresti esaminare l’utilizzo di un framework di test con Selenium.
TestNG è un framework di test Java che può essere utilizzato per guidare il Selenio. In questo how-to imparerai come creare un test automatico con TestNG.
- Creare TestNG file di prova
- Eseguire test automatizzati con TestNG
- Generare report con TestNG
2 Prerequisiti
- Scarica e installa Eclipse
- Scarica il client Selenium & WebDriver per Java
Questo how-to utilizza il modello di app Spese aziendali a partire dalla sezione Aggiungi il terzo metodo di prova per uno scenario di esempio. Tuttavia, questo modello di app non è più supportato dalla piattaforma Mendix. Pertanto, le sezioni che utilizzano questo modello di app possono essere utilizzate solo come riferimento e non come sezioni che possono essere completate passo dopo passo.
3 Creazione di un progetto Java
In questo capitolo verrà installato il plug-in TestNG e verrà creato un progetto Java in Eclipse incluse le librerie TestNG e Selenium:
- Apri Eclipse.
- Segui le istruzioni nel plug-in Eclipse > Installa dalla sezione Aggiorna sito in Download TestNG.
- Riavvia Eclipse affinché le modifiche abbiano effetto.
- Seleziona File > Nuovo > Progetto Java.
- Immettere MyFirstTestNGProject per il nome del progetto e fare clic su Avanti.
- Selezionare la scheda Librerie e fare clic su Aggiungi libreria.
- Selezionare TestNG e fare clic su Avanti.
- Fare clic su Fine per impostare la libreria TestNG predefinita per questo progetto.
- Fai clic su Aggiungi JAR esterni… e vai al punto in cui hai salvato i file JAR Selenium.
-
Aggiungi tutti i file JAR all’interno delle cartelle selenium – e libs:
-
Fare clic su Fine per creare il progetto Java. MyFirstTestNGProject verrà mostrato in Esplora pacchetti:
Ora hai finito di impostare il tuo progetto!
4 Creare un TestNG File
- fare clic con il src cartella e selezionare Nuovo > Altri…:
-
Selezionare TestNG classe e quindi fare clic su Avanti:
-
fare Clic su Sfoglia… per selezionare una cartella di origine, selezionare MyFirstTestNGProject > src, e fare clic su OK.
-
Immettere le seguenti informazioni:
- nome del Pacchetto: myfirsttestngpackage
- nome della Classe: MyFirstTestNGFile
- @BeforeTest: true
- @AfterTest: vero
-
Fare clic su Fine. Il modello per il tuo primo file TestNG verrà creato automaticamente:
L’annotazione
@Test
viene utilizzata per affermare che il metodo sotto di esso è un caso di test. In questo caso, il metodof
è un caso di test. L’annotazione@BeforeTest
viene utilizzata per indicare che il metodo sotto di esso verrà eseguito prima del primo caso di test. L’annotazione@AfterTest
viene utilizzata per indicare che il metodo sotto di esso verrà eseguito dopo l’ultimo caso di test.
5 Creazione di un test Case
Codifichiamo ora il tuo test case.
5.1 Aggiungere un WebDriver
Per creare una variabile da utilizzare per il WebDriver, attenersi alla seguente procedura:
-
Cerca quanto segue:
public class MyFirstTestNGFile {
-
Aggiungi il codice qui sotto nella riga successiva. Questo creerà una variabile
driver
del tipo WebDriver:public WebDriver driver;
-
Premere Ctrl + Maiusc + O per organizzare le importazioni. Ciò importerà le istruzioni mancanti e rimuoverà le istruzioni di importazione non utilizzate. Verrà importata la seguente istruzione:
import org.openqa.selenium.WebDriver;
5.2 Aggiungi un metodo BeforeTest
L’annotazione @BeforeTest
viene utilizzata per indicare che il metodo sotto di esso verrà eseguito prima del primo caso di test. Prima del primo caso di test, aprire il browser Firefox seguendo questi passaggi:
-
Modificare il seguente codice:
@BeforeTestpublic void beforeTest() {}
in:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
Questo crea una nuova istanza del driver di Firefox e apre il browser Firefox.
-
Premere CTRL + MAIUSC + O. Verrà importata la seguente istruzione:
import org.openqa.selenium.firefox.FirefoxDriver;
5.3 Aggiungere un metodo AfterTest
L’annotazione @AfterTest
viene utilizzata per indicare che il metodo sotto di esso verrà eseguito dopo l’ultimo caso di test. Dopo l’ultimo caso di test, chiudere il browser modificando il seguente codice:
@AfterTestpublic void afterTest() {}
in:
@AfterTestpublic void afterTest() {driver.close();}
Questo chiuderà il browser Firefox.
5.4 Aggiungere il primo metodo di prova
Per aggiungere il primo metodo di prova, aprire un URL nel browser, e quindi modificare il seguente codice:
@Testpublic void f() {}
in:
@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}
Questo metodo di test aprirà l’URL http://localhost:8080/index.html
nel browser Firefox. Per impostazione predefinita, i metodi annotati da @Test
vengono eseguiti in ordine alfabetico. È possibile utilizzare i parametri per modificare la funzione dell’annotazione. Il parametro priority
può essere utilizzato per eseguire i metodi in un ordine diverso. TestNG eseguirà l’annotazione @Test
con il valore di priorità più basso fino al più grande.
5.5 Aggiungi il secondo metodo di prova
Ora che sei nella finestra di accesso, vorrai accedere. Per aggiungere il secondo metodo di prova, attenersi alla seguente procedura:
- Apri Firefox e vai a
http://localhost:8080/index.html
. - Utilizzare gli strumenti di sviluppo per ispezionare l’elemento.
-
Fare clic sul campo di immissione Nome utente. L’ID di questo campo è usernameInput. Il selettore CSS di un ID è un hashtag (
#
) + il nome dell’ID. Per il campo Nome utente, questo sarà # usernameInput. Lo stesso principio viene utilizzato per gli altri passaggi. Il selettore CSS # usernameInput è unico. C’è un nodo corrispondente: -
Ripetere i passaggi 5-6 per il campo di immissione della password e il pulsante di accesso:
l’Elemento Selettore CSS campo di immissione della Password #passwordInput
pulsante accedi #loginButton
-
Aggiungi un nuovo metodo di prova chiamato
login
. Utilizzare il seguente codice:@Test(priority=2)public void login() { driver.findElement(By.cssSelector("#usernameInput")).sendKeys("MxAdmin"); driver.findElement(By.cssSelector("#passwordInput")).sendKeys("1"); driver.findElement(By.cssSelector("#loginButton")).click();}
Questo metodo di prova contiene le seguenti fasi di prova:
- Immettere MxAdmin come nome utente.
- Inserisci 1 come password.
- Fare clic sul pulsante login.
5.6 Aggiungere il terzo metodo di prova
Per aggiungere il terzo metodo di prova, attenersi alla seguente procedura:
- Apri la tua app e in Esplora app, apri la pagina ProgramDetail.
-
Seleziona la scheda Spese:
Il nome della scheda Spese è tabPage4. Ogni elemento otterrà automaticamente la classe CSS
mx-name-
, quindi la scheda spese otterrà la classe CSSmx-name-tabPage4
quando l’app è in esecuzione. -
Torna a Eclipse.
-
Aggiungere un nuovo metodo di prova denominato
openExpensesTab
. Utilizzare il seguente codice:@Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}
Questo metodo di test chiama
ExpectedCondition
ogni 500 millisecondi fino a quando non ritorna correttamente o sono trascorsi 10 secondi. Quando sono passati 10 secondi e l’elemento non si trova, verrà generata una TimeoutException. Se l’elemento si trova entro 10 secondi, il metodo farà clic sull’elemento con il nome della classemx-name-tabPage4
. La classe della scheda spese èmx-name-tabPage4
. Il selettore CSS di una classe è un punto (.
) + il nome della classe, quindi per la scheda spese, sarà.mx-name-tabPage4
.
5.7 Aggiungere il quarto metodo di prova
Ora che si è nella scheda Spese, si desidera creare una nuova spesa. Per aggiungere il quarto metodo di prova, attenersi alla seguente procedura:
- Aprire Studio Pro e quindi aprire la pagina Desktop_AdminMenu.
-
Seleziona il pulsante Nuova spesa:
Il nome del nuovo pulsante di spesa è
newButton3
, quindi il pulsante avrà la classe CSSmx-name-newButton3
: -
Aprire la pagina Desktop_Expense_NewEdit_Admin.
-
Trova i nomi dei seguenti elementi (come hai fatto nel passaggio 3):
l’Elemento Nome campo Quantità textBox6
Descrizione a discesa referenceSelector1
pulsante Salva saveButton1
The name of an element in your app may be different than the name shown in the Name column. In step 7, use the name of the element of your app.
-
tornare a Eclipse.
-
Aggiungere un nuovo metodo di prova denominato
createExpense
. Utilizzare il seguente codice:@Test(priority=4)public void createExpense() { driver.findElement(By.cssSelector(".mx-name-newButton3")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).clear(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-textBox6 input")).sendKeys("15.00"); driver.findElement(By.cssSelector(".mx-window-active .mx-name-referenceSelector1 option:nth-child(2)")).click(); driver.findElement(By.cssSelector(".mx-window-active .mx-name-saveButton1")).click();}
Questo metodo di prova contiene le seguenti fasi di prova:
- Fare clic su Nuova spesa.
- Cancella il campo Importo.
- Inserire 15.00 nel campo Importo.
- Selezionare la seconda opzione dal menu a discesa Descrizione.
- Fare clic su Salva.
Una finestra pop-up verrà visualizzata dopo aver fatto clic su Nuova spesa (
.mx-name-newButton3
). Per essere sicuri che l’elemento della pagina attiva venga recuperato (che in questo caso è il pop-up), è necessario aggiungere.mx-window-active
al selettore CSS degli elementi nel pop-up.Per ogni campo di input, è necessario aggiungere
input
alla fine del selettore CSS.Il valore predefinito del campo importo è 0,00. Per immettere un nuovo valore, è necessario prima cancellare il campo.
Il selettore di riferimento ha sei opzioni; vuoto, Alloggio, Pasto, Altro, Forniture, Trasporto. Per selezionare Accomodation (la seconda opzione), è necessario aggiungere
option:nth-child(2)
alla fine del selettore CSS.
5.8 Aggiungere il quinto metodo di prova
Dopo aver creato una spesa, si desidera uscire. Per aggiungere il quinto metodo di prova, attenersi alla seguente procedura:
- Aprire Studio Pro e quindi aprire lo snippet Desktop_MyInfo.
-
Trova il nome del seguente elemento:
Elemento Nome Pulsante Esci signOutButton1
-
Aggiungere un nuovo metodo di prova denominato
signOut
. Utilizzare il seguente codice:@Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}
Questo metodo di test farà clic sull’elemento con il nome della classe
mx-name-signOutButton1
.
6 Esegui il test
Ora sei pronto per eseguire il test. Per eseguire il test, attenersi alla seguente procedura:
- Fare clic con il pulsante destro del mouse sulla cartella MyFirstTestNGProject.
-
Selezionare Esegui come > TestNG Test:
I risultati del test verranno visualizzati nella finestra console e nella finestra Risultati TestNG:
7 Test Report
TestNG genera report in formato HTML. Per testare il report, attenersi alla seguente procedura:
-
Fare clic con il pulsante destro del mouse sulla cartella MyFirstTestNGProject e selezionare Aggiorna. Verrà creata una cartella di output di test:
-
Aprire la cartella test-output.
-
Fare clic destro sull’indice.file html.
-
Selezionare Apri con > Browser Web. Il rapporto sarà simile a questo:
-
Fare clic su (mostra). I metodi di prova sono indicati in ordine alfabetico:
-
Fare clic sulla vista cronologica. Verrà mostrata una panoramica con i metodi in ordine cronologico:
8 Creazione di una suite di test
Quando si esegue il test come è stato eseguito in Esegui il test, viene creata automaticamente una suite di test. Questa suite di test contiene tutti i file testNG che possono essere trovati nel progetto. Ma cosa succede se si desidera eseguire solo test specifici? Di quanto sia necessario creare una suite di test da soli.
- Fare clic con il pulsante destro del mouse sulla cartella src e selezionare Nuovo > Altro.
-
Aprire la cartella XML e selezionare il file XML:
-
Fare clic su Avanti.
-
Modificare il nome del file in MyFirstTestSuite.XML.
-
Fare clic su Fine per creare il file XML:
-
Fare clic sulla scheda Origine:
-
Modificare il seguente codice:
<?xml version="1.0" encoding="UTF-8"?>
in
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
Questo creerà la nuova suite di test
MyFirstTestSuite
. La suite di test contiene un test:Test1
. Il test contiene un file testNG,myfirsttestngpackage.MyFirstTestNGFile
. -
Fare clic destro sul MyFirstTestSuite.file xml e selezionare Esegui come > 1 TestNG Suite.
Ben fatto! Hai creato la tua prima suite di TestNG!
9 Esegui la tua suite di test su più browser Utilizzando @Parameters
Il test creato ora viene eseguito solo su Firefox. Se si desidera assicurarsi che la funzionalità funzioni come previsto in altri browser, è necessario eseguire test multi-browser. Con TestNG è molto facile eseguire lo stesso test su browser diversi.
- Scarica il ChromeDriver qui: https://sites.google.com/a/chromium.org/chromedriver/downloads.
- Scarica lo IEDriver qui: http://selenium-release.storage.googleapis.com/index.html.
-
In Eclipse, apri MyFirstTestNGFile e modifica il seguente codice:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
in:
@Parameters("browser")@BeforeTestpublic void beforeTest(String browser) { if(browser.equalsIgnoreCase("chrome")){ System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe"); driver = new ChromeDriver(); } else if(browser.equalsIgnoreCase("ie")){ System.setProperty("webdriver.ie.driver", "C://Selenium/IEDriverServer.exe"); driver = new InternetExplorerDriver(); } else{ driver = new FirefoxDriver(); }}
@Parameters
viene utilizzato per inserire un parametro (in questo casobrowser
) dalla suite di test XML. Se il parametro del browser èchrome
, verrà avviato un driver Chrome.In questa sezione, chromedriver.exe è memorizzato nel C://Selenium cartella. Assicurati di utilizzare il percorso giusto in questo codice.
-
Premere Ctrl+Maiusc+O, e le seguenti dichiarazioni saranno importati:
import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
-
Aprire MyFirstTestSuite e modificare il seguente codice
<?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="Test1"> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
in: <?xml version="1.0" encoding="UTF-8"?><suite name="MyFirstTestSuite"> <test name="ChromeTest"> <parameter name="browser" value="chrome" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="IETest"> <parameter name="browser" value="ie" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="firefox" /> <classes> <class name="myfirsttestngpackage.MyFirstTestNGFile" /> </classes> </test></suite>
Il primo test (chiamato
ChromeTest
) è il browser parametrochrome
. Questo parametro verrà utilizzato nel metodo@BeforeTest
in MyFirstTestNGFile. -
Fare clic destro sul MyFirstTestSuite.file xml e selezionare Esegui come > TestNG Suite:
Ben fatto! Hai creato il tuo primo test cross-browser automatizzato con TestNG!
Ora sai come creare un file di test TestNG, come creare una suite di test e come eseguire i test automatici su più browser.
Buon test!
10 Per saperne di più
- Testare le applicazioni Mendix utilizzando Selenium IDE
- Testare i microflussi utilizzando il modulo Unit Testing