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...

Memasang Android 4.4 KitKat di Samsung Galaxy W (Wonder) GT-I8150

Membuat backup Singkronisasikan handphone (contact, dll) Saya membuat backup SMS dengan SMS To Text, dan riwayat panggilan dengan Call Logs Backup and Restore Download Download Android SDK Tools Windows: http://dl.google.com/android/installer_r22.3-windows.exe Linux: http://dl.google.com/android/android-sdk_r22.3-linux.tgz Android SDK Tools juga terdapat dalam pake Android SDK Windows 32 bit: http://dl.google.com/android/adt/adt-bundle-windows-x86-20131030.zip Linux 32 bit: http://dl.google.com/android/adt/adt-bundle-linux-x86-20131030.zip Download ClockworkMod (CWM) Recovery Versi minimal untuk memasang CM 11 adalah versi 6.0.4.4. Jika menggunakan versi yang dibawah/sebelum itu, akan muncul pesan kesalahan "set_metadata_recursive: some changes failed" pada saat memasang CM nantinya. Download versi versi 6.0.4.5 di http://goo.im/devs/arco/ancora/cwm/recovery-clockwork-6.0.4.5-ancora.zip Download CyanogenMod (CM) 11 http://goo.im/devs/arco/ancor...

Promo Konsultasi Tugas Kewirausahaan

Konsultasi/ Mentoring Penyelesaian Tugas Kewirausahaan (Hanya menyediakan jasa konsultasi/ mentoring BUKAN jasa untuk membuatkan) Murah Biaya: Rp 1.000 / orang + snack / pertemuan Persyaratan: Masing-masing peserta menggunakan komputer/ laptop yang terhubung dengan internet Tempat bebas, waktu fleksibel Telpon : Tri 08984209407 , Simpati 081268432208 E-mail : indraginanjar@gmail.com indraginanjar.fb@facebook.com Facebook : http://www.facebook.com/indraginanjar.fb Google+ : https://plus.google.com/113794966594253699817 Atau... kasih komentar di bawah ini. Penawaran terbatas, hanya sampai Sabtu, 24 Februari 2013 Buruaaan! . . . terlambat = Gejala tugas ga selesai