Selenium dengan Cucumber (Tutorial Kerangka Kerja BDD)

โšก Ringkasan Cerdas

Selenium dengan Cucumber membentuk kerangka kerja Behavior Driven Development (BDD) yang ampuh yang menggabungkan sintaks Gherkin berbahasa Inggris sederhana dengan Selenium Otomatisasi WebDriver. Tutorial ini menjelaskan prasyarat, membahas tiga skenario praktik, dan menunjukkan bagaimana file fitur, definisi langkah, dan kelas TestRunner terintegrasi untuk menjalankan pengujian browser.

  • ๐Ÿฅ’ Definisi Inti: Cucumber adalah alat pengujian BDD yang menjelaskan perilaku aplikasi dalam bahasa Inggris sederhana menggunakan Gherkin, dan Selenium Mengendalikan tindakan browser di baliknya.
  • ๐Ÿค Jembatan Pemangku Kepentingan: Cucumber Menghubungkan analis bisnis, penguji manual, insinyur otomatisasi, dan pengembang melalui spesifikasi pengujian yang mudah dibaca dan digunakan bersama.
  • ๐Ÿ“ฆ Stoples yang dibutuhkan: Selenium berdiri sendiri, Cucumber-inti, Cucumber-Jawa, Cucumber-junit, Gherkin, JUnit, dan Hamcrest-core membentuk kumpulan dependensi minimum.
  • ๐Ÿงฑ Tiga Berkas Proyek: Sebuah file .feature berisi skenario, kelas definisi langkah Steps.java, dan TestRunner Runner.java dengan @CucumberLem pilihan.
  • ๐Ÿ” Tes Berbasis Data: Gunakan tabel Garis Besar Skenario dan Contoh untuk menjalankan alur yang sama terhadap beberapa set kredensial dalam satu eksekusi.

Selenium dengan Cucumber (Tutorial Kerangka Kerja BDD)

Dalam tutorial ini, Anda akan mempelajari cara mengintegrasikan Cucumber dengan Selenium WebDriver digunakan untuk membangun kerangka kerja Behavior Driven Development (BDD) yang mudah dibaca, dipelihara, dan berbasis data.

Apa itu Cucumber?

Cucumber adalah alat pengujian yang mendukung Behavior Driven Development (BDD). Alat ini mendeskripsikan perilaku aplikasi dalam teks bahasa Inggris sederhana menggunakan bahasa Gherkin, yang memungkinkan non-pengembang untuk berkontribusi pada spesifikasi pengujian tanpa perlu mempelajari bahasa pemrograman. Pelajari lebih lanjut di halaman kami. Cucumber tutorial.

Apa itu Selenium?

Selenium adalah alat otomatisasi yang digunakan untuk Pengujian Fungsional aplikasi berbasis web. Selenium mendukung berbagai bahasa pemrograman termasuk Java, rubi, Python, dan C#, yang menjadikannya pilihan tepat untuk tim dengan latar belakang teknis yang beragam. Pelajari lebih lanjut di halaman kami. Selenium tutorial.

Mengapa Menggunakan Cucumber dengan Selenium?

Cucumber ke Selenium adalah dua teknologi pengujian yang paling banyak diadopsi. Sebagian besar organisasi sudah menggunakannya. Selenium untuk pengujian fungsional dan ingin membuat lapisan Cucumber di atas karena Cucumber Memudahkan pembacaan dan pemahaman alur aplikasi..

Cucumber didasarkan pada kerangka kerja Behavior Driven Development yang bertindak sebagai jembatan antara peran-peran berikut:

  1. Insinyur Perangkat Lunak dan Analis Bisnis.
  2. Penguji Manual dan Penguji Otomatisasi.
  3. Penguji dan Pengembang Manual.

The Cucumber Kerangka BDD juga Membantu klien memahami kode aplikasi. Karena menggunakan bahasa Gherkin, yang berupa teks biasa. Siapa pun di organisasi dapat mengikuti perilaku perangkat lunak tersebut. Sintaks Gherkin menggunakan bahasa Inggris sederhana yang mudah dibaca, sehingga spesifikasi tetap mudah diakses oleh pembaca non-teknis.

Cucumber dengan Selenium Gambaran umum kerangka kerja BDD

Persyaratan untuk Menggunakan Cucumber dengan Selenium

Sebelum kita memulai Cucumber-Selenium Untuk melakukan integrasi, Anda memerlukan item-item berikut:

Selenium file jar:

  • Selenium-server-mandiri

Anda dapat mengunduhnya di https://www.selenium.dev/downloads/.

Selenium halaman unduhan untuk file jar

File JAR untuk Cucumber:

  • Cucumber-inti
  • Cucumber-html
  • Cobertura cakupan kode
  • Cucumber-Jawa
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-pelaporan
  • Inti Hamcrest
  • Ketimun
  • JUnit

Anda dapat mengunduhnya di https://mvnrepository.com/search?q=CucumberAnda perlu mencari setiap file JAR dan mengunduhnya satu per satu.

Sebagai contoh, berikut cara mengunduh salah satu file jar, yaitu โ€œCucumber-pustaka "inti".

Klik tautan unduhan di atas. Tautan tersebut akan mengarahkan Anda ke situs Maven Repository. Sekarang, cari file jar tertentu (dalam hal ini โ€œCucumber Intiโ€) seperti yang ditunjukkan pada tangkapan layar di bawah ini:

Mencari Cucumber File JAR inti di Repositori Maven

Di halaman berikutnya, klik versi 1.2.2:

Pilih Cucumber Versi inti 1.2.2 di Maven

Di layar berikutnya, klik Unduh untuk mendapatkan file tersebut. Cucumber File jar inti:

Download Cucumber berkas jar inti

Catatan: Untuk memudahkan, kami telah menyertakan file jar Maven yang dibutuhkan. di siniFile-file JAR ini mungkin menjadi usang dan tidak kompatibel seiring waktu, jadi kami sarankan Anda mengunduhnya sendiri menggunakan metode yang dijelaskan di atas.

Pengujian Otomasi Menggunakan Cucumber dengan Selenium

Mari kita bahas cara menggunakannya. Cucumber dengan Selenium Selangkah demi selangkah. Di sini kita akan membahas tiga skenario:

  • Skenario 1: Cetak teks di konsol.
  • Skenario 2: Masukkan kredensial login dan atur ulang nilainya.
  • Skenario 3: Masukkan kredensial login pada Guru99 dan atur ulang nilainya โ€” diulangi untuk 3 set data.

Skenario 1: Mencetak Teks di Konsol

Dalam skenario ini, kita cukup mencetak teks di konsol menggunakan Cucumber.

Langkah 1) Buat proyek di Eclipse.

Membuat Java proyek dengan nama "CucumberDenganSelenium" seperti yang ditunjukkan pada gambar di bawah.

membuat CucumberDenganSelenium Java proyek di Eclipse

Java konfigurasi nama proyek di Eclipse

Langkah 2) Tambahkan file jar ke proyek.

Klik kanan proyek > Properti > Java Build Path. Tambahkan semua library yang telah Anda unduh sebelumnya.

Add Cucumber ke Selenium file jar ke Java Bangun Jalur

Langkah 3) Buat berkas fitur.

Untuk membuat berkas fitur, pertama-tama buat folder Fitur seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Buat folder Fitur di Eclipse proyek

Masukkan nama folder โ€œFiturโ€ dan klik Selesai.

Konfigurasikan nama folder Fitur di Eclipse

Folder fitur terlihat di penjelajah proyek.

Sekarang buatlah berkas fitur di dalam folder Features dengan nama Fitur Tes SayaProsesnya mirip dengan membuat folder.

Buat file MyTest.feature di folder Features.

Catatan: Anda mungkin perlu menginstal Cucumber Eclipse Pasang plugin terlebih dahulu. Buka Bantuan โ†’ Instal Perangkat Lunak Baru, lalu tempel tautannya. http://cucumber.github.io/cucumber-eclipse/update-site/, dan pasang.

Langkah 4) Tuliskan skenarionya.

Baris-baris di bawah ini ditulis dalam Fitur Tes Saya menggunakan bahasa 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 Penjelasan

Baris 1) Menentukan fungsi bisnis.

Baris 2) Menentukan skenario yang akan diuji.

Baris 3) Mendefinisikan prasyarat (Diberikan).

Baris 4) Menentukan tindakan yang akan dilakukan (Kapan).

Baris 5) Menentukan hasil atau konsekuensi yang diharapkan (Kemudian).

Langkah 5) Tulis Selenium Skrip TestRunner untuk Cucumber desain kerangka kerja.

Membuat Pelari Uji paket dan kemudian sebuah Pelari.java berkas kelas di bawahnya.

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
{

}

Di atas Cucumber Java contoh, kita menjalankan tes mentimun dengan menggunakan anotasi berikut:

@JalankanDengan() mengatakan JUnit tentang kelas test runner yang memulai eksekusi pengujian kita.

@CucumberOpsi() Mengatur properti pengujian seperti jalur file fitur dan paket penghubung definisi langkah.

Tangkapan layar file TestRunner:

Skrip TestRunner Runner.java untuk Cucumber

Langkah 6) Buat skrip Definisi Langkah.

Sekarang buat a Definisi Langkah paket dan kemudian sebuah Langkah-langkah.java file skrip di bawahnya. Di dalam Steps.java kita menulis Selenium logika yang dipetakan ke setiap langkah 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.");
    }
}

Kelas tersebut bernama Tangga, dan Cucumber Anotasi memetakan setiap metode ke langkah file fitur:

@Diberikan mendefinisikan metode untuk membuka Firefox lalu jalankan aplikasinya.

@Kapan Menentukan metode untuk memasukkan nama pengguna dan kata sandi.

@Kemudian mendefinisikan metode untuk mengatur ulang kredensial.

Setiap metode hanya mencetak pesan ke konsol.

Tangkapan layar di bawah ini menunjukkan skrip Steps.java dan struktur proyek:

Langkah-langkah.javascript dan struktur proyek di Eclipse

Catatan: Definisi langkah adalah kode yang Anda inginkan. Cucumber untuk dieksekusi ketika cocok dengan langkah file fitur.

Langkah 7) Jalankan skripnya.

Jalankan skrip ini dari file TestRunner (Runner.java) seperti yang ditunjukkan di bawah ini.

Jalankan Runner.java untuk menjalankannya. Cucumber uji

Langkah 8) Analisis hasilnya.

Saat menjalankan Runner.java, Cucumber Mencetak teks yang sama seperti yang didefinisikan dalam Steps.java ke konsol.

Output konsol dari Cucumber pelaksanaan pengujian

Skenario 2: Masukkan Kredensial Login dan Atur Ulang Nilai

Di sini kita memasukkan kredensial pada GuruHalaman login demo 99 dan atur ulang nilainya.

Untuk Skenario 2, kita hanya perlu memperbarui Langkah-langkah.javaDi sini kita menambahkan yang sebenarnya Selenium kode. Pertama, pastikan Selenium File JAR telah ditambahkan ke proyek.

Memastikan Selenium File JAR ada di classpath proyek.

Langkah 1) Perbarui skrip Steps.java seperti yang ditunjukkan di bawah ini.

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();
    }
}

Tangkapan layar dari gambar di atas Selenium naskah:

Skenario 2 Langkah.java dengan Selenium logika

Langkah 2) Jalankan skripnya.

Setelah memperbarui Steps.java, jalankan Runner.java.

Langkah 3) Analisis hasilnya. Pada hasil keluaran, Anda akan melihat hal berikut:

  • Peramban diluncurkan.
  • GuruSitus demo 99 bank dibuka.
  • Nama pengguna dan kata sandi dimasukkan pada halaman login.
  • Tombol Reset menghapus nilai-nilai tersebut.

Animasi Skenario 2 yang ditampilkan Cucumber Selenium uji coba

Skenario 3: Jalankan Alur Login dan Reset dengan 3 Set Data

Di sini kita perlu memperbarui keduanya. Langkah-langkah.java dan file fitur untuk menjalankan alur yang sama dengan tiga set kredensial.

Langkah 1) Perbarui file fitur seperti yang ditunjukkan di bawah ini.

Kami menggunakan Garis Besar Skenario ke contoh sintaksis jadi Cucumber mengulang skenario yang sama di setiap baris data.

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 |

Berkas fitur berisi Garis Besar Skenario dan Tabel Contoh.

Langkah 2) Perbarui skrip Steps.java.

Di sini kita memperbarui tanda tangan metode agar dapat menerima parameter dari tabel Contoh.

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 telah diperbarui dengan kredensial berparameter.

Langkah 3) Jalankan skrip yang telah diperbarui.

Layar di bawah ini menunjukkan eksekusi yang berhasil dan waktu yang dibutuhkan oleh setiap kumpulan data.

Eksekusi Skenario 3 yang sukses dengan tiga set data.

Langkah 4) Analisis hasilnya. Langkah-langkah berikut diulangi untuk setiap dari 3 set data:

  • Peramban diluncurkan.
  • GuruSitus demo 99 bank dibuka.
  • Nama pengguna dan kata sandi dimasukkan pada halaman login.
  • Tombol Reset menghapus nilai-nilai tersebut.

Animasi Skenario 3 menunjukkan parameterisasi Cucumber uji coba

Pertanyaan Umum Demo Slot

Cucumber adalah kerangka kerja BDD yang menjalankan skenario yang ditulis dalam Gherkin. Selenium adalah pustaka otomatisasi browser yang menggerakkan halaman web. Cucumber tidak berinteraksi langsung dengan browser โ€” ia memanggil Selenium Definisi langkah untuk melakukan tindakan UI yang sebenarnya.

Cucumber File fitur menggunakan Gherkin, bahasa khusus domain berbahasa Inggris sederhana yang mengatur skenario dengan kata kunci seperti Fitur, Skenario, Diberikan, Ketika, Maka, Dan, Tetapi, Garis Besar Skenario, dan Contoh. Gherkin mudah dibaca oleh pemangku kepentingan teknis maupun non-teknis.

Gunakan kata kunci Scenario Outline dengan tabel Examples. Cucumber menjalankan skenario yang sama sekali per baris, mengganti placeholder seperti Dan dengan nilai dari setiap baris. Ini adalah pola berbasis data standar dalam Cucumber.

AI menghasilkan skenario Gherkin dari cerita pengguna, merekomendasikan definisi langkah, memperbaiki locator yang rusak di Selenium, dan menyarankan data Contoh. Asisten AI juga menandai skenario duplikat, pernyataan yang lemah, dan pengujian yang sudah usang, yang menjaga agar rangkaian BDD tetap mudah dipelihara seiring perubahan aplikasi.

Ya. Asisten pengkodean AI membaca berkas fitur Gherkin dan menghasilkan kecocokan. Java atau definisi langkah Kotlin, termasuk Selenium Panggilan WebDriver, strategi pencari lokasi, dan pengikatan parameter. Pengembang kemudian menyempurnakan kode yang dihasilkan, yang secara dramatis mengurangi kode berulang (boilerplate) saat bootstrap.ping rangkaian BDD baru.

Ringkaslah postingan ini dengan: