TestNG Tutorial
Apa itu TestNG?
TestNG adalah kerangka pengujian otomasi di mana NG adalah singkatan dari “Next Generation”. TestNG terinspirasi oleh JUnit yang menggunakan anotasi (@). TestNG mengatasi kelemahan dari JUnit dan dirancang untuk dibuat pengujian ujung ke ujung mudah.
Menggunakan TestNG, Anda dapat membuat laporan yang tepat, dan Anda dapat dengan mudah mengetahui berapa banyak kasus uji yang lulus, gagal, dan dilewati. Anda dapat menjalankan kasus pengujian yang gagal secara terpisah.
Sebagai contoh:
- Misalkan, Anda memiliki lima kasus uji, satu metode ditulis untuk setiap kasus uji (Asumsikan bahwa program ditulis menggunakan metode utama tanpa menggunakan testNG). Ketika Anda menjalankan program ini terlebih dahulu, tiga metode berhasil dijalankan, dan metode keempat gagal. Kemudian perbaiki kesalahan yang ada pada metode keempat, sekarang Anda ingin menjalankan hanya metode keempat karena tiga metode pertama berhasil dijalankan. Ini tidak mungkin dilakukan tanpa menggunakan TestNG.
- TestNG in Selenium menyediakan opsi, yaitu file testng-failed.xml dalam folder test-output. Jika Anda ingin menjalankan hanya kasus uji yang gagal, berarti Anda menjalankan file XML ini. File ini hanya akan menjalankan kasus uji yang gagal.
Selain konsep di atas, Anda akan mempelajari lebih lanjut TestNG, seperti apa Kelebihannya TestNG, cara membuat metode pengujian menggunakan anotasi @test, cara mengonversi kelas-kelas ini ke dalam berkas rangkaian pengujian dan mengeksekusinya melalui Eclipse serta dari baris perintah.
Mengapa Menggunakan TestNG dengan Selenium?
Default Selenium tes tidak menghasilkan format yang tepat untuk hasil tes. Menggunakan TestNG in Selenium, kita dapat menghasilkan hasil tes.
jembatan Selenium pengguna menggunakan ini lebih dari Junit karena kelebihannya. Ada begitu banyak fitur TestNG, tapi kami hanya akan fokus pada hal-hal terpenting yang dapat kami gunakan SeleniumBerikut ini adalah fitur-fitur utama dari Selenium TestNG:
- Hasilkan laporan dalam format yang tepat termasuk jumlah kasus uji yang dijalankan, jumlah kasus uji yang lulus, jumlah kasus uji yang gagal, dan jumlah kasus uji yang dilewati.
- Beberapa kasus uji dapat dikelompokkan dengan lebih mudah dengan mengonversinya menjadi file testng.xml. Di mana Anda dapat membuat prioritas kasus uji mana yang harus dieksekusi terlebih dahulu.
- Kasus uji yang sama dapat dijalankan beberapa kali tanpa perulangan hanya dengan menggunakan kata kunci yang disebut 'jumlah pemanggilan'.
- Dengan menggunakan testng, Anda dapat menjalankan beberapa kasus pengujian di beberapa browser, yaitu cross pengujian browser.
- TestNG kerangka kerja dapat dengan mudah diintegrasikan dengan alat seperti TestNG Maven, Jenkins, dll.
- Anotasi yang digunakan dalam pengujian sangat mudah dipahami misal: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriver tidak memiliki mekanisme asli untuk menghasilkan laporan. TestNG dapat menghasilkan laporan dalam format yang mudah dibaca seperti yang ditunjukkan di bawah ini.
- TestNG menyederhanakan cara pengujian dikodekan. Tidak diperlukan lagi metode main statis dalam pengujian kami. Urutan tindakan diatur oleh anotasi yang mudah dipahami dan tidak memerlukan metode yang statis.
- Pengecualian yang tidak tertangkap ditangani secara otomatis oleh TestNG tanpa menghentikan tes sebelum waktunya. Pengecualian ini dilaporkan sebagai langkah yang gagal dalam laporan.
Keuntungan TestNG lebih JUnit
Ada tiga keuntungan utama TestNG lebih JUnit:
- Anotasi lebih mudah dipahami
- Kasus uji dapat dikelompokkan dengan lebih mudah
- Pengujian paralel dimungkinkan
Apa itu Anotasi? TestNG?
Anotasi dalam TestNG adalah baris kode yang dapat mengontrol bagaimana metode di bawahnya akan dieksekusi. Mereka selalu diawali dengan simbol @. Sangat awal dan cepat TestNG Contohnya adalah yang ditunjukkan di bawah ini.
Catatan akan dibahas kemudian di bagian yang berjudul “Catatan yang digunakan dalam TestNG, jadi tidak apa-apa jika Anda tidak memahami hal di atas TestNG Contoh dulu. Penting untuk diperhatikan untuk saat ini bahwa anotasi sudah masuk TestNG lebih mudah untuk dikodekan dan dipahami daripada di JUnit.
Kemampuan untuk menjalankan pengujian secara paralel tersedia di TestNG tapi tidak di JUnit, sehingga TestNG kerangka kerja lebih disukai untuk digunakan oleh penguji Selenium Kotak.
Cara Menulis Kasus Uji di TestNG?
Langkah 1) Tulis logika bisnis Anda dan masukkan TestNG anotasi dalam kode Anda.
Langkah 2) Tambahkan informasi lebih lanjut seperti nama kelas, nama grup, nama paket, dll
Langkah 3) Jalankan TestNG.
Buat Kasus Uji Menggunakan TestNG Penjelasan
Sekarang, kita akan mempelajari cara membuat test case pertama kita menggunakan TestNG Anotasi dalam Selenium:
Sebelum kita membuat test case, sebaiknya kita setup terlebih dahulu yang baru TestNG Proyek di Eclipse dan beri nama sebagai “PertamaTestNGProyek".
Menyiapkan yang baru TestNG Project
Langkah 1: Klik File > Baru > Java Project
Langkah 2: Ketik “PertamaTestNGProject” sebagai Nama Proyek lalu klik Next.
Langkah 3: Kami sekarang akan mulai mengimpor TestNG Perpustakaan ke dalam proyek kami. Klik pada tab “Perpustakaan”, lalu “Tambahkan Perpustakaan…”
Langkah 4: Pada dialog Tambahkan Perpustakaan, pilih “TestNG” dan klik Berikutnya.
Langkah 5: Klik Selesai.
Anda harus memperhatikan itu TestNG termasuk dalam daftar Perpustakaan.
Langkah 6: Kami sekarang akan menambahkan file JAR yang berisi Selenium API. File-file ini ditemukan di Java driver klien tempat kami mengunduh https://www.selenium.dev/downloads/ ketika kami sedang menginstal Selenium dan Eclipse di bab-bab sebelumnya.
Kemudian, navigasikan ke tempat Anda meletakkan Selenium file JAR.
Setelah menambahkan JAR eksternal, layar Anda akan terlihat seperti ini.
Langkah 7: Klik Selesai dan verifikasi bahwa FirstTestNGProyek terlihat di Eclipsejendela Package Explorer.
Cara Membuat Baru TestNG Berkas Uji
Sekarang kita sudah selesai menyiapkan proyek kita dalam hal ini TestNG tutorialnya, mari kita buat yang baru TestNG file.
Langkah 1: Klik 'src' dan Pilih yang lain.
Klik kanan pada folder paket “src” lalu pilih Baru > Lainnya…
Langkah 2: Pilih TestNG kelas.
Klik pada TestNG folder dan pilih “TestNG pilihan kelas". Klik Berikutnya.
Langkah 3: Ketik nilainya.
Ketik nilai yang ditunjukkan di bawah ini pada kotak input yang sesuai dan klik Selesai. Perhatikan bahwa kami telah memberi nama Java file sebagai “PertamaTestNGMengajukan".
Langkah 4: Templat Dibuat.
Eclipse harus secara otomatis membuat template untuk kita TestNG file yang ditunjukkan di bawah ini.
Pengkodean Pertama kami TestNG Contoh Kasus Uji
Sekarang mari kita buat yang pertama Uji Kasus itu akan memeriksa apakah Mercury Beranda Tours benar. Ketik kode Anda seperti yang ditunjukkan di bawah ini TestNG Contoh:
package firsttestngpackage; import org.openqa.selenium.*; 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/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @Test public void verifyHomepageTitle() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); driver = new FirefoxDriver(); driver.get(baseUrl); String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); driver.close(); } }
Perhatikan hal berikut.
- TestNG tidak mengharuskan Anda memiliki metode main().
- Metode tidak harus statis.
- Kami menggunakan anotasi @Test. @Test digunakan untuk memberitahukan bahwa metode di bawahnya adalah kasus uji. Dalam hal ini, kami telah menetapkan metode verifikasiHomepageTitle() menjadi kasus pengujian kami, jadi kami menempatkan anotasi '@Test' di atasnya.
- Karena kami menggunakan anotasi di TestNG, kami perlu mengimpor paket org.testng.annotations.*.
- Kami menggunakan kelas Assert. Kelas Assert digunakan untuk melakukan operasi verifikasi di TestNG. Untuk menggunakannya, kita perlu mengimpor paket org.testng.Assert.
Anda mungkin memiliki beberapa kasus pengujian (oleh karena itu, beberapa anotasi @Test) dalam satu kasus TestNG berkas. Hal ini akan dibahas lebih rinci nanti di bagian “Anotasi yang digunakan dalam TestNG. "
Menjalankan Tes
Untuk menjalankan tes, cukup jalankan file di Eclipse seperti biasanya. Eclipse akan memberikan dua output – satu di jendela Konsol dan yang lainnya di jendela TestNG Jendela hasil.
Memeriksa laporan yang dibuat oleh TestNG
Jendela Konsol masuk Eclipse memberikan laporan berbasis teks hasil uji kasus kami sementara TestNG Jendela hasil memberi kita jendela grafis.
Menghasilkan Laporan HTML
TestNG memiliki kemampuan untuk menghasilkan laporan dalam format HTML.
Langkah 1: Setelah menjalankan FirstTestNGFile yang kita buat di bagian sebelumnya, klik kanan nama proyek (PertamaTestNGProject) di jendela Project Explorer lalu klik opsi “Refresh”.
Langkah 2: Perhatikan bahwa folder “test-output” telah dibuat. Perluas dan cari file index.html. File HTML ini adalah laporan hasil uji coba terbaru.
Langkah 3: Double-klik pada file index.html itu untuk membukanya di dalamnya Eclipsebrowser web bawaan. Anda dapat menyegarkan halaman ini kapan saja setelah menjalankan kembali pengujian hanya dengan menekan F5 seperti di browser web biasa.
Anotasi yang digunakan dalam TestNG
Di bagian sebelumnya, Anda telah diperkenalkan dengan anotasi @Test. Sekarang, kita akan mempelajari anotasi lebih lanjut dan penggunaannya.
Beberapa Kasus Uji
Kita dapat menggunakan beberapa anotasi @Test dalam satu anotasi TestNG mengajukan. Secara default, metode yang dianotasi oleh @Test dijalankan berdasarkan abjad. Lihat kode di bawah ini. Meskipun metode c_test, a_test, dan b_test tidak disusun berdasarkan abjad dalam kode, metode tersebut akan dieksekusi seperti itu.
Jalankan kode ini dan pada halaman index.html yang dihasilkan, klik “Tampilan kronologis.”
Parameter Teknis
Jika Anda ingin metode dieksekusi dalam urutan berbeda, gunakan parameter “prioritas”. Parameter adalah kata kunci yang mengubah fungsi anotasi.
- Parameter mengharuskan Anda untuk memberikan nilai padanya. Caranya dengan menempatkan tanda “=” di sebelahnya, lalu diikuti dengan nilainya.
- Parameter diapit oleh sepasang tanda kurung yang ditempatkan tepat setelah anotasi seperti cuplikan kode di bawah ini.
TestNG akan menjalankan anotasi @Test dengan nilai prioritas terendah hingga terbesar. Nilai prioritas Anda tidak perlu berurutan.
TestNG Laporan HTML akan mengonfirmasi bahwa metode dijalankan berdasarkan nilai prioritas menaik.
Beberapa Parameter
Selain “prioritas”, @Test memiliki parameter lain yang disebut “alwaysRun” yang hanya dapat disetel ke “true” atau “false”. Untuk menggunakan dua atau lebih parameter dalam satu anotasi, pisahkan parameter tersebut dengan koma seperti yang ditunjukkan di bawah ini.
@Test(priority = 0, alwaysRun = true)
@BeforeTest dan @AfterTest
@Tokopedia | metode di bawah anotasi ini akan dieksekusi sebelum kasus uji pertama di TestNG fillet. |
@Setelah | metode di bawah anotasi ini akan dieksekusi setelah semua kasus uji di TestNG file dieksekusi. |
Perhatikan kode di bawah ini.
package firsttestngpackage; import org.openqa.selenium.*; 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/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @BeforeTest public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); 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.close(); } }
Dengan menerapkan logika yang disajikan oleh tabel dan kode di atas, kita dapat memperkirakan bahwa urutan metode yang akan dieksekusi adalah:
- 1st – peluncuranBrowser()
- 2nd – verifikasiJudulHalaman Beranda()
- 3rd – mengakhiriBrowser()
Penempatan blok anotasi dapat dipertukarkan tanpa mempengaruhi urutan kronologis pelaksanaannya. Mari kita pahami dengan a TestNG Contoh dan coba atur ulang blok anotasi sedemikian rupa sehingga kode Anda akan terlihat seperti di bawah ini.
package firsttestngpackage; import org.openqa.selenium.*; 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/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @AfterTest //Jumbled public void terminateBrowser(){ driver.close(); } @BeforeTest //Jumbled public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); 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 di atas dan perhatikan itu
@BeforeMethod dan @AfterMethod
@Tokopedia | metode di bawah anotasi ini akan dieksekusi sebelum setiap metode dalam setiap kasus uji. |
@Afterhod | metode di bawah anotasi ini akan dieksekusi setelah setiap metode dalam setiap kasus uji. |
In Mercury Tur, misalkan kita ingin memverifikasi judul halaman target dari dua tautan di bawah ini.
Alur pengujian kami adalah:
- Buka beranda dan verifikasi judulnya.
- Klik DAFTAR dan verifikasi judul halaman targetnya.
- Kembali ke beranda dan verifikasi apakah judulnya masih benar.
- Klik DUKUNGAN dan verifikasi judul halaman targetnya.
- Kembali ke beranda dan verifikasi apakah judulnya masih benar.
Kode di bawah mengilustrasikan bagaimana @BeforeMethod dan @AfterMethod digunakan untuk menjalankan skenario yang disebutkan di atas secara efisien.
package firsttestngpackage; import org.openqa.selenium.*; 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/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver; public String expected = null; public String actual = null; @BeforeTest public void launchBrowser() { System.out.println("launching firefox browser"); System.setProperty("webdriver.gecko.driver", driverPath); 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.close(); } }
Setelah menjalankan tes ini, Anda TestNG harus melaporkan urutan berikut.
Sederhananya, @BeforeMethod harus berisi metode yang perlu Anda jalankan sebelum setiap kasus uji sementara @AfterMethod harus berisi metode yang perlu Anda jalankan setelah setiap kasus uji.
Ringkasan TestNG Penjelasan
@Sebelumnya: Metode yang dianotasi akan dijalankan sebelum semua pengujian dalam rangkaian ini dijalankan.
@Setelah: Metode yang dianotasi akan dijalankan setelah semua pengujian dalam rangkaian ini dijalankan.
@Tokopedia: Metode yang dianotasi akan dijalankan sebelum metode pengujian apa pun yang termasuk dalam kelas di dalam tag dijalankan.
@Setelah: Metode beranotasi akan dijalankan setelah semua metode pengujian milik kelas di dalam tag dijalankan.
@Tokopedia: Daftar grup yang akan dijalankan oleh metode konfigurasi ini sebelumnya. Metode ini dijamin akan berjalan sesaat sebelum metode pengujian pertama milik salah satu grup ini dipanggil.
@Afterroup: Daftar grup yang akan dijalankan oleh metode konfigurasi ini. Metode ini dijamin akan berjalan segera setelah metode pengujian terakhir milik salah satu grup ini dipanggil.
@Sebelum kelas: Metode yang dianotasi akan dijalankan sebelum metode pengujian pertama di kelas saat ini dipanggil.
@Afterlass: Metode yang dianotasi akan dijalankan setelah semua metode pengujian di kelas saat ini dijalankan.
@Tokopedia: Metode yang dianotasi akan dijalankan sebelum setiap metode pengujian.
@Afterhod: Metode yang dianotasi akan dijalankan setelah setiap metode pengujian.
@Uji: Metode beranotasi adalah bagian dari kasus uji
Kesimpulan
- TestNG adalah pengujian kerangka kerja yang mampu dibuat Selenium pengujian lebih mudah dipahami dan menghasilkan laporan yang mudah dipahami.
- Keuntungan utama TestNG lebih JUnit adalah sebagai berikut.
- Anotasi lebih mudah digunakan dan dipahami.
- Kasus uji dapat dikelompokkan dengan lebih mudah.
- TestNG memungkinkan kita untuk berkreasi tes paralel.
- Jendela Konsol masuk Eclipse menghasilkan hasil berbasis teks sementara TestNG jendela lebih berguna karena memberi kita keluaran grafis dari hasil pengujian ditambah rincian bermakna lainnya seperti:
- Runtime dari masing-masing metode.
- Urutan kronologis metode yang dijalankan
- TestNG mampu menghasilkan laporan berbasis HTML.
- Anotasi dapat menggunakan parameter seperti biasanya Java TestNG metode.
- TestNG Penyedia data adalah cara untuk meneruskan parameter ke dalam fungsi pengujian yang meneruskan nilai berbeda dalam kasus pengujian dalam satu eksekusi.