[WORK] Tools untuk Pengujian Software

Sepanjang pengalaman saya melakukan Software Testing, saya berkenalan dengan cukup banyak Testing Tools yang bisa digunakan untuk berbagai kebutuhan.  Kadang-kadang, ketika menguji sebuah sistem, ada bagian-bagian yang sulit dilakukan secara manual. Misalnya performance / load testing yang membutuhkan ribuan parallel hit dalam jangka waktu tertentu. Disitulah tools-tools testing ini bisa mempermudah hidup seorang software tester.

Nah, dalam blogpost kali ini, saya akan merangkum beberapa tools yang pernah saya gunakan dalam melakukan testing. Siapa tahu ada yang butuh pencerahan mengenai hal ini. Sekalian juga, biar saya nggak lupa dengan ilmu-ilmu yang sudah didapat selama menjadi software tester.

So, Here’s the list:

AUTOMATION TESTING TOOLS

1. Selenium Webdriver
Ini adalah website test automation framework yang menyediakan library-library yang memungkinkan kita melakukan interaksi dengan web elements secara otomatis. Untuk bisa berfungsi dengan baik, selenium webdriver membutuhkan browser driver semisal chromedriver, mozilla driver, atau phantomjs (yang harus didownload terpisah).

Beberapa poin plus dari Selenium Webdriver adalah tester bisa membuat test suite from the scratch dengan fleksibilitas yang oke. Ini bagus kalau memang web yang mau ditest elemennya kompleks dan test script-nya butuh dikelola. Selenium Webdriver juga bisa digunakan dalam berbagai pilihan bahasa pemrograman, misalnya Java, C#, Ruby, Python, atau Javascript. Beberapa advanced framework seperti TestNG juga sudah terintegrasi dengan Selenium sehingga dari sisi support cukup bagus.

Kekurangannya, Selenium webdriver belum memiliki fungsi reporting tersendiri sehingga harus menggunakan bantuan framework lain untuk bisa meng-generate hasil test dan menampilkannya dalam bentuk yang lebih informatif (misal: nosetest untuk python, atau TestNG untuk java). Ia juga lebih sulit dipahami oleh orang awam–karena nature-nya yang membutuhkan coding.

2. Selenium IDE
Kalau ini bentuknya adalah extension/plugins di browser yang kegunaannya untuk merekam, menyimpan, dan memutar kembali scenario testing di web browser. Gampangnya, kita tinggal install, rekam, lakukan test scenario, stop, save. Nanti Selenium IDE bisa memutar kembali scenario yang sudah dilakukan dan meng-export test script ke berbagai format seperti HTML, ruby script, dll. Cocok untuk testing-testing kecil/sederhana.

Meskipun lebih mudah penggunaannya, Selenium IDE tidak se-fleksibel Selenium Webdriver dari segi interaksinya. Meskipun script-nya bisa dieksport, tetap harus ada penyesuaian kalau mau dijalankan dengan Selenium Webdriver.

3. Ghost Inspector
Saya belum sempat eksplor lebih jauh tentang cara penggunaan lengkapnya, tapi cukup amazed waktu mendengar perihal tools ini di sharing session oleh teman sesama tester. Tools ini adalah Automated UI testing yang konsepnya mirip seperti Selenium Webdriver, tapi lebih user-friendly dan mudah digunakan untuk orang awam. Dia bisa digunakan untuk locating element, melakukan assertion, validasi, pokoknya persis seperti Selenium Webdriver tapi ada GUI-nya yang lumayan intuitif.

Beberapa fitur yg keren dari tools ini adalah dia bisa menyimpan screenshot dari test yang sedang dijalankan, dan ada fitur untuk comparing screenshot otomatis untuk melihat apakah ada perbedaan signifikan dari test-test sebelumnya dari segi UI. Kita juga bisa mengeset berapa persen perbedaan yang bisa ditolerir sebelum test dinyatakan failed. Gaul abis kan? Selain itu, dia juga punya fitur scheduling, result monitoring, dan notifikasi ke third party application seperti e-mail/slack.

Tapi, test case yang bisa dijalankan dari Ghost Inspector versi gratisan ini kalau nggak salah cuma 100an test case/bulan. Lebih dari itu bayar. Untuk sistem yang lingkupnya kecil dan tidak terlalu kompleks, Ghost Inspector bisa jadi solusi oke.

4. AutoIT
Nah, kalau ini adalah automation tools untuk Windows GUI. Dulu saya sempat menggunakannya sebentar untuk interaksi antara browser dan windows (seperti saat upload picture). Script AutoIT bisa digunakan bersama dengan Selenium. Ini bisa diterapkan kalau automation test-nya dijalankan di komputer berbasis Windows. Tapi tidak bisa digunakan kalau test scriptnya dijalankan di server yang tidak menggunakan windows / tidak ada komponen UI-nya.

API TESTING TOOLS

1. Postman
Kadang-kadang, ada kalanya saya melakukan API/webservice testing, atau sekedar melakukan HTTP request dengan method GET/POST dengan banyak parameter untuk mencapai suatu tujuan. Walaupun beberapa method bisa dilakukan di browser (seperti GET), kadang-kadang mata suka siwer kalau parameternya udah kebanyakan. Postman  adalah tools favorit saya. Instalasinya mudah (karena bentuknya chrome app), cepat, gaperlu login-login, UI nya pun intuitif dan user-friendly.

Selain itu, saya suka menggunakan Postman ini karena kita bisa mengelompokkan beberapa API dalam satu wadah (collection) dengan mudah. Mirip seperti foldering. Itu sangat memudahkan kalau ada testing yang butuh nembak sekelompok API berbeda. Response-nya pun bisa dilihat dalam berbagai format (HTTP, Json, dll). Postman juga punya fitur share dan import API. Jadi kalo orang lain mau pakai settingan API yang sama ama kita, bisa tinggal import aja settingan API yang kita share.

Kekurangan tools ini cuman satu. Fitur scheduled test-nya berbayar T_T.

2. Runscope
Sebetulnya yang ini nggak beda jauh sama Postman. Apa yang bisa dilakukan di postman, bisa dilakukan di runscope, dengan tambahan: Runscope bisa melakukan scheduled test (secara gratis tentunya). Yang artinya, kita nggak perlu jalanin manual itu test script satu-satu. Runscope sepertinya lebih dikhususkan untuk collaborative work, bisa integrasi ke berbagai monitoring /CI tools seperti Datadog / Jenkins, bisa ngatur shared environment biar bisa di-reuse di banyak peoject. Dia juga bisa digabungin penggunaannya sama Ghost Inspector untuk melakukan API + UI testing. Tapi seperti halnya Ghost Inspector, versi gratisannya cuma bisa menjalankan test script dalam jumlah terbatas per bulannya. Padahal fiturnya oks banget kalo menurut saya.

Cuman emang langkah yang dibutuhkan lebih kompleks dari Postman. Harus sign-up dan login dulu, trus lebih less-intuitive (but more customable) dibanding Postman.

LOAD / PERFORMANCE TESTING TOOLS

1. Apache JMeter
Tools ini biasa saya gunakan kalau lagi harus melakukan load/performance testing (walaupun jarang). JMeter bersifat portable dan tentunya open source (yay), dengan kapabilitas yang mumpuni untuk sebuah open source software. Kita bisa menjalankan banyak thread (yang didalamnya terdiri dari berbagai skenario, mirip dengan apa yang bisa dilakukan Selenium IDE), memanggil berbagai API, berinteraksi dengan database, melakukan monitoring kekuatan server, mencatat hasil testing berbagai format, dalam waktu bersamaan. Saking banyaknya fitur yang ada, saya sampe nggak hapal kalau nggak benar-benar dicoba satu-satu.

Karena memang ditujukan untuk load/performance test, JMeter bisa melakukan ribuan, bahkan puluhan ribu concurrent action dalam hitungan detik untuk menguji batas ketahanan sebuah server ataupun melihat respons server di tingkat load tertentu. Tools ini sangat powerful, dan kalau nggak hati-hati berpotensi untuk disalahgunakan.

2. Siege
Lightweight HTTP load testing tools yang dijalankan via command line. Untuk load test yang butuh cepat dan nggak macem-macem, siege bisa jadi alternatif yang oke. Dia ditulis dalam GNU/Linux sehingga paling optimal digunakan di platform selain Windows. Saya belum menemukan masalah sih ketika menggunakan siege, tapi menurut penuturan teman saya yang sudah sering pakai (di windows), kadang-kadang result-nya suka kurang akurat.

ADDITIONAL TOOLS

1. Pentaho**
**Note: Ini bukan testing tools. Tapi Business Intelligence tools–yang sempat saya eksplor penggunaannya untuk API testing. Ide awalnya dari teman saya, tapi terus saya penasaran juga. Haha. Hasilnya lumayan, bisa baca file excel, membandingkan antara expected result dan actual result-nya, tapi harus banyak diakalin dengan step-step tambahan yang butuh nulis manual logic. Di Pentaho, kita bisa menambahkan step untuk HTTP request plus baca database dan ngebandingin hasilnya. Jadi saya pikir, mungkin aja ini bisa dimanfaatkan untuk database testing juga. Sayangnya, saya nggak sempet melanjutkan eksplorasi iseng ini lebih jauh karena ada kerjaan lain yang lebih urgent.

2. Jenkins CI
Ini adalah Continuous Integration tools yang biasanya dijalanin di server. Awalnya, saya pake ini untuk scheduling selenium script + reporting. Saya perhatikan, banyak testing tools baik UI maupun API yang terintegrasi dengan Jenkins. Belakangan, Jenkins ini dipakai juga untuk menjalankan cron jobs. So, it might worth the try.

Demikianlah ulasan tools software testing yang pernah saya explore. Sebetulnya masih banyak sih yang pernah saya lihat-lihat. Waktu itu tugas saya masih murni sebagai Test Engineer yang melakukan research tentang tools yang kira-kira oke untuk testing jadilah saya benchmarking banyak software, walau ujung-ujungnya nggak semuanya dipake.

Semoga bermanfaat! And, Happy Holiday!!

Advertisements

10 thoughts on “[WORK] Tools untuk Pengujian Software

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s