1 Inleiding
geautomatiseerde tests kunnen worden gemaakt met verschillende hulpmiddelen, afhankelijk van het type tests. Integratietests kunnen worden gemaakt met SoapUI, unit tests met de unit Testing module, en UI tests met Selenium IDE. Met Selenium IDE kunt u scripts maken om te helpen bij het automatiseren van verkennende testen. Als u op zoek bent naar robuuste, browser-gebaseerde tests te maken, je moet kijken naar het gebruik van een testkader met Selenium.
TestNG is een Java Test framework dat gebruikt kan worden om Selenium aan te drijven. In deze how-to leer je hoe je een geautomatiseerde test maakt met TestNG.
deze handleiding leert u hoe u het volgende moet doen:
- TestNG-testbestanden aanmaken
- geautomatiseerde tests uitvoeren met TestNG
- rapporten genereren met TestNG
2 vereisten
voordat u begint met deze how-to, zorg ervoor dat u de volgende vereisten hebt voltooid:
- download en installeer Eclipse
- download de Selenium Client & WebDriver voor Java
deze how-to maakt gebruik van de bedrijfskosten app template te beginnen in de voeg de derde testmethode sectie voor een voorbeeld scenario. Echter, deze app template is niet langer platform-ondersteund door Mendix. Daarom, secties met behulp van deze app template kan alleen worden gebruikt als referentie en niet als secties die stap-voor-stap kunnen worden voltooid.
3 Een Java-Project
in dit hoofdstuk installeert u de TestNG-plug-in en maakt u een Java-project aan in Eclipse inclusief de TestNG-en Seleniumbibliotheken:
- Open eclips.
- Volg de instructies in de Eclipse plug-in > Install from update site sectie in download TestNG.
- herstart Eclipse om wijzigingen van kracht te laten worden.
- Selecteer Bestand > Nieuw > Java-Project.
- voer mijn eerste Testngproject in voor de projectnaam en klik op Volgende.
- Selecteer het tabblad Bibliotheken en klik op bibliotheek toevoegen.
- Selecteer TestNG en klik op Volgende.
- klik op Voltooien om de standaard TestNG-bibliotheek in te stellen op dit project.
- klik op externe potten toevoegen… en navigeer naar de plaats waar u de Selenium JAR-bestanden hebt opgeslagen.
-
voeg alle JAR-bestanden toe in de selenium-en libs-mappen:
-
klik op Voltooien om het Java-project te maken. Mijn eerste testngproject wordt getoond in de Pakketverkenner:
u bent nu klaar met het opzetten van uw project!
4 Maak een TestNG Bestand
creëren van een nieuwe TestNG bestand, als volgt:
- Rechts-klik op de src map en selecteer Nieuw > Andere…:
-
Selecteer TestNG klasse en klik op Volgende:
-
Klik op Bladeren… om een bron te kiezen map selecteer MyFirstTestNGProject > src, en klik op OK.
-
Voer de volgende informatie in:
- Package name: myfirsttestngpackage
- Class name: MyFirstTestNGFile
- @ BeforeTest: true
- @AfterTest: waar
-
klik op Voltooien. Het sjabloon voor uw eerste TestNG-bestand wordt automatisch aangemaakt:
de annotatie
@Test
wordt gebruikt om aan te geven dat de methode onder deze methode een testcase is. In dit geval is de methodef
een testcase. De annotatie@BeforeTest
wordt gebruikt om aan te geven dat de methode onder deze annotatie zal worden uitgevoerd vóór de eerste testcase. De annotatie@AfterTest
wordt gebruikt om aan te geven dat de methode onder deze annotatie zal worden uitgevoerd na de laatste testcase.
5 Maak een testcase
laten we nu uw testcase coderen.
5.1 voeg een WebDriver
toe om een variabele voor de WebDriver te maken, volgt u deze stappen:
-
zoek naar de volgende:
public class MyFirstTestNGFile {
-
voeg de onderstaande code toe op de volgende regel. Dit zal een
driver
variabele van het WebDriver type aanmaken:public WebDriver driver;
-
druk op Ctrl + Shift + O om de import te organiseren. Dit zal de ontbrekende statements importeren en de ongebruikte import statements verwijderen. De volgende verklaring zal worden geïmporteerd:
import org.openqa.selenium.WebDriver;
5.2 voeg een BeforeTest methode
toe de @BeforeTest
annotatie wordt gebruikt om aan te geven dat de methode onder deze methode zal worden uitgevoerd vóór de eerste testcase. Voor de eerste test geval, open De Firefox-browser door het volgen van deze stappen:
-
de volgende code wijzigen:
@BeforeTestpublic void beforeTest() {}
in:
@BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}
dit creëert een nieuwe instantie van de Firefox driver en opent de Firefox-browser.
-
druk op CTRL + SHIFT + O. Het volgende statement zal worden geïmporteerd:
import org.openqa.selenium.firefox.FirefoxDriver;
5.3 Voeg een Natestmethode
toe de annotatie @AfterTest
wordt gebruikt om aan te geven dat de methode onder deze methode na het laatste testgeval zal worden uitgevoerd. Sluit na de laatste testcase de browser door de volgende code te wijzigen:
@AfterTestpublic void afterTest() {}
in:
@AfterTestpublic void afterTest() {driver.close();}
dit zal de Firefox-browser sluiten.
5.4 voeg de eerste testmethode toe
om de eerste testmethode toe te voegen, opent u een URL in de browser en wijzigt u de volgende code:
@Testpublic void f() {}
in:
@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}
deze testmethode opent de URL http://localhost:8080/index.html
in de Firefox-browser. Standaard worden de met @Test
geannoteerde methoden Alfabetisch uitgevoerd. U kunt parameters gebruiken om de functie van de annotatie te wijzigen. De parameter priority
kan worden gebruikt om de methoden in een andere volgorde uit te voeren. TestNG voert de annotatie @Test
uit met de LAAGSTE prioriteit tot en met de grootste.
5.5 voeg de tweede testmethode
toe Nu u zich in het aanmeldvenster bevindt, wilt u zich aanmelden. Volg deze stappen om de tweede testmethode toe te voegen:
- Open Firefox en ga naar
http://localhost:8080/index.html
. - gebruik de ontwikkelaarstools om het element te inspecteren.
-
klik op het invoerveld gebruikersnaam. Het ID van dit veld is usernameInput. De CSS-selector van een ID is een hashtag (
#
) + de naam van het ID. Voor het veld gebruikersnaam is dit #usernameInput. Hetzelfde principe wordt gebruikt voor de andere stappen. De CSS selector #usernameInput is uniek. Er is één bijpassend knooppunt: -
Herhaal stap 5-6 voor het wachtwoord invoerveld en de Sign in knop:
Element CSS Selector Wachtwoord invoerveld #passwordInput
knop Aanmelden #loginButton
-
Voeg een nieuwe test methode met de naam
login
. Gebruik de volgende code:@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();}
deze testmethode bevat de volgende teststappen:
- voer MxAdmin als Gebruikersnaam in.
- voer 1 in als wachtwoord.
- klik op de aanmeldknop.
5.6 Voeg de derde testmethode
toe om de derde testmethode toe te voegen, volgt u deze stappen:
- Open uw app en in de App Explorer, open de ProgramDetail pagina.
-
Selecteer het tabblad uitgaven:
de naam van het tabblad uitgaven is tabPage4. Elk element krijgt automatisch de CSS-klasse
mx-name-
, dus het tabblad uitgaven krijgt de CSS-klassemx-name-tabPage4
wanneer de app draait. -
Ga terug naar Eclipse.
-
voeg een nieuwe testmethode toe, genaamd
openExpensesTab
. Gebruik de volgende code:@Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}
deze testmethode roept
ExpectedCondition
om de 500 milliseconden aan totdat deze met succes terugkeert of 10 Seconden zijn verstreken. Wanneer 10 Seconden zijn verstreken en het element is niet gelokaliseerd, een time-Outexception zal worden gegooid. Als het element zich binnen 10 seconden bevindt, klikt de methode op het element met klassenaammx-name-tabPage4
. De categorie van het tabblad uitgaven ismx-name-tabPage4
. De CSS-selector van een klasse is een punt (.
) + de naam van de klasse, dus voor het tabblad uitgaven zal het.mx-name-tabPage4
zijn.
5.7 Voeg de vierde testmethode
toe Nu u op het tabblad uitgaven staat, wilt u een nieuwe uitgave maken. Volg deze stappen om de vierde testmethode toe te voegen:
- Open Studio Pro en open vervolgens de Desktop_AdminMenu pagina.
-
Selecteer de knop Nieuwe uitgaven:
de naam van de nieuwe Kostenknop is
newButton3
, dus de knop heeft de CSS-klassemx-name-newButton3
: -
Open De Desktop_Expense_NewEdit_Admin pagina.
-
Zoek de namen van de volgende elementen (zoals in Stap 3):
Element Naam veld textBox6
Beschrijving dropdown referenceSelector1
knop Opslaan 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.
-
Ga terug naar Eclipse.
-
voeg een nieuwe testmethode toe met de naam
createExpense
. Gebruik de volgende code:@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();}
deze testmethode bevat de volgende teststappen:
- klik op nieuwe uitgave.
- Wis het veld Bedrag.
- vul 15 in.00 in het veld Bedrag.
- Selecteer de tweede optie in het vervolgkeuzemenu beschrijving.
- Klik Op Opslaan.
een pop-upvenster zal getoond worden na het klikken op nieuwe uitgave (
.mx-name-newButton3
). Om er zeker van te zijn dat het element van de actieve pagina wordt opgehaald (wat in dit geval de pop-up is), moet u.mx-window-active
toevoegen aan de CSS-selector van de elementen in de pop-up.voor elk invoerveld moet u
input
toevoegen aan het einde van de CSS-selector.de standaardwaarde van het veld Bedrag is 0,00. Om een nieuwe waarde in te voeren, moet u eerst het veld wissen.
de referentiekiezer heeft zes opties: leeg, accommodatie, maaltijd, overige, benodigdheden, vervoer. Om accomodatie (de tweede optie) te selecteren, moet u
option:nth-child(2)
aan het einde van de CSS-selector toevoegen.
5.8 voeg de vijfde testmethode
toe nadat u een uitgave hebt gemaakt, wilt u zich afmelden. Volg deze stappen om de vijfde testmethode toe te voegen:
- Open Studio Pro en open vervolgens het desktop_myinfo-fragment.
-
Zoek de naam van het volgende element:
Element naam Uitloggen knop signOutButton1
-
voeg een nieuwe testmethode toe, genaamd
signOut
. Gebruik de volgende code:@Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}
deze testmethode klikt op het element met de klassenaam
mx-name-signOutButton1
.
6 Voer de Test
u bent nu klaar om de test uit te voeren. Volg deze stappen om de test uit te voeren:
- Klik met de rechtermuisknop op de map MyFirstTestNGProject.
-
selecteer Uitvoeren als > TestNG-Test:
de resultaten van de test worden weergegeven in het consolevenster en in het TestNG-resultatenvenster:
7 testrapport
TestNG genereert rapporten in HTML-formaat. Volg deze stappen om het rapport te testen:
-
Klik met de rechtermuisknop op de map MyFirstTestNGProject en selecteer Vernieuwen. Er wordt een testuitvoermap aangemaakt:
-
Open de map testuitvoer.
-
Klik met de rechtermuisknop op de index.html-bestand.
-
selecteer Openen met > webbrowser. Het rapport zal er zo uitzien:
-
klik op (tonen). De testmethoden worden alfabetisch weergegeven:
-
klik op de chronologische weergave. Een overzicht met de methoden in chronologische volgorde zal worden getoond:
8 Een testsuite
wanneer u uw test uitvoert zoals u deed in test uitvoeren, wordt automatisch een testsuite gemaakt. Deze test suite bevat alle testNG-bestanden die in het project te vinden zijn. Maar wat als je alleen specifieke tests wilt uitvoeren? Dan moet je zelf een test suite maken.
- Klik met de rechtermuisknop op de src-map en selecteer Nieuwe > andere.
-
Open de XML-map en selecteer XML-bestand:
-
klik op Volgende.
-
Wijzig de bestandsnaam in MyFirstTestSuite.xml.
-
klik op Voltooien om het XML-bestand aan te maken:
-
klik op het tabblad Bron:
-
de volgende code wijzigen:
<?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>
hiermee wordt de nieuwe test suite
MyFirstTestSuite
aangemaakt. De test suite bevat één test:Test1
. De test bevat één testNG-bestand,myfirsttestngpackage.MyFirstTestNGFile
. -
Klik met de rechtermuisknop op de MyFirstTestSuite.xml bestand en selecteer Uitvoeren als > 1 TestNG Suite.
goed gedaan! Je hebt je eerste TestNG Suite gemaakt!
9 Voer uw Test Suite uit op meerdere Browsers met behulp van @Parameters
de test die u hebt gemaakt wordt nu alleen uitgevoerd op Firefox. Als u ervoor wilt zorgen dat de functionaliteit werkt zoals verwacht in andere browsers, moet u multi-browser testen uit te voeren. Met TestNG is het heel eenvoudig om dezelfde test uit te voeren op verschillende browsers.
- Download de ChromeDriver hier: https://sites.google.com/a/chromium.org/chromedriver/downloads.
- Download de IEDriver hier: http://selenium-release.storage.googleapis.com/index.html.
-
in Eclipse, open mijn eerste Testngbestand en wijzig de volgende code:
@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
wordt gebruikt om een parameter in te voegen (in dit gevalbrowser
) uit de test suite XML. Als de browserparameterchrome
is, wordt een Chrome-stuurprogramma gestart.in deze sectie, chromedriver.exe wordt opgeslagen in de C://Selenium map. Zorg ervoor dat u het juiste pad in deze code te gebruiken.
-
druk op Ctrl + Shift + O en de volgende verklaringen worden geïmporteerd:
import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
-
Open mijn eerste testsuite en wijzig de volgende code
<?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>
de eerste test (genaamd
ChromeTest
) heeft de browserparameterchrome
. Deze parameter zal gebruikt worden in de@BeforeTest
methode in mijn eerste Testngbestand. -
Klik met de rechtermuisknop op de MyFirstTestSuite.xml-bestand en selecteer Uitvoeren als > TestNG Suite:
goed gedaan! Je hebt je eerste geautomatiseerde cross-browser test gemaakt met TestNG!
nu weet u hoe u een TestNG-testbestand maakt, hoe u een testsuite maakt en hoe u de geautomatiseerde test(s) op meerdere browsers uitvoert.
prettige test!
10 Read More
- Test Mendixtoepassingen met seleen-IDE
- Testmicrostromen met behulp van de unit testmodule