Black-Box Testing

Black-Box Testing terfokus pada spesifikasi fungsional dari perangkat
lunak
Tester dapat mendefinisikan kumpulan kondisi input dan melakukan
pengetesan pada spesifikasi fungsional program.
Black Box Testing bukanlah solusi alternatif dari White-Box Testing tapi
lebih merupakan pelengkap untuk menguji hal-hal yang tidak dicakup
oleh White-Box Testing.
Black-Box Testing cenderung untuk menemukan hal-hal berikut:
Fungsi yang tidak benar atau tidak ada
Kesalahan antarmuka (interface errors)
Kesalahan pada struktur data dan akses basis data
Kesalahan performansi (performance errors)
Kesalahan inisialisasi dan terminasi.
Pengujian didesain untuk menjawab pertanyaan-pertanyaan berikut:
Bagaimana fungsi-fungsi diuji agar dapat dinyatakan valid?
Input seperti apa yang dapat menjadi bahan kasus uji yang baik?
Apakah sistem sensitif pada input-input tertentu?
Bagaimana sekumpulan data dapat diisolasi?
Berapa banyak rata-rata data dan jumlah data yang dapat ditangani sistem?
Efek apa yang dapat membuat kombinasi data ditangani spesifik pada
operasi sistem?
  • Equivalence Partitioning
  • Boundary Value Analysis/Limit Testing
  • Comparison Testing
  • Sample Testing
  • Robustness Testing
  • Behavior Testing
  • Requirement Testing
  • Performance Testing
  • Uji Ketahanan (Endurance Testing)
  • Uji Sebab-Akibat (Cause-Effect Relationship
  • Testing)
Membagi input menjadi kelas-kelas data yang dapat digunakan untuk
menggenerasi kasus uji.
Bertujuan untuk menemukan kelas-kelas kesalahan.
Berdasarkan pada kesamaan kelas-kelas kondisi input.
Sebuah kelas yang ekivalen merepresentasikan kumpulan
status/kondisi yang valid atau tidak valid
Sebuah kondisi input dapat berupa nilai numerik yang spesifik, rentang
nilai, kumpulan nilai yang berkaitan, atau kondisi boolean.
Kelas ekivalen dapat didefinisikan dengan kondisi berikut:
Jika kondisi input mensyaratkan rentang nilai atau nilai yang spesifik, maka
sebuah kelas ekivalen yang valid dan dua buah kelas ekivalen yang tidak
valid akan terbentuk
Jika sebuah kondisi input mensyaratkan sebuah boolean atau anggota dari
sebuah himpunan, maka sebuah kelas ekivalen yang valid dan sebuah kelas
ekivalen yang tidak valid akan terbentuk.
Kasus uji untuk setiap domain input item data harus dikembangkan dan
dieksekusi.
Spesifikasi sub-program yang harus diuji (status awal dan akhir)
Sub-program mengambil sebuah input berupa integer pada rentang
[-100,100]
Keluaran sub-program adalah tanda dari nilai masukan (0 dianggap
positif)
Dua buah kelas ekivalen yang valid
Nilai masukan dengan rentang [-100,0] akan menghasilkan tanda
negatif sebagai keluaran
Nilai masukan dengan rentang [0,100] akan menghasilkan tanda
positif sebagai keluaran
Keduanya bisa disatukan menjadi Nilai masukan dengan rentang [-
100,100] merupakan rentang yang valid
Dua buah kelas ekivalen yang tidak valid
Nilai masukan < -100 Nilai masukan > 100

Jika sebuah kondisi mengacu pada nilai masukan yang memiliki rentangmaka nilai yang ada dalam rentang masuk menjadi sebuah kelas ekivalenvalid, dan nilai masukan diluar kedua sisi ambang batas menjadi dua buahkelas ekivalen yang tidak valid.

Jika sebuah kondisi mengacu pada satu atau sejumlah nilai masukan
dengan nilai tertentu maka akan menjadi sebuah kelas ekivalen yang valid
yang berisi satu atau sejumlah nilai yang valid dan dua buah kelas ekivalen
yang tidak valid yaitu kelas yang berisi masukan kosong dan masukan
diluar nilai yang dispesifikasikan

Jika sebuah kondisi mengacu pada himpunan nilai masukan tertentu maka
akan menjadi sejumlah anggota himpunan kelas ekivalen yang valid dan
sebuah kelas ekivalen yang tidak valid dimana jika masukan memiliki nilai
diluar anggota himpunan

Jika sebuah kondisi mengekspresikan sebuah kalimat yang berisi “harus”
misal, awal masukan harus berupa karakter maka akan menjadi sebuah
kelas ekivalen yang valid yaitu semua masukan yang diawal karakter dan
sebuah kelas ekivalen yang tidak valid yaitu masukan yang tidak diawali
karakter

Jika ada alasan yang menyatakan bahwa elemen di dalam sebuah kelas
ekivalen diproses dengan cara yang berbeda maka kelas ekivalen itu harus
dibagi-bagi lagi menjadi kelas-kelas ekivalen yang lebih kecil berdasarkan
pendekatan lojik dari sub-program pada level algoritma.