Pengujian white box adalah metodologi pengujian perangkat lunak yang menggunakan kode sumber program untuk merancang pengujian dan kasus uji guna memastikan kualitas perangkat lunak (QA). Dalam pengujian white box, struktur kode diketahui dan dipahami oleh penguji, berbeda dengan pengujian black box, sebuah metodologi di mana struktur kode tidak diketahui oleh penguji, serta pengujian gray box, pendekatan QA di mana beberapa bagian struktur kode diketahui oleh penguji, sedangkan sebagian lainnya tidak.
Pengujian white box melihat lebih dalam pada kerangka internal dan komponen dari suatu aplikasi perangkat lunak untuk menguji struktur dan desain internalnya. Karena alasan ini, pengujian white box juga disebut sebagai pengujian transparan, clear box, atau glass box. Jenis pengujian ini dapat diterapkan pada unit testing, system testing, dan integration testing.
Pengujian white box biasanya melibatkan pelacakan jalur eksekusi yang mungkin terjadi dalam kode serta menentukan nilai input yang dapat memaksa eksekusi jalur tersebut. Penguji, yang biasanya adalah pengembang yang menulis kode tersebut, akan memverifikasi kode berdasarkan desainnya, sehingga pemahaman yang baik terhadap kode sangat penting bagi orang yang melakukan pengujian.
Kode diuji dengan menjalankan nilai input melalui kode untuk menentukan apakah output yang dihasilkan sesuai dengan yang diharapkan. Penguji dapat menentukan jumlah jalur minimal yang diperlukan untuk menguji atau “mencakup” seluruh kode. Alat analisis statis dapat membantu dalam tugas yang sama dengan lebih cepat dan lebih andal.
Pengujian white box sendiri tidak dapat mengidentifikasi masalah yang disebabkan oleh ketidaksesuaian antara kebutuhan atau spesifikasi dengan kode yang diimplementasikan. Namun, pengujian ini dapat membantu mengidentifikasi beberapa jenis kelemahan desain dalam kode. Contohnya adalah masalah alur kontrol (seperti loop tertutup atau loop tak berujung) dan masalah alur data. Analisis kode statis (dengan alat bantu) juga dapat menemukan jenis masalah ini, tetapi tidak membantu penguji/pengembang memahami kode sedalam ketika mereka merancang sendiri kasus uji white box. Alat yang dapat membantu dalam pengujian white box meliputi Veracode, Googletest, Junit, dan RCUNIT.
Kelebihan & kekurangan
Kelebihan pengujian white box:
- Pengujian yang lebih menyeluruh.
- Mendukung pengujian otomatis.
- Kasus uji dan skrip uji dapat digunakan kembali.
- Dapat dilakukan pada tahap awal pengembangan.
- Mengoptimalkan kode dengan menghapus kode yang tidak diperlukan.
- Membantu menemukan kesalahan atau kelemahan dalam kode.
Kekurangan pengujian white box:
- Kasus uji sering kali tidak mencerminkan cara komponen digunakan dalam situasi nyata.
- Pengujian white box sering kali memakan waktu, rumit, dan mahal.
- Diperlukan penguji yang memiliki pengetahuan internal tentang perangkat lunak.
- Jika perangkat lunak sering mengalami perubahan implementasi, maka waktu dan biaya pengujian dapat meningkat.
White box testing vs black box testing
Pengujian black box adalah bentuk pengujian yang berlawanan dengan pengujian white box. Idenya adalah bahwa Anda tidak dapat melihat cara kerja bagian dalam dari “kotak hitam” dan sebenarnya tidak perlu mengetahuinya. Pengujian black box akan merancang kasus uji untuk mencakup semua persyaratan yang ditentukan untuk komponen, kemudian menggunakan monitor cakupan kode untuk merekam seberapa banyak kode yang dieksekusi saat kasus uji dijalankan. Berbeda dengan pengujian white box, pengujian black box tidak memerlukan pengembang yang mengerjakan kode. Penguji hanya perlu memahami fungsi perangkat lunak tersebut.
Perbedaan lainnya adalah pengujian black box didasarkan pada spesifikasi persyaratan, bukan spesifikasi desain dan struktur. Pengujian black box dapat diterapkan pada pengujian sistem, acceptance testing, serta unit testing dan integration testing.
Pengujian gray box sering digunakan untuk struktur perangkat lunak internal yang bukan berupa kode sumber, misalnya hierarki kelas atau pohon pemanggilan modul.