Blackbox Testing dengan Tomato

Ali Reza Yahya
Pujangga Teknologi
Published in
4 min readApr 18, 2019

Latar Belakang: dalam pengembangan aplikasi perangkat lunak, pada umum-nya, melalui 4 fase. Yaitu, Development (pengembangan), Code Review (ulasan kode), Testing (pengujian), Release (pelepasan kode ke pengguna). Dari pengalaman saya, tahap pengujian biasanya memakan waktu cukup lama, dikarenakan kekurangan penguji (QA Engineer), atau media penguji (staging server) tidak dalam kondisi yang prima, seperti memiliki data yang tidak konsisten, atau tidak bisa diakses karena minimnya pemeliharaan (maintenance).

fase pengembangan aplikasi perangkat lunak

Maka dari itu, saya mencoba untuk cari solusi untuk membuat proses ini lebih efisien. Ada beberapa perangkat (tools) untuk mengotomasikan proses tersebut, dengan menggunakan CucumberJS, Godog, Codeception dan lain sebagainya. Sebelum meranah kesana, saya mau bahas sedikit tentang Blackbox Testing, apakah itu Blackbox Testing? didalam pengujian, terdapat 2 metode, yaitu Blackbox Testing dan Whitebox Testing. Blackbox testing merupakan pengujian yang dilakukan tanpa mengetahui apa yang terjadi didalam aplikasi, melainkan fokus hanya terhadap input dan ouput, seperti yang penguji (Quality Assurance Engineer) lakukan, melakukan pengujian terhadap aplikasi dari sisi pengguna, dengan menggunakan Browser atau Postman. Untuk memastikan pengalaman dari pengguna tidak terganggu. Sedangkan Whitebox Testing merupakan pengujian dari sisi Developer, pengujian terhadap logika dari aplikasinya seperti Unit Testing, dan sebagainya.

referensi: https://www.guru99.com/black-box-testing.html

Nah kembali lagi ke pembahasan sebelumnya, jadi pengujian yang saya ingin otomasikan adalah pengujian secara Blackbox, dari sisi pengguna, tidak memperhatikan bagaimana kodenya tertulis.

Setelah melakukan riset terhadap CucumberJS dan Godog, saya memutuskan untuk mencoba menggunakan Godog, dikarenakan tim saya pada saat itu cenderung untuk mengembangkan dengan menggunakan Go.

Lalu apa itu Tomato?

Setelah berapa bulan saya menulis pengujian otomatis menggunakan Godog, saya mulai sadar ada beberapa hal kurang efisien yang saya bisa perbaiki. Yaitu:

1) Pengujian yang dilakukan sebenarnya cukup standar, yaitu dilakukan oleh selayaknya aplikasi-aplikasi lain.

2) Untuk otomasi test dengan kode, kita harus memastikan bahwa kode testing kita memiliki logika yang tepat, berujung kita harus menulis testing untuk perangkat testing. Jadi kurang efisien.

Dari situ, saya berpikir untuk meng-ekstrak kode-kode yang umum-nya dipakai di aplikasi, untuk menjadi aplikasi terbuka (Open Source Project). Dengan itu, kita bisa mengembangkan kode penguji, bersama-sama, memastikan tidak mengandung kesalahan (bug). Selain itu, juga dapat mempercepat waktu pengembangan kita. Dikarenakan kita tidak perlu menulis kode testing berulang-ulang.

Jadi bagaimana sih Tomato bekerja?

Tomato merupakan aplikasi yang dibuat diatas Godog, dan menggunakan bahasa Gherkin. Yang dikembangkan oleh CucumberJS. Tomato merupakan Binary, yang di compile dan mendukung segala sistem operasi yang bahasa pemrograman Go dukung.

Mending kita saya langsung aja kasih contohnya, jadi untuk memulai menguji aplikasi kita dengan Tomato kita butuh untuk menulis 2 File sebelum kita bisa menguji. Yaitu

  1. Tomato konfigurasi, berisi spesifikasi dari aplikasi, dan juga aplikasi penggantung (Dependencies). Seperti contohnya MySQL, RabbitMQ, atau aplikasi eksternal lainnya.

2) Skenario yang ditulis menggunakan bahasa Gherkin, untuk menjelaskan kepada Tomato, bagaimana tingkah laku dari aplikasi yang ingin di uji.

Setelah selesai menulis 2 File tersebut, kita bisa coba langsung menjalankan ujian kita dengan Tomato. Oh iya, sebelumnya kita perlu memasang Tomato di komputer kita terlebih dahulu. Dengan cara, mengunduh Binary dari github Tomato.

Setelah itu, kita bisa langsung eksekusi perintah

tomato -c [file konfigurasi] -f [direktori dari skenario testing]

Oh iya, sebelum menjalankan perintah itu, kita harus memastikan bahwa aplikasi kita sudah berjalan, dan juga aplikasi-aplikasi pendukungnya. Agar Tomato bisa berkomunikasi dengan aplikasi-aplikasi itu, dan memberi laporan hasil ujian.

Untuk, mempermudah peng-eksekusian, dikarenakan kita harus meng-orkestrasikan beberapa aplikasi sebelum kita menjalankan test. Kita juga bisa menggunakan, Docker Compose, untuk bagaimana caranya, nanti saya jelaskan di artikel lainnya.

Jadi setelah menggunakan Tomato, diharapkan proses pengembangannya akan lebih efisien dengan mengurangi kebutuhan untuk melakukan pengujian secara manual.

Semoga bermanfaat, ditunggu kritik dan sarannya di Issue Github, dan jangan lupa kontribusinya, untuk teknologi yang lebih baik.

P.S. Jika teman-teman menyukai artikel semacam ini, silakan subscribe ke newsletter kita dan dapatkan notifikasi artikel terbaru langsung di inbox kamu!

--

--