Gurke - Kurzanleitung

Um die Softwaretests besser nutzen zu können, machen Unternehmen heutzutage einen Schritt nach vorne. Sie implementieren wichtige Abnahmetestszenarien während der Entwicklung. Dieser Ansatz ist allgemein bekannt alsBehavior Driven Development (BDD).

Behavior Driven Development bietet uns die Möglichkeit, Testskripte sowohl aus Entwickler- als auch aus Kundensicht zu erstellen. Zu Beginn kommen Entwickler, Projektmanager, QAs, Benutzerakzeptanztester und der Product Owner (Aktionär) zusammen und überlegen, welche Testszenarien bestanden werden sollten, um diese Software / Anwendung als erfolgreich zu bezeichnen. Auf diese Weise erhalten sie eine Reihe von Testszenarien. Alle diese Testskripte sind in einfacher englischer Sprache verfasst und dienen daher auch der Dokumentation.

Beispiel

Wenn wir eine Benutzerauthentifizierungsfunktion entwickeln, können im Folgenden einige wichtige Testszenarien aufgeführt werden, die bestanden werden müssen, um sie als Erfolg zu bezeichnen.

  • Der Benutzer sollte sich mit dem richtigen Benutzernamen und dem richtigen Passwort anmelden können.

  • Der Benutzer sollte sich nicht mit falschem Benutzernamen und korrektem Passwort anmelden können.

  • Der Benutzer sollte sich nicht mit dem richtigen Benutzernamen und dem falschen Passwort anmelden können.

Wie es funktioniert

Wenn der Code fertig ist, sind auch Testskripte fertig. Der Code muss die in BDD definierten Testskripte bestehen. Ist dies nicht der Fall, ist ein Code-Refactoring erforderlich. Code wird erst nach erfolgreicher Ausführung definierter Testskripte eingefroren.

Es ist eine sehr einfache Vorstellung, aber was wir brauchen, um dieses Konzept umzusetzen. Die Antwort lautet: Behavior Driven Development (BDD) Framework. Cucumber ist ein solches Open-Source-Tool, das die verhaltensgesteuerte Entwicklung unterstützt. Genauer gesagt kann Cucumber als Testframework definiert werden, das von einfachem englischen Text gesteuert wird. Es dient als Dokumentation, automatisierte Tests und Entwicklungshilfe - alles in einem.

Was macht Gurke? Es kann in den folgenden Schritten beschrieben werden -

Cucumber liest den Code im englischen Klartext (Language Gherkin - wird später in diesem Tutorial vorgestellt) in der Feature-Datei (wird später eingeführt).

Es findet die genaue Übereinstimmung jedes Schritts in der Schrittdefinition (eine Codedatei - Details später im Tutorial).

Der auszuführende Code kann verschiedene Software-Frameworks wie sein Selenium, Ruby on Railsusw. Nicht jedes BDD-Framework-Tool unterstützt jedes Tool.

Dies ist der Grund für die Popularität von Cucumber gegenüber anderen Frameworks wie JBehave, JDave, Easyb, usw.

Cucumber unterstützt über ein Dutzend verschiedene Softwareplattformen wie -

  • Ruby on Rails
  • Selenium
  • PicoContainer
  • Frühlingsrahmen
  • Watir

Vorteile der Gurke gegenüber anderen Werkzeugen

  • Cucumber unterstützt verschiedene Sprachen wie Java.net und Ruby.

  • Es fungiert als Brücke zwischen Geschäfts- und Fachsprache. Wir können dies erreichen, indem wir einen Testfall im Klartext erstellen.

  • Es ermöglicht das Schreiben des Testskripts ohne Kenntnis von Code und die Einbeziehung von Nicht-Programmierern.

  • Es dient im Gegensatz zu anderen Tools dem Zweck eines End-to-End-Test-Frameworks.

  • Aufgrund der einfachen Testskriptarchitektur bietet Cucumber die Wiederverwendbarkeit von Code.

In diesem Kapitel sehen wir das Umgebungssetup für Cucumber mit Selenium WebDriver und Java auf Windows-Computern.

Voraussetzungen für die Einrichtung der Umgebung

Im Folgenden sind die Voraussetzungen aufgeführt, die für die Einrichtung mit - erforderlich sind.

Java

Why we need- Java ist eine robuste Programmiersprache. Cucumber unterstützt die Java-Plattform für die Ausführung.

How to install - -

Step 1 - Laden Sie jdk und jre über den folgenden Link herunter http://www.oracle.com/technetwork/java/javase/downloads/index.html

Step 2 - Lizenzvereinbarung akzeptieren.

Step 3 - Installieren Sie JDK und JRE.

Step 4 - Stellen Sie die Umgebungsvariable wie in den folgenden Screenshots gezeigt ein.

Finsternis

Why we need- Eclipse ist eine integrierte Entwicklungsumgebung (IDE). Es enthält einen Basisarbeitsbereich und ein erweiterbares Plug-In-System zum Anpassen der Umgebung.

How to install - -

Step 1 - Stellen Sie sicher, dass JAVA auf Ihrem Computer installiert ist.

Step 2 - Laden Sie Eclipse von herunter https://eclipse.org/downloads/

Step 3 - Entpacken und Eclipse ist installiert.

Maven

Why we need- Maven ist ein Tool zur Build-Automatisierung, das hauptsächlich für Java-Projekte verwendet wird. Es bietet eine gemeinsame Plattform für Aktivitäten wie das Generieren von Quellcode, das Kompilieren von Code, das Packen von Code in ein JAR usw. Später, wenn eine der Softwareversionen geändert wird, bietet Maven eine einfache Möglichkeit, das Testprojekt entsprechend zu ändern.

How to install - -

Step 1 - Laden Sie Maven über den folgenden Link herunter - https://maven.apache.org/download.cgi

Step 2 - Entpacken Sie die Datei und merken Sie sich den Speicherort.

Step 3 - Erstellen Sie die Umgebungsvariable MAVEN_HOME wie im folgenden Screenshot gezeigt.

Step 4 - Bearbeiten Sie die Pfadvariable und schließen Sie Maven ein, wie im folgenden Screenshot gezeigt.

Step 5 - Laden Sie das MAVEN-Plugin von Eclipse herunter.

Step 6 - Öffnen Sie Eclipse.

Step 7 - Gehen Sie zu Hilfe → Eclipse-Marktplatz → Search Maven → Maven-Integration für Eclipse → INSTALLIEREN.

Konfigurieren Sie Gurke mit Maven

Step 1 - Erstellen Sie ein Maven-Projekt.

  • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

  • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

  • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen). Klicken Sie auf Fertig stellen.

Step 2 - Öffnen Sie pom.xml.

  • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

  • Erweitern Sie das Projekt CucumberTest.

  • Lokalisieren pom.xml Datei.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option aus. Öffnen Sie sie mit „Texteditor“.

Step 3 - Abhängigkeit für Selen hinzufügen: Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Öffnen pom.xml Wenn Sie sich im Bearbeitungsmodus befinden, erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

  • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag (<Abhängigkeit> </ Abhängigkeit>).

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 4 - Abhängigkeit für Cucumber-Java hinzufügen: Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an

<dependency> 
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 5 - Abhängigkeit für Cucumber-JUnit hinzufügen: Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 6 - Abhängigkeit für JUnit hinzufügen: Dies zeigt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 7 - Überprüfen Sie die Binärdateien.

  • Einmal pom.xml wird erfolgreich bearbeitet, speichern Sie es.

  • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

Sie können ein Maven-Repository sehen, wie im folgenden Screenshot gezeigt.

  • Erstellen Sie eine Feature-Datei (wird später behandelt).

  • Erstellen Sie eine Schrittdefinitionsdatei (wird später behandelt).

  • Erstellen Sie einen JUnit-Runner, um den Test auszuführen (wird später behandelt).

Bisher haben wir ein Verständnis für Gurke und was es tut. Es führt die Testskripte aus, die in der Feature-Datei definiert wurden (wird in den folgenden Kapiteln behandelt). Die Sprache, in der diese ausführbaren Feature-Dateien geschrieben sind, ist bekannt alsGherkin. Gherkin ist eine einfache englische Textsprache, die dem Tool - Cucumber hilft, die Testskripte zu interpretieren und auszuführen.

Man könnte denken, dass es schon oft diskutiert wurde, dass Cucumber einfachen englischen Text unterstützt, warum wir dann eine separate Sprache brauchen - Gurken. Die Antwort liegt im Konzept der verhaltensgetriebenen Entwicklung.

Wie bereits erwähnt, haben wir festgestellt, dass BDD beim Erstellen von Testskripten unterschiedliche Perspektiven berücksichtigt. Es kann sich um eine Entwicklungsperspektive, eine Geschäftsperspektive usw. handeln. Wir benötigen jedoch Mitarbeiter aus verschiedenen Communitys wie Entwickler, Projektmanager, Produktbesitzer und Tester, um Testskripte zu entwickeln. Da diese Personen nicht derselben Kategorie angehören, besteht das Risiko, dass sie nicht die gemeinsame Sprache für die Konzeption von Testskripten verwenden. Dies war der Evolutionspunkt für Gurken.

Gherkin bietet die gängigen Schlüsselwörter im englischen Text, die von Personen aus den verschiedenen Communitys verwendet werden können und dennoch die gleiche Ausgabe in Form von Testskripten erhalten.

Beispiel

Feature - Anmeldefunktion für eine Social-Networking-Site. Given Ich bin ein Benutzer einer Social-Networking-Site. When Ich gebe den Benutzernamen als Benutzername1 ein. And Ich gebe das Passwort als Passwort1 ein. Then Ich sollte auf die Homepage der Site weitergeleitet werden.

Das oben erwähnte Szenario betrifft eine Funktion namens Benutzeranmeldung. Alle fett hervorgehobenen Wörter sind Gurken-Schlüsselwörter.

Beispiel einiger anderer Schlüsselwörter -

  • Background
  • But
  • *
  • Szenarioübersicht
  • Examples

Gherkin analysiert jeden Schritt, der in die Schrittdefinitionsdatei geschrieben wurde (wird später behandelt). Daher sollten die in der Feature-Datei und der Schrittdefinitionsdatei (die später behandelt werden sollen) genannten Schritte übereinstimmen.

Sie finden die Gurkengläser im Ordner Maven Dependency im Paket-Explorer. Es wird zusammen mit den anderen Gurkengläsern heruntergeladen. Es wird wie folgt aussehen:

Eine weitere interessante Tatsache bei Gherkin ist, dass es nicht nur Englisch unterstützt, sondern auch viele andere Muttersprachen wie Französisch, Finnisch, Indonesisch, Ungarisch, Hindi, Urdu, Gujarati usw.

EIN Featurekann als eigenständige Einheit oder Funktionalität eines Projekts definiert werden. Nehmen wir ein sehr verbreitetes Beispiel für eine Social-Networking-Site. Wie sieht die Funktion dieses Produkts / Projekts aus? Nur wenige Grundfunktionen können wie folgt ermittelt werden:

  • Erstellen Sie den Benutzer und entfernen Sie ihn von der Website für soziale Netzwerke.

  • Benutzeranmeldefunktion für die Website für soziale Netzwerke.

  • Teilen von Fotos oder Videos auf der Website für soziale Netzwerke.

  • Senden einer Freundschaftsanfrage.

  • Logout.

Inzwischen ist klar, dass jede unabhängige Funktionalität des zu testenden Produkts als Merkmal bezeichnet werden kann, wenn wir über Gurke sprechen. Wenn Sie später mit dem Testen beginnen, sollten Sie vor dem Ableiten der Testskripte die zu testenden Funktionen festlegen.

Eine Funktion enthält normalerweise eine Liste von Szenarien, die für diese Funktion getestet werden sollen. Eine Datei, in der wir Features speichern, eine Beschreibung der zu testenden Features und Szenarien ist bekannt alsFeature File. Weitere Informationen zu Feature-Dateien finden Sie im folgenden Kapitel.

Das Schlüsselwort für ein in Gherkins getestetes Feature lautet "Feature". Die empfohlene Vorgehensweise besteht darin, eine kleine Beschreibung des Features unter den Feature-Titel in die Feature-Datei zu schreiben. Dies wird auch die Notwendigkeit einer guten Dokumentation erfüllen.

Beispiel

Feature - Anmeldefunktion für eine Social-Networking-Site.

Der Benutzer sollte sich auf der Website für soziale Netzwerke anmelden können, wenn der Benutzername und das Kennwort korrekt sind.

Dem Benutzer sollte die Fehlermeldung angezeigt werden, wenn der Benutzername und das Passwort falsch sind.

Der Benutzer sollte zur Startseite navigiert werden, wenn der Benutzername und das Passwort korrekt sind.

Feature-Dateien

Die Datei, in die Gurkentests geschrieben werden, ist bekannt als feature files. Es wird empfohlen, für jedes zu testende Feature eine separate Feature-Datei zu erstellen. Die Erweiterung der Feature-Datei muss ".feature" sein.

Man kann so viele Feature-Dateien wie nötig erstellen. Um eine organisierte Struktur zu haben, sollte jedes Feature eine Feature-Datei haben.

Zum Beispiel -

Sr.Nr. Merkmal Name der Feature-Datei
1 Benutzer-Anmeldung userLogin.feature
2 Teile den Beitrag sharePost.feature
3 Benutzerkonto anlegen createAccount.feature
4 Konto löschen deleteAccount.feature

Die Namenskonvention für den Feature-Namen und den Namen der Feature-Datei hängt von der Wahl der Person ab. In Cucumber gibt es keine Grundregel für Namen.

Eine einfache Feature-Datei besteht aus den folgenden Schlüsselwörtern / Teilen:

  • Feature - Name der zu testenden Funktion.

  • Description (optional) - Beschreiben der zu testenden Funktion.

  • Scenario - Was ist das Testszenario?

  • Given - Voraussetzung, bevor die Testschritte ausgeführt werden.

  • When - Spezifische Bedingung, die übereinstimmen sollte, um den nächsten Schritt auszuführen.

  • Then - Was soll passieren, wenn die unter WANN genannte Bedingung erfüllt ist?

Beispiel

Feature - Benutzeranmeldung auf der Website für soziale Netzwerke.

Der Benutzer sollte sich auf der Website für soziale Netzwerke anmelden können, wenn der Benutzername und das Kennwort korrekt sind.

Dem Benutzer sollte eine Fehlermeldung angezeigt werden, wenn der Benutzername und das Passwort falsch sind.

Der Benutzer sollte zur Startseite navigiert werden, wenn der Benutzername und das Passwort korrekt sind.

Outline - Anmeldefunktion für eine Social-Networking-Site.

Der angegebene Benutzer navigiert zu Facebook. Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe. Dann sollte die Anmeldung nicht erfolgreich sein.

| username  | password  |
| username1 | password1 |

* AND Das Schlüsselwort wird verwendet, um die Verbindung zwischen zwei Bedingungen anzuzeigen. AND kann mit allen anderen Schlüsselwörtern wie verwendet werden GIVEN, WHEN und THEN.

In der Feature-Datei sind keine logischen Details geschrieben.

Schritte Definitionen

Wir haben unsere Feature-Datei mit den definierten Testszenarien fertig. Dies ist jedoch nicht die vollständige Aufgabe. Cucumber weiß nicht genau, welcher Code für ein bestimmtes in einer Feature-Datei beschriebenes Szenario ausgeführt werden soll.

Dies erfordert eine Zwischenschrittdefinitionsdatei. Die Schrittdefinitionsdatei speichert die Zuordnung zwischen jedem Schritt des in der Feature-Datei definierten Szenarios mit einem auszuführenden Funktionscode.

Wenn Cucumber nun einen Schritt des in der Feature-Datei genannten Szenarios ausführt, scannt es die Schrittdefinitionsdatei und ermittelt, welche Funktion aufgerufen werden soll.

Beispiel für eine Schrittdefinitionsdatei

public void goToFacebook() { 
   driver = new FirefoxDriver(); 
   driver.navigate().to("https://www.facebook.com/"); 
} 
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$" public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then"^login should be unsuccessful$" 
public void validateRelogin() { 
   if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
         System.out.println("Test Pass");
   } else { 
      System.out.println("Test Failed"); 
   } 
   driver.close(); 
}

Mit jeder Funktion können Sie den Code, den Sie mit jedem Testschritt ausführen möchten (dh GIVEN / THEN / WHEN), in die Schrittdefinitionsdatei schreiben. Stellen Sie sicher, dass für jeden Schritt Code / Funktion definiert wurde.

Diese Funktion kann Java-Funktionen sein, bei denen wir sowohl Java- als auch Selenium-Befehle verwenden können, um unsere Testschritte zu automatisieren.

Scenarioist eine der Kernstrukturen von Gurken. Jedes Szenario beginnt mit dem Schlüsselwort "Szenario:" (oder einem lokalisierten) und wird von einem optionalen Szenariotitel gefolgt. Jedes Feature kann ein oder mehrere Szenarien haben und jedes Szenario besteht aus einem oder mehreren Schritten. Ein sehr einfaches Beispiel für ein Szenario kann sein:

Scenario - Überprüfen Sie die Hilfefunktionalität.

Der angegebene Benutzer navigiert zu Facebook.

Wenn der Benutzer auf Hilfe klickt, wird die Hilfeseite geöffnet.

Stellen Sie sich einen Fall vor, in dem wir ein Testszenario mehrmals ausführen müssen. Angenommen, wir müssen sicherstellen, dass die Anmeldefunktion für alle Arten von Abonnenten funktioniert. Dies erfordert die mehrfache Ausführung des Anmeldefunktionalszenarios. Kopieren Einfügen der gleichen Schritte, um nur den Code erneut auszuführen, scheint keine kluge Idee zu sein. Zu diesem Zweck bietet Gherkin eine weitere Struktur, nämlich die Szenariokontur.

Die Szenariokontur ähnelt der Szenariostruktur. Der einzige Unterschied besteht in der Bereitstellung mehrerer Eingänge. Wie Sie im folgenden Beispiel sehen können, bleibt der Testfall derselbe und nicht wiederholbar. Unten haben wir mehrere Eingabewerte für die Variablen "Benutzername" und "Passwort" angegeben. Während der Ausführung des eigentlichen Tests ersetzt Cucumber die Variable durch die angegebenen Eingabewerte und führt den Test aus. Sobald Pass-1 ausgeführt wurde, wird der Test für die zweite Iteration mit einem anderen Eingabewert erneut ausgeführt. Solche Variablen oder Platzhalter können mit "<>" dargestellt werden, während mit Gurkenanweisungen erwähnt wird.

Beispiel

Scenario Outline- Anmeldefunktion für eine Social-Networking-Site. Der angegebene Benutzer navigiert zu Facebook.

Wenn sich der Benutzer mit dem Benutzernamen "<Benutzername>" und dem Kennwort "<Kennwort>" anmeldet, sollte die Anmeldung erfolgreich sein.

| username | password  | 
| user1    | password1 | 
| user2    | password2 |

Es gibt einige Tipps und Tricks, um die Gurkenszenarien intelligent zu definieren.

  • Jeder Schritt sollte klar definiert sein, damit der Leser keine Verwirrung stiftet.

  • Wiederholen Sie das Testszenario nicht. Verwenden Sie bei Bedarf die Szenariokontur, um die Wiederholung zu implementieren.

  • Entwickeln Sie einen Testschritt so, dass er in mehreren Szenarien und Szenarioumrissen verwendet werden kann.

  • Halten Sie jeden Schritt so weit wie möglich völlig unabhängig. Zum Beispiel: "Vorausgesetzt, der Benutzer ist angemeldet". Dies kann in zwei Schritte unterteilt werden

    • Gegeben, der Benutzer gibt den Benutzernamen ein.
    • Klickt auf Login.

Annotationist ein vordefinierter Text, der eine bestimmte Bedeutung hat. Es informiert den Compiler / Interpreter darüber, was bei der Ausführung zu tun ist. Gurke hat die folgenden Anmerkungen -

  • Given - -

    • Es beschreibt die Voraussetzung für die Ausführung des Tests.

    • Beispiel - GEGEBEN Ich bin ein Facebook-Benutzer

  • When - -

    • Es definiert den Triggerpunkt für jede Ausführung eines Testszenarios.

    • Beispiel - WENN ich "<Benutzername>" eingebe

  • Then - -

    • Dann enthält das erwartete Ergebnis für den auszuführenden Test.

    • Beispiel - DANN sollte die Anmeldung erfolgreich sein.

  • And - -

    • Es stellt die logische UND-Bedingung zwischen zwei beliebigen Anweisungen bereit. AND kann in Verbindung mit der Anweisung GIVEN, WHEN und THEN verwendet werden.

    • Beispiel - WENN ich meinen "<Benutzernamen>" UND mein "<Kennwort>" eingebe

  • But - -

    • Es bedeutet eine logische ODER-Bedingung zwischen zwei beliebigen Anweisungen. OR kann in Verbindung mit der Anweisung GIVEN, WHEN und THEN verwendet werden.

    • Beispiel - DANN sollte die Anmeldung erfolgreich sein. ABER die Homepage sollte nicht fehlen.

  • Scenario - -

    • Details zum zu testenden Szenario müssen nach dem Schlüsselwort "Szenario:" erfasst werden.

    • Beispiel -

      Szenario:

      GEGEBEN Ich bin ein Facebook-Nutzer

      WENN ich meine betrete

      UND ich betrete meine

      DANN sollte die Anmeldung erfolgreich sein.

      ABER die Homepage sollte nicht fehlen.

  • Scenario Outline - (Wird später behandelt)

  • Examples - (Wird später behandelt)

  • Background - -

    • Im Hintergrund finden Sie im Allgemeinen Anweisungen zum Einrichten, bevor jedes Szenario ausgeführt wird. Es wird jedoch nach dem "Vorher" -Hook ausgeführt (wird später behandelt). Dies ist also ideal für Code, wenn wir den Webbrowser einrichten oder die Datenbankkonnektivität herstellen möchten.

      • Beispiel -

        Hintergrund:

        Gehen Sie zur Facebook-Homepage.

Beispielszenario

Lassen Sie uns ein Szenario automatisieren, um Anmerkungen besser zu verstehen.

Step 1

Erstellen Sie ein Maven-Testprojekt mit dem Namen AnnotationTest.

  • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

  • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

  • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen).

  • Klicken Sie auf Fertig stellen.

  • Öffnen pom.xml −

    • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

    • Erweitern Sie das Projekt AnnotationTest.

    • Suchen Sie die Datei pom.xml.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

  • Abhängigkeit für Selen hinzufügen - Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

    • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag (<Abhängigkeit> </ Abhängigkeit>).

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Abhängigkeit für Cucumber-Java hinzufügen - Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für Cucumber-JUnit hinzufügen - Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Überprüfen Sie die Binärdateien.

    • Sobald pom.xml erfolgreich bearbeitet wurde, speichern Sie es.

    • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

Step 2

Erstellen Sie ein Paket mit dem Namen Annotation unter src/test/java

  • Wählen Sie das neu erstellte Projekt aus.

  • Klicken Sie mit der rechten Maustaste und wählen Sie "Neu".

  • Wählen Sie die Option "Paket".

  • Nennen Sie es als "Anmerkung".

  • Speichern Sie es.

Step 3

Erstellen Sie eine Feature-Datei mit dem Namen annotation.feature.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie outline.feature.

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

Feature: annotation 
#This is how background can be used to eliminate duplicate steps 

Background: 
   User navigates to Facebook Given 
   I am on Facebook login page 

#Scenario with AND 
Scenario: 
   When I enter username as "TOM"
   And I enter password as "JERRY" 
   Then Login should fail 

#Scenario with BUT 
Scenario: 
   When I enter username as "TOM" 
   And I enter password as "JERRY" 
   Then Login should fail 
   But Relogin option should be available

Step 4

Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen als an annotation.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Annotation; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class annotation { 
   WebDriver driver = null; 
   @Given("^I am on Facebook login page$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter username as \"(.*)\"$") 
   public void enterUsername(String arg1) {   
      driver.findElement(By.id("email")).sendKeys(arg1); 
   }
	
   @When ("^I enter password as \"(.*)\"$") public void enterPassword(String arg1) { driver.findElement(By.id("pass")).sendKeys(arg1); driver.findElement(By.id("u_0_v")).click(); } @Then("^Login should fail$") 
   public void checkFail() {  
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test1 Pass"); 
      } else { 
         System.out.println("Test1 Failed"); 
      } 
      driver.close(); 
   } 
	
   @Then("^Relogin option should be available$") 
   public void checkRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test2 Pass"); 
      } else { 
         System.out.println("Test2 Failed"); 
      } 
      driver.close(); 
   }
}

Step 5

Erstellen Sie eine Runner-Klassendatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen, z runTest.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Annotation; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { 
}

Step 6

Führen Sie den Test mit der Option - aus.

  • Wählen Sie im Paket-Explorer die Datei runTest.java aus.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option ‘Run as’

  • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen:

  • Facebook wird in einer neuen Firefox-Webbrowser-Instanz geöffnet.

  • TOM wird als Eingabe an das Feld Benutzername übergeben.

  • JERRY wird als Eingabe in das Passwortfeld übergeben.

  • Login wird angeklickt.

  • Im Browser wird eine Meldung angezeigt, dass die Anmeldung nicht erfolgreich war.

  • In der Konsole wird "Test Pass" gedruckt

  • Schritt Ergebnis 1. bis 5. Wird für den Benutzernamen als "" und das Passwort als "" erneut ausgeführt.

Scenario outlineErsetzt grundsätzlich Variablen / Schlüsselwörter durch den Wert aus der Tabelle. Jede Zeile in der Tabelle wird als Szenario betrachtet.

Fahren wir mit demselben Beispiel der Facebook-Anmeldefunktion fort. Bisher haben wir ein Szenario ausgeführt: Nach Angabe des richtigen Benutzernamens ist die Anmeldung erfolgreich. Angenommen, wir möchten überprüfen, ob die Anmeldung für alle drei möglichen Arten von Eingaben erfolgreich ist, nämlich Benutzername, E-Mail-Adresse oder Telefonnummer. Um dies zu erreichen, müssen wir drei verschiedene Szenarien schreiben, wobei jedes Szenario von der Art der Eingabe abhängt. Die Anmeldung ist erfolgreich. In diesem Fall sehen die Szenarien wie folgt aus.

Scenario:

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den richtigen Benutzernamen und das richtige Passwort eingebe

Dann sollte die Anmeldung erfolgreich sein

Scenario:

Der angegebene Benutzer navigiert zu Facebook

Wenn ich die richtige E-Mail-Adresse und das richtige Passwort eingebe

Dann sollte die Anmeldung erfolgreich sein

Scenario:

Der angegebene Benutzer navigiert zu Facebook

Wenn ich die richtige Telefonnummer und das richtige Passwort eingebe

Dann sollte die Anmeldung erfolgreich sein

Hier sehen wir, wenn wir genau sehen, für die obigen drei Szenarien: Anweisungen sind gleich, nur der Eingabeparameter (Benutzername / E-Mail-Adresse / Telefonnummer) ändert sich. Hier kommt die Bedeutung der Szenariokontur ins Spiel.

Wenn wir ein Szenario mit Szenarioübersicht definieren, können wir ein Testszenario angeben und am Ende eine Reihe von Eingaben bereitstellen. Das Szenario wird so oft ausgeführt wie die Anzahl der bereitgestellten Eingaben.

Beispiel

Lassen Sie uns ein Beispiel für eine Szenariokontur erstellen -

Step 1 - Erstellen Sie ein Maven-Testprojekt mit dem Namen ScenarioOutlineTest

  • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

  • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

  • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen).

  • Klicken Sie auf Fertig stellen.

  • Öffnen pom.xml - -

    • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

    • Erweitern Sie das Projekt CucumberTest.

    • Suchen Sie die Datei pom.xml.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

  • Abhängigkeit für Selen hinzufügen - Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

    • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag (<Abhängigkeit> </ Abhängigkeit>).

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Abhängigkeit für Cucumber-Java hinzufügen: Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für Cucumber-JUnit hinzufügen: Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Überprüfen Sie die Binärdateien.

    • Sobald pom.xml erfolgreich bearbeitet wurde, speichern Sie es.

    • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

Step 2 - Erstellen Sie ein Paket mit dem Namen "Gliederung" unter src/test/java

Step 3 - Erstellen Sie eine Feature-Datei mit dem Namen “outline.feature”

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen wie z “outline.feature”

    • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

      Feature - Szenarioübersicht

      Scenario Outline - Anmeldefunktion für eine Social-Networking-Site.

      Der angegebene Benutzer navigiert zu Facebook

      Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe

      Dann sollte die Anmeldung nicht erfolgreich sein

Example - -

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note- Hier beschreibt eine Beispielanmerkung den Eingabebereich, der bei der Ausführung des Szenarios bereitgestellt werden soll. Das Testszenario wird für jede der bereitgestellten Eingaben ausgeführt. Im angegebenen Beispiel wird das Testszenario also dreimal ausgeführt.

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen als an stepdefinition.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Outline;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   }    
}

Note- Im obigen Code müssen wir eine Funktion mit zwei Eingabeargumenten definieren: Ein Benutzername und ein anderer sind für das Passwort. Für jeden im Beispiel-Tag bereitgestellten Eingabesatz werden also die Sätze GIVEN, WHEN und THEN ausgeführt.

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen wie z runTest.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • Führen Sie den Test mit der Option - aus.

    • Wählen runTest.java Datei aus dem Paket-Explorer.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option ‘Run as’.

    • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen

  • Facebook wird in einer neuen Firefox-Webbrowser-Instanz geöffnet.

  • Benutzername1 und Passwort1 werden als Eingabe in das Feld Benutzername und Passwort übergeben.

  • Login wird angeklickt.

  • Im Browser wird eine Meldung angezeigt, dass die Anmeldung nicht erfolgreich war.

  • In der Konsole wird "Test Pass" gedruckt.

  • Die Schritte 1 bis 5 werden für Benutzername2 und Passwort2 erneut ausgeführt.

Kurz gesagt, wenn sich das Szenario nicht ändert, sondern nur der Datenwert geändert wird, ist es ratsam, Szenario-Gliederungsdatentabellen zu verwenden.

Es sieht einfach aus, wenn wir nur ein, zwei oder vielleicht fünf Szenarien in einer Feature-Datei haben. Im wirklichen Leben passiert dies jedoch nicht. Für jedes getestete Feature haben wir möglicherweise 10, 20 oder mehr Szenarien in einer einzelnen Feature-Datei. Sie können unterschiedliche Zwecke (Rauchtest / Regressionstest), unterschiedliche Perspektiven (Entwickler / QA / BA), unterschiedliche Status (Ausführungsbereit / In Arbeit) usw. darstellen. Wie wird die Ausführung für eine solche Masse verwaltet?

Zu diesem Zweck hat Cucumber bereits eine Möglichkeit bereitgestellt, die Ausführung Ihres Szenarios mithilfe von Tags in der Feature-Datei zu organisieren. Wir können jedes Szenario mit einem nützlichen Tag definieren. Später können wir in der Runner-Datei entscheiden, welches bestimmte Tag (und damit auch welche Szenarien) Cucumber ausführen soll. Tag beginnt mit "@". Nach "@" können Sie einen beliebigen relevanten Text haben, um Ihr Tag zu definieren. Lassen Sie uns dies anhand eines Beispiels verstehen.

Angenommen, eine Feature-Datei enthält zwei oder mehr Szenarien. Wir wollen im Rahmen des Rauchtests nur ein Szenario ausführen. Das erste ist, dieses Szenario zu identifizieren und das zweite, es am Anfang des Szenarios mit dem Text „@SmokeTest“ zu kennzeichnen. Werfen wir einen tiefen Blick darauf -

Step 1 - Erstellen Sie ein Maven-Projekt mit dem Namen cucumberTag.

Step 2- Erstellen Sie ein Paket mit dem Namen cucumberTag unter src/test/java

Step 3- Erstellen Sie eine Feature-Datei mit dem Namen cucumberTag.feature.

Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn. Diese Feature-Datei enthält zwei Szenarien, in denen nur eines als markiert wurdeSmokeTest Etikett.

Feature - Gurkenanhänger

Scenario Outline - Anmeldefunktion für eine Social-Networking-Site.

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe

Dann sollte die Anmeldung nicht erfolgreich sein

Beispiele

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Das folgende Szenario wurde als SmokeTest markiert und sollte ausgeführt werden. @Rauchtest

Scenario:

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den Benutzernamen als "<>" und das Passwort als "<>" eingebe

Dann sollte der Benutzer zur erneuten Anmeldung weitergeleitet werden

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie cucumberTag.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package cucumberTag;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberTag { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") public void validateRelogin() { if(driver.getCurrentUrl().equalsIgnoreCase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ System.out.println("Test Pass"); } else { System.out.println("Test Failed"); } driver.close(); } @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie eine Runner-Klasse mit dem Namen runTest.java in der Verpackung.

  • Schreiben Sie den folgenden Code.

  • Speicher die Datei.

package cucumberTag; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • Führen Sie die Testoption aus.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option ‘Run as’.

  • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen.

  • Facebook wird in einer neuen Firefox-Webbrowser-Instanz geöffnet.

  • Der Benutzername und das Passwortfeld werden nicht mit einem Wert versehen.

  • Login wird angeklickt.

  • Die Anmelde-Wiederholungsseite wird geladen.

Die Definition von Tags in der Feature-Datei ist unbegrenzt. Je nach Bedarf können Sie zu verwendende Tags und auszuführende Szenarien ableiten.

Es gibt hauptsächlich zwei Arten von Tags -

  • Default tag- Das Standard-Tag hat seine vordefinierte Bedeutung. Beispiel @ Dev, @ Ignorieren

  • Custom tag - Benutzerdefiniertes Tag bietet Ihnen volle Flexibilität bei der Auswahl des geeigneten Textes für die Definition Ihres Tags.

Tag kann auch auf Funktionsebene definiert werden. Sobald Sie ein Tag auf Feature-Ebene definiert haben, wird sichergestellt, dass alle Szenarien in dieser Feature-Datei dieses Tag erben. Abhängig von der Art des Szenarios können wir mehr als ein Tag für das einzelne Feature verwenden. Immer wenn Cucumber einen geeigneten Aufruf findet, wird ein bestimmtes Szenario ausgeführt.

Gurke bietet auch eine Möglichkeit, die Auswahl der Tags umzukehren. Beachten Sie, dass von 25 definierten Szenarien 10 als Rauchtest markiert sind. Wir müssen nur Regressionstestszenarien ausführen.

Dazu können wir in der JUnit-Runner-Klasse „~“ verwenden, um ein Rauchtestszenario auszuschließen. Es wird wie folgt aussehen.

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, 
   tags = {"~@SmokeTest"})
	
public class runTest { }

Während wir mehrere Tags definieren, können wir auch logische oder / und logische und Operationen definieren.

  • Logisch definieren oder in Läuferklasse - @dev,@wip - Es heißt, dass Szenarien ausgeführt werden müssen, die mit einem dieser Tags übereinstimmen.

  • Logisch definieren oder in Läuferklasse - [@dev,~@wip] − Es heißt, dass Szenarien, die diesen beiden Tags entsprechen, ausgeführt werden müssen.

Während wir an der Automatisierung arbeiten, können verschiedene Szenarien auftreten. Jedes Szenario hat eine andere Bedeutung und Bedürfnisse.

Von Anfang an haben wir ein Beispiel für die Anmeldefunktion für eine Social-Networking-Site genommen, bei der nur zwei Eingabeparameter übergeben werden mussten. Lassen Sie uns über eine weitere Möglichkeit nachdenken. Wie wäre es mit der Funktion "Registrierung neuer Benutzer"? Was können normalerweise die Eingabeparameter sein, wenn ein neuer Benutzer für eine Social-Networking-Site registriert wird? So etwas wie das Folgende -

  • Nutzername
  • E-Mail-Addresse
  • Password
  • Kennwort erneut eingeben
  • Birthdate
  • Gender
  • Telefonnummer

Feature - Neue Benutzerregistrierung.

Stellen Sie sicher, dass die Registrierung neuer Benutzer nicht erfolgreich ist, nachdem Sie die falschen Eingaben übergeben haben.

Vorausgesetzt, ich bin auf einer neuen Benutzerregistrierungsseite.

Wenn ich den Benutzernamen und eine E-Mail-Adresse als E-Mail-Adresse und Passwort als eingebe und das Passwort als und das Geburtsdatum als und das Geschlecht als und die Telefonnummer erneut eingebe, sollte die Benutzerregistrierung nicht erfolgreich sein.

Auf den ersten Blick sieht es etwas chaotisch aus. Gibt es eine bessere Möglichkeit, einen solchen Teil der Eingaben zu verwalten? Die Antwort kann "Datentabelle" sein. Die Datentabelle ist eine Eingabe, die für ein einzelnes Tag bereitgestellt werden muss. Dieses Tag kann GIVEN, WHEN oder THEN sein.

Lassen Sie uns das obige Szenario mit Hilfe der Datentabelle schreiben und es wird wie folgt aussehen:

Vorausgesetzt, ich bin auf einer neuen Benutzerregistrierungsseite

Wenn ich gültige Daten auf der Seite eingebe

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Dann sollte die Benutzerregistrierung erfolgreich sein.

Beispiel

Lassen Sie uns ein Beispiel für eine Datentabelle automatisieren.

Step 1 - Erstellen Sie ein Maven-Testprojekt mit dem Namen "DataTableTest".

  • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

  • Zur Verfügung stellen group Id (Die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig.)

  • Zur Verfügung stellen artifact Id (Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen.)

  • Klicken Sie auf Fertig stellen.

  • Öffnen Sie pom.xml -

    • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

    • Erweitern Sie das Projekt CucumberTest.

    • Suchen Sie die Datei pom.xml.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

  • Abhängigkeit für Selen hinzufügen: Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

    • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag. (<Abhängigkeit> </ Abhängigkeit>).

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Abhängigkeit für Cucumber-Java hinzufügen - Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für Cucumber-JUnit hinzufügen - Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Überprüfen Sie die Binärdateien.

    • Sobald pom.xml erfolgreich bearbeitet wurde, speichern Sie es.

    • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

Step 2 - Erstellen Sie ein Paket mit dem Namen dataTable unter src/test/java

Step 3 - Erstellen Sie eine Feature-Datei.

  • Erstellen Sie eine Feature-Datei mit dem Namen dataTable.Feature in der Paketdatentabelle (detailliertere Schritte finden Sie im Abschnitt Szenarioübersicht).

  • Schreiben Sie den folgenden Text.

    Feature - Datentabelle

    Stellen Sie sicher, dass die Registrierung neuer Benutzer nach Übergabe falscher Eingaben nicht erfolgreich ist.

    Scenario:

    Vorausgesetzt, ich bin auf der neuen Benutzerregistrierungsseite

    Wenn ich ungültige Daten auf der Seite eingebe

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

Dann sollte die Benutzerregistrierung nicht erfolgreich sein

  • Speicher die Datei.

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Erstellen Sie die Schrittdefinitionsdatei mit dem Namen 'dataTable.java' in der Paketdatentabelle (detailliertere Schritte finden Sie im Abschnitt Szenarioübersicht).

  • Schreiben Sie den folgenden Code.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 
import cucumber.table.DataTable; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") public void goToFacebook() { //Intiate web browser instance. driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • Speicher die Datei.

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie eine Runner-Klasse mit dem Namen runTest.java im Paket.

  • Schreiben Sie den folgenden Code.

package dataTable; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
 
public class runTest { }
  • Speicher die Datei.

  • Führen Sie den Test mit der Option aus

    • Wählen Sie im Paket-Explorer die Datei runTest.java aus.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option Ausführen als.

    • Wählen Sie JUnit-Test.

Bei erfolgreicher Ausführung können Sie die folgenden Dinge beachten.

  • Facebook-Website wird geladen.

  • Die Daten werden auf der Registrierungsseite eingegeben.

  • Die Schaltfläche Senden wird angeklickt.

  • Wir werden sehen, dass die Homepage nicht angezeigt wird und "Test Pass" auf die Konsole geschrieben wird.

Commentist im Grunde ein Code, der zu Dokumentationszwecken und nicht zur Ausführung gedacht ist. Sei es eine Schrittdefinitionsdatei oder eine Feature-Datei, um sie lesbarer und verständlicher zu machen. Daher ist es wichtig, Kommentare an geeigneten Stellen in der Datei zu verwenden / einzufügen. Dies hilft auch beim Debuggen des Codes. Gurken-Feature-Dateien können an jeder Stelle Kommentare enthalten. Um Kommentare abzugeben, müssen wir die Anweisung nur mit dem Zeichen "#" beginnen.

Verschiedene Programmiersprachen haben unterschiedliche Normen für die Definition der Kommentare. Mal sehen, wie Gurke damit umgeht.

  • Schrittdefinitionsdatei - Wenn Sie Java als Plattform verwenden, markieren Sie Ihre Kommentare mit "//".

  • Feature-Datei - Bei einer Feature-Datei müssen wir nur # eingeben, bevor Sie mit Ihrem Kommentar beginnen.

Beispiel

Der hervorgehobene Text im Programm bezieht sich auf die Kommentare im Code.

Feature: annotation 

#This is how background can be used to eliminate duplicate steps 
Background: 
User navigates to Facebook 
Given I am on Facebook login page 

#Scenario with AND 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 

#Scenario with BUT 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 
But Relogin option should be available

Gurke hookermöglicht es uns, den Code-Workflow besser zu verwalten und die Code-Redundanz zu reduzieren. Wir können sagen, dass es ein unsichtbarer Schritt ist, der es uns ermöglicht, unsere Szenarien oder Tests durchzuführen.

Um diesen Begriff besser zu verstehen, nehmen wir ein Beispiel für eine Feature-Datei und eine Schrittdefinitionsdatei.

Der hervorgehobene Teil in der angegebenen Anweisung erledigt tatsächlich die Aufgabe, den Webdriver einzurichten und die Webdriver-Sitzung zu beenden. Es ist also eigentlich nicht relevant für das Wesentliche der „gegebenen Aussage“, und es ist eher ein Setup für den Test. Auch wenn wir mit einer breiteren Perspektive denken, wird bei mehreren Szenarien für diese Funktion dieses Webdriver-Setup und die Bereinigung mit jeder gegebenen Anweisung ausgeführt. Logischerweise ist es sinnvoll, das Setup und die Bereinigung nur einmal auszuführen.

Um eine Optimierung zu erreichen, können Haken verwendet werden. Häufiger verwenden wir zwei Arten von Haken: "Vorher" -Haken und "Nachher" -Haken. Methode / Funktion / Code, die in Before- und After-Hooks definiert sind, werden immer ausgeführt, auch wenn das Szenario bestanden oder fehlgeschlagen ist.

Wie der Name schon sagt, wird der Hook lange vor allen anderen Testszenarien und nach dem Hook ausgeführt, nachdem alle Szenarien ausgeführt wurden.

Hooks werden nur in der Schrittdefinitionsdatei definiert.

Lassen Sie uns ein Beispiel für vor und nach dem Hook automatisieren.

Step 1 - Erstellen Sie ein Maven-Projekt als hookTest und fügen Sie die erforderliche Abhängigkeit in pom.xml hinzu.

Step 2 - Erstellen Sie ein Java-Paket mit dem Namen hookTest unter src/test/java

Step 3 - Erstellen Sie eine Schrittdefinitionsdatei mit dem Namen hookTest.java unter dem Paket.

package hookTest; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/");
   } 
	
   @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") public void I_enter_Username_as_and_Password_as(String arg1, String arg2) { driver.findElement(By.id("email")).sendKeys(arg1); driver.findElement(By.id("pass")).sendKeys(arg2); driver.findElement(By.id("u_0_v")).click(); } @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Step 4 - Erstellen Sie unter dem Paket eine Feature-Datei mit dem Namen "hookTest.feature".

Feature - Szenarioübersicht.

Scenario Outline - Hakentest

Der angegebene Benutzer navigiert zu Facebook

Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe

Dann sollte die Anmeldung nicht erfolgreich sein

Beispiele

| username  | password  | 
| username1 | password1 |

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie die Runner-Klasse als runTest.java in der Pakettatentabelle (detailliertere Schritte finden Sie in der Übersicht über das Abschnittsszenario).

  • Schreiben Sie den folgenden Code.

package hookTest; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})  

public class runTest { }
  • Speicher die Datei.

  • Führen Sie den Test mit der Option - aus.

    • Wählen Sie im Paket-Explorer die Datei runTest.java aus.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option Ausführen als.

    • Wählen Sie JUnit-Test.

Wenn wir dies ausführen, folgt die folgende Reihenfolge der Ausführung.

  • Vor dem Hook - Richten Sie den Webdriver und andere Voraussetzungen ein, um den Test auszuführen.

  • Gegebene Aussage

  • Wann-Anweisung

  • Dann Aussage

  • Nach dem Hook - Schließen Sie den Webdriver und führen Sie den Bereinigungsvorgang durch.

Tagged Hooks

Wir können auch angeben, ob vor und nach Hooks nur mit einem bestimmten Tag ausgeführt werden soll. Example- @Before ('@ Web'). Das gleiche Konzept des logischen Tags und / oder kann auch mit Hooks angewendet werden.Example - @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)

Gurke kann verwendet werden, um fast jedes Computersystem zu testen. Bisher haben wir gesehen, wie ein Test mit Eclipse IDE ausgeführt wird. Es gibt noch eine weitere Möglichkeit, den Gurkentest über die Befehlszeilenschnittstelle auszuführen. Was ist der Vorteil davon?

Das Ausführen eines Testframeworks vom Terminal aus hat seine eigenen Vorteile, z. B. das Überschreiben der im Code genannten Ausführungskonfigurationen.

Führen Sie nach der Systemkonfiguration die folgenden Schritte aus, um den Gurkentest mit Eingabeaufforderung auszuführen.

Step 1- Erstellen Sie ein Maven-Testprojekt mit dem Namen commandLine.

  • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

  • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

  • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen).

  • Klicken Sie auf Fertig stellen.

  • Öffnen Sie pom.xml -

    • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

    • Erweitern Sie das Projekt CucumberTest.

    • Lokalisieren pom.xml Datei.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

  • Abhängigkeit für Selen hinzufügen - Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

    • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag. (<Abhängigkeit> </ Abhängigkeit>).

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Abhängigkeit für Cucumber-Java hinzufügen - Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für Cucumber-JUnit hinzufügen - Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Überprüfen Sie die Binärdateien.

    • Sobald pom.xml erfolgreich bearbeitet wurde, speichern Sie es.

    • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

Step 2 - Erstellen Sie ein Paket mit dem Namen "Outline" unter src / test / java

Step 3 - Erstellen Sie eine Feature-Datei mit dem Namen "commandLine.feature".

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie "commandLine.feature".

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

    Feature - Szenarioübersicht

    Scenario Outline - Anmeldefunktion für eine Social-Networking-Site.

    Vorausgesetzt, der Benutzer navigiert zu Facebook

    Wenn ich den Benutzernamen als "<Benutzername>" und das Passwort als "<Kennwort>" eingebe

    Dann sollte die Anmeldung nicht erfolgreich sein

Beispiele

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note- Hier beschreibt eine Beispielanmerkung den Eingabebereich, der bei der Ausführung des Szenarios bereitgestellt werden soll. Das Testszenario wird für jede der bereitgestellten Eingaben ausgeführt. Im angegebenen Beispiel wird das Testszenario also dreimal ausgeführt.

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Benennen Sie die Datei als commandLine.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Outline; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; i
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^user navigates to facebook$") public void goToFacebook() { driver = new FirefoxDriver(); driver.navigate().to("https://www.facebook.com/"); } @When("^I enter Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$") 
   public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
      driver.findElement(By.id("email")).sendKeys(arg1);
      driver.findElement(By.id("pass")).sendKeys(arg2);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^login should be unsuccessful$") 
   public void validateRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}

Note- Im Code müssen wir eine Funktion mit zwei Eingabeargumenten definieren: Ein Benutzername und ein anderer für das Passwort. Für jeden Eingabesatz, der im Beispiel-Tag bereitgestellt wird, wird ein Satz von GIVEN, WHEN und THEN ausgeführt.

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie: runTest.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 

public class runTest { }
  • Öffnen Sie eine Eingabeaufforderung.

  • Wechseln Sie in das Verzeichnis, in dem sich dieses Paket "commandLine" befindet. e: \ Workspace \ LoginTest \ src> CD-Test \ Java

  • Führen Sie den Befehl mvn test aus: Sie werden sehen, dass alle in der Feature-Datei beschriebenen Szenarien ausgeführt wurden (falls kein Fehler vorliegt). Schließlich finden Sie unten die folgenden Informationen.

Ergebnis

This describes the total test run, along with failure if any.

Der vorherige Befehl führt alles aus, wie in der JUnit Runner-Klasse erwähnt. Wenn Sie jedoch die im Runner genannten Konfigurationen überschreiben möchten, folgen die folgenden Beispiele.

  • Führen Sie nun den Befehl mvn test - Dcucumber.options = "- help" an der Eingabeaufforderung aus. Wenn Sie dies ausführen, werden alle verfügbaren Optionen gedruckt.

  • Um nur die spezifischen Tags auszuführen, führen Sie den Befehl mvn test -Dcucumber.options = "- tags @SmokeTest" an der Eingabeaufforderung aus. Es werden nur Tags ausgeführt, die mit @SmokeTest markiert sind.

  • Um das Format des Ergebnisses zu ändern, führen Sie den Befehl E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = "- Plugin junit: target / cucumber-junit-report.xml" an der Eingabeaufforderung aus. Es ändert den Bericht Format zum JUnit-Berichtsgenerator.

Es ist wichtig zu verstehen, was Junit ist, bevor wir mit unserer Diskussion für Cucumber JUnit Runner beginnen. JUnitist ein Open Source Unit Testing Framework für die Programmiersprache Java. JUnit war wichtig für die Entwicklung einer testgetriebenen Entwicklung und gehört zu einer Familie von Unit-Testing-Frameworks, die zusammen als xUnit bezeichnet werden und ihren Ursprung in SUnit haben.

Vorteile der Verwendung von JUnit

  • Einheit hat eine Graphical User Interface (GUI), wodurch es möglich ist, Quellcode schnell und einfach zu schreiben und zu testen.

  • Mit JUnit kann der Entwickler schrittweise Testsuiten erstellen, um den Fortschritt zu messen und unbeabsichtigte Nebenwirkungen zu erkennen.

  • Der Test kann kontinuierlich ausgeführt werden.

  • JUnit zeigt den Testfortschritt in einem Balken an, der normalerweise grün ist, aber rot wird, wenn ein Test fehlschlägt.

Inzwischen haben wir die Vorteile der Verwendung von JUnit erkannt, aber der Grund, warum wir gerade darüber diskutieren, ist das Cucumber-Framework. Einerseits bietet Cucumber nicht-technischen Personen die Möglichkeit, Testfälle für ein Produkt zu definieren, und andererseits erwarten wir eine reibungslose und zeitnahe Ausführung solcher Testfälle.

JUnit fungiert als Brücke zwischen diesen beiden. Der Ausführungsfluss sieht also wie folgt aus:

  • Stakeholder schreiben die Feature-Datei auf.

  • Die Schrittdefinitionsdatei wird entsprechend erstellt.

  • Geben Sie die JUnit-Runner-Klasse an, um die Reihe von Testfällen auszuführen.

  • Sobald wir die JUnit Runner Klasse laufen lassen -

    • Die Gherkin-Feature-Datei wird analysiert.

    • Die in die Schrittdefinitionsdatei geschriebenen Funktionen werden gemäß den Anweisungen der Feature-Datei ausgeführt.

    • JUnit kombiniert das Testergebnis.

    • Der Testbericht wird im angegebenen Format erstellt (dies kann HTML / JSON sein).

Der wichtige Punkt hier ist, wie man JUnit für all diese Dinge konfiguriert. Es folgen die Schritte -

Step 1 - Installieren Sie Java.

  • Laden Sie jdk und jre über den Link herunter http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • Akzeptiere die Lizenzbestimmungen.

  • Installieren Sie JDK und JRE.

  • Stellen Sie die Umgebungsvariable wie im folgenden Screenshot gezeigt ein.

Step 2 - Installieren Sie Eclipse.

  • Why we need- Eclipse ist eine integrierte Entwicklungsumgebung (IDE). Es enthält einen Basisarbeitsbereich und ein erweiterbares Plug-In-System zum Anpassen der Umgebung.

  • How to install - -

    • Stellen Sie sicher, dass JAVA auf Ihrem Computer installiert ist.

    • Laden Sie Eclipse von herunter http://www.eclipse.org/downloads

    • Entpacken und Eclipse ist installiert.

Step 3 - Installieren Sie Maven.

  • Why we need- Maven ist ein Tool zur Build-Automatisierung, das hauptsächlich für Java-Projekte verwendet wird. Es bietet eine gemeinsame Plattform für Aktivitäten wie das Generieren von Quellcode, das Kompilieren von Code, das Packen von Code in ein JAR usw. Auch wenn eine der Softwareversionen später geändert wird, bietet Maven eine einfache Möglichkeit, das Testprojekt entsprechend zu ändern.

  • How to install - -

    • Laden Sie Maven - https://maven.apache.org/download.cgi

    • Entpacken Sie die Datei und merken Sie sich den Speicherort.

    • Erstellen Sie die Umgebungsvariable MAVEN_HOME wie im folgenden Screenshot gezeigt.

  • Bearbeiten Sie die Pfadvariable und schließen Sie Maven ein, wie im folgenden Screenshot gezeigt.

  • Laden Sie das MAVEN-Plugin von Eclipse herunter.

    • Öffnen Sie Eclipse.

    • Ich muss helfen → Eclipse-Marktplatz → Such-Maven → Maven-Integration für Eclipse → INSTALLIEREN.

Step 4 - So konfigurieren Sie Cucumber mit Maven

  • Erstellen Sie ein Maven-Projekt in Eclipse.

    • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

    • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

    • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen).

    • Klicken Sie auf Fertig stellen.

  • Öffnen Sie pom.xml

    • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

    • Erweitern Sie das Projekt CucumberTest.

    • Suchen Sie die Datei pom.xml.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

  • Abhängigkeit für Selen hinzufügen - Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

    • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag. (<Abhängigkeit> </ Abhängigkeit>).

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Abhängigkeit für Cucumber-Java hinzufügen - Dies gibt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für Cucumber-JUnit hinzufügen: Dies gibt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Abhängigkeit für JUnit hinzufügen - Dies gibt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

    • Erstellen Sie ein weiteres Abhängigkeitstag.

    • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Überprüfen Sie die Binärdateien

    • Einmal pom.xml wird erfolgreich bearbeitet, speichern Sie es.

    • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

    • Danach können Sie ein Maven-Repository wie den folgenden Screenshot sehen.

Step 5 - Erstellen Sie eine Feature-Datei (wird später behandelt).

Step 6 - Erstellen Sie eine Schrittdefinitionsdatei (wird später behandelt).

Step 7 - Erstellen Sie einen Junit-Läufer, um den Test auszuführen (wird später behandelt).

Wir führen Testausführungen durch, um die Stabilität eines Produkts zu verstehen. Sei es ein manueller Test oder ein automatisierter Test. Es ist sehr wichtig, einen präzisen Bericht zu erstellen, der die Stabilität eines Produkts darstellen kann. Während wir unser Testszenario mit Cucumber automatisieren, ist es daher wichtig zu wissen, wie besser wir unsere Cucumber-Testberichte erstellen können. Da wir wissen, dass Cucumber ein BDD-Framework ist, verfügt es nicht über einen ausgefallenen Berichtsmechanismus.

Um dies zu erreichen, müssen wir Cucumber in andere Open Source-Tools wie Ant / Junit integrieren. Hier werden wir Beispiele für JUnit weiterführen, da es die Java-Sprache unterstützt.

Schauen wir uns die Details der verschiedenen Berichtsformate an, die verfügbar und einfach zu verwenden sind.

Hübsches Format (HTML-Bericht)

Pretty Format generiert den Gurkentestbericht im HTML-Format, dh einer HTML-Datei. Es ist das am besten lesbare Berichtsformat. Der Bericht wird auf die gleiche Weise wie eine Feature-Datei generiert, sodass auch die Ablaufverfolgung vereinfacht wird. Sie können auch den Speicherort angeben, an dem dieser Bericht nach der Testausführung abgelegt werden soll. Es kann sein -

  • Local Directory - Wir können das Zielverzeichnis für den Bericht als jedes lokale Verzeichnis des Computers angeben, auf dem der Test ausgeführt wird.

  • Server Directory- Wir haben auch die Möglichkeit, ein Zielverzeichnis als ein beliebiges Verzeichnis auf dem Server anzugeben, auf das öffentlich zugegriffen werden kann. Dies ist im Allgemeinen hilfreich, wenn unsere Kunden / Stakeholder die Testergebnisse zu einem bestimmten Zeitpunkt anzeigen sollen.

Beispiel

Lassen Sie uns ein Beispiel für ein hübsches Format automatisieren.

Step 1 - Erstellen Sie ein Maven-Projekt mit dem Namen cucumberReport in Eclipse.

Step 2 - Erstellen Sie ein Paket mit dem Namen CucumberReport unter src/test/java

Step 3 - Erstellen Sie eine Feature-Datei mit dem Namen cucumberReport.feature

Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

Feature - Gurkenbericht

#Dies dient zum Überprüfen des Testergebnisses für den Testfall bestanden

Scenario: Anmeldefunktion vorhanden

Vorausgesetzt, ich habe den Browser geöffnet

Wenn ich die Facebook-Website öffne

Dann sollte die Anmeldeschaltfläche vorhanden sein

#Dies dient zum Überprüfen des Testergebnisses auf fehlgeschlagenen Testfall

Scenario: Passwort vergessen existiert

Vorausgesetzt ich habe den Browser geöffnet

Wenn ich die Facebook-Website öffne

Dann sollte der Link Passwort vergessen existieren

Note- Hier wird das erste Szenario bestanden, während das zweite Szenario fehlschlägt. Damit wir sehen können, wie der bestandene und der nicht bestandene Bericht aussehen.

Step 4 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen als an cucumberReport.java

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package CucumberReport; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberReport { 
   WebDriver driver = null;
	
   @Given("^I have open the browser$") 
   public void openBrowser() { 
      driver = new FirefoxDriver();
   } 
	
   @When("^I open Facebook website$") public void goToFacebook() { driver.navigate().to("https://www.facebook.com/"); } @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail");
      }
   } 
	
   @Then("^Forgot password link should exist$") 
   public void forgotPWD() { 
      if(driver.findElement(By.id("")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else {
         System.out.println("Test 1 Fail");
      } 
   } 
}

Step 5 - Erstellen Sie eine Runner-Klassendatei.

  • Erstellen Sie eine Runner-Klasse mit dem Namen runTest.java in der Verpackung.

  • Schreiben Sie den folgenden Code. Speicher die Datei.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( 
   format = {"pretty", "html:target/Destination"} ) 
//Specifying pretty as a format option ensure that HTML report will be generated. 
//When we specify html:target/Destination - It will generate the HTML report 

inside the Destination folder, in the target folder of the maven project.
 
public class runTest { }
  • Führen Sie den Test mit der Option aus

    • Wählen runTest.java Datei aus dem Paket-Explorer.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option, Run as.

    • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen.

Beide Szenarien werden einzeln ausgeführt.

Ein Ordner mit dem Namen Ziel wird im Zielverzeichnis erstellt.

Der Bericht wird dort als "Index.html" bezeichnet.

Öffnen Sie Index.html mit dem Webbrowser.

Sie sehen den im folgenden Bild erwähnten Bericht -

Es hebt genau die Farbe des fehlgeschlagenen Szenarios hervor. Darüber hinaus wird in diesem Szenario eine Hervorhebung für einen fehlgeschlagenen Schritt angezeigt. Dies macht das Debuggen sehr einfach.

JSON-Bericht

Inzwischen haben wir gesehen, wie einfach HTML-Berichte sind. Wenn wir diese Berichtsinformationen jedoch an eine andere Anwendung weitergeben möchten, ist dies bei HTML-Berichten etwas schwierig. Hier kommt die Notwendigkeit eines anderen Berichtsformats. Die JSON-Java-Skriptobjektnotation ist ein weiteres Format zum Generieren von Gurkentestberichten. JSON ist ein Objekt, das viele Informationen enthält, die im Textformat gespeichert sind. JSON-Berichte bringen einen anderen Wert in die Tabelle. Der JSON-Bericht kann auch als Nutzlast von Informationen verwendet werden, die zwischen verschiedenen Servern übertragen werden sollen. Außerdem kann es als Webseite angezeigt werden. Kurz gesagt, JSON-Berichte können von anderen Anwendungen verwendet werden.

What is payload information?Wenn Daten über das Internet gesendet werden, enthält jede übertragene Einheit sowohl Header-Informationen als auch die tatsächlich gesendeten Daten. Der Header identifiziert die Quelle und das Ziel des Pakets, während die tatsächlichen Daten als Nutzdaten bezeichnet werden. Um einen JSON-Bericht zu generieren, müssen wir nur eine Änderung in der Runner-Datei vornehmen.

  • Ändern Sie die Formatoption in der Runner-Datei wie folgt.

package CucumberReport; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options( format={"json:target/Destination/cucumber.json"}) 

//When we specify json:target/Destination/cucumber.json - It will generate the JSON  
report inside the Destination folder, in the target folder of the maven project.

public class runTest {}
  • Führen Sie den Test mit der Option - aus.

    • Wählen runTest.java Datei aus dem Paket-Explorer.

    • Klicken Sie mit der rechten Maustaste und wählen Sie die Option Run as.

    • Wählen Sie JUnit-Test.

  • Sie werden die folgenden Dinge beachten, wenn Sie diese Klassendatei ausführen.

    • Beide Szenarien werden einzeln ausgeführt.

  • Der Bericht wird dort als benannt cucumber.json (wie in der Läuferklasse angegeben).

  • Öffnen cucumber.json Datei mit dem Texteditor.

  • Sie sehen den im folgenden Screenshot erwähnten Bericht, nachdem Sie Zeilenumbrüche platziert haben -

Note - JSON ist im Vergleich zum HTML-Berichtsformat weniger lesbar.

Es ist sehr wahrscheinlich, dass Ihr Test aus unbekannten Gründen fehlschlägt. Es ist sehr wichtig, die Fehlerursache zu identifizieren und zu beheben. Dieser Vorgang ist bekannt alsdebugging. Im Folgenden finden Sie einige Tipps und Tricks, die das Debuggen von Gurken etwas vereinfachen.

Die Debugging-Option ist mit Eclipse verfügbar. Platzieren Sie den Haltepunkt. Klicken Sie auf die Datei und debuggen Sie mit den folgenden Schritten:

Step 1 - Platzieren Sie die manuellen Haltepunkte in der Ruby-Schrittdefinitionsdatei.

Beispiel

require 'ruby-debug' 
Then /^the process should exit cleanly$/ do 
breakpoint 
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" 
end

Step 2 - Wir können auch einen separaten Debug-Schritt wie den folgenden in der Schrittdefinitionsdatei definieren.

Then /^I debug$/ do 
breakpoint 
0 
end

Step 3 - - Webratist das Standardwerkzeug für Gurkentests mit Rails. Sie können damit beispielsweise auf Links klicken, Formulare eingeben und senden usw.

Es wird Zeiten geben, in denen Sie versuchen, auf etwas zu klicken, und es ist nicht da. Sie werden einen großen HTML-Blob zurückwerfen, und herauszufinden, was das genau bedeutet, kann eine echte Belastung sein.

save_and_open_page

Webrat bietet eine Methode save_and_open_page, die den aktuellen HTML-Code erfasst, speichert und dann in einem Browser für Sie öffnet. Extrem nützlich.

When /^I follow "(.*)"$/ do |link| 
save_and_open_page 
click_link(link) 
end

Führen Sie die folgenden Schritte aus, um den Gurkentest mit Java auszuführen.

Step 1 - Java installieren -

  • Laden Sie jdk und jre von herunter

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

  • Akzeptiere die Lizenzbestimmungen.

  • Installieren Sie JDK und JRE.

  • Stellen Sie die Umgebungsvariable wie in der folgenden Abbildung gezeigt ein.

Step 2 - Eclipse IDE installieren -

  • Stellen Sie sicher, dass JAVA auf Ihrem Computer installiert ist.

  • Laden Sie Eclipse von herunter https://eclipse.org/downloads/

  • Entpacken und Eclipse installiert.

Step 3 - Maven installieren -

  • Laden Sie Maven -https://maven.apache.org/download.cgi

  • Entpacken Sie die Datei und merken Sie sich den Speicherort.

  • Erstellen Sie die Umgebungsvariable MAVEN_HOME wie in der folgenden Abbildung gezeigt.

  • Bearbeiten Sie die Pfadvariable und schließen Sie Maven ein.

  • Laden Sie das MAVEN-Plugin von Eclipse herunter

    • Öffnen Sie Eclipse.

    • Ich muss helfen → Eclipse-Marktplatz → Such-Maven → Maven-Integration für Eclipse → INSTALLIEREN

Step 4 - Konfigurieren Sie Gurke mit Maven.

  • Erstellen Sie ein Maven-Projekt.

    • Gehen Sie zu Datei → Neu → Andere → Maven → Maven-Projekt → Weiter.

    • Geben Sie die Gruppen-ID an (die Gruppen-ID identifiziert Ihr Projekt in allen Projekten eindeutig).

    • Geben Sie die Artefakt-ID an (die Artefakt-ID ist der Name des Glases ohne Version. Sie können einen beliebigen Namen in Kleinbuchstaben auswählen).

    • Klicken Sie auf Fertig stellen.

Step 5 - Öffnen Sie pom.xml -

  • Gehen Sie zum Paket-Explorer auf der linken Seite von Eclipse.

  • Erweitern Sie das Projekt CucumberTest.

  • Suchen Sie die Datei pom.xml.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option "Mit" Texteditor öffnen ".

Step 6 - Abhängigkeit für Selen hinzufügen - Dies zeigt Maven an, welche Selenium-JAR-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Öffnen Sie pom.xml im Bearbeitungsmodus. Erstellen Sie ein Abhängigkeits-Tag (<Abhängigkeiten> </ Abhängigkeiten>) innerhalb des Projekt-Tags.

  • Erstellen Sie innerhalb des Abhängigkeits-Tags ein Abhängigkeitstag. (<Abhängigkeit> </ Abhängigkeit>)

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Step 7 - Abhängigkeit für Cucumber-Java hinzufügen - Dies zeigt Maven an, welche Cucumber-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 8 - Abhängigkeit für Cucumber-JUnit hinzufügen - Dies zeigt Maven an, welche Cucumber JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Step 9- Abhängigkeit für JUnit hinzufügen - Dies zeigt Maven an, welche JUnit-Dateien vom zentralen Repository in das lokale Repository heruntergeladen werden sollen.

  • Erstellen Sie ein weiteres Abhängigkeitstag.

  • Geben Sie die folgenden Informationen im Abhängigkeitstag an.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

Step 10 - Überprüfen Sie die Binärdateien.

  • Sobald pom.xml erfolgreich bearbeitet wurde, speichern Sie es.

  • Gehen Sie zu Projekt → Reinigen - Es dauert einige Minuten.

  • Sie können ein Maven-Repository sehen.

Step 11 - Erstellen Sie ein Paket unter src/test/java benannt als cucumberJava.

Step 12 - Feature-Datei erstellen

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie der Datei einen Namen wie cucumberJava.feature.

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

    Feature: CucumberJava

    Scenario: Anmeldefunktion vorhanden

    Vorausgesetzt ich habe den Browser geöffnet

    Wenn ich die Facebook-Website öffne

    Dann sollte die Anmeldeschaltfläche beendet werden

Step 13 - Schrittdefinitionsdatei erstellen -

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie dem Dateinamen einen Namen wie annotation.java.

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package CucumberJava; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class cucumberJava { 
   WebDriver driver = null; 
   @Given("^I have open the browser$") public void openBrowser() { driver = new FirefoxDriver(); } @When("^I open Facebook website$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
   @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail"); 
      } 
      driver.close(); 
   } 
}

Step 14 - Erstellen Sie eine Runner-Klassendatei.

  • Wählen Sie die Paketskizze aus und klicken Sie mit der rechten Maustaste darauf.

  • Klicken Sie auf "Neu".

  • Geben Sie den Dateinamen als an runTest.java.

  • Schreiben Sie den folgenden Text in die Datei und speichern Sie ihn.

package cucumberJava; 
import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}) 
public class runTest { 
}

Step 15 - Führen Sie den Test mit der Option - aus.

  • Wählen Sie im Paket-Explorer die Datei runTest.java aus.

  • Klicken Sie mit der rechten Maustaste und wählen Sie die Option, Run as.

  • Wählen Sie JUnit-Test.

Sie werden die folgenden Dinge bei der Ausführung beobachten -

  • Eine Instanz des Firefox-Webbrowsers wird geöffnet.

  • Es öffnet sich die Facebook-Anmeldeseite im Browser.

  • Die Anmeldeschaltfläche wird erkannt.

  • Der Browser wird geschlossen.

  • Im JUnit-Fenster sehen Sie ein Szenario mit einem grünen Häkchen, das den Erfolg der Testausführung anzeigt.

Ruby-Sprache hat folgende Vorteile:

  • Es ist leicht zu verstehen.

  • Es ist eine objektorientierte Sprache.

  • Es ist eine mächtige Klassenbibliothek.

  • Es hat massiven Online-Support.

Im Folgenden wird Schritt für Schritt beschrieben, wie Cucumber mit Ruby arbeitet.

Step 1 - Installieren Sie Ruby.

  • Gehen Sie zur RubyInstaller-Download-Seite.

  • Laden Sie die für Ihr Betriebssystem am besten geeignete Version herunter (z. B. 32 oder 64 Bit).

  • Führen Sie die heruntergeladene Exe aus.

  • Aktivieren Sie während der Installation die Optionen "Ruby hinzufügen ..." und "Zuordnen ...", wie in der folgenden Abbildung gezeigt.

Step 2 - Dev Kit herunterladen und extrahieren.

  • Gehen Sie zur RubyInstaller-Download-Seite.

  • Laden Sie die für Ihr Betriebssystem am besten geeignete Devkit-Version herunter (z. B. 32 oder 64 Bit).

  • Extrahieren Sie das Devkit im Ordner c: \ Ruby \ Devkit.

  • Öffnen Sie die Eingabeaufforderung.

  • Führen Sie im Ruby-Devkit den folgenden Befehl aus.

C:\Ruby\devkit> ruby dk.rb init 
C:\Ruby\devkit> ruby dk.rb install

Step 3 - Installiere Gurke und andere Rubinsteine.

  • Um Cucumber zu installieren, aktualisieren Sie zuerst das aktuelle Gem-Setup

C:\Users\Admin> gem update –system
  • Installieren Sie als Nächstes die Edelsteine, die Sie für das Testen von Gurkenwebs benötigen.

C:\Users\Admin> gem install --no-ri --no-rdoc rspec 
C:\Users\Admin> gem install --no-ri --no-rdoc win32console 
C:\Users\Admin> gem install --no-ri --no-rdoc watir-webdriver 
C:\Users\Admin> gem install --no-ri --no-rdoc cucumber
  • Führen Sie Gurke aus

C:\Users\Admin\Documents>cucumber –init 
C:\Users\Admin\Documents>cucumber

Step 4 - Installieren Sie IDE - KOMODO.

  • Gehen Sie zur Seite http://www.activestate.com/komodo-ide/downloads

  • Laden Sie das kostenlose Testinstallationsprogramm herunter.

  • Doppelklicken Sie auf die heruntergeladene Exe.

  • Befolgen Sie die Installationsschritte.

  • Beenden Sie die Installation und öffnen Sie die IDE.

Step 5 - Installieren Watir - Gehen Sie zur Eingabeaufforderung und führen Sie den folgenden Befehl aus: "gem install watir"

Step 6 - Installieren rspec - Gehen Sie zur Eingabeaufforderung und führen Sie den folgenden Befehl aus: "gem install rspec"

Step 7 - Feature-Datei erstellen.

  • Öffnen Sie den KOMODO-Editor.

  • Klicken Sie auf das neue Dateisymbol.

  • Schreiben Sie den folgenden Text.

    Feature: Nutzer müssen in der Lage sein, mit Google nach Inhalten zu suchen.

    Scenario: Suche nach einem Begriff.

    Vorausgesetzt, ich habe eingegeben "watir" in die Abfrage.

    Wenn ich klicke "search"

    Dann sollte ich einige Ergebnisse sehen

  • Klicken save Symbol.

  • Geben Sie den Namen CucumberRuby.feature an.

  • Wählen Sie einen beliebigen Ordner, zum Beispiel: “e:\WithRuby”

  • Speicher die Datei.

Step 8 - Erstellen Sie eine Schrittdefinitionsdatei.

  • Öffnen Sie den KOMODO-Editor.

  • Klicken Sie auf das Dateisymbol "Neu".

  • Schreiben Sie den folgenden Code.

require "watir-webdriver" 
require "rspec/expectations" 

Given /^I have entered "([^"]*)" into the query$/ do |term| 
@browser ||= Watir::Browser.new :firefox 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set term 
end 

When /^I click "([^"]*)"$/ do |button_name| @browser.button.click end Then /^I should see some results$/ do 
@browser.div(:id => "resultStats").wait_until_present 
@browser.div(:id => "resultStats").should exist 
@browser.close 
End
  • Klicken Sie auf das Symbol Speichern.

  • Geben Sie den Namen als CucumberRuby.rb

  • Wählen Sie einen beliebigen Ordner zum Beispiel: “e:\WithRuby”

  • Speicher die Datei.

Step 9 - Erstellen Sie die Testdatei.

  • Öffnen Sie den KOMODO-Editor.

  • Klicken Sie auf das Dateisymbol "Neu".

  • Schreiben Sie den folgenden Code.

require "rubygems" 
require "test/unit" 
require "watir-webdriver" 

class GoogleSearch < Test::Unit::TestCase 
def setup 
@browser ||= Watir::Browser.new :firefox 
end 

def teardown 
@browser.close 
end 

def test_search 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set "watir" 
@browser.button.click 
@browser.div(:id => "resultStats").wait_until_present assert 
@browser.title == "watir - Google Search" 
end 
end
  • Klicken Sie auf das Symbol Speichern.

  • Benennen Sie die Datei als test.rb und wählen Sie einen beliebigen Ordner aus, zum Beispiel: "e: \ WithRuby"

  • Speicher die Datei.

Step 10 - Führen Sie die Feature-Datei aus.

  • Gehen Sie zur Eingabeaufforderung.

  • Zum Verzeichnis gehen e:\WithRuby

  • Führen Sie den folgenden Befehl aus.

e:\With Ruby>ruby test.rb

Sie werden die folgenden Dinge bei der Ausführung beobachten -

  • Eine Webbrowser-Instanz wird geöffnet.

  • Die Google.com-Webseite wird geladen.

  • Suchtext watir wird eingegeben.

  • Die Suchschaltfläche wird platziert.

  • Die Suchergebnisse werden auf der Webseite angezeigt.

  • Die Browser-Instanz wird geschlossen.