Saat ini metode pengujian perangkat lunak sudah banyak berkembang seiring semakin beragamnya platform dan tujuan perangkat lunak. Metode-metode pengujian tersebut memberikan pendekatan yang sistematik dalam menguji perangkat lunak. Di samping itu, metode-metode tersebut bisa memberikan mekanisme yang bisa membantu dalam memastikan kelengkapan pengujian dan memberikan kemungkinan tertinggi dalam menguak kesalahan pada perangkat lunak.

Program rekayasa perangkat lunak dapat diuji dengan satu atau dua cara, yaitu :
  1. Dengan mengetahui fungsi yang ditentukan untuk dilakukan oleh suatu produk RPL, pengujian bisa dilakukan untuk memperlihatkan bahwa masing-masing fungsi berjalan sepenuhnya dan pada waktu yang sama mencari kesalahan pada setiap fungsi. Pendekatan pengujian ini biasa disebut dengan sebutan pengujian black-box atau black-box testing.
  2. Dengan mengetahui kerja internal produk RPL, maka pengujian bisa dilakukan dalam memastikan bahwa semua operasi internal bekerja sesuai dengan spesifikasi dan segala komponen interna telah diamati dengan memadai. Pendekatan pengujian ini biasa disebut dengan sebutan pengujian white-box atau white-box testing.

Pengujian Black-box 

Pengujian black-box adalah pengujian berkaitan dengan pengujian yang dilakukan pada interface perangkat lunak. Walaupun dirancang untuk menguak kesalahan, pengujian black-box digunakan untuk memperlihatkan bahwa fungsi-fungsi yang ada pada perangkat lunak bisa beroperasi, bahwa inputan diterima dengan baik dan output dihasilkan secara tepat, serta integritas informasi eksternal dipelihara dengan baik. Black-box testing menguji beberapa aspek dasar sebuah sistem dengan memperhatikan sedikit struktur logika internal pada perangkat lunak.

Pengujian White-box

Pengujian white-box adalah pengujian yang didasari pada pengamatan yang teliti mengenai detail prosedural. Jalur-jaur logika yang melewati perangkat lunak diuji dengan memberikan kasus uji atau skenario pengujian yang menguji serangkaian kondisi atau perulangan (loop) tertentu. Status program bisa diuji pada berbagai titik untuk menentukan apakah status yang diharapkan dengan status sebenarnya.

Dari paparan mengenai pengujian black-box dan white-box di atas sebelumnya, sekilas dapat disimpulkan bahwa pengujian white-box yang sangat teliti akan dapat membawa perangkat lunak kepada program yang benar 100%. Yang diperlukan adlaah menentukan semua jalur logika, mengembangkan kasus uji untuk mengujinya dan mengevaluasi hasilnya, yakni memunculkan kasus uji untuk menguji logika program secara lebih mendalam. Akan tetapi sesuai dengan prinsip pengujian, pengujian secara mendalam akan menimbulkan masalah sumber daya atau logistik. Bahkan bagi program dalam skala kecil, logika dapat dibangkitkan dengan jumlah jalur logika yang besar.

Pengujjian white-box tidak boleh dianggap tidak praktis. Sejumlah jalur logika yang penting dapat dipiih dan digunakan. Struktur-struktur data yang penting dapat diperiksa kevalidalitasnya. Atribut pengujian black-box dan white-box bisa digabungkan secara bersamaan dalam memberikan penekatan yang memvalidasi antarmuka dan secara selektif menjamin bahwa proses internal perangkat lunak sudah benar.

Black-box Testing

Pengujian ini berfokus pada persyaratan fungsional perangkat lunak. Black-box memungkinkan pelaku RPL memperoleh serangkaian kondisi input yang memenuhi syarat fungsional suatu perangkat lunak.

Black-box testing akan berusaha dalam menemukan kesalahan dengan kategori sebagai berikut ini :
  • Fungsi-fungsi yang rusak atau salah
  • Kesalahan antarmuka perangkat lunak
  • Kesalahan kinerja
  • Kesalahan inisialisasi ataupun terminasi
  • Kesalahan struktur data atau akses basis data
Pengujian black-box lebih cenderung untuk dilakukan pada tahap akhir dan dituntut untuk menjawab pertanyaan-pertanyaan seperti berikut :
  • Apakah sistem sangat sensitif terhadap nilai input tertentu?
  • Bagaimana validitas fungsional diuji
  • Apa pengaruh kombinasi tertentu dari data terhadap operasi sistem?
  • Berapa kecepatan dan volume data yang dapat ditangani sistem?
  • Bagaimana batasan suatu data diisolasi?
Melalui pengujian black-box ini, penguji musti merancang serangkaian kasus uji atau skenario pengujian yang dapat memberitahu mengani ada atau tidaknya kesalahan dan dapat mengurangi jumlah kasus uji atau skenario uji yang harus dirancang untuk mencapai pengujian yang benar.

Teknik Pengujian Black-box

Contoh penguian black-box diantaranya adalah sebagai berikut :

Boundary Value Analysis

Merupakan teknik pengujian yang membagi domain-domain input dari suatu program ke dalam keompok-kelompok data, kemudian melakukan pengujian hanya pada batas-batas domain input tersebut. 

Boundary Value Analysis (testbytes.net)
Source : testbytes.net

Graph Based Testing Method

Teknik pengujian black-box ini melibatkan gambar grafik yang mengilustrasikan hubungan antara penyebab (input) dan dampak (output), yang memicu terjadinya hasil. Pengujian ini menggunakan kombinasi output dan input yang berbeda.

Graph Based Testing Method
Source : testbytes.net

Decision Table Testing

Dalam beberapa kasus, kombinasi input menjadi sangat rumit untuk melacak beberapa kemungkinan. Situasi rumit seperti ini bergantung pada tabel keputusan, karena menawarkan penguji pandangan terorganisir tentang kombinasi input dan output yang diharapkan. Teknik ini identik dengan teknik pengujian berbasis grafik; perbedaan utamanya adalah menggunakan tabel alih-alih diagram atau grafik.

Decision Table Testing
Source : testbytes.net

Equivalence Partitioning

Teknik pengujian black-box ini banyak digunakan untuk menulis kasus uji. Ini dapat berguna dalam mengurangi serangkaian input yang mungkin menjadi input yang lebih kecil namun efektif. Ini dilakukan melalui pembagian input sebagai kelas, dan setiap kelas diberi nilai. Ini diterapkan ketika kebutuhan untuk pengujian lengkap muncul dan untuk menolak redundansi input.

Equivalence Partitioning
Source : testbytes.net


State Transition Testing

Teknik ini biasanya mempertimbangkan keadaan, keluaran, dan input dari suatu sistem selama periode tertentu. Berdasarkan pada jenis perangkat lunak yang diuji, ia memeriksa perubahan perilaku suatu sistem dalam keadaan tertentu atau keadaan lain sambil mempertahankan input yang sama. State transitition testng teknik ini dibuat dengan memeriksa urutan transisi dan keadaan atau kejadian di antara input.

State Transition Testing

White-box Testing

White-box testing adalah metode desain kasus uji yang menggunakan struktur kontrol desain prosedural untuk memperoleh kasus uji. Dengan menggunakan metode pengujian white box, pelaku RPL dapat melakukan kasus uji yang merujuk pada :
  • Memberikan jaminan bahwa seluruh jalur independen pada suatu modul telah digunakan paling tidak satu kali.
  • Menggunakan struktur data internal untuk menjamin validitasnya.
  • Mengeksekusi semua loop pada batasan dan pada batas operasionalnya.
  • Menggunakan semua keputusan logis pada sisi true dan false.
Sifat cacat internal pada perangkat lunak sangat mungkin ditemukan dengan menggunakan pengujian white-box sedangkan black-box tidak mungkin dapat menemukannya. Alasan inilah yang mendasari mengapa pengujian white-box dilakukan.

Teknik White-box Testing

Teknik pengujian white-box testing diantaranya adalah

Basis Path Testing

Metode ini memungkinkan perancang kasus uji untuk mengukur kompleksitas logis dari rancangan prosedural dan menggunakannya sebagai pedoman untuk menetapkan sekumpulan jalur eksekusi dasar (basis set). Kasus uji yang dilakukan untuk menggunakan basis set tersebut dijamin untuk menggunakan setiap statement dalam program paling tidak sekali selama pengujian. Metode ini menggunakan notasi flow graph yang menggambarkan aliran kontrol logika yang menggunakan notasi yang ditunjukkan pada gambar di bawah ini: 

Basis Path Testing

Condition Testing

Definisinya yaitu suatu metode disain test case yang memeriksa kondisi logika yang terdapat pada modul program.

Condition testing (stackexchange.com)
Source : stackexchange.com

Data Flow Testing

Data Flow Testing adalah strategi spesifik pengujian perangkat lunak yang berfokus pada variabel data dan nilainya. Itu menggunakan grafik aliran kontrol. Ketika datang ke kategorisasi, pengujian aliran data akan dapat dianggap sebagai jenis pengujian kotak putih dan jenis pengujian struktural. Itu membuat cek di titik penerimaan data oleh variabel dan titik penggunaannya. Hal ini dilakukan untuk menutup jalur pengujian dan celah pengujian cabang.

Data flow testing (semanticscholar.org)
Data flow testing (semanticscholar.org)

Loop Testing

Loop testing adalah suatu teknik white box testing yang berfokus pada validitas konstruksi loop (kejadian berulang) secara eksklusif.