BLOG POSTS

23 October 2014

Mengenal Software Testing

Belakangan ini saya sering mendengar istilah “Scrum” atau “Agile Development” di lingkungan tempat saya bekerja dan sepertinya istilah ini memang sedang “in” di kalangan software developer. Dalam dunia software engineering perubahan requirement itu memang sangat sulit sekali dihindari baik karena adanya salah interpretasi dari software analis / programmer dalam menangkap kebutuhan client ataupun memang karena client-nya yang bingung sendiri dengan apa yang dia inginkan. Nah, Scrum dan Agile development ini sebenarnya adalah sebuah metodologi dalam pengembangan perangkat lunak yang dirancang untuk kondisi yang serba dinamis dan unpredictable seperti masalah perubahan requirement tersebut. Intinya sih, bagaimana caranya agar dalam pengembangan perangkat lunak ini kita (software developer) bisa mendapatkan feedback secepat mungkin agar dampak dari perubahan requirement tersebut dapat diminimalisir. Dalam tulisan ini saya tidak akan membahas tentang Scrum ataupun Agile Development melainkan tentang salah satu proses yang ada di dalam metodologi tersebut yaitu “Software Testing” yang menurut saya sering terlupakan ataupun terabaikan (hayo ngaku! :p).

Process software testing merupakan process yang sangat penting dalam dunia perangkat lunak. kenapa? karena dengan menerapkan process ini dalam alur pengembangan software kita, maka kita dapat menjamin kualitas dari software yang kita buat (setidaknya dalam hal pemenuhan functional requirement). Lalu, apa saja sih process software testing yang harus kita lakukan? Nah, kalau dari pengalaman saya sebagai mahasiswa, software developer dan baca-baca buku tentang software development, setidaknya ada 3 jenis testing yang dapat kita lakukan yaitu: Unit Testing, Integration Testing dan User Acceptance Testing (UAT). Pada kesempatan kali ini saya akan mencoba menjelaskan secara garis besar tentang 3 buah jenis testing tersebut.

Unit Testing

Unit testing adalah proses testing yang dilakukan oleh seorang programmer untuk menguji apakah setiap fungsi yang telah dibuat oleh programmer tersebut sudah memenuhi requirement yang ada. Dalam melakukan unit testing, seorang programmer akan membuat banyak test case untuk setiap fungsi yang telah dibuatnya. Test case yang telah dibuat oleh programmer nantinya akan digunakan untuk menguji apakah output dari funngsi yang telah dibuat sudah benar atau belum.

Satu hal yang harus diingat dalam melakukan unit testing adalah bahwa unit testing adalah testing yang bersifat independen dan isolated. Sebuah method / fungsi dapat dikatakan independen apabila fungsi tersebut tidak bergantung dengan hasil dari fungsi yang lain sedangkan yang dimaksud dengan isolated adalah bahwa fungsi yang di test tidak boleh melakukan akses ke “luar” seperti misalnya mengakses database, file ataupun membutuhkan koneksi jaringan.

Integration Testing

Berbeda dengan unit testing yang bersifat independen dan isolated, Integration testing ditujukan untuk menguji apakah kerjasama antara satu fungsi dengan fungsi lainnya (baik dalam satu class ataupun berbeda class) dapat menghasilkan output yang benar atau tidak. Dalam pelaksanaannya, proses integration testing tidak hanya dilakukan pada kode program yang dihasilkan oleh satu orang saja, melainkan melibatkan juga kode-kode program yang dibuat oleh programmer lain.

User Acceptence Test (UAT)

Nah, testing yang satu ini merupakan testing yang (Alhamdulillah) masih sering dilakukan oleh banyak pengembang software karena biasanya proses ini menjadi prasyarat berakhirnya proyek perangkat lunak yang dilakukan (hehe). Berbeda dengan Unit testing dan Integration testing yang dilakukan di level source code dan dilakukan oleh programmer, UAT dilakukan pada level aplikasi oleh client atau product owner. Dalam melakukan UAT, client atau product owner akan memeriksa apakah user interface, flow aplikasi dan data-data yang ditampilkan oleh aplikasi sudah sesuai dengan requirement yang diminta. Error yang ditemukan pada tahap ini umumnya lebih sulit untuk dilacak sumbernya karena pada tahap ini, output yang dihasilkan oleh aplikasi dihasilkan dari banyak fungsi dan class yang berkomunikasi satu sama lainnya.

Yup, kira-kira seperti itulah gambaran tentang 3 jenis testing dalam proses pengembangan software. penjelasan yang saya berikan pada tulisan ini memang masih penjelasan yang bersifat umum dan di lain kesempatan saya akan mencoba memberikan penjelasan yang lebih rinci terkait dengan jenis-jenis testing tersebut. Bagi rekan-rekan yang ingin mengetahui lebih dalam terkait Unit testing, Integration testing dan UAT, sepertinya Wikipedia bisa menjadi awalan yang bagus untuk menambah pengetahuan kita tentang software testing.

Link bacaan yang bisa jadi referensi:

  1. Wikipedia: Unit Testing
  2. Wikipedia: Integration Testing
  3. Wikipedia: UAT
Follow Me

Salman El Farisi

Software Engineer at Badr Interactive
Software Engineer and Clean Code Antusiast
Follow Me

Latest posts by Salman El Farisi (see all)