Erstellen Sie automatisierte Tests mit TestNG

1 Einführung

Automatisierte Tests können mit verschiedenen Tools erstellt werden, abhängig von der Art der Tests. Integrationstests können mit SoapUI, Unit-Tests mit dem Unit-Testing-Modul und UI-Tests mit Selenium IDE erstellt werden. Mit Selenium IDE können Sie Skripte erstellen, die automatisierungsgestützte explorative Tests unterstützen. Wenn Sie robuste, browserbasierte Tests erstellen möchten, sollten Sie ein Testframework mit Selenium verwenden.

TestNG ist ein Java-Testframework, mit dem Selenium gesteuert werden kann. In diesem How-To erfahren Sie, wie Sie mit TestNG einen automatisierten Test erstellen.

In dieser Anleitung erfahren Sie, wie Sie Folgendes tun:

  • TestNG-Testdateien erstellen
  • Automatisierte Tests mit TestNG ausführen
  • Berichte mit TestNG generieren

2 Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

  • Eclipse herunterladen und installieren
  • Laden Sie den Selenium-Client herunter & WebDriver für Java

In dieser Anleitung wird die Vorlage für die Unternehmenskosten-App ab dem Abschnitt Dritte Testmethode hinzufügen für ein Beispielszenario verwendet. Diese App-Vorlage wird jedoch von Mendix nicht mehr plattformgestützt. Daher können Abschnitte, die diese App-Vorlage verwenden, nur als Referenz und nicht als Abschnitte verwendet werden, die Schritt für Schritt abgeschlossen werden können.

3 Erstellen eines Java-Projekts

In diesem Kapitel installieren Sie das TestNG-Plug-In und erstellen ein Java-Projekt in Eclipse einschließlich der TestNG- und Selenium-Bibliotheken:

  1. Öffne Eclipse.
  2. Befolgen Sie die Anweisungen im Abschnitt Eclipse-Plug-In > Installieren von der Update-Site unter TestNG herunterladen.
  3. Starten Sie Eclipse neu, damit die Änderungen wirksam werden.
  4. Datei auswählen > Neu > Java-Projekt.
  5. Geben Sie MyFirstTestNGProject als Projektnamen ein und klicken Sie auf Weiter.
  6. Wählen Sie die Registerkarte Bibliotheken und klicken Sie auf Bibliothek hinzufügen.
  7. Wählen Sie TestNG und klicken Sie auf Weiter.
  8. Klicken Sie auf Fertig stellen, um die Standard-TestNG-Bibliothek für dieses Projekt festzulegen.
  9. Klicken Sie auf Externe JARs hinzufügen … und navigieren Sie zu dem Ort, an dem Sie die Selenium-JAR-Dateien gespeichert haben.
  10. Fügen Sie alle JAR-Dateien in die Selenium- und libs-Ordner ein:

  11. Klicken Sie auf Fertig stellen, um das Java-Projekt zu erstellen. MyFirstTestNGProject wird im Paket-Explorer angezeigt:

Sie sind jetzt fertig mit der Einrichtung Ihres Projekts!

4 TestNG-Datei erstellen

Gehen Sie folgendermaßen vor, um eine neue TestNG-Datei zu erstellen:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner src und wählen Sie New > Other…:
  2. Wählen Sie TestNG class und klicken Sie dann auf Next:

  3. Klicken Sie auf Durchsuchen…, um einen Quellordner auszuwählen, wählen Sie MyFirstTestNGProject > src und klicken Sie auf OK.

  4. Geben Sie die folgenden Informationen ein:

    • Paketname: myfirsttestngpackage
    • Klassenname: MyFirstTestNGFile
    • @BeforeTest: true
    • @AfterTest: wahr

  5. Klicken Sie auf Fertig stellen. Die Vorlage für Ihre erste TestNG-Datei wird automatisch erstellt:

    Die Annotation @Test wird verwendet, um anzugeben, dass die Methode darunter ein Testfall ist. In diesem Fall ist die Methode f ein Testfall. Die Annotation @BeforeTest wird verwendet, um anzugeben, dass die Methode darunter vor dem ersten Testfall ausgeführt wird. Die Annotation @AfterTest wird verwendet, um anzugeben, dass die Methode darunter nach dem letzten Testfall ausgeführt wird.

5 Erstellen eines Testfalls

Lassen Sie uns nun Ihren Testfall codieren.

5.1 WebDriver hinzufügen

Um eine Variable zu erstellen, die für den WebDriver verwendet werden soll, gehen Sie folgendermaßen vor:

  1. Suchen Sie nach folgendem:

    public class MyFirstTestNGFile {
  2. Fügen Sie den folgenden Code in der nächsten Zeile hinzu. Dadurch wird eine Variable driver vom Typ WebDriver erstellt:

    public WebDriver driver;
  3. Drücken Sie Strg + Umschalt +O, um die Importe zu organisieren. Dadurch werden die fehlenden Anweisungen importiert und die nicht verwendeten Importanweisungen entfernt. Die folgende Anweisung wird importiert:

    import org.openqa.selenium.WebDriver;

5.2 Fügen Sie eine BeforeTest-Methode hinzu

Die Annotation @BeforeTest wird verwendet, um anzugeben, dass die Methode darunter vor dem ersten Testfall ausgeführt wird. Öffnen Sie vor dem ersten Testfall den Firefox-Browser, indem Sie die folgenden Schritte ausführen:

  1. Ändern Sie den folgenden Code:

    @BeforeTestpublic void beforeTest() {}

    in:

    @BeforeTestpublic void beforeTest() { driver = new FirefoxDriver();}

    Dadurch wird eine neue Instanz des Firefox-Treibers erstellt und der Firefox-Browser geöffnet.

  2. Drücken Sie STRG + UMSCHALT + O. Die folgende Anweisung wird importiert:

    import org.openqa.selenium.firefox.FirefoxDriver;

5.3 Fügen Sie eine AfterTest-Methode hinzu

Die Annotation @AfterTest wird verwendet, um anzugeben, dass die Methode darunter nach dem letzten Testfall ausgeführt wird. Schließen Sie nach dem letzten Testfall den Browser, indem Sie den folgenden Code ändern:

@AfterTestpublic void afterTest() {}

in:

@AfterTestpublic void afterTest() {driver.close();}

Dadurch wird der Firefox-Browser geschlossen.

5.4 Fügen Sie die erste Testmethode hinzu

Um die erste Testmethode hinzuzufügen, öffnen Sie eine URL im Browser und ändern Sie den folgenden Code:

@Testpublic void f() {}

in:

@Test(priority=1)public void openApp() {driver.get("http://localhost:8080/index.html");}

Diese Testmethode öffnet die URL http://localhost:8080/index.html im Firefox-Browser. Standardmäßig werden die mit @Test annotierten Methoden alphabetisch ausgeführt. Sie können Parameter verwenden, um die Annotationsfunktion zu ändern. Der Parameter priority kann verwendet werden, um die Methoden in einer anderen Reihenfolge auszuführen. TestNG führt die Annotation @Test mit dem niedrigsten Prioritätswert bis zum größten aus.

5.5 Fügen Sie die zweite Testmethode hinzu

Nachdem Sie sich im Anmeldefenster befinden, möchten Sie sich anmelden. Gehen Sie folgendermaßen vor, um die zweite Testmethode hinzuzufügen:

  1. Öffnen Sie Firefox und gehen Sie zu http://localhost:8080/index.html.
  2. Verwenden Sie die Entwicklertools, um das Element zu überprüfen.
  3. Klicken Sie auf das Eingabefeld Benutzername. Die ID des Feldes this ist usernameInput. Der CSS-Selektor einer ID ist ein Hashtag (#) + der Name der ID. Für das Feld Benutzername ist dies #usernameInput . Das gleiche Prinzip wird für die anderen Schritte verwendet. Der CSS-Selektor #usernameInput ist eindeutig. Es gibt einen passenden Knoten:

  4. Wiederholen Sie die Schritte 5-6 für das Passwort-Eingabefeld und die Schaltfläche Anmelden:

    Element CSS-Auswahl
    Passwort-Eingabefeld #passwordInput
    Anmelden button #loginButton
  5. Fügen Sie eine neue Testmethode mit dem Namen login hinzu. Verwenden Sie den folgenden 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();}

Diese Testmethode enthält die folgenden Testschritte:

  1. Geben Sie MxAdmin als Benutzernamen ein.
  2. Geben Sie 1 als Passwort ein.
  3. Klicken Sie auf die Schaltfläche Anmelden.

5.6 Fügen Sie die dritte Testmethode hinzu

Gehen Sie folgendermaßen vor, um die dritte Testmethode hinzuzufügen:

  1. Öffnen Sie Ihre App und öffnen Sie im App Explorer die Seite ProgramDetail.
  2. Wählen Sie die Registerkarte Ausgaben:

    Der Name der Registerkarte Ausgaben lautet tabPage4. Jedes Element erhält automatisch die CSS-Klasse mx-name-, sodass die Registerkarte Ausgaben die CSS-Klasse mx-name-tabPage4 erhält, wenn die App ausgeführt wird.

  3. Zurück zu Eclipse.

  4. Fügen Sie eine neue Testmethode mit dem Namen openExpensesTab hinzu. Verwenden Sie den folgenden Code:

    @Test(priority=3)public void openExpensesTab() { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mx-name-tabPage4"))).click();}

    Diese Testmethode ruft ExpectedCondition alle 500 Millisekunden auf, bis sie entweder erfolgreich zurückgegeben wird oder 10 Sekunden vergangen sind. Wenn 10 Sekunden vergangen sind und das Element nicht gefunden wird, wird eine TimeoutException ausgelöst. Wenn sich das Element innerhalb von 10 Sekunden befindet, klickt die Methode auf das Element mit dem Klassennamen mx-name-tabPage4. Die Klasse der Registerkarte Ausgaben ist mx-name-tabPage4. Der CSS-Selektor einer Klasse ist ein Punkt (.) + der Klassenname, also für die Registerkarte Ausgaben .mx-name-tabPage4.

5.7 Fügen Sie die vierte Testmethode hinzu

Nachdem Sie sich nun auf der Registerkarte Ausgaben befinden, möchten Sie eine neue Ausgabe erstellen. Gehen Sie folgendermaßen vor, um die vierte Testmethode hinzuzufügen:

  1. Öffnen Sie Studio Pro und dann die Seite Desktop_AdminMenu.
  2. Wählen Sie die Schaltfläche Neue Ausgabe:

    Der Name der neuen Ausgabenschaltfläche lautet newButton3, daher hat die Schaltfläche die CSS-Klasse mx-name-newButton3:

  3. Öffnen Sie die Seite Desktop_Expense_NewEdit_Admin.

  4. Suchen Sie die Namen der folgenden Elemente (wie in Schritt 3):

    Element Name
    Feld Betrag textBox6
    Beschreibung Dropdown referenceSelector1
    Schaltfläche Speichern 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.
  5. Zurück zu Eclipse.

  6. Fügen Sie eine neue Testmethode mit dem Namen createExpense hinzu. Verwenden Sie den folgenden 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();}

    Diese Testmethode enthält die folgenden Testschritte:

    1. Klicken Sie auf Neue Ausgabe.
    2. Löschen Sie das Feld Betrag.
    3. Geben Sie 15 ein.00 im Feld Betrag.
    4. Wählen Sie die zweite Option aus dem Dropdown-Menü Beschreibung.
    5. Klicken Sie auf Speichern.

    Nach dem Klicken auf Neue Ausgabe (.mx-name-newButton3)wird ein Popup-Fenster angezeigt. Um sicherzustellen, dass das Element der aktiven Seite abgerufen wird (in diesem Fall das Popup), müssen Sie .mx-window-active zum CSS-Selektor der Elemente im Popup hinzufügen.

    Für jedes Eingabefeld müssen Sie am Ende des CSS-Selektors input hinzufügen.

    Der Standardwert für das Feld Betrag ist 0,00. Um einen neuen Wert einzugeben, müssen Sie zuerst das Feld löschen.

    Die Referenzauswahl hat sechs Optionen; leer, Unterkunft, Essen, Andere, Vorräte, Transport. Um die Unterkunft (die zweite Option) auszuwählen, müssen Sie am Ende des CSS-Selektors option:nth-child(2) hinzufügen.

5.8 Fügen Sie die fünfte Testmethode hinzu

Nachdem Sie eine Ausgabe erstellt haben, möchten Sie sich abmelden. Gehen Sie folgendermaßen vor, um die fünfte Testmethode hinzuzufügen:

  1. Öffnen Sie Studio Pro und dann das Snippet Desktop_MyInfo.
  2. Finden Sie den Namen des folgenden Elements:

    Element Name
    Abmelden Button signOutButton1
  3. Fügen Sie eine neue Testmethode mit dem Namen signOut hinzu. Verwenden Sie den folgenden Code:

    @Test(priority=5)public void signOut() { driver.findElement(By.cssSelector(".mx-name-signOutButton1")).click();}

    Diese Testmethode klickt auf das Element mit dem Klassennamen mx-name-signOutButton1.

6 Führen Sie den Test aus

Sie sind jetzt bereit, den Test auszuführen. Führen Sie die folgenden Schritte aus, um den Test auszuführen:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner MyFirstTestNGProject.
  2. Wählen Sie Ausführen als > TestNG Test:

    Die Ergebnisse des Tests werden im Konsolenfenster und im Fenster TestNG-Ergebnisse angezeigt:

7 Testbericht

TestNG generiert Berichte im HTML-Format. Gehen Sie folgendermaßen vor, um den Bericht zu testen:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner MyFirstTestNGProject und wählen Sie Aktualisieren. Ein Test-Output-Ordner wird erstellt:

  2. Öffnen Sie den Ordner test-output.

  3. Klicken Sie mit der rechten Maustaste auf den Index.HTML-Datei.

  4. Wählen Sie Öffnen mit > Webbrowser. Der Bericht wird so aussehen:

  5. Klicken Sie auf (Anzeigen). Die Prüfmethoden sind alphabetisch dargestellt:

  6. Klicken Sie auf die chronologische Ansicht. Eine Übersicht mit den Methoden in chronologischer Reihenfolge wird angezeigt:

8 Erstellen einer Testsuite

Wenn Sie Ihren Test wie in Test ausführen ausführen, wird automatisch eine Testsuite erstellt. Diese Testsuite enthält alle TestNG-Dateien, die im Projekt gefunden werden können. Aber was ist, wenn Sie nur bestimmte Tests durchführen möchten? Dann müssen Sie selbst eine Testsuite erstellen.

  1. Klicken Sie mit der rechten Maustaste auf den Ordner src und wählen Sie New > Other.
  2. Öffnen Sie den XML-Ordner und wählen Sie XML-Datei:

  3. Klicken Sie auf Weiter.

  4. Ändern Sie den Dateinamen in MyFirstTestSuite.XML.

  5. Klicken Sie auf Fertig stellen, um die XML-Datei zu erstellen:

  6. Klicken Sie auf die Registerkarte Quelle:

  7. Ändern Sie den folgenden Code:

    <?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>

    Dadurch wird die neue Testsuite MyFirstTestSuite erstellt. Die Testsuite enthält einen Test: Test1. Der Test enthält eine TestNG-Datei, myfirsttestngpackage.MyFirstTestNGFile.

  8. Klicken Sie mit der rechten Maustaste auf die MyFirstTestSuite.xml-Datei und wählen Sie Ausführen als > 1 TestNG Suite.

Gut gemacht! Sie haben Ihre erste TestNG-Suite erstellt!

9 Führen Sie Ihre Testsuite in mehreren Browsern mit @Parameters

Der von Ihnen erstellte Test wird jetzt nur noch in Firefox ausgeführt. Wenn Sie sicherstellen möchten, dass die Funktionalität in anderen Browsern wie erwartet funktioniert, müssen Sie Tests mit mehreren Browsern durchführen. Mit TestNG ist es sehr einfach, denselben Test in verschiedenen Browsern durchzuführen.

  1. Laden Sie den ChromeDriver hier herunter: https://sites.google.com/a/chromium.org/chromedriver/downloads.
  2. Laden Sie den IEDriver hier herunter: http://selenium-release.storage.googleapis.com/index.html.
  3. Öffnen Sie in Eclipse MyFirstTestNGFile und ändern Sie den folgenden 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 wird verwendet, um einen Parameter (in diesem Fall browser) aus der Testsuite-XML einzufügen. Wenn der Browserparameter chrome ist, wird ein Chrome-Treiber gestartet.

    In diesem Abschnitt chromedriver.exe wird in der C://Selenium ordner. Achten Sie darauf, den richtigen Pfad in diesem Code zu verwenden.

  4. Drücken Sie Strg + Umschalt + O, und die folgenden Anweisungen werden importiert:

    import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.ie.InternetExplorerDriver;import org.testng.annotations.Parameters;
  5. Öffnen Sie MyFirstTestSuite und ändern Sie den folgenden 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>

    Der erste Test (ChromeTest ) hat den Browserparameter chrome. Dieser Parameter wird in der Methode @BeforeTest in MyFirstTestNGFile verwendet.

  6. Klicken Sie mit der rechten Maustaste auf die MyFirstTestSuite.xml-Datei und wählen Sie Ausführen als > TestNG Suite:

Gut gemacht! Sie haben Ihren ersten automatisierten Cross-Browser-Test mit TestNG erstellt!

Jetzt wissen Sie, wie Sie eine TestNG-Testdatei erstellen, wie Sie eine Testsuite erstellen und wie Sie die automatisierten Tests in mehreren Browsern ausführen.

Viel Spaß beim Testen!

10 Weiterlesen

  • Testen Sie Mendix-Anwendungen mit Selenium IDE
  • Testen Sie Microflows mit dem Unit-Testmodul

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.