TestNG Tutorial

โšก Ringkasan Cerdas

TestNG adalah Generasi Berikutnya Java kerangka kerja pengujian yang berpasangan dengan Selenium untuk otomatisasi terstruktur, pelaporan yang komprehensif, dan eksekusi paralel. Tutorial ini mencakup anotasi inti, pengaturan proyek di Eclipse, menulis kasus uji pertama, laporan HTML, dan penggunaan parameter tingkat lanjut.

  • ๐Ÿงฑ Kerangka Inti: TestNG Meluas JUnit ide dengan anotasi, grupping, dan eksekusi pengujian paralel untuk Selenium suite.
  • ๏ธ Anotasi Menggerakkan Alur: Pengaturan, pengujian, dan pembersihan urutan @Test, @BeforeMethod, @AfterMethod, @BeforeTest, dan @AfterTest.
  • ๏ธ Eclipse Setup: Membangun TestNG proyek, tambahkan TestNG perpustakaan dan Selenium Kemudian, ekstrak file JAR, dan hasilkan kelas pengujian dari wizard.
  • ๐Ÿ“Š Pelaporan: TestNG Menghasilkan laporan teks, grafik, dan HTML di folder test-output, termasuk tampilan kronologis.
  • โš™๏ธ Parameter: Gunakan priority, alwaysRun, dan dataProvider untuk mengontrol urutan eksekusi dan memasukkan data ke dalam pengujian.
  • ๐Ÿค– Peningkatan AI: Asisten pengkodean AI semakin cepat TestNG Pembuatan kelas, pembaruan locator, dan pembuatan kerangka dataProvider.

TestNG Tutorial

Apa itu TestNG?

TestNG adalah kerangka kerja pengujian otomatisasi di mana โ€œNGโ€ merupakan singkatan dari โ€œNext Generationโ€. TestNG terinspirasi oleh JUnit dan menggunakan Java anotasi (@) untuk mengontrol alur pengujian. Ini mengatasi JUnitketerbatasan sebelumnya dan dirancang untuk membuat pengujian ujung ke ujung lebih mudah.

Dengan TestNG Anda dapat membuat laporan yang tepat dan langsung melihat berapa banyak pengujian yang berhasil, gagal, atau dilewati. Anda juga dapat menjalankan ulang hanya kasus yang gagal.

Sebagai contoh:

  • Misalkan Anda memiliki lima kasus uji, masing-masing dalam metodenya sendiri, yang ditulis tanpa TestNGTiga percobaan berhasil; yang keempat gagal. Setelah memperbaiki yang keempat, Anda ingin menjalankan ulang hanya percobaan itu saja, karena tiga percobaan pertama sudah berhasil. Ini sulit dilakukan dengan kode metode main() biasa.
  • TestNG menyediakan testng-failed.xml file di test-output folder. Menjalankan XML tersebut hanya akan mengeksekusi ulang kasus-kasus yang gagal.

Selain itu, Anda akan mempelajari keuntungan dari TestNG, cara menulis metode pengujian dengan anotasi @Test, dan cara mengkonversi kelas Anda menjadi rangkaian pengujian yang berjalan dari Eclipse atau baris perintah.

Mengapa Menggunakan TestNG dengan Selenium?

Secara default, Selenium Tes tidak menghasilkan hasil yang diformat dengan rapi. Dengan TestNG Setelah terhubung, test runner akan menghasilkan laporan terstruktur yang dapat Anda bagikan dengan tim.

jembatan Selenium pengguna lebih suka TestNG lebih JUnit karena rangkaian fiturnya yang lebih luas. Fitur-fitur utama untuk Selenium adalah:

  • Laporan yang mencakup jumlah kasus uji yang dijalankan, berhasil, gagal, dan dilewati.
  • Grup mudahping dari kasus uji melalui sebuah testng.xml berkas, dengan prioritas eksekusi.
  • Ulangi pengujian beberapa kali tanpa menggunakan perulangan. invocationCount.
  • Jalankan beberapa pengujian di beberapa browser โ€” lintas-pengujian browser Dukungan.
  • Integrasi yang lancar dengan Maven, Jenkinsdan alat bantu CI lainnya.
  • Readable anotasi โ€” misalnya, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • Selenium WebDriver tidak memiliki fitur pelaporan bawaan; TestNG mengisi celah tersebut dengan laporan HTML yang rapi seperti yang di bawah ini.

TestNG Contoh laporan HTML untuk Selenium tes

  • TestNG Menyederhanakan kode pengujian. Anda tidak lagi memerlukan metode main statis; anotasi menentukan apa yang dijalankan dan kapan.

Biasa Java struktur kelas pengujian dengan metode utama

TestNG struktur kelas pengujian menggunakan anotasi

  • Pengecualian yang tidak tertangkap ditangani dengan baik oleh TestNGLangkah-langkah tersebut dilaporkan sebagai langkah yang gagal tanpa menghentikan seluruh proses.

Keuntungan TestNG lebih JUnit

TestNG menawarkan tiga keunggulan utama dibandingkan JUnit:

  • Anotasi lebih mudah dipahami dan digunakan.
  • Kasus uji dapat dikelompokkan dan diprioritaskan dengan upaya yang lebih sedikit.
  • Eksekusi pengujian paralel didukung secara langsung.

Apa itu Anotasi dalam TestNG?

Anotasi dalam TestNG adalah baris kode yang ditempatkan di atas suatu metode untuk mengontrol bagaimana metode tersebut dieksekusi. Mereka selalu diawali dengan simbol @. Contoh sederhana ditunjukkan di bawah ini.

Example TestNG anotasi di atas a Java metode

Anotasi dibahas secara detail di bagian tersebut. โ€œAnotasi yang Digunakan dalam TestNG" Nanti di tutorial ini, jadi contoh di atas hanya untuk memberikan gambaran umum. TestNG Anotasi lebih mudah dikodekan dan dibaca daripada JUnit padanan, dan itu sangat penting saat menjalankan pengujian pada Selenium kisi di mana eksekusi paralel menjadi penting.

Cara Menulis Kasus Uji di TestNG

Menulis a TestNG Kasus uji ini terdiri dari tiga langkah:

  1. Tuliskan logika bisnis Anda dan tempatkan TestNG anotasi di atas setiap metode.
  2. Tambahkan metadata seperti nama kelas, nama grup, dan nama paket.
  3. Jalankan TestNG kelas dari IDE Anda atau baris perintah.

Buat Kasus Uji Menggunakan TestNG Penjelasan

Sekarang kita akan membuat kasus uji pertama kita menggunakan TestNG anotasi dalam SeleniumSebelum menulis tes, siapkan yang baru. TestNG proyek di Eclipse dan menyebutnya PertamaTestNGProject.

Menyiapkan yang Baru TestNG Project

Langkah 1) Klik Berkas > Baru > Java Project.

Eclipse menu untuk membuat yang baru Java proyek

Langkah 2) Enter PertamaTestNGProject sebagai nama proyek dan klik Selanjutnya.

New Java wizard proyek dengan nama PertamaTestNGProject

Langkah 3) Impor TestNG perpustakaan. Klik perpustakaan tab dan kemudian Tambahkan Perpustakaanโ€ฆ.

Tab Perpustakaan dengan opsi Tambah Perpustakaan di Eclipse

Langkah 4) Dalam majalah Tambahkan Perpustakaan dialog, pilih TestNG dan klik Selanjutnya.

Memilih TestNG di dialog Tambah Pustaka

Langkah 5) Klik Finish.

Menyelesaikan wizard Tambah Perpustakaan

TestNG Sekarang seharusnya muncul dalam daftar Perpustakaan.

TestNG terlihat di daftar Perpustakaan

Langkah 6) Tambahkan file JAR yang berisi Selenium API. Ini berasal dari Java driver klien diunduh dari selenium.dev/unduhan.

Dialog Tambah JAR Eksternal di Eclipse

Arahkan ke folder tempat Selenium File JAR disimpan.

Memilih Selenium File JAR untuk jalur build

Setelah menambahkan file JAR eksternal, tampilan layar akan seperti ini.

Selenium File JAR ditambahkan ke daftar Pustaka

Langkah 7) Klik Finish. Baru PertamaTestNGProject muncul di Penjelajah Paket.

PertamaTestNGProyek terlihat di Penjelajah Paket

Cara Membuat Baru TestNG Berkas Uji

Setelah proyek siap, buat yang baru. TestNG file.

Langkah 1) Klik kanan src folder dan pilih Baru > Lainnyaโ€ฆ.

Tambahkan menu Lainnya yang baru dari folder src di Eclipse

Langkah 2) Pilih TestNG folder, pilih TestNG kelas, Dan klik Selanjutnya.

TestNG opsi kelas di wizard Baru

Langkah 3) Masukkan nilai yang ditunjukkan di bawah ini dan klik Finish. itu Java file bernama PertamaTestNGFile.

TestNG penyihir kelas dengan PertamaTestNGNilai berkas

Langkah 4) Eclipse menghasilkan TestNG Templat yang ditampilkan di bawah ini.

Dihasilkan TestNG templat kelas di Eclipse editor

Membuat Kode untuk Pertama Kalinya TestNG Uji Kasus

Buat yang pertama Kasus cobaan yang memverifikasi kepemilikan Mercury Beranda tur.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @Test
    public void verifyHomepageTitle() {
        System.out.println("launching firefox browser");
        // Selenium 4 ships Selenium Manager, so the driver path is no longer required.
        driver = new FirefoxDriver();
        driver.get(baseUrl);
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.quit();
    }
}

Hal-hal yang perlu diperhatikan:

  • TestNG tidak membutuhkan main() Metode.
  • Metode tidak harus statis.
  • The @Uji tanda anotasi verifyHomepageTitle() sebagai kasus uji.
  • Anotasi terdapat di dalam org.testng.annotations.* paket.
  • The Tegas kelas dari org.testng.Assert mendorong verifikasi.

Anda dapat memiliki beberapa anotasi @Test dalam satu TestNG berkas. Kami membahasnya di dalam โ€œAnotasi yang Digunakan dalam TestNG" bagian.

Menjalankan Tes

Klik kanan file tersebut dan jalankan sebagai TestNG tes. Eclipse menghasilkan dua keluaran โ€” hasil teks di jendela Konsol dan hasil grafis di TestNG Jendela hasil.

TestNG Jendela hasil dengan hasil tes

Eclipse Jendela konsol dengan TestNG keluaran teks

Memeriksa Laporan yang Dibuat oleh TestNG

Jendela Konsol menyediakan ringkasan berbasis teks sementara TestNG Jendela hasil menampilkan tampilan grafis.

Teks vs grafis TestNG perbandingan hasil

Menghasilkan Laporan HTML

TestNG juga dapat menghasilkan laporan HTML lengkap.

Langkah 1) Setelah berlari PertamaTestNGFile, klik kanan proyek dan pilih menyegarkan.

Opsi penyegaran untuk TestNG proyek di Eclipse

Langkah 2) A keluaran uji Folder akan muncul. Buka folder tersebut dan cari index.html โ€” laporan HTML untuk hasil pengujian terbaru.

folder test-output dengan index.html disorot

Langkah 3) Double-klik index.html untuk membukanya di dalam EclipseBrowser 's. Tekan F5 untuk menyegarkan setelah dijalankan berikutnya.

TestNG Laporan indeks HTML yang ditampilkan dalam Eclipse

Anotasi yang Digunakan dalam TestNG

Anda telah melihat anotasi @Test. Bagian selanjutnya akan membahas anotasi tingkat lanjut yang paling berguna.

Beberapa Kasus Uji

Tunggal TestNG File dapat memuat beberapa anotasi @Test. Secara default, metode yang diberi anotasi @Test dieksekusi sesuai urutan abjad. Dalam kode di bawah ini, metode c_test, a_test, dan b_test Diurutkan berdasarkan abjad tanpa memperhatikan urutan sumber.

Beberapa metode @Test dalam satu TestNG kelas

Jalankan kode dan buka index.html. Klik Tampilan kronologis.

Tampilan kronologis dari beberapa TestNG metode

Parameter Teknis

Untuk mengganti urutan default, gunakan priority parameter. Parameter adalah kata kunci yang memodifikasi perilaku anotasi.

  • Tetapkan nilai dengan =.
  • Berikan parameter dalam tanda kurung yang ditempatkan tepat setelah anotasi, seperti yang ditunjukkan di bawah ini.

TestNG anotasi dengan sintaks parameter dan nilai

TestNG mengeksekusi anotasi @Test dari nilai prioritas terendah hingga tertinggi. Angka prioritas tidak perlu berurutan.

Kode lengkap dengan parameter prioritas @Test

Laporan HTML tersebut mengkonfirmasi bahwa metode-metode dieksekusi dalam urutan prioritas menaik.

TestNG Laporan yang menunjukkan metode yang dijalankan berdasarkan prioritas menaik.

Beberapa Parameter

Selain priority, @Test menerima alwaysRun parameter (benar atau salah). Untuk menggunakan dua parameter atau lebih dalam satu anotasi, pisahkan dengan koma:

@Test(priority = 0, alwaysRun = true)

Contoh penggunaan beberapa parameter di dalam anotasi @Test

@BeforeTest dan @AfterTest

@Tokopedia Metode di bawah anotasi ini dijalankan sebelum kasus uji pertama di TestNG fillet.
@Setelah Metode di bawah anotasi ini dijalankan setelah semua kasus uji di TestNG berkas selesai.

Perhatikan kode di bawah ini.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

Berdasarkan tabel dan kode, kita dapat memprediksi bahwa urutannya adalah:

  • 1 โ€” launchBrowser()
  • ke-2 โ€” verifyHomepageTitle()
  • ke-3 โ€” terminateBrowser()

Penempatan blok anotasi dalam file sumber tidak memengaruhi urutan eksekusinya. Cobalah mengatur ulang metode-metodenya seperti yang ditunjukkan di bawah ini.

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @AfterTest                              // Jumbled
    public void terminateBrowser() {
        driver.quit();
    }

    @BeforeTest                             // Jumbled
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test                                   // Jumbled
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }
}

Jalankan kode dan verifikasi hasilnya.

TestNG hasil yang mengkonfirmasi urutan meskipun anotasi berantakan

@BeforeMethod dan @AfterMethod

@Tokopedia Metode di bawah anotasi ini dijalankan sebelum setiap metode pengujian.
@Afterhod Metode di bawah anotasi ini dijalankan setelah setiap metode pengujian.

In Mercury Misalnya, kita ingin memverifikasi judul dari dua halaman target yang diakses dari halaman beranda.

Tiga tautan dari Mercury Beranda tur

Alur pengujiannya adalah:

  • Buka halaman beranda dan periksa judulnya.
  • Klik DAFTAR dan verifikasi judul halaman targetnya.
  • Kembali ke halaman utama dan verifikasi judulnya.
  • Klik DUKUNGAN dan verifikasi judul halaman targetnya.
  • Kembali ke halaman utama dan periksa kembali judulnya.

Kode di bawah ini menunjukkan bagaimana @BeforeMethod dan @AfterMethod menangani langkah-langkah yang berulang.

package firsttestngpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;
    public String expected = null;
    public String actual = null;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @BeforeMethod
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @Test(priority = 0)
    public void register() {
        driver.findElement(By.linkText("REGISTER")).click();
        expected = "Register: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @Test(priority = 1)
    public void support() {
        driver.findElement(By.linkText("SUPPORT")).click();
        expected = "Under Construction: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @AfterMethod
    public void goBackToHomepage() {
        driver.findElement(By.linkText("Home")).click();
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

Setelah menjalankan pengujian, TestNG melaporkan urutan di bawah ini.

TestNG Urutan pelaporan menggunakan BeforeMethod dan AfterMethod

Singkatnya: tempatkan langkah-langkah penyiapan di dalam @Tokopedia dan pembersihan atau pengaturan ulang navigasi di dalam @Afterhod sehingga setiap kasus uji dimulai dan berakhir dalam keadaan yang diketahui.

Ringkasan TestNG Penjelasan

  • @BeforeSuite: dijalankan sebelum semua pengujian dalam rangkaian pengujian.
  • @AfterSuite: dijalankan setelah semua pengujian dalam rangkaian pengujian.
  • @SebelumUji: dijalankan sebelum metode pengujian apa pun yang termasuk dalam kelas di dalam menandai.
  • @AfterTest: dijalankan setelah semua metode pengujian yang termasuk dalam kelas di dalam menandai.
  • @SebelumGrup: dijalankan sesaat sebelum metode pengujian pertama yang termasuk dalam kelompok yang terdaftar.
  • @AfterGroups: dijalankan sesaat setelah metode pengujian terakhir yang termasuk dalam kelompok yang terdaftar.
  • @SebelumKelas: berjalan sebelum metode pengujian pertama di kelas saat ini.
  • @AfterClass: dijalankan setelah semua metode pengujian di kelas saat ini.
  • @SebelumMetode: dijalankan sebelum setiap metode pengujian.
  • @SetelahMetode: berjalan setelah setiap metode pengujian.
  • @Tes: menandai metode tersebut sebagai kasus uji.

Pertanyaan Umum Demo Slot

JUnit 5 dimodernisasi JUnit dengan API Jupiter dan model ekstensi. TestNG masih memimpin dalam eksekusi paralel, grup tingkat suiteping, dependsOn, dan DataProvider. Banyak Selenium tim memilih TestNG untuk rangkaian lengkap dan JUnit 5 untuk pengujian unit.

Tambahkan parallel=โ€methodsโ€ atau parallel=โ€classesโ€ ditambah atribut thread-count pada tag di dalam testng.xml. TestNG lalu mendistribusikan metode pengujian ke seluruh thread, ideal untuk Selenium Eksekusi lintas browser berbasis grid atau cloud.

@DataProvider memasukkan beberapa set data ke dalam satu metode @Test. Setiap baris dalam provider merupakan satu eksekusi. Ini adalah pola standar untuk pengembangan berbasis data. Selenium pengujian terhadap formulir, kotak pencarian, atau layar masuk.

Ya. AI asisten pengkodean menghasilkan TestNG Membuat kerangka, memberi anotasi pada metode @Test, membangun kelas Page Object, dan menyusun array DataProvider dari sampel CSV, sehingga secara signifikan mengurangi waktu pembuatan kerangka.

AI generatif mengolah file testng-results.xml dan log Surefire, mengelompokkan kegagalan serupa, menyarankan kemungkinan penyebab utama, dan membuat draf tiket Jira. Hal ini mempersingkat proses triase pengujian yang bermasalah dan membantu pimpinan QA memprioritaskan perbaikan CI.

Ringkaslah postingan ini dengan: