Basic Steps Selenium Test — Part II

Wira Putrawan Pakpahan
Tunaiku Tech
Published in
4 min readJun 22, 2020

Artikel ini akan menjelaskan bagaimana membuat modular code dengan Selenium.

Photo by Lindsay Henwood on Unsplash

Setelah sebelumnya dijelaskan langkah-langkah dasar memulai pengujian dengan Selenium pada artikel Basic Steps Selenium Test - Part- I, pada artikel ini akan dibahas konsep modular code dan implementasinya pada Selenium.

Modular code adalah suatu teknik pemrograman di mana program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang independen yang memiliki fungsi spesifik.

Konsep modular code bisa dilihat pada gambar berikut:

Functional Flowchart

Keunggulan dari modular code adalah:

  • Mengurangi kompleksitas. Modular code merancang dan menulis kode untuk fungsi kecil sehingga tidak mempengaruhi keseluruhan program.
  • Mengurangi duplikasi kode dan memungkinkan penggunaan kembali pada kode tersebut (reusable). Fungsi yang ditulis dapat dipanggil dari berbagai bagian kode program sesuai kebutuhan. Dengan cara ini, kita dapat menguji fungsionalitas tersebut secara menyeluruh dan jika diperlukan perbaikan atau perubahan di masa mendatang, dapat dilakukan dalam satu fungsi saja.
  • Meningkatkan kolaborasi tim. Hal ini memudahkan anggota tim untuk membagi pekerjaan di mana setiap developer bekerja pada modul terpisah.
  • Lebih mudah untuk diuji. Modul dapat diuji secara independen dan paralel oleh penguji yang berbeda sehingga pengujian dapat dilakukan lebih cepat.

Nah pada artikel sebelumnya kita sudah berhasil membuat simple automation test menggunakan Selenium dengan chromedriver yang berinteraksi langsung dengan Chrome browser. Bagaimana jika kita menjalankannya pada browser lain seperti Firefox, Safari, Opera dan lainnya?

Mungkin ada yang berpikir bahwa kita buat kelas baru, atau mungkin ada juga yang berpikir dengan mengganti settingan drivernya dan mengarahkannya ke path browser driver yang digunakan. Cara tersebut tidak salah dan bisa menjadi solusi. Tetapi, jika diimplementasikan maka program kita akan cukup besar, kemudian redundant. Oleh karena itu, kita perlu mengimplementasikan konsep modular code dimana program dibuat menjadi lebih kecil dan tentunya reusable. Reusable disini maksudnya adalah, fungsi dapat digunakan kembali oleh program atau fungsi lain sehingga tidak terjadi redundansi.

Jika diperhatikan kembali potongan code pada gist yang dibuat sebelumnya di Part-I, keseluruhan program berada dalam satu fungsi main sehingga terlihat lebih besar.

https://gist.github.com/wira11/874bbed67e6ace523d87d3a1e66ee3ca

Untuk mengubahnya menjadi modular, hal yang perlu dilakukan adalah dengan membagi fungsi-fungsi diatas menjadi program yang independen dan memiliki fungsi spesifik. Contohnya bisa dilihat pada potongan gist dibawah ini.

https://gist.github.com/wira11/3e83ffa64477e0cde253e24a890b4e57

Pada gist tersebut, dapat dilihat bahwa ada tiga buah program independen yang memiliki fungsi spesifik. Kemudian pada fungsi main cukup memanggil nama fungsi tersebut.

Jika dilihat detail kedalam code program, ketiga fungsi tersebut antara lain:

  1. Fungsi setBrowser();
public void setBrowser(String browser) {
this.browser=browser;
}

Fungsi diatas bertujuan untuk mengatur browser apa yang akan digunakan saat menjalankan program.

2. Fungsi setBrowserConfig();

public void setBrowserConfig() {   
String projectLocation = System.getProperty("user.dir");
if(browser.contains("Chrome")) {
System.setProperty("webdriver.chrome.driver",
projectLocation+"\\lib\\driver\\chromedriver.exe");

driver = new ChromeDriver();
}
if(browser.contains("Firefox")) {
System.setProperty("webdriver.gecko.driver",
projectLocation+"\\lib\\driver\\geckodriver.exe");
driver = new FirefoxDriver(); } }

Fungsi diatas bertujuan untuk melakukan konfigurasi terhadap browser apa yang akan digunakan. Seperti yang terlihat pada code diatas, ada 2 browser yang dikonfigurasi yaitu Chrome dan Firefox, sehingga jika ingin menjalankan program pada browser tertentu, cukup menggantinya pada fungsi pertama yaitu setBrowser().

3. Fungsi verifyTitle();

public void verifyTitle() 
{
driver.get("https://opensource-demo.orangehrmlive.com/");
String expectedTitle = "OrangeHRM";
String actualTitle = "";

actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
System.out.println("Assert passed");
}

Fungsi terakhir adalah fungsi untuk menjalankan program pengujian. Jadi pengujian yang dilakukan cukup sederhana, yaitu dengan memvalidasi apakah browser title yang ditampilkan sesuai dengan browser title yang diharapkan. Dalam hal ini, jika dibuat Assert sederhana untuk mengecek, jika:

expectedTitle=actualTitle

Maka akan dicetak sebuah string Assert Passed, yang menandakan program berhasil dijalankan dan tidak ada bugs.

Tetapi jika:

expectedTitle!=actualTitle

Maka akan terjadi error dan program tidak berhasil dijalankan dalam arti lain ditemukan bugs.

Hal ini didefinisikan sebagai bugs, karena hal paling sederhana mengetahui apakah itu bugs atau bukan adalah dengan membandingkan hasil yang diinginkan dengan hasil aslinya.

Pada konsep modular code ini, dibuat sebuah objek bernama test sehingga pemanggilannya pada fungsi main akan seperti berikut:

public static void main(String[] args) { 
SeleniumTestingModular test = new SeleniumTestingModular();
test.setBrowser("Firefox");
test.setBrowserConfig();
test.verifyTitle();
}

Jadi, begitulah cara mengimplementasikan modular code atau yang biasa disebut modular programming pada Selenium dengan menggunakan bahasa pemograman java.

Semoga artikel ini dapat membantu pembaca dalam memahami pengujian menggunakan Selenium.

Salam hangat, 😎

“Setting goals is the first step in turning the invisible into the visible.”

-Tony Robbins

--

--