Selenium μαζί σου, Cucumber (Οδηγός BDD Framework)

⚡ Έξυπνη Σύνοψη

Selenium μαζί σου, Cucumber σχηματίζει ένα ισχυρό πλαίσιο Ανάπτυξης με γνώμονα τη Συμπεριφορά (BDD) που συνδυάζει τη σύνταξη απλής αγγλικής γλώσσας Gherkin με Selenium Αυτοματοποίηση WebDriver. Αυτό το σεμινάριο εξηγεί τις προϋποθέσεις, παρουσιάζει τρία πρακτικά σενάρια και δείχνει πώς ενσωματώνονται τα αρχεία χαρακτηριστικών, οι ορισμοί βημάτων και μια κλάση TestRunner για την εκτέλεση δοκιμών προγράμματος περιήγησης.

  • 🥒 Βασικός Ορισμός: Cucumber είναι ένα εργαλείο δοκιμών BDD που περιγράφει τη συμπεριφορά μιας εφαρμογής σε απλά αγγλικά χρησιμοποιώντας το Gherkin, και Selenium οδηγεί τις ενέργειες του προγράμματος περιήγησης από κάτω.
  • 🤝 Γέφυρα Ενδιαφερομένων: Cucumber Συνδέει επιχειρηματικούς αναλυτές, ελεγκτές χειροκίνητων εφαρμογών, μηχανικούς αυτοματισμού και προγραμματιστές μέσω μιας κοινόχρηστης, ευανάγνωστης προδιαγραφής δοκιμών.
  • 📦 Απαιτούμενα βάζα: Selenium αυτόνομο, Cucumber-πυρήνας, Cucumber-Ιάβα, Cucumber-junit, Αγγούρι τουρσί, JUnitκαι το Hamcrest-core αποτελούν το ελάχιστο σύνολο εξαρτήσεων.
  • 🧱 Τρία Αρχεία Έργου: Ένα αρχείο .feature με σενάρια, μια κλάση ορισμού βημάτων Steps.java και ένα Runner.java TestRunner με @CucumberΕπιλογές κόλλας.
  • 🔁 Δοκιμές που βασίζονται σε δεδομένα: Χρησιμοποιήστε τους πίνακες Scenario Outline και Examples για να εκτελέσετε την ίδια ροή σε πολλά σύνολα διαπιστευτηρίων σε μία εκτέλεση.

Selenium μαζί σου, Cucumber (Οδηγός BDD Framework)

Σε αυτό το σεμινάριο, θα μάθετε πώς να ενσωματώνετε Cucumber μαζί σου, Selenium WebDriver για τη δημιουργία ενός πλαισίου ανάπτυξης βάσει συμπεριφοράς (BDD) που είναι ευανάγνωστο, συντηρήσιμο και βασισμένο σε δεδομένα.

Τι είναι Cucumber?

Cucumber είναι ένα εργαλείο δοκιμών που υποστηρίζει την Ανάπτυξη με γνώμονα τη Συμπεριφορά (BDD). Περιγράφει τη συμπεριφορά μιας εφαρμογής σε απλό αγγλικό κείμενο χρησιμοποιώντας τη γλώσσα Gherkin, η οποία επιτρέπει σε μη προγραμματιστές να συνεισφέρουν στις προδιαγραφές δοκιμών χωρίς να μάθουν γλώσσα προγραμματισμού. Μάθετε περισσότερα στο Cucumber φροντιστήριο.

Τι είναι Selenium?

Selenium είναι ένα εργαλείο αυτοματισμού που χρησιμοποιείται για Λειτουργική δοκιμή των διαδικτυακών εφαρμογών. Selenium υποστηρίζει πολλαπλές γλώσσες προγραμματισμού, συμπεριλαμβανομένων JavaΡουμπίνι, Pythonκαι C#, γεγονός που το καθιστά ιδανικό για ομάδες με μικτό τεχνικό υπόβαθρο. Μάθετε περισσότερα στο δικό μας. Selenium φροντιστήριο.

Γιατί να χρησιμοποιήσετε Cucumber μαζί σου, Selenium?

Cucumber και Selenium είναι δύο από τις πιο ευρέως υιοθετημένες τεχνολογίες δοκιμών. Οι περισσότεροι οργανισμοί χρησιμοποιούν ήδη Selenium για λειτουργικές δοκιμές και θέλετε να κάνετε στρώσεις Cucumber στην κορυφή επειδή Cucumber διευκολύνει την ανάγνωση και την κατανόηση της ροής της εφαρμογής.

Cucumber βασίζεται στο πλαίσιο Ανάπτυξης με γνώμονα τη συμπεριφορά που λειτουργεί ως γέφυρα μεταξύ των ακόλουθων ρόλων:

  1. Μηχανικός Λογισμικού και Επιχειρηματικός Αναλυτής.
  2. Χειροκίνητος ελεγκτής και ελεγκτής αυτοματισμού.
  3. Εγχειρίδιο δοκιμαστή και προγραμματιστές.

The Cucumber Πλαίσιο BDD επίσης βοηθά τους πελάτες να κατανοήσουν τον κώδικα της εφαρμογής επειδή χρησιμοποιεί τη γλώσσα Gherkin, η οποία είναι σε απλό κείμενο. Οποιοσδήποτε στον οργανισμό μπορεί να παρακολουθήσει τη συμπεριφορά του λογισμικού. Η σύνταξη Gherkin είναι σε απλά και ευανάγνωστα αγγλικά, γεγονός που διατηρεί την προδιαγραφή προσβάσιμη σε μη τεχνικούς αναγνώστες.

Cucumber μαζί σου, Selenium Επισκόπηση πλαισίου BDD

Προϋποθέσεις για τη χρήση Cucumber μαζί σου, Selenium

Πριν ξεκινήσουμε το Cucumber-Selenium ενσωμάτωσης, χρειάζεστε τα ακόλουθα στοιχεία:

Selenium αρχεία jar:

  • Selenium-διακομιστής-αυτόνομος

Μπορείτε να τα κατεβάσετε από τη διεύθυνση https://www.selenium.dev/downloads/.

Selenium σελίδα λήψεων για αρχεία jar

Αρχεία Jar για Cucumber:

  • Cucumber-πυρήνας
  • Cucumber-html
  • Cobertura κάλυψη κώδικα
  • Cucumber-Ιάβα
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-αναφορά
  • Hamcrest-core
  • Αγγουράκι
  • JUnit

Μπορείτε να τα κατεβάσετε από τη διεύθυνση https://mvnrepository.com/search?q=CucumberΘα χρειαστεί να αναζητήσετε κάθε jar και να τα κατεβάσετε ένα προς ένα.

Για παράδειγμα, δείτε πώς μπορείτε να κατεβάσετε ένα από τα αρχεία jar, το "Cucumber-core" βιβλιοθήκη.

Κάντε κλικ στον σύνδεσμο λήψης παραπάνω. Αυτό θα σας ανακατευθύνει στον ιστότοπο του αποθετηρίου Maven. Τώρα αναζητήστε το συγκεκριμένο jar (σε αυτήν την περίπτωση "Cucumber Πυρήνας») όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

Ψάχνοντας για Cucumber Core jar στο Maven Repository

Στην επόμενη σελίδα, κάντε κλικ στην έκδοση 1.2.2:

Αγορά Cucumber Βασική έκδοση 1.2.2 στο Maven

Στην επόμενη οθόνη, κάντε κλικ στην επιλογή Λήψη για να λάβετε το Cucumber Αρχείο jar πυρήνα:

Κατεβάστε το Cucumber Αρχείο jar πυρήνα

Σημείωση: Για λόγους ευκολίας, έχουμε ομαδοποιήσει τα απαραίτητα αρχεία Maven jar εδώΑυτά τα jar ενδέχεται να καταστούν παρωχημένα και ασύμβατα με την πάροδο του χρόνου, επομένως συνιστούμε να τα κατεβάσετε μόνοι σας χρησιμοποιώντας τη μέθοδο που περιγράφεται παραπάνω.

Δοκιμή αυτοματισμού με χρήση Cucumber μαζί σου, Selenium

Ας δούμε πώς να χρησιμοποιούμε Cucumber μαζί σου, Selenium βήμα προς βήμα. Εδώ θα καλύψουμε τρία σενάρια:

  • Σενάριο 1: Εκτύπωση κειμένου στην κονσόλα.
  • Σενάριο 2: Εισαγάγετε τα διαπιστευτήρια σύνδεσης και επαναφέρετε την τιμή.
  • Σενάριο 3: Εισαγάγετε τα διαπιστευτήρια σύνδεσης στο Guru99 και επαναφορά της τιμής — επαναλαμβάνεται για 3 σύνολα δεδομένων.

Σενάριο 1: Εκτύπωση κειμένου στην κονσόλα

Σε αυτό το σενάριο, απλώς εκτυπώνουμε κείμενο στην κονσόλα χρησιμοποιώντας Cucumber.

Βήμα 1) Δημιουργήστε ένα έργο στο Eclipse.

Δημιουργία Java έργο με το όνομα "CucumberΜεSelenium" όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

δημιουργώ CucumberΜεSelenium Java έργο στο Eclipse

Java διαμόρφωση ονόματος έργου σε Eclipse

Βήμα 2) Προσθέστε τα αρχεία jar στο έργο.

Κάντε δεξί κλικ στο έργο > Ιδιότητες > Java Διαδρομή δημιουργίας. Προσθέστε όλες τις βιβλιοθήκες που κατεβάσατε νωρίτερα.

Πρόσθεση Cucumber και  Selenium αρχεία jar σε Java Δημιουργία διαδρομής

Βήμα 3) Δημιουργήστε ένα αρχείο χαρακτηριστικών.

Για να δημιουργήσετε ένα αρχείο χαρακτηριστικών, δημιουργήστε πρώτα έναν φάκελο Χαρακτηριστικά όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Δημιουργία φακέλου Χαρακτηριστικά στο Eclipse project

Εισαγάγετε το όνομα του φακέλου "Χαρακτηριστικά" και κάντε κλικ στο Τέλος.

Ρύθμιση παραμέτρων ονόματος φακέλου Χαρακτηριστικά στο Eclipse

Ο φάκελος Χαρακτηριστικά είναι ορατός στην εξερεύνηση έργων

Τώρα δημιουργήστε ένα αρχείο χαρακτηριστικών μέσα στον φάκελο Features με το όνομα MyTest.featureΗ διαδικασία είναι παρόμοια με τη δημιουργία ενός φακέλου.

Δημιουργήστε το αρχείο MyTest.feature στον φάκελο Features

Σημείωση: Ίσως χρειαστεί να εγκαταστήσετε το Cucumber Eclipse Πρώτα το πρόσθετο. Μεταβείτε στη Βοήθεια → Εγκατάσταση νέου λογισμικού, επικολλήστε τον σύνδεσμο http://cucumber.github.io/cucumber-eclipse/update-site/, και να το εγκαταστήσετε.

Βήμα 4) Γράψτε τα σενάρια.

Οι παρακάτω γραμμές είναι γραμμένες σε MyTest.feature χρησιμοποιώντας τη γλώσσα Gherkin:

Feature: Reset functionality on login page of Application

Scenario: Verification of Reset button

Given Open the Firefox and launch the application

When Enter the Username and Password

Then Reset the credential

Code εξήγηση

Γραμμή 1) Ορίζει τη λειτουργικότητα της επιχείρησης.

Γραμμή 2) Ορίζει ένα σενάριο προς δοκιμή.

Γραμμή 3) Ορίζει την προϋπόθεση (Δεδομένη).

Γραμμή 4) Ορίζει την ενέργεια που θα εκτελεστεί (Πότε).

Γραμμή 5) Ορίζει το αναμενόμενο αποτέλεσμα ή αποτέλεσμα (Τότε).

Βήμα 5) Γράψε το Selenium Σκριπτ TestRunner για το Cucumber σχεδιασμός πλαισίου.

Δημιουργία TestRunner πακέτο και στη συνέχεια ένα Runner.java αρχείο κλάσης από κάτω.

package TestRunner;

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

@RunWith(Cucumber.class)
@CucumberOptions(features = "Features", glue = {"StepDefinition"})
public class Runner
{

}

Στα παραπάνω Cucumber Java παράδειγμα, τρέχουμε το τεστ αγγουριού χρησιμοποιώντας τις ακόλουθες σημειώσεις:

@RunWith() λέει JUnit σχετικά με την κλάση test runner που ξεκινά την εκτέλεση των δοκιμών μας.

@CucumberΕπιλογές() Ορίζει ιδιότητες δοκιμής όπως τη διαδρομή του αρχείου χαρακτηριστικών και το πακέτο κόλλας ορισμού βημάτων.

Στιγμιότυπο οθόνης του αρχείου TestRunner:

Runner.java TestRunner σενάριο για Cucumber

Βήμα 6) Δημιουργήστε το σενάριο ορισμού βημάτων.

Τώρα δημιουργήστε ένα Ορισμός βήματος πακέτο και στη συνέχεια ένα Βήματα.java αρχείο script από κάτω. Μέσα στο Steps.java γράφουμε το Selenium λογική που αντιστοιχίζεται σε κάθε βήμα του Gherkin.

package StepDefinition;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.out.println("This Step open the Firefox and launch the application.");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        System.out.println("This step enter the Username and Password on the login page.");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        System.out.println("This step click on the Reset button.");
    }
}

Η κλάση ονομάζεται Βήματακαι Cucumber Οι σχολιασμοί αντιστοιχίζουν κάθε μέθοδο σε ένα βήμα αρχείου χαρακτηριστικών:

@Δεδομένος ορίζει τη μέθοδο ανοίγματος Firefox και εκκινήστε την εφαρμογή.

@Οταν ορίζει τη μέθοδο εισαγωγής ονόματος χρήστη και κωδικού πρόσβασης.

@Επειτα ορίζει τη μέθοδο επαναφοράς των διαπιστευτηρίων.

Κάθε μέθοδος απλώς εκτυπώνει ένα μήνυμα στην κονσόλα.

Το παρακάτω στιγμιότυπο οθόνης δείχνει το σενάριο Steps.java και το δέντρο του έργου:

Σκριπτ Steps.java και δέντρο έργου σε Eclipse

Σημείωση: Ένας ορισμός βήματος είναι ο κώδικας που θέλετε Cucumber για εκτέλεση όταν ταιριάζει με ένα βήμα αρχείου χαρακτηριστικών.

Βήμα 7) Εκτελέστε το σενάριο.

Εκτελέστε αυτό το σενάριο από το αρχείο TestRunner (Runner.java) όπως φαίνεται παρακάτω.

Εκτελέστε το Runner.java για να εκτελεστεί Cucumber δοκιμή

Βήμα 8) Αναλύστε την έξοδο.

Κατά την εκτέλεση του Runner.java, Cucumber εκτυπώνει το ίδιο κείμενο που ορίζεται στο Steps.java στην κονσόλα.

Έξοδος κονσόλας από Cucumber εκτέλεση δοκιμής

Σενάριο 2: Εισαγάγετε τα διαπιστευτήρια σύνδεσης και επαναφέρετε την τιμή

Εδώ εισάγουμε τα διαπιστευτήρια στο Guru99 σελίδα σύνδεσης επίδειξης και επαναφορά της τιμής.

Για το Σενάριο 2 χρειάζεται μόνο να ενημερώσουμε Βήματα.javaΕδώ προσθέτουμε το πραγματικό Selenium κώδικα. Αρχικά, βεβαιωθείτε ότι Selenium Το αρχείο jar προστίθεται στο έργο.

Επιβεβαιώνω Selenium Το αρχείο jar βρίσκεται στη διαδρομή κλάσης του έργου

Βήμα 1) Ενημερώστε το σενάριο Steps.java όπως φαίνεται παρακάτω.

package StepDefinition;

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

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys("username12");
        driver.findElement(By.name("password")).sendKeys("password12");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Στιγμιότυπο οθόνης των παραπάνω Selenium γραφή:

Σενάριο 2 Βήματα.java με Selenium λογική

Βήμα 2) Εκτελέστε το σενάριο.

Αφού ενημερώσετε το Steps.java, εκτελέστε το Runner.java.

Βήμα 3) Αναλύστε την έξοδο. Στην έξοδο θα δείτε τα εξής:

  • Το πρόγραμμα περιήγησης ξεκίνησε.
  • GuruΑνοίγει η ιστοσελίδα επίδειξης 99 τραπεζών.
  • Το όνομα χρήστη και ο κωδικός πρόσβασης εισάγονται στη σελίδα σύνδεσης.
  • Το κουμπί Επαναφορά διαγράφει τις τιμές.

Εμφάνιση κινούμενων εικόνων σεναρίου 2 Cucumber Selenium δοκιμαστικό τρέξιμο

Σενάριο 3: Εκτέλεση της ροής σύνδεσης και επαναφοράς με 3 σύνολα δεδομένων

Εδώ πρέπει να ενημερώσουμε και τα δύο Βήματα.java και το αρχείο χαρακτηριστικών για την οδήγηση της ίδιας ροής με τρία σύνολα διαπιστευτηρίων.

Βήμα 1) Ενημερώστε το αρχείο δυνατοτήτων όπως φαίνεται παρακάτω.

Χρησιμοποιούμε το Περίγραμμα Σεναρίου και Παραδείγματα σύνταξη έτσι Cucumber επαναλαμβάνει το ίδιο σενάριο σε κάθε γραμμή δεδομένων.

Feature: Reset functionality on login page of Application

Scenario Outline: Verification of reset button with multiple credentials

Given Open the Firefox and launch the application

When Enter the Username <username> and Password <password>

Then Reset the credential

Examples:
    | username | password  |
    | User1    | password1 |
    | User2    | password2 |
    | User3    | password3 |

Αρχείο χαρακτηριστικών με πίνακα "Σενάριο" και "Παραδείγματα"

Βήμα 2) Ενημερώστε το σενάριο Steps.java.

Εδώ ενημερώνουμε τις υπογραφές μεθόδων ώστε να δέχονται παραμέτρους από τον πίνακα Examples.

package StepDefinition;

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

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")
    public void enter_the_Username_and_Password(String username, String password) throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys(username);
        driver.findElement(By.name("password")).sendKeys(password);
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Ενημερωμένο Steps.java με παραμετροποιημένα διαπιστευτήρια

Βήμα 3) Εκτελέστε το ενημερωμένο σενάριο.

Η παρακάτω οθόνη δείχνει μια επιτυχημένη εκτέλεση και τον χρόνο που χρειάστηκε για κάθε σύνολο δεδομένων.

Επιτυχής εκτέλεση του Σεναρίου 3 με τρία σύνολα δεδομένων

Βήμα 4) Αναλύστε το αποτέλεσμα. Τα ακόλουθα βήματα επαναλαμβάνονται για καθένα από τα 3 σύνολα δεδομένων:

  • Το πρόγραμμα περιήγησης ξεκίνησε.
  • GuruΑνοίγει η ιστοσελίδα επίδειξης 99 τραπεζών.
  • Το όνομα χρήστη και ο κωδικός πρόσβασης εισάγονται στη σελίδα σύνδεσης.
  • Το κουμπί Επαναφορά διαγράφει τις τιμές.

Κινούμενη εικόνα Σεναρίου 3 που δείχνει παραμετροποιημένα Cucumber δοκιμαστικό τρέξιμο

Συχνές Ερωτήσεις

Cucumber είναι ένα πλαίσιο BDD που εκτελεί σενάρια γραμμένα σε Gherkin. Selenium είναι μια βιβλιοθήκη αυτοματοποίησης προγράμματος περιήγησης που οδηγεί ιστοσελίδες. Cucumber δεν αλληλεπιδρά απευθείας με τα προγράμματα περιήγησης — καλεί Selenium ορισμούς βημάτων για την εκτέλεση των πραγματικών ενεργειών του περιβάλλοντος εργασίας χρήστη.

Cucumber Τα αρχεία χαρακτηριστικών χρησιμοποιούν το Gherkin, μια απλή αγγλική γλώσσα που οργανώνει σενάρια με λέξεις-κλειδιά όπως Χαρακτηριστικό, Σενάριο, Δεδομένου, Όταν, Τότε, Και, Αλλά, Περίγραμμα Σεναρίου και Παραδείγματα. Το Gherkin είναι αναγνώσιμο τόσο από τεχνικούς όσο και από μη τεχνικούς ενδιαφερόμενους.

Χρησιμοποιήστε τη λέξη-κλειδί Scenario Outline με έναν πίνακα Examples. Cucumber εκτελεί το ίδιο σενάριο μία φορά ανά γραμμή, αντικαθιστώντας placeholders όπως και με τις τιμές από κάθε γραμμή. Αυτό είναι το τυπικό μοτίβο που βασίζεται σε δεδομένα στο Cucumber.

Η Τεχνητή Νοημοσύνη δημιουργεί σενάρια Gherkin από ιστορίες χρηστών, προτείνει ορισμούς βημάτων, επιδιορθώνει προβληματικούς εντοπιστές Seleniumκαι προτείνει δεδομένα παραδειγμάτων. Οι βοηθοί τεχνητής νοημοσύνης επισημαίνουν επίσης διπλότυπα σενάρια, αδύναμους ισχυρισμούς και παλιούς ελέγχους, γεγονός που διατηρεί τη σουίτα BDD συντηρήσιμη καθώς αλλάζει η εφαρμογή.

Ναι. Οι βοηθοί κωδικοποίησης τεχνητής νοημοσύνης διαβάζουν αρχεία χαρακτηριστικών Gherkin και δημιουργούν αντιστοίχιση Java ή ορισμούς βημάτων Kotlin, συμπεριλαμβανομένων Selenium Κλήσεις WebDriver, στρατηγικές εντοπισμού και σύνδεση παραμέτρων. Στη συνέχεια, οι προγραμματιστές βελτιώνουν τον παραγόμενο κώδικα, γεγονός που μειώνει δραματικά το στερεότυπο κατά την εκκίνηση.ping νέες σουίτες BDD.

Συνοψίστε αυτήν την ανάρτηση με: