Selasa, 01 Juni 2010

White Box Testing dan Black Box Testing

Dua macam pendekatan test yaitu :
1. Black Box Testing
Test case ini bertujuan untuk menunjukkan fungsi PL tentang cara
beroperasinya, apakah pemasukan data keluaran telah berjalan
sebagaimana yang diharapkan dan apakah informasi yang disimpan
secara eksternal selalu dijaga kemutakhirannya.
2. White Box Testing
Adalah meramalkan cara kerja perangkat lunak secara rinci, karenanya
logikal path (jalur logika) perangkat lunak akan ditest dengan
menyediakan test case yang akan mengerjakan kumpulan kondisi dan
atau pengulangan secara spesifik. Secara sekilas dapat diambil
kesimpulan white box testing merupakan petunjuk untuk mendapatkan
program yang benar secara 100%.
UJI COBA WHITE BOX
Uji coba white box adalah metode perancangan test case yang
menggunakan struktur kontrol dari perancangan prosedural untuk
mendapatkan test case. Dengan rnenggunakan metode white box, analis
sistem akan dapat memperoleh test case yang:
· menjamin seluruh independent path di dalam modul yang dikerjakan
sekurang-kurangnya sekali
· mengerjakan seluruh keputusan logikal
· mengerjakan seluruh loop yang sesuai dengan batasannya
· mengerjakan seluruh struktur data internal yang menjamin validitas
1. UJI COBA BASIS PATH
Uji coba basis path adalah teknik uji coba white box yg diusulkan
Tom McCabe. Metode ini memungkinkan perancang test case mendapatkan
ukuran kekompleksan logical dari perancangan prosedural dan menggunkan
ukuran ini sbg petunjuk untuk mendefinisikan basis set dari jalur
pengerjaan. Test case yg didapat digunakan untuk mengerjakan basis set
yg menjamin pengerjaan setiap perintah minimal satu kali selama uji coba.

PENGUJIAN BLACK-BOX
Pengujian black-box berfokus pada persyaratan fungsional PL. Pengujian
inimemungkinkan analis system memperoleh kumpulan kondisi input yg
akan mengerjakan seluruh keperluan fungsional program.
Tujuan metode ini mencari kesalaman pada:
· Fungsi yg salah atau hilang
· Kesalahan pada interface
· Kesalahan pada struktur data atau akses database
· Kesalahan performansi
· Kesalahan inisialisasi dan tujuan akhir
Metode ini tidak terfokus pada struktur kontrol seperti pengujian whitebox
tetapi pada domain informasi.
Pengujian dirancang untuk menjawab pertanyaan sbb:
· Bagaimana validitas fungsional diuji?
· Apa kelas input yg terbaik untuk uji coba yg baik?
· Apakah sistem sangat peka terhadap nilai input tertentu?
· Bagaimana jika kelas data yang terbatas dipisahkan?
· Bagaimana volume data yg dapat ditoleransi oleh sistem?
· Bagaimana pengaruh kombinasi data terhadap pengoperasian
system?
1. EQUIVALENCE PARTITIONING
Equivalence partitioning adalah metode pengujian black-box yg memecah
atau membagi domain input dari program ke dalam kelas-kelas data
sehingga test case dapat diperoleh.
Perancangan test case equivalence partitioning berdasarkan evaluasi kelas
equivalence untuk kondisi input yg menggambarkan kumpulan keadaan yg
valid atau tidak. Kondisi input dapat berupa nilai numeric, range nilai,
kumpulan nilai yg berhubungan atau kondisi Boolean.
Contoh :
Pemeliharaan data untuk aplikasi bank yg sudah diotomatisasikan. Pemakai
dapat memutar nomor telepon bank dengan menggunakan mikro komputer
yg terhubung dengan password yg telah ditentukan dan diikuti dengan
perintah-perintah. Data yg diterima adalah :
Kode area : kosong atau 3 digit
Prefix : 3 digit atau tidak diawali 0 atau 1
Suffix : 4 digit
Password : 6 digit alfanumerik
Perintah : check, deposit, dll
Selanjutnya kondisi input digabungkan dengan masing-masing data elemen
dapat ditentukan sbb :
Kode area : kondisi input, Boolean – kode area mungkin ada atau tidak
kondisi input, range – nilai ditentukan antara 200 dan 999
Prefix : kondisi input range > 200 atau tidak diawali 0 atau 1
Suffix : kondisi input nilai 4 digit
Password : kondisi input boolean – pw mungkin diperlukan atau tidak
kondisi input nilai dengan 6 karakter string
Perintah : kondisi input set berisi perintah-perintah yang telah
didefinisikan

Merancang Pengujian Perangkat Lunak 1

Ujicoba software merupakan elemen yang kritis dari SQA dan merepresentasikan tinjauan ulang yang
menyeluruh terhadap spesifikasi,desain dan pengkodean. Ujicoba merepresentasikan ketidaknormalan yang
terjadi pada pengembangan software. Selama definisi awal dan fase pembangunan, pengembang berusaha
untuk membangun software dari konsep yang abstrak sampai dengan implementasi yang memungkin.
Para pengembang membuat serangkaian uji kasus yang bertujuan untuk ”membongkar” software yang
mereka bangun. Kenyataannya, ujicoba merupakan salah satu tahapan dalam proses pengembangan software
yang dapat dilihat (secara psikologi) sebagai destruktif, dari pada sebagai konstruktif.
Pengembang software secara alami merupakan orang konstruktif. Ujicoba yang diperlukan oleh
pengembang adalah untuk melihat kebenaran dari software yang dibuat dan konflik yang akan terjadi bila
kesalahan tidak ditemukan. Dari sebuah buku, Glen Myers menetapkan beberapa aturan yang dapat dilihat
sebagai tujuan dari ujicoba :
1. Ujicoba merupakan proses eksekusi program dengan tujuan untuk menemukan kesalahan
2. Sebuah ujicoba kasus yang baik adalah yang memiliki probabilitas yang tinggi dalam menemukan
kesalahan-kesalahan yang belum terungkap
3. Ujicoba yang berhasil adalah yang mengungkap kesalahan yang belum ditemukan
Sehingga tujuan dari ujicoba ini adalah mendesain serangkaian tes yang secara sistematis mengungkap
beberapa jenis kesalahan yang berbeda dan melakukannya dalam waktu dan usaha yang minimum.
Jika pengujian diselenggarakan dengan sukses, maka akan membongkar kesalahan yang ada didalam
perangkat lunak, manfaat lain dari pengujian adalah menunjukkan bahwa fungsi perangkat lunak telah bekerja
sesuai dengan spesifikasi, dan kebutuhan fungsi telah tercapai. Sebagai tambahan, data yang dikumpulkan
pada saat pengujian dilaksanakan akan menyediakan suatu indikasi keandalan perangkat lunak yang baik dan
beberapa indikasi mutu perangkat lunak secara keseluruhan.

Dua kategori input yang disediakan
untuk proses ujicoba adalah :
1. Software configuration yang terdiri dari spesifikasi kebutuhan software, spesifikasi desain dan kode sumber;
2. Test configuration yang terdiri dari rencana dan prosedur ujicoba, Tools ujicoba apapun yang dapat
digunakan, dan kasus ujicoba termasuk hasil yang diharapkan. Pada kenyataannya, konfigurasi ujicoba
merupakan subset dari konfigurasi software.
Setiap lingkaran merepresentasikan transformasi yang lebih kompleks. Ujicoba dilakukan dan hasilnya
dievaluasi, kemudian hasil ujicoba dibandingkan dengan hasil yang diharapkan . Ketika ditemukan data yang
keliru, maka error ditemukan dan debug dimulai. Ketika hasil ujicoba dikumpulkan dan dievaluasi, indikasi
kualitatif dari kualitas dan reliabilitas software mulai terlihat. Jika terjadi kesalahan fatal dan memerlukan
modifikasi desain ditemukan secara reguler, maka kualitas dan reliabilitas software akan dipertanyakan dan
diperlukan ujicoba lanjutan.
Sebaliknya jika fungsi software bekerja sebagaimana mestinya dan kesalahan yang terjadi dapat diatasi
dengan mudah maka, dapat diambil 1 dari 2 kesimpulan dapat dibuat, yaitu : (1) Kualitas dan reliabilitas
software dapat diterima, atau (2) Ujicoba tidak cukup untuk menemukan kesalahan yang fatal.
Akhirnya, jika ujicoba tidak menghasilkan kesalahan, maka harus terjadi keraguan bahwa konfigurasi
ujicoba tersebut tidak berhasil dan masih terjadi kesalahan dalam software. Hal ini, akan dibuktikan oleh user
dan akan diperbaiki oleh pengembang dalam fase pemeliharaan. Hasil-hasil yang dikumpulkan selama ujicoba
dapat dievaluasi dengan cara formal.
Desain kasus Ujicoba (Test Case Design)
Desain ujicoba untuk software atau produk teknik lainnya sama sulitnya dengan desain inisial dari
produk itu sendiri. Dengan tujuan dari ujicoba itu sendiri yaitu, mendesain ujicoba yang tingkat kemungkinan
penemuan kesalahan yang tinggi dengan jumlah waktu dan usaha yang sedikit.
Selama beberapa dekade, metode desain ujicoba kasus telah dikembangkan. Metode ini menyediakan
pendekatan sistematik untuk ujicoba. Hal yang lebih penting yaitu, metode-metode ini menyediakan mekanisme yang dapat membantu memastikan kelengkapan ujicoba dan menyediakan tingkat kemungkinan yang tinggi dalam penemuan kesalahan pada software.
Semua produk yang dikembangkan (engineered) dapat diujicoba dengan salah satu cara dari 2 cara
berikut :
1. Mengetahui fungsi-fungsi yang dispesifikasikan pada produk yang didesain untuk melakukannya, ujicoba
dapat dilakukan dengan mendemonstrasikan setiap fungsi secara menyeluruh;
2. Mengetahui cara kerja internal dari produk, ujicoba dapat dilakukan untuk memastikan bahwa seluruh
operasi internal dari produk dilaksanakan berdasarkan pada spesifikasi dan komponen internal telah
digunakan secara tepat.
Pendekatan pertama adalah black box testing dan yang kedua adalah white box testing. Black box
testing menyinggung ujicoba yang dilakukan pada interface software. Walaupun didesain untuk menemukan
kesalahan, ujicoba blackbox digunakan untuk mendemonstrasikan fungsi software yang dioperasikan; apakah
input diterima dengan benar, dan ouput yang dihasilkan benar; apakah integritas informasi eksternal terpelihara.Ujicoba blackbox memeriksa beberapa aspek sistem, tetapi memeriksa sedikit mengenai struktur logikal internal software. White box testing didasarkan pada pemeriksaan detail prosedural. Alur logikal suatu software diujicoba dengan menyediakan kasus ujicoba yang melakukan sekumpulan kondisi dan/atau perulangan tertentu. Status dari program dapat diperiksa pada beberapa titik yang bervariasi untuk menentukan apakah status yang diharapkan atau ditegaskan sesuai dengan status sesungguhnya.Sepintas seolah-olah white box testing akan menghasilkan program yang 100% benar, yang diperlukan hanyalah mendefinisikan alur logikal, membangun kasus uji untuk memeriksa software tersebut danmengevaluasi hasil yang diperoleh. Sayangnya, ujicoba yang menyeluruh ini menghadirkan masalah logikal tertentu. Untuk sebuah program sederhana sekalipun, terdapat banyak alur logikal yang memungkinkan.Sehingga white box testing sebaiknya hanya dilakukan pada alur logikal yang penting. Struktur data-struktur data yang penting dapat diujikan dengan uji validitas. Atribut dari black box testing dan white box testing dapat dikombinasikan untuk digunakan bersama.