Tutorial TestNG: Apa itu, Anotasi & Kerangka di Selenium

Daftar Isi:

Anonim

Apa itu TestNG?

TestNG adalah kerangka pengujian otomatisasi di mana NG adalah singkatan dari "Generasi Berikutnya". TestNG terinspirasi dari JUnit yang menggunakan anotasi (@). TestNG mengatasi kelemahan JUnit dan dirancang untuk memudahkan pengujian ujung ke ujung.

Dengan menggunakan TestNG, Anda dapat membuat laporan yang tepat, dan Anda dapat dengan mudah mengetahui berapa banyak kasus pengujian yang berhasil, gagal, dan dilewati. Anda dapat menjalankan kasus uji 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 dalam metode keempat, sekarang Anda hanya ingin menjalankan metode keempat karena tiga metode pertama tetap berhasil dijalankan. Ini tidak mungkin tanpa menggunakan TestNG.
  • TestNG di Selenium menyediakan opsi, yaitu file testng-gagal.xml di folder test-output. Jika Anda ingin menjalankan hanya kasus uji gagal berarti Anda menjalankan file XML ini. Ini hanya akan menjalankan kasus uji yang gagal.

Selain konsep di atas, Anda akan belajar lebih banyak tentang TestNG, seperti apa Keuntungan dari TestNG, cara membuat metode pengujian menggunakan anotasi @test, cara mengubah kelas-kelas ini menjadi file suite pengujian dan mengeksekusi melalui gerhana serta dari baris perintah .

Dalam tutorial TestNG ini, Anda akan belajar

  • Mengapa Menggunakan TestNG dengan Selenium?
  • Keuntungan TestNG dibandingkan JUnit
  • Buat Kasus Uji Menggunakan Anotasi TestNG
  • Cara Membuat File Tes TestNG Baru
    • Pengkodean Contoh Kasus Uji TestNG Pertama kami
    • Menjalankan Tes
  • Memeriksa laporan yang dibuat oleh TestNG
  • Anotasi yang digunakan di TestNG
  • Beberapa Kasus Uji
  • Parameter
    • Beberapa Parameter
    • Ringkasan Anotasi TestNG

Mengapa Menggunakan TestNG dengan Selenium?

Tes Selenium default tidak menghasilkan format yang tepat untuk hasil tes. Menggunakan TestNG di Selenium, kami dapat menghasilkan hasil pengujian.

Sebagian besar pengguna Selenium menggunakan ini lebih dari Junit karena kelebihannya. Ada begitu banyak fitur TestNG, tetapi kami hanya akan fokus pada yang paling penting yang dapat kami gunakan di Selenium. Berikut adalah fitur utama Selenium TestNG:

  • Buat laporan dalam format yang tepat termasuk jumlah kasus pengujian yang dijalankan, jumlah kasus pengujian yang berhasil, jumlah kasus pengujian yang gagal, dan jumlah kasus pengujian yang dilewati.
  • Beberapa kasus uji dapat dikelompokkan lebih mudah dengan mengonversinya menjadi file testng.xml. Di mana Anda dapat membuat prioritas test case mana yang harus dijalankan terlebih dahulu.
  • Kasus uji yang sama dapat dijalankan beberapa kali tanpa loop hanya dengan menggunakan kata kunci yang disebut 'jumlah pemanggilan'.
  • Dengan menggunakan testng, Anda dapat menjalankan beberapa kasus pengujian di beberapa browser, yaitu pengujian lintas browser.
  • Kerangka kerja TestNG dapat dengan mudah diintegrasikan dengan alat-alat seperti TestNG Maven, Jenkins, dll.
  • Anotasi yang digunakan dalam pengujian sangat mudah dipahami misalnya: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver tidak memiliki mekanisme asli untuk menghasilkan laporan. TestNG dapat menghasilkan laporan dalam format yang dapat dibaca seperti yang ditunjukkan di bawah ini.
  • TestNG menyederhanakan cara pengujian diberi kode. Tidak diperlukan lagi metode utama statis dalam pengujian kami. Urutan tindakan diatur oleh anotasi yang mudah dipahami yang tidak memerlukan metode statis.
  • Pengecualian yang tidak tertangkap secara otomatis ditangani oleh TestNG tanpa menghentikan pengujian sebelum waktunya. Pengecualian ini dilaporkan sebagai langkah gagal dalam laporan.

Keuntungan TestNG dibandingkan JUnit

Ada tiga keunggulan utama TestNG dibandingkan JUnit:

  • Anotasi lebih mudah dipahami
  • Kasus uji dapat dikelompokkan dengan lebih mudah
  • Pengujian paralel dimungkinkan

Anotasi di TestNG adalah baris kode yang dapat mengontrol bagaimana metode di bawahnya akan dijalankan . Mereka selalu diawali dengan simbol @. Contoh TestNG yang sangat awal dan cepat adalah yang ditunjukkan di bawah ini.

Anotasi akan dibahas nanti di bagian bernama "Anotasi yang digunakan di TestNG," jadi tidak masalah jika Anda belum memahami Contoh TestNG di atas. Penting untuk diperhatikan untuk saat ini bahwa anotasi di TestNG lebih mudah untuk dikodekan dan dipahami daripada di JUnit.

Kemampuan untuk menjalankan pengujian secara paralel tersedia di TestNG tetapi tidak di JUnit, sehingga framework TestNG lebih disukai penguji yang menggunakan Selenium Grid.

Buat Kasus Uji Menggunakan Anotasi TestNG

Sekarang, kita akan belajar bagaimana membuat test case pertama kita menggunakan TestNG Annotations di Selenium:

Sebelum membuat kasus uji, pertama-tama kita harus menyiapkan Proyek TestNG baru di Eclipse dan menamainya sebagai "FirstTestNGProject".

Menyiapkan Proyek TestNG baru

Langkah 1: Klik File> New> Java Project

Langkah 2: Ketik "FirstTestNGProject" sebagai Nama Proyek lalu klik Berikutnya.

Langkah 3: Kami sekarang akan mulai mengimpor Perpustakaan TestNG ke proyek kami. Klik pada tab "Libraries", lalu "Add Library

… "

Langkah 4: Pada dialog Add Library, pilih "TestNG" dan klik Next.

Langkah 5: Klik Selesai.

Anda harus memperhatikan bahwa TestNG disertakan dalam daftar Perpustakaan.

Langkah 6: Sekarang kita akan menambahkan file JAR yang berisi API Selenium. File-file ini ditemukan di driver klien Java yang kami unduh dari http://docs.seleniumhq.org/download/ ketika kami menginstal Selenium dan Eclipse di bab-bab sebelumnya.

Kemudian, navigasikan ke tempat Anda meletakkan file Selenium JAR.

Setelah menambahkan JAR eksternal, layar Anda akan terlihat seperti ini.

Langkah 7: Klik Selesai dan verifikasi bahwa FirstTestNGProject kami terlihat di jendela Package Explorer Eclipse.

Cara Membuat File Tes TestNG Baru

Sekarang setelah kita selesai menyiapkan proyek kita dalam tutorial TestNG ini, mari kita buat file TestNG baru.

Langkah 1: Klik kanan pada folder paket "src", lalu pilih New> Other

Langkah 2: Klik pada folder TestNG dan pilih opsi "TestNG class". Klik Next.

Langkah 3: Ketik nilai yang ditunjukkan di bawah ini pada kotak masukan yang sesuai dan klik Selesai. Perhatikan bahwa kami telah menamai file Java kami sebagai "FirstTestNGFile".

Eclipse harus secara otomatis membuat template untuk file TestNG kami yang ditunjukkan di bawah ini.

Pengkodean Contoh Kasus Uji TestNG Pertama kami

Sekarang mari kita buat Test Case pertama kita yang akan memeriksa apakah homepage Mercury Tours sudah benar. Ketik kode Anda seperti yang ditunjukkan pada Contoh TestNG di bawah ini:

paket firsttestngpackage;import org.openqa.selenium. *;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pengemudi WebDriver publik;@Ujipublic void verifikasiHomepageTitle () {System.out.println ("meluncurkan browser firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = baru FirefoxDriver ();driver.get (baseUrl);String expectedTitle = "Selamat Datang: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);driver.close ();}}

Perhatikan hal-hal berikut ini.

  • TestNG tidak mengharuskan Anda memiliki metode main ().
  • Metode tidak harus statis.
  • Kami menggunakan anotasi @Test. @Test digunakan untuk memberi tahu bahwa metode di bawahnya adalah kasus uji . Dalam kasus ini, kami telah menyetel 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 uji (oleh karena itu, beberapa anotasi @Test) dalam satu file TestNG. Ini akan dibahas lebih detail nanti di bagian "Anotasi yang digunakan di TestNG".

Menjalankan Tes

Untuk menjalankan pengujian, cukup jalankan file di Eclipse seperti biasa. Eclipse akan memberikan dua keluaran - satu di jendela Konsol dan yang lainnya di jendela Hasil Tes.

Memeriksa laporan yang dibuat oleh TestNG

Jendela Konsol di Eclipse memberikan laporan berbasis teks dari hasil kasus uji kami sementara jendela Hasil Uji memberi kami laporan 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 (FirstTestNGProject) 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: Klik dua kali pada file index.html itu untuk membukanya dalam browser web bawaan Eclipse. Anda dapat menyegarkan halaman ini kapan saja setelah Anda menjalankan kembali pengujian hanya dengan menekan F5 seperti di browser web biasa.

Anotasi yang digunakan di TestNG

Di bagian sebelumnya, Anda telah diperkenalkan dengan anotasi @Test. Sekarang, kita akan mempelajari penjelasan lebih lanjut dan penggunaannya.

Beberapa Kasus Uji

Kita dapat menggunakan beberapa anotasi @Test dalam satu file TestNG. Secara default, metode yang dianotasi oleh @Test dijalankan menurut abjad. Lihat kode di bawah ini. Meskipun metode c_test, a_test, dan b_test tidak disusun menurut abjad dalam kode, mereka akan dieksekusi seperti itu.

Jalankan kode ini dan pada halaman index.html yang dihasilkan, klik "Tampilan kronologis".

Parameter

Jika Anda ingin metode dijalankan dalam urutan yang berbeda, gunakan parameter "priority". Parameter adalah kata kunci yang mengubah fungsi anotasi .

  • Parameter mengharuskan Anda untuk memberikan nilai padanya. Anda melakukannya. Ini dengan menempatkan di sebelahnya, lalu diikuti dengan nilainya.
  • Parameter diapit oleh sepasang tanda kurung yang ditempatkan tepat setelah anotasi seperti cuplikan kode yang ditunjukkan di bawah ini.

TestNG akan menjalankan anotasi @Test dengan nilai prioritas terendah hingga terbesar. Tidak perlu nilai prioritas Anda berurutan.

Laporan TestNG HTML akan mengonfirmasi bahwa metode tersebut dijalankan berdasarkan nilai prioritas naik.

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 dengan koma seperti yang ditunjukkan di bawah ini.

@Test (priority = 0, alwaysRun = true)

@BeforeTest dan @AfterTest

@Sebelumnya

metode di bawah anotasi ini akan dijalankan sebelum kasus uji pertama dalam file TestNG .

@Setelah

metode di bawah anotasi ini akan dijalankan setelah semua kasus uji di file TestNG dijalankan .

Perhatikan kode di bawah ini.

paket firsttestngpackage;import org.openqa.selenium. *;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pengemudi WebDriver publik;@Sebelumnyapublic void launchBrowser () {System.out.println ("meluncurkan browser firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = baru FirefoxDriver ();driver.get (baseUrl);}@Ujipublic void verifikasiHomepageTitle () {String expectedTitle = "Selamat Datang: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}@Setelahpublic void terminateBrowser () {driver.close ();}}

Dengan menerapkan logika yang disajikan oleh tabel dan kode di atas, kita dapat memprediksi bahwa urutan eksekusi metode adalah:

  • 1 st - launchBrowser ()
  • 2 nd - verifyHomepageTitle ()
  • 3 rd - terminateBrowser ()

Penempatan blok anotasi dapat dipertukarkan tanpa mempengaruhi urutan kronologis pelaksanaannya . Mari kita pahami dengan Contoh TestNG dan coba atur ulang blok anotasi sedemikian rupa sehingga kode Anda akan terlihat mirip dengan yang di bawah ini.

paket firsttestngpackage;import org.openqa.selenium. *;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pengemudi WebDriver publik;@AfterTT // campur adukpublic void terminateBrowser () {driver.close ();}@Before // campur adukpublic void launchBrowser () {System.out.println ("meluncurkan browser firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = baru FirefoxDriver ();driver.get (baseUrl);}@Test // Acakpublic void verifikasiHomepageTitle () {String expectedTitle = "Selamat Datang: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}}

Jalankan kode di atas dan perhatikan itu

@Beforehod dan @Afterhod

@Tokopedia

metode di bawah anotasi ini akan dijalankan sebelum setiap metode di setiap kasus uji .

@Afterhod

metode di bawah anotasi ini akan dijalankan setelah setiap metode di setiap kasus uji.

Di Mercury Tours, misalkan kita ingin memverifikasi judul halaman target dari dua link 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 ini menggambarkan bagaimana @BeforeMethod dan @AfterMethod digunakan untuk menjalankan skenario yang disebutkan di atas secara efisien.

paket firsttestngpackage;import org.openqa.selenium. *;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;@Ujipublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";pengemudi WebDriver publik;string publik diharapkan = null;public String aktual = null;@Sebelumnyapublic void launchBrowser () {System.out.println ("meluncurkan browser firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = baru FirefoxDriver ();driver.get (baseUrl);}@Tokopediapublic void verifikasiHomepageTitle () {String expectedTitle = "Selamat Datang: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}@Test (prioritas = 0)public void register () {driver.findElement (By.linkText ("DAFTAR")). klik ();diharapkan = "Daftar: Wisata Merkuri";aktual = driver.getTitle ();Assert.assertEquals (aktual, diharapkan);}@Test (prioritas = 1)dukungan kekosongan publik () {driver.findElement (By.linkText ("DUKUNGAN")). click ();diharapkan = "Dalam Pembangunan: Wisata Merkuri";aktual = driver.getTitle ();Assert.assertEquals (aktual, diharapkan);}@Afterhodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Beranda")). klik ();}@Setelahpublic void terminateBrowser () {driver.close ();}}

Setelah menjalankan pengujian ini, TestNG Anda harus melaporkan urutan berikut.

Sederhananya, @BeforeMethod harus berisi metode yang perlu Anda jalankan sebelum setiap kasus pengujian, sementara @AfterMethod harus berisi metode yang perlu Anda jalankan setelah setiap kasus pengujian.

Ringkasan Anotasi TestNG

@BeforeSuite : Metode beranotasi akan dijalankan sebelum semua pengujian dalam suite ini dijalankan.

@AfterSuite : Metode beranotasi akan dijalankan setelah semua pengujian dalam suite ini dijalankan.

@BeforeTest : Metode yang dianotasi akan dijalankan sebelum metode pengujian apa pun yang termasuk dalam kelas di dalam tag dijalankan.

@AfterTest : Metode yang dianotasi akan dijalankan setelah semua metode pengujian milik kelas di dalam tag telah dijalankan.

@BeforeGroups : Daftar grup yang akan dijalankan oleh metode konfigurasi ini sebelumnya. Metode ini dijamin akan berjalan segera sebelum metode pengujian pertama yang termasuk dalam salah satu grup ini dipanggil.

@AfterGroups : Daftar grup yang akan dijalankan metode konfigurasi ini setelahnya. Metode ini dijamin akan berjalan segera setelah metode pengujian terakhir yang termasuk dalam salah satu grup ini dipanggil.

@BeforeClass : Metode beranotasi akan dijalankan sebelum metode pengujian pertama di kelas saat ini dipanggil.

@AfterClass : Metode beranotasi akan dijalankan setelah semua metode pengujian di kelas saat ini dijalankan.

@BeforeMethod : Metode beranotasi akan dijalankan sebelum setiap metode pengujian.

@AfterMethod : Metode beranotasi akan dijalankan setelah setiap metode pengujian.

@Test : Metode beranotasi adalah bagian dari kasus uji

Kesimpulan

  • TestNG adalah framework pengujian yang mampu membuat pengujian Selenium lebih mudah dipahami dan menghasilkan laporan yang mudah dipahami.
  • Keuntungan utama TestNG dibandingkan JUnit adalah sebagai berikut.
    • Anotasi lebih mudah digunakan dan dipahami.
    • Kasus uji dapat dikelompokkan dengan lebih mudah.
    • TestNG memungkinkan kita membuat pengujian paralel.
  • Jendela Konsol di Eclipse menghasilkan hasil berbasis teks sedangkan jendela TestNG lebih berguna karena memberi kita keluaran grafis dari hasil pengujian ditambah detail bermakna lainnya seperti:
    • Waktu kerja setiap metode.
    • Urutan kronologis dimana metode dieksekusi
  • TestNG mampu menghasilkan laporan berbasis HTML.
  • Anotasi dapat menggunakan parameter seperti metode Java TestNG biasa.
  • TestNG Dataprovider adalah cara untuk meneruskan parameter ke dalam fungsi pengujian yang meneruskan nilai yang berbeda dalam kasus pengujian dalam satu eksekusi.