10 Praktik Terbaik untuk Menulis Tes Otomasi Selenium

Diterbitkan: 2023-04-26

Pengujian otomasi Selenium adalah bagian penting dari siklus hidup pengembangan perangkat lunak, membantu memastikan bahwa aplikasi berfungsi, andal, dan bebas bug. Untuk memaksimalkan pengujian otomatisasi Selenium, penting untuk mengikuti praktik terbaik yang memastikan kualitas dan efektivitas skrip pengujian Anda.

Praktik Terbaik untuk Menulis Tes Otomasi Selenium

1. Gunakan pola desain Page Object Model (POM).

Page Object Model (POM) adalah pola desain yang kuat di Selenium yang menyederhanakan proses pembuatan dan pemeliharaan pengujian otomatis. POM melibatkan pembuatan repositori objek untuk menyimpan semua elemen web dan membantu mengurangi duplikasi kode, membuat pengujian lebih mudah dipelihara.

Setiap halaman web aplikasi dianggap sebagai file kelas di POM. File kelas ini hanya berisi elemen halaman web yang sesuai, memungkinkan penguji untuk melakukan operasi di situs web yang diuji. Ini menghasilkan pemeliharaan test case yang lebih baik dan mengurangi kesalahan. Keuntungan lain dari POM adalah penggunaan kembali kode. Karena setiap layar bersifat independen dan memiliki file Java-nya sendiri, penguji dapat menggunakan kode pengujian untuk satu layar dan menggunakannya kembali dalam kasus pengujian lain, sehingga menghemat waktu dan tenaga.

Keterbacaan dan keandalan skrip juga ditingkatkan dengan POM. Setiap layar memiliki file Java-nya sendiri yang memungkinkan penguji dengan cepat mengidentifikasi tindakan yang dilakukan pada layar tertentu dengan menavigasi melalui file tersebut. Jika perubahan perlu dilakukan pada bagian kode tertentu, itu dapat dilakukan secara efisien tanpa memengaruhi file lain.

2. Gunakan metode tunggu alih-alih waktu tunggu hard-coding

Saat menulis pengujian otomasi Selenium, salah satu faktor utama yang perlu dipertimbangkan adalah waktu pengujian. Jika pengujian dijalankan terlalu cepat, mungkin tidak dapat berinteraksi dengan elemen web pada halaman sebelum dimuat. Di sisi lain, jika pengujian menunggu terlalu lama, ini dapat memperlambat waktu eksekusi rangkaian pengujian, menyebabkan penundaan dan pemborosan sumber daya.

Untuk mengatasi masalah ini, disarankan untuk menggunakan metode menunggu alih-alih mengkodekan waktu tunggu dalam pengujian Anda. Selenium menyediakan beberapa metode tunggu bawaan yang dapat digunakan untuk menunggu elemen halaman dimuat sebelum melakukan tindakan selanjutnya. Tiga metode tunggu paling umum yang disediakan oleh Selenium adalah Tunggu Implisit, Tunggu Eksplisit, dan Tunggu Lancar. Masing-masing metode ini memiliki fitur dan kasus penggunaan yang unik.

Tunggu Implisit: Metode Tunggu Implisit menginstruksikan driver web untuk menunggu sejumlah waktu tertentu untuk memuat elemen web sebelum melemparkan pengecualian. Metode tunggu ini diterapkan ke semua elemen web dalam skrip dan disetel sekali untuk seluruh sesi. Artinya, driver web akan menunggu waktu yang ditentukan sebelum berinteraksi dengan elemen web apa pun di halaman.

Menunggu implisit adalah pilihan yang baik ketika situs web memiliki waktu pemuatan yang konsisten untuk elemen webnya. Namun, ini mungkin tidak efektif jika situs web memiliki waktu pemuatan yang tidak konsisten, karena dapat menyebabkan penundaan yang tidak perlu.

Tunggu Eksplisit: Metode Tunggu Eksplisit memungkinkan driver web menunggu elemen web tertentu dimuat sebelum melakukan tindakan selanjutnya. Metode tunggu ini diterapkan pada elemen web tertentu dalam skrip, memungkinkan kontrol yang lebih terperinci atas waktu tunggu.

Tunggu Eksplisit berguna saat situs web memiliki waktu pemuatan yang tidak konsisten untuk elemen webnya. Dengan menggunakan Tunggu Eksplisit, penguji dapat menyetel waktu tunggu tertentu untuk elemen web tertentu, memastikan bahwa skrip tidak dilanjutkan hingga elemen tersebut dimuat.

Fluent Wait: Metode Fluent Wait mirip dengan Explicit Wait, tetapi memungkinkan penguji untuk menentukan waktu tunggu maksimum serta interval polling. Metode Fluent Wait akan menunggu waktu maksimum yang ditentukan, polling elemen web pada interval yang ditentukan. Metode tunggu ini berguna saat situs web memiliki waktu pemuatan yang tidak konsisten dan saat penguji memerlukan kontrol lebih besar atas waktu tunggu.

Menggunakan metode tunggu dalam pengujian otomatisasi Selenium dapat membantu menjadikan pengujian lebih andal dengan memastikan bahwa elemen web telah dimuat sebelum melakukan tindakan selanjutnya. Ini juga dapat membantu mengurangi waktu eksekusi keseluruhan rangkaian pengujian dengan menghindari penundaan yang tidak perlu. Dengan memilih metode tunggu yang sesuai untuk kasus penggunaan Anda, Anda dapat memastikan bahwa pengujian Anda dijalankan secara efisien dan efektif.

3. Gunakan nama metode tes deskriptif

Nama metode pengujian deskriptif merupakan aspek penting dalam menulis pengujian otomasi Selenium. Nama-nama ini memberikan pemahaman yang jelas dan ringkas tentang apa yang diuji oleh setiap pengujian, sehingga memudahkan pengembang dan penguji untuk memahami tujuan pengujian.

Menggunakan nama metode pengujian deskriptif sangat penting untuk memastikan bahwa pengujian dapat dibaca dan mudah dipelihara. Nama metode pengujian harus secara akurat menggambarkan apa yang dilakukan pengujian, termasuk data masukan dan hasil yang diharapkan. Ini membuatnya lebih mudah untuk mengidentifikasi tes mana yang gagal dan apa yang perlu diperbaiki.

Misalnya, pertimbangkan kasus uji yang memeriksa fungsionalitas masuk situs web. Alih-alih menamai metode pengujian "test1" atau "loginTest", disarankan untuk menggunakan nama deskriptif seperti "testLoginWithValidCredentials". Nama ini dengan jelas menunjukkan bahwa tes sedang memeriksa fungsionalitas login dengan kredensial yang valid.

4. Gunakan pernyataan yang bermakna

Pernyataan memainkan peran penting dalam pengujian otomasi Selenium dengan memverifikasi bahwa hasil pengujian yang diharapkan sesuai dengan hasil sebenarnya. Dengan kata lain, pernyataan digunakan untuk memvalidasi bahwa aplikasi yang diuji berfungsi seperti yang diharapkan. Saat menulis tes otomatisasi Selenium, penting untuk menggunakan pernyataan yang bermakna untuk membuat tes lebih bermakna dan dapat diandalkan. Dua pernyataan umum yang digunakan di Selenium adalah assertEquals dan assertTrue.

Pernyataan assertEquals membandingkan nilai yang diharapkan dari suatu pengujian dengan nilai sebenarnya yang dikembalikan oleh aplikasi. Misalnya, jika pengujian memeriksa bahwa judul halaman web sudah benar, pernyataan dapat ditulis sebagai assertEquals(“Expected Page Title”, driver.getTitle()). Penegasan ini akan membandingkan judul halaman yang diharapkan dengan judul halaman sebenarnya yang dikembalikan oleh driver, dan jika tidak sama, pengujian akan gagal.

Pernyataan assertTrue memverifikasi bahwa suatu kondisi benar. Penegasan ini dapat digunakan untuk memverifikasi keberadaan elemen web pada halaman atau untuk memeriksa apakah tindakan tertentu telah berhasil dilakukan. Misalnya, jika pengujian memeriksa apakah tombol pada halaman web diaktifkan, pernyataan dapat ditulis sebagai assertTrue(driver.findElement(By.id(“button-id”)).isEnabled()). Penegasan ini akan memeriksa apakah tombol diaktifkan, dan jika tidak, pengujian akan gagal.

Menggunakan pernyataan yang bermakna dalam pengujian otomasi Selenium sangat penting untuk memastikan bahwa pengujian tersebut memberikan hasil yang andal. Penegasan yang bermakna membantu mengidentifikasi masalah dan memastikan bahwa hasil yang diharapkan dari aplikasi konsisten dengan hasil yang sebenarnya.

5. Gunakan kerangka pengujian TestNG atau JUnit

Kerangka pengujian TestNG dan JUnit banyak digunakan di dunia pengujian otomatisasi Selenium. Kerangka kerja ini memungkinkan penguji membuat dan menjalankan pengujian otomatis yang memverifikasi fungsionalitas dan perilaku aplikasi perangkat lunak. TestNG menyediakan fitur tambahan melalui JUnit, seperti kemampuan untuk melakukan pengujian berbasis data, pengujian pengelompokan, parameterisasi, dan eksekusi pengujian paralel. Ini juga memiliki konsep rangkaian pengujian, yang memungkinkan penguji untuk mengelompokkan dan menjalankan beberapa kelas pengujian secara bersamaan.

JUnit lebih sederhana dibandingkan dengan TestNG dan berfokus pada pengujian unit. Ini menyediakan fitur seperti anotasi, pernyataan, dan pelari uji, yang digunakan untuk menulis dan menjalankan pengujian unit. Baik TestNG maupun JUnit mendukung perlengkapan pengujian atau metode penyetelan dan penghancuran yang dijalankan sebelum dan sesudah setiap metode pengujian, memastikan bahwa pengujian dijalankan secara terpisah.

6. Gunakan pengujian berbasis data

Use data-driven testing for Selenium Automation2

Pengujian berbasis data adalah teknik pengujian perangkat lunak di mana skenario pengujian yang sama dijalankan beberapa kali dengan kumpulan data pengujian yang berbeda. Pendekatan ini membantu memastikan bahwa aplikasi berfungsi dengan benar dengan berbagai input dan dapat membantu mengungkap bug atau cacat yang mungkin luput dari perhatian.

Dalam pengujian berbasis data, penguji membuat sekumpulan data pengujian, termasuk data valid dan tidak valid, yang akan digunakan untuk menguji fitur atau fungsi aplikasi tertentu. Data dapat disimpan dalam file atau database dan dapat diakses oleh skrip pengujian saat runtime. Skrip pengujian dirancang untuk menjalankan serangkaian langkah yang sama dengan input berbeda menggunakan kumpulan data pengujian. Keluaran dari setiap uji coba kemudian dibandingkan dengan hasil yang diharapkan, dan setiap perbedaan atau kesalahan dicatat sebagai cacat.

Pengujian berbasis data membantu meningkatkan cakupan pengujian, mengurangi waktu yang diperlukan untuk menulis dan menjalankan pengujian, dan mempermudah pemeliharaan skrip pengujian. Ini sangat berguna saat menguji aplikasi yang membutuhkan input data dalam jumlah besar atau saat menguji aplikasi yang sangat sensitif terhadap data input.

7. Gunakan kontrol versi untuk pengujian Anda

Kontrol versi adalah sistem yang melacak perubahan pada file dari waktu ke waktu, memungkinkan pengembang dan penguji untuk mengelola dan berkolaborasi pada kode dan file lainnya secara efektif. Dalam hal otomatisasi pengujian Selenium, kontrol versi menjadi penting untuk mengelola perubahan pada skrip pengujian dan melacak riwayat rangkaian pengujian.

Git adalah salah satu sistem kontrol versi yang paling populer, dan banyak digunakan dalam industri pengembangan perangkat lunak. Ini memungkinkan penguji membuat cabang untuk bekerja pada fitur pengujian baru atau perbaikan bug tanpa memengaruhi basis kode utama atau rangkaian pengujian. Setelah perubahan selesai, penguji dapat menggabungkan cabang mereka kembali ke basis kode utama, memastikan bahwa perubahan terintegrasi dan diuji sebelum dirilis.

Sistem kontrol versi seperti Git juga memungkinkan penguji untuk berkolaborasi secara efektif dalam proyek otomasi pengujian. Penguji dapat mengerjakan bagian yang berbeda dari rangkaian pengujian secara bersamaan, menggunakan cabang yang berbeda dan menggabungkan perubahannya ke dalam repositori pusat, menghindari konflik atau menimpa perubahan lainnya.

8. Jaga independensi pengujian Anda

Menjaga independensi pengujian adalah prinsip penting dalam otomatisasi pengujian. Pengujian independen memastikan bahwa setiap skenario pengujian dijalankan secara terpisah dan hasil dari satu pengujian tidak memengaruhi hasil pengujian lainnya. Ini membuatnya lebih mudah untuk men-debug dan memelihara rangkaian pengujian dan memastikan keandalan dan keakuratan hasil pengujian.

Ketika tes tidak independen, menjadi sulit untuk mengidentifikasi tes mana yang menyebabkan kegagalan. Kegagalan dapat disebabkan oleh kesalahan dalam pengujian sebelumnya yang memengaruhi lingkungan atau data pengujian. Hal ini dapat menyebabkan upaya debug yang tidak perlu dan peningkatan upaya pemeliharaan. Agar pengujian tetap independen, penguji harus memastikan bahwa setiap skenario pengujian berdiri sendiri dan tidak bergantung pada hasil pengujian lainnya.

Penguji juga harus membuat data pengujian secara dinamis, menggunakan metode penyiapan dan penghapusan, daripada mengandalkan data yang telah ditentukan sebelumnya yang dapat diubah oleh pengujian lainnya. Praktik penting lainnya adalah menghindari ketergantungan pada lingkungan pengujian, seperti sistem eksternal atau database. Penguji dapat menggunakan objek tiruan atau rintisan untuk mensimulasikan perilaku sistem eksternal, memastikan bahwa pengujian dijalankan secara konsisten dan independen dari lingkungan.

9. Gunakan komentar untuk menjelaskan pengujian Anda

Menggunakan komentar untuk menjelaskan pengujian adalah praktik yang baik dalam otomatisasi pengujian. Komentar adalah catatan yang ditambahkan ke kode yang menjelaskan apa yang dilakukan tes tertentu, mengapa itu ada, dan informasi relevan lainnya tentang tes tersebut. Dengan menggunakan komentar dalam pengujian, penguji dapat memastikan bahwa anggota tim lainnya dapat dengan mudah memahami tujuan pengujian, asumsi, dan hasil yang diharapkan. Ini sangat penting ketika anggota tim perlu mempertahankan atau memodifikasi skrip pengujian di masa mendatang.

Komentar dapat digunakan untuk menjelaskan alasan di balik kasus uji tertentu atau mengapa pendekatan tertentu diambil. Mereka juga dapat digunakan untuk menyediakan konteks untuk data pengujian yang digunakan dalam pengujian atau untuk menyoroti dependensi atau persyaratan pengujian tertentu. Penguji dapat menggunakan gaya komentar yang konsisten yang memberikan struktur dan keterbacaan pada pengujian. Misalnya, penguji dapat menggunakan komentar tajuk untuk memberikan ikhtisar skenario pengujian, diikuti dengan komentar yang menjelaskan langkah spesifik yang diambil dalam pengujian.

10. Gunakan alat kualitas kode

Alat kualitas kode sangat penting dalam otomatisasi pengujian untuk memastikan bahwa skrip pengujian dapat dipelihara, dibaca, dan mematuhi standar pengkodean. SonarQube dan CodeClimate adalah dua alat kualitas kode populer yang dapat digunakan untuk menganalisis dan mengevaluasi kualitas kode, termasuk skrip pengujian.

SonarQube adalah alat berbasis web yang menganalisis kualitas kode dan memberikan laporan tentang masalah seperti bug kode dan kerentanan. Ini juga memberikan informasi tentang cakupan dan duplikasi kode, yang memungkinkan penguji untuk mengidentifikasi area rangkaian pengujian yang memerlukan peningkatan.

CodeClimate adalah alat lain yang memberikan wawasan tentang kualitas dan pemeliharaan kode. Ini menganalisis gaya kode, kompleksitas, dan pemeliharaan dan memberikan umpan balik untuk meningkatkan kualitas kode. CodeClimate juga terintegrasi dengan sistem kontrol versi seperti Git, membuatnya lebih mudah untuk melacak perubahan dan memantau dampaknya terhadap kualitas kode.

Kesimpulan

Mengikuti praktik terbaik untuk menulis pengujian otomatisasi Selenium sangat penting untuk memastikan kualitas, keandalan, dan efektivitas rangkaian pengujian Anda. Dengan menerapkan praktik yang dibahas di atas, penguji dapat membuat skrip pengujian yang dapat dipelihara, digunakan kembali, dan mudah dipahami yang memberikan umpan balik yang akurat dan berharga tentang fungsionalitas aplikasi.

LambdaTest memahami pentingnya pengujian otomatisasi Selenium dan menyediakan platform pengujian berbasis cloud yang memungkinkan penguji menjalankan pengujian otomatisasi Selenium pada infrastruktur yang dapat diskalakan, aman, dan andal. LambdaTest menawarkan berbagai fitur, termasuk pengujian lintas-browser, tangkapan layar otomatis, dan alat debug, membuatnya lebih mudah untuk membuat dan menjalankan pengujian otomatisasi Selenium berkualitas tinggi.