Langsung ke konten utama

Rekomendasi Untuk Mempersingkat Waktu Eksekusi Katalon Web Test

Latar Belakang

Permasalahan

Salah satu kriteria test yang baik adalah memiliki coverage yang baik.

Tetapi lamanya waktu eksekusi seringkali jadi salah satu alasan untuk men-take out case-case yang ada agar test menjadi layak untuk ditunggu eksekusinya dan layak untuk dieksekusi sesering kebutuhan yang men-trigger-nya.

Untuk itu diperlukan langkah-langkah untuk mempersingkat waktu tunggu test semaksimal mungkin tanpa harus mengeluarkan case-case yang telah disiapkan sebelumnya.

Designed by Freepik


Lingkungan Eksekusi Tes

Pada tulisan ini diasumsikan test dieksekusi pada lingkungan CI/CD yang:

1. menggunakan commandline katalonc dari KRE (Katalon Runtime Engine).

2. Tiap job pipeline CI/CD bisa mengeksekusi beberapa test suite yang berbeda secara berurutan

Rekomendasi

Kesepakatan

Sepakati dengan user, batas waktu test maksimum

Batas waktu test perlu disepakati agar test bisa diakhiri dengan kesimpulan FAILED, jika melebihi batas waktu yang disepakati

Sepakati dengan user, batas waktu pergantian halaman maksimum

Tentukan nilai timeout sesuai kesepakatan dalam menemukan object test

Browser

Gunakan headless browser

Headless browser hampir selalu jauh lebih cepat dari pada browser biasa, perbedaan ini lebih signifikan terlihat jika membandingan antara browser Chrome vs Chrome (headless).

Peringatan:

Handling alert pada browser biasa tidak berlaku pada headless browser.

Sesedikit mungkin browser

Setiap browser yang digunakan memakan waktu untuk mempersiapkan/membukanya, karena itu:

1. Kurangi operasi membuka dan menutup browser

2. Kurangi jumlah test suite yang dieksekusi, termasuk juga jika menggunakan test suite collection, bedanya jika menggunakan test suite collection, seluruh browser yang akan digunakan diinisiasi sekaligus diawal test suite collection.

License

Gunakan offline license

Proses aktivasi Katalon secara online berjalan cukup lambat 1-2 menit, penggunaan offline license bisa mempersingkat proses ini menjadi beberapa detik saja.

Kurangi operasi aktivasi plugin

Proses aktivasi plugin Katalon berbeda dengan aktivasi Katalon yang bisa menggunakan offline license, jadi plugin akan diaktivasi secara online ditiap eksekusinya.

Hal-hal yang bisa mengurangi waktu aktivasi plugin:

1. Kurangi jumlah test suite yang dieksekusi, karena plugin diaktivasi diawal ekseksui setiap test suite.

2. Gunakan Test suite collection untuk mengurangi jumlah eksekusi aktivasi plugin, karena test suite collection hanya melakukan proses aktivasi plugin sekali diawal eksekusi collection

3. Gunakan local plugin, akan tetapi ini meningkatkan resiko file jar plugin masih di-lock oleh java meskipun testing sudah selesai.

Matikan online integration

Secara default Katalon menyalakan fitur integrasi dengan layanan online, seperti Azure, TestOps dan Test Cloud-nya. Yang seringkali fitur ini tidak diperlukan atau malah bisa menjadi issue tersendiri.

Yang jelas proses integrasi online ini memakan waktu, yang menambah total waktu menunggu hasil test. Jadi, jika dirasa tidak diperlukan fitur-fitur online integration ini sebaikanya dimatikan saja.

Script

Set angka timeout, jangan gunakan 0

0 adalah angka yang invalid sebagai angkat timeout, Katalon akan mengganti angka 0 dengan angka default dari timeout project. Akan tetapi sepertinya mekanisme Katalon dalam meng-handle angka 0 ini memperlambat eksekusi test.

Hindari delay() gunakan wait...()

delay() berarti proses script katalon berhenti tepat selama waktu yang diset oleh delay(), tetapi seringkali object yang ditunggu bisa muncul lebih cepat dari waktu tersebut.

Sebagai gantinya lebih baik mengganti penggunaan delay() dengan wait...() yang akan secara berkala menguji apakah kondisi yang ditunggu sudah terpenuhi atau belum, jika sudah proses script akan langsung dilanjutkan.

Peringatan:

Pada halaman yang memakan resource CPU sangat besar, penggunaan wait...() bisa menyebabkan crash pada browser.

Hindari stuck karena endless loop

Jika menggunakan while, selalu gunakan limit/counter untuk membatasi jumlah perulangan yang mungkin dilakukan. Saat menjalankan test sangat mungkin terjadi hal yang tak terduga, berasumsi while akan terhenti dengan kondisi yang didefiniskan bisa berakibat eksekusi test yang tidak memiliki akhir.

Tingkatkan parallelism

Optimasi jalannya test ada batasnya, seringkali teknik optimasi yang paling mudah adalah membaginya menjadi beberapa test yang berjalan secara bersamaan, sehingga waktu tunggu untuk mendapatkan hasilnya bisa jauh lebih singkat.

Independent & Repeateable test

Untuk menciptakan test yang independen/isolated salah satu elemen pentingnya ada kendali atas test data. Karena itu terkait data katalon script/pipeline job perlu untuk:

    i. Data preparation operation

    ii. Data cleanup operation

    iii. Data driven 

Selain test data, penggunaan service mock juga berpengaruh signifikan dalam meningkatkan independensi dan repeatability test tersebut

Scope test case yang kecil

Test case yang panjang selain sulit untuk dipersiapkan dan juga sulit untuk dipecah menjadi proses-proses yang dieksekusi secara paralel/bersamaan.

Hindari testing secara End To End (E2E), karena E2E testing mengharuskan testing berjalan secara sequential/berurutan.

E2E testing diperlukan sebagai teknik proofing/pembuktian bahwa target test sudah bekerja dengan benar, akan tetapi sifatnya yang sequential membuatnya tidak bisa dioptimasi menjadi proses yang paralel.

Gunakan test suite collection, gunakan parallel execution

Test suite collection memungkinkan untuk menjalankan beberapa test suite untuk dijalankan secara paralel pada browser yang berbeda-beda.

Peringatan: 

Pastikan jumlah test paralel yang dieksekusi tidak sampai melebihi kemampuan sistem untuk beroperasi secara normal, karena justru akan memperlambat jalannya test.

Pecah project jika waktu membuka project > ... second

Menggunakan 1 test project besar seringkali terasa memudahkan dalam meng-handle banyak hal. Sehingga prinsip separation of concern seringkali terasa memberatkan.

Akan tetapi jika proses membuka project sudah dirasa terlalu lama, sebaiknya segera dipisah atau minimal tidak ditambah lagi isinya.

Jika ditambahkan terus waktu membuka project akan terus menanjak secara signifikan dan sangat mungkin akan tiba dititik project tersebut tidak lagi bisa dibuka.

Object locator

Prioritaskan menggunakan attribute id atau name

Locator lebih mudah menemukan object yang unique pada 1 halaman, yang dipastikan unique pada 1 halaman (jika halaman tersebut disusun dengan benar/disiplin) adalah atribut id. Object lain bisa dicari relative terhadap object tersebut dengan mudah. Atribut name juga seringkali unique pada 1 halaman meskipun tidak harus seperti ini, sehingga bisa menjadi kandidat jika tidak ada id yang bisa digunakan.

Absolute path sebagai alternatif

Absolute path sulit untuk di-maintain, dan juga akan menjadi yang paling cepat menjadi obsolete atau tidak berlaku lagi jika terjadi perubahan pada halaman web yang dites. Akan tetapi jika relative path yang bisa digunakan dinilai berjalan terlalu lambat, absolute path selalu bisa menjadi alternatif.

Kurangi jumlah login/logout

Test case yang kecil seringkali menjadikan perlunya login secara logout berulang atas nama test independency:

1. Pastikan kembali test independency sungguh bergantung proses kembali ke landing page dan login kembali, seringkali cukup dengan memulai proses dari halaman home user (setelah login), atau malah cukup dengan langsung menggunakan navigateToUrl()

2. Simpan cookies hasil login, dan restore untuk pada tiap test yang membutuhkan akses user setelah login

Tidak Terbukti Mempercepat

Penggunaan locator CSS

Beberapa tulisan menyatakan parser CSS berkembang dengan lebih baik dari pada parser XPath, sehingga lebih teroptimasi dari pada XPath.

Tetapi pada beberapa hasil percobaan tidak terlihat hasil yang sejalan dengan pernyataan tersebut.






Komentar

Postingan populer dari blog ini

Contoh Pemprograman List, Animasi, dan Suara dengan Visual Basic - VB6

Sebenarnya saya agak malu nge- posting ini, karena low quality (✗_✗) banget. Tapi karena saya melihat ada beberapa teman yang kesulitan dalam mengerjakan tugas pemprograman Visual Basic (VB6) yang seperti ini, maka saya tebel-tebelin muka untuk posting disini sebagai contoh, siapa tahu bisa berguna. Tampilan Program Pemilihan objek dengan menggunakan list Pemilihan objek dengan meng-klik gambar binatang Latar Belakang Pembuatan Aplikasi ini dibuat sebagai pelaksaan dari tugas yang diberikan pada matakuliah Bahasa Pemprograman Visual 1 (Visual Basic 6) yang diajar oleh Bapak H. M. Amrin Lubis, Ir, M.Sc untuk mendemonstrasikan penggunaan List , Animasi dan Suara . Untuk lebih jelasnya, berikut ini adalah pernyataan tugas tersebut: Wajib: Buat sebuah daftar nama-nama hewan dalam list atau combo minimal 10 nama hewan. Ketik di- click salah satu nama hewan tersebut maka tampil gambarnya. Misal: di-klik kelinci tampil nama kelinci dan bahasa inggrisnya. Anjuran

Lirik lagu Keong Racun beserta terjemahannya inggris-nya (english translation)

Baca-baca komentar orang-orang bule tentang video Keong Racun-nya Sinta dan Jojo yang sempat jadi TT (Trending Topic) di Twitter selama beberapa hari kemarin, jadi pengen ketawa-ketawa sendiri (tapi ga jadi takut disangka gila). Ternyata rata-rata mereka ga ngerti apa istimewanya tu video. Menurut saya salah satu yang membuat video-nya menarik ya lagunya (disamping lipsinger-nya tentunya, terutama "Sinta", chow cwiiiit). Supaya lagunya lebih mudah dimengerti dan karena lagi kurang kerjaan ya saya buatlah terjemahan lagunya ke bahasa inggris dengan bahasa inggris versi saya (maksudnya versi pas-pasan cenderung kurang). Meskipun belom bener 100%, tapi yah lumayanlah dari pada ga ada. Keong Racun Penyanyi asli: Lissa Pencipta lagu: Abuy (Buy Akur) :Reff: Dasar kau keong racun Baru kenal eh ngajak tidur Ngomong nggak sopan santun Kau anggap aku ayam kampung Kau rayu diriku Kau goda diriku Kau colek diriku Hei ku takut sekali tanpa basa basi kamu ngajak happy

Menjalankan Aplikasi Desktop Tanpa Window Manager di Ubuntu Linux

Ada saat dimana kita ingin menjalankan aplikasi tertentu, misalnya game ! tanpa harus membuang sumber daya prosesor dan  memory untuk mendukung window manager seperti gnome , KDE , dan lainnya. Hal ini bisa dilakukan dengan menambah session yang merujuk ke applikasi tersebut untuk dikenali oleh display / login manager seperti lightdm atau gdm . Berikut ini akan disampaikan langkah-langkahnya di command line agar lebih mudah diikuti. Masuk ke command line dengan mengklik " terminal " di menu daftar aplikasi atau dengan menekan tombol ctrl+alt+F1 . Jika menggunakan cara kedua masukkan username dan password terlebih dahulu. Setelah selesai mengikuti langkah-langkah disini, ketik exit untuk logout dari sana, kemudian tekan ctrl+alt+F7 untuk kembali ke tampilan desktop . Langkah-langkahnya adalah: pindah ke direktori /usr/share/xsessions dengan mengetik: cd /usr/share/xsessions/ coba kita lihat isi direktory tersebut dengan mengetik: ls ak