Daftar Isi ⇅
show
White box testing atau pengujian kotak putih adalah salah satu metode pengujian perangkat lunak. Metode pengujian ini juga terkadang disebut juga glass box testing atau pengujian kotak kaca. Berlainan dengan black box testing, white box testing ini justru menguji perangkat lunak dari sisi internal tanpa memperhatikan fungsional seperti antarmuka perangkat lunak itu sendiri.
Artinya, white box menguji perangkat lunak dari sisi kode atau bagaimana teknis penulisan program dilakukan. Menurut Pressman (2012, hlm. 588) White box testing adalah sebuah filosofi perencanaan uji kasus yang menggunakan struktur kontrol yang dijelaskan sebagai bagian dari perancangan perangkat komponen untuk menghasilkan test case itu sendiri.
Menurut Pressman (2012, hlm. 588) Dengan menggunakan metode pengujian kotak putih, kita dapat memperoleh test case yang:
- Menjamin bahwa semua jalur independen dalam sebuah modul telah dieksekusi setidaknya satu kali.
- Melakukan semua keputusan logis pada sisi benar dan yang salah.
- Melaksanakan semua loop pada batas mereka dan dalam batas-batas operasional mereka.
- Melakukan struktur data internal untuk memastikan kesahihannya.
Dapat dilihat bahwa white box testing dilakukan untuk memastikan seluruh kode berjalan dengan baik tanpa celah atau kesalahan yang dapat menghasilkan cacat dari segi pemrograman.
Pengertian White Box Testing
Jadi sebetulnya apa definisi dari white box testing? Mudahnya, white box testing adalah pengujian perangkat lunak yang menguji kode atau sisi internal programnya. Sisi fungsi, antarmuka, dan alurnya justru tidak diuji. Hal ini tentunya amat berlawanan dengan Black Box testing yang justru hanya menguji fungsi dari perangkat lunak tanpa memperhatikan kodenya, sehingga kedua pengujian ini saling melengkapi satu sama lain.
Sementara itu Rossa dan Shalahuddin (2013) berpendapat bahwa White-Box Testing merupakan pengujian perangkat lunak dari segi desain dan kode apakah mampu menghasilkan fungsi-fungsi, masukan dan keluaran yang sesuai dengan spesifikasi kebutuhan. Dapat dikatakan pengujian ini dilakukan dengan memeriksa logic dari kode program.
Pengujian white box dilakukan dengan meramalkan cara kerja perangkat lunak secara rinci, karenanya logical path (jalur logika) perangkat lunak akan diuji dengan menyediakan test case yang akan menguji kumpulan kondisi atau pengulangan secara spesifik. Secara sekilas dapat diambil kesimpulan pengujian kotak putih merupakan petunjuk untuk mendapatkan program yang benar secara 100%.
Kelebihan dan Kekurangan White Box Testing
Pengujian kotak putih tentunya memiliki kelebihan jika digunakan pada konteks yang tepat. Namun demikian pengujian ini juga tidak akan efektif jika digunakan pada sikon yang tidak tepat. Berikut adalah kelebihan dan kekurangan dari pengujian kotak putih.
Kelebihan
White box testing dapat dengan efektif menemukan kesalahan logika, ketidaksesuaian asumsi, dan berbagai kesalahan ketik yang terdapat pada kode perangkat lunak.
- Kesalahan Logika
Misalnya pada perangkat lunak digunakan sintaks “If “ dan pengulangan. White box testing akan mendeteksi kondisi-kondisi yang tidak sesuai dan mendeteksi kapan proses pengulangan akan berhenti. Dalam suatu kondisi pengulangan yang tidak berhenti (teruama pengulangan while) dapat membuat perangkat lunak terus memakan resource perangkat keras dan menyebabkan galat ke seluruh sistem. - Ketidaksesuaian Asumsi
Whitebox testing dapat mendeteksi asumsi yang tidak sesuai dengan kenyataan, untuk kemudian di analisa dan diperbaiki. - Kesalahan Ketik
Terutama untuk mendeteksi bahasa pemrograman yang bersifat case sensitive, karena pada lingkungan yang berbeda permasalahan ini biasanya diabaikan. Misalnya, pada sistem operasi windows besar atau kecilnya huruf tidak dipermasalahkan, sementara pada sistem operasi Linux akan menyebabkan galat jika besar kecil huruf tidak sesuai.
White box testing juga memiliki kelebihan dapat diotomatisasi menggunakan berbagai perangkat lunak khusus (berbagai tools White box testing) seperti Parasoft Jtest, EclEmma, PyUnit, NUnit, dsb.
Kelemahan
Untuk perangkat lunak yang tergolong memiliki skala sintaks dan script yang besar, white box testing dianggap sebagai strategi yang tergolong boros. Hal itu karena akan melibatkan sumber daya yang besar untuk melakukannya. Hal ini karena Whitebox testing akan melibatkan penggunaan aplikasi berbayar khusus dan menggunakan staff ahli yang mampu melakukan programming atau coding pula.
Teknik Pengujian White Box
Pengujian kotak putih (White-Box Testing) didasarkan pada pemeriksaan yang teliti terhadap detail prosedural. Jalur logis diseluruh perangkat lunak dan kolaborasi antar-komponen diuji dengan menguji serangkaian kondisi dan atau loop spesifik.
Salah satu teknik dalam pengujian White-Box Testing adalah pengujian jalur dasar (Basis Path Testing). Basis Path Testing diusulkan pertama kali oleh Tom McCabe. Metode ini memungkinkan penguji dapat mengukur kompleksitas logis dari desain procedural dan menggunakannya sebagai pedoman untuk menetapkan himpunan basis dari semua jalur eksekusi (Pressman, 2012).
Berbagai teknik pengujian white box lainnya meliputi:
- Statement Coverage
- Decision Coverage
- Branch Coverage
- Condition Coverage
- Multiple Condition Coverage
- Finite State Machine Coverage
- Path Coverage
- Control flow testing
- Data flow testing
Jenis-Jenis White Box Testing
White box testing mencakup beberapa jenis pengujian yang digunakan untuk mengevaluasi kegunaan aplikasi, blok kode, atau paket perangkat lunak tertentu. Beberapa jenis-jenis white box testing adalah sebagai berikut.
Unit Testing
Jenis pengujian kotak putih Ini sering digunakan sebagai jenis pengujian pertama yang dilakukan pada aplikasi. Pengujian Unit dilakukan pada setiap unit atau blok kode saat dikembangkan.
Pada dasarnya pengujian unit atau unit testing ini biasanya dilakukan oleh programmer. Sebagai pengembang perangkat lunak, tentunya kita akan mengembangkan beberapa baris kode, satu fungsi atau objek dan mengujinya untuk memastikannya berfungsi sebagaimana mestinya.
Pengujian Unit membantu mengidentifikasi sebagian besar bug di awal siklus pengembangan perangkat lunak. Bug yang diidentifikasi pada tahap ini biasanya lebih mudah untuk diperbaiki.
Memory Leak Testing
Memory leak atau kebocoran memori adalah penyebab utama dari aplikasi yang berjalan lebih lambat. Quality assurance yang berpengalaman dalam mendeteksi kebocoran memori sangat penting jika kita membutuhkan perangkat lunak yang memiliki performa cepat karena memliki pengguna dan data yang berskala beesar.
White Box Penetration Test
Dalam pengujian penetrasi ini, penguji memiliki informasi lengkap tentang kode sumber aplikasi, informasi jaringan terperinci, alamat IP yang terlibat, dan semua informasi server tempat aplikasi berjalan. Tujuannya adalah untuk menyerang kode dari beberapa sudut untuk mengekspos ancaman keamanan dari dalam.
White Box Mutation Testing
Pengujian mutasi kotak putih sering digunakan untuk menemukan teknik pengkodean terbaik yang digunakan untuk memperluas solusi dan kinerja perangkat lunak. Pada dasarnya pengujian ini dilakukan untuk mendapatkan best approach serta clean code yang dapat membuat kinerja serta maintainability perangkat lunak meningkat.
Langkah atau Tahapan White Box Testing
Pada dasarnya tahapan pengujian kotak putih adalah persiapan, buat dan lakukan pengujian, dan buat laporannya. Untuk lebih jelasnya, berikut adalah penjabaran dari langkah atau tahapan white box testing.
- Mendefinisikan semua alur logika
Tahap ini menganalisis seluruh alur logika yang terdapat pada sintaks kode perangkat lunak agar kita mengetahui pada bagian mana saja pengujian akan dilakukan. - Membangun kasus untuk digunakan dalam pengujian
Pada tahap ini seluruh alur logika yang telah didefinisikan dibuat uji kasusnya. - Melakukan pengujian
Pengujian dilakukan pada setiap test case atau uji kasus yang sebelumnya telah dibuat. Pada tahap ini kita juga dapat mulai membuat laporan dari hasil pengujian.
Referensi
- Pressman, Roger S. (2012). Rekayasa Perangkat Lunak pendekatan praktisi. Yogyakarta: Penerbit ANDI.
- A.S. Rosa dan Shalahuddin, M. (2013). Rekayasa Perangkat Lunak Terstruktur dan Berorientasi Objek. Bandung : Informatika.