Pengujian perangkat lunak adalah elemen
kritis dari jaminan kualitas perangkat lunak dan merepresentasikan
kajian pokok dari spesifikasi, desain dan pengkodean. Pengujian menyajikan anomali
yang menarik bagi perekayasa perangkat lunak. Pada proses perangkat lunak,
perekayasa pertama-tama berusaha membangun perangkat lunak dari konsep
abstrak ke implementasi yang dapat dilihat, baru dilakukan pengujian.
Perekayasa menciptakan sederetan test case yang dimaksudkan untuk
“membongkar” perangkat lunak yang sudah dibangun. Pada dasarnya, pengujian merupakan
satu langkah dalam proses rekayasa perangkat lunak yang dapat dianggap (paling
tidak secara psikologis) sebagai hal yang destruktif daripada
konstruktif.
1. Sasaran-sasaran
pengujian
Beberapa sasaran pengujian diantaranya :
a. Pengujian
adalah proses eksekusi suatu program dengan maksud menemukan kesalahan.
b. Test
case yang baik adalah test case yang memiliki probabilitas tinggi untuk
menemukan kesalahan yang belum pernah ditemukan sebelumnya.
c. Pengujian
yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah
ditemukan sebelumnya.
Sasaran tersebut mengimplikasikan adanya
perubahan titik pandang yang dramatis. Sasaran itu berlawanan dengan pandangan
yang biasanya dipegang yang menyatakan bahwa pengujian yang berhasil adalah
pengujian yang tidak ada kesalahan yang ditemukan. Sasarannya adalah mendesain pengujian
yang secara sistematis mengungkap kelas kesalahan yang berbeda dan
melakkukannya dengan jumlah waktu dan usaha minimum.
Bila pengujian dilakukan secara sukses
(sesuai dengan sasaran tersebut), maka akan ditemukan kesalahan di dalam
perangkat lunak. Sebagai keuntungan sekunder, pengujian menunjukkan bahwa fungsi
perangkat lunak bekerja sesuai dengan spesifikasi dan bahwa persyaratan kinerja
telah dipenuhi. Sebagai tambahan, data yang dikumpulkan pada saat pengujian
dilakukan memberikan indikasi yang baik mengenai reliabilitas perangkat lunak
dan beberapa menunjukkan kualitas perangkat lunak secara keseluruhan.
2. Prinsip
Pengujian
Prinsip Pengujian meliputi :
a.
Semua pengujian harus dapat ditelusuri sampai ke persyaratan pelanggan.
b.
Pengujian harus direncanakan lama sebelum pengujian itu mulai.
c.
Pengujian harus mulai dari yang kecil dan berkembang ke pengujian yang
besar.
d.
Pengujian yang mendalam tidak mungkin.
e.
Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak
ketiga yang independent.
3. Testabilitas
Testabilitas
perangkat lunak adalah seberapa mudah sebuah program komputer dapat diuji. Karena
pengujian sangat sulit, perlu diketahui apa yang dapat dilakukan untuk
membuatnya menjadi mudah. Kadang-kadang pemrogram beresedia melakukan hal-hal
yang akan membantu proses pengujian dan checklist mengenai masalah-masalah
desai yang mudah, fitur dan lain sebagainya yang berguna dalam bernegosiasi
dengan mereka.
Checklist
berikut memberikan serangkaian karakteristik yang membawa kepada perangkat
lunak yang dapat diuji :
a. Operabilitas.
“Semakin baik dia bekerja, semakin efisien dia dapat diuji”
1) Sistem
memiliki beberapa bug (bug menambah analisis dan biaya pelaporan keproses
pengujian).
2) Tidak
ada bug yang memblok eksekusi pengujian Produk berkembang di dalam tahapan fungsional
(memungkinkan pengemabangan dan pengujian secara simultan).
b.
Observabilitas.
“Apa yang Anda lihat adalah apa yang Anda uji”.
1) Output
yang berbeda dikeluarkan oleh masing-masing input.
2) Tahap
dan variabel sistem dapat dilihat atau diantrikan selama eksekusi.
3) Sistem
dan variabel yang lalu dapat dilihat atau diantrikan (misal : log transaksi).
4) Semua
faktor yang mempengaruhi output dapat dilihat.
5) Kesalahan
itnernal dideteksi secara otomatis melalui mekanisme selftesting.
6) Kesalahan
internal dilaporkan secara otomatis.
7) Kode
sumber dapat diakses
c.
Kontrolabilitas. “Semakin
baik kita dapat mengontrol perangkat luank, semakin banyak pengujian yang dapat
diotomatisasi dan dioptimalkan”.
1) Semua
output yang mungkin dapat dimnculkan melalui beberapa kombinasi input.
2) Semua
kode dapat dieksekusi melalui berbagai kombinasi input.
3) Keadaan
dan varibale perangkat lunak dan perangkat keras dapat dikontrol secara langsung
oleh perekayasa pengujian.
4) Format
input dan output konsistem dan terstruktur.
5) Pengujian
dapat dispesifikasi, dioptimasi dan direproduksi dengan baik
d.
Dekomposabilitas.
“Dengan mengontrol ruang lingkup pengujian, kita dapat dengan lebih cepat
mengisolasi masalah dan melakuakn pengujian kembali secara lebih halus”.
1) Sistem
perangkat luank dibangun dari modul-modul independen.
2) Modul-modul
perangkat lunak dapat diuji secara independen.
e.
Kesederhanaan.
“Semakin sedikit yang diuji, semakin cepat kita dapat mengujinya”.
1) Kesederhanaan
fungsional (seperti, kumpulan fitur adalah kebutuhan minimum untuk memenuhi
persyaratan).
2) Kesederhanaan
struktural (seperti, arsitektur dimodularisasi untuk membatasi penyebaran
kesalahan).
3) Kesederhanaan
kode (seperti, standar pengkodean diadopsi demi kemduahan inspeksi dan
pemeliharaan).
f.
Stabilitas.
“Semakin sedikti perubahan, semakin sedikit ganggunan dalam pengujian”.
1) Pengujian
ke perangkat lunak tidak sering.
2) Perubahan
ke perangkat lunak terkontrol.
3) Perubahan
ke perangkat lunak memvalidasi pengujian yang sudah ada.
4) Kegagalan
perangkat lunak dapat diperbaiki dengan baik
g.
Kemampuan untuk dapat
dipahami. “Semakin banyak informasi yang kita
miliki, semakin halus pengujian yang akan dilakukan”
1) Desain
dipahami dengan baik.
2) Ketergantungan
di antara komponen internal, eksternal dan yang dipakai bersama, dipahami
dengan baik.
3) Perubahan
ke desai dikomunikasikan.
4) Dokumentasi
teknik dapat diakses dengan cepat.
5) Dokumentasi
teknis diorganisasikan dengan baik.
6) Dokumentasi
teknis spesifik dan detail.
7) Dokumentasi
teknis akurat
Berikut adalah atribut-atribut pengujian
yang “baik” :
a.
Pengujian yang baik
memiliki probabilitas yang tinggi untuk menemukan kesalahan. Untuk
mencapai hal ini, penguji harus memahami perangkat lunak dan berusaha
mengembangkan gambaran mental mengenai bagaimana perangkat lunak dapat gagal.
Idealnya kelas-kelas kegagalan itu diselidiki. Sebagai contoh, kelas kegagalan
potensial pada GUI adalah kegagalan untuk mengenali posisi mouse yang sesuai.
Serangkaian pengujian akan dirancang untuk menguji mouse untuk memperlihatkan
kesalahan di dalam pengenalan posisi mouse.
b.
Pengujian yang baik
tidak redudan. Waktu pengujian dan sumber daya
terbatas. Tidak ada manfaatnya melakukan pengujian dengan tujuan yang sama
dengan pengujian lainnya. Setiap pengujian arus memiliki tujuan yang berbeda.
c.
Pengujian yang baik
seharusnya “jenis terbaik”. Dalam suatu kelompok
pengujian yang memiliki tujuan yang serupa, batasan waktu dan sumber daya dapat
menghalangi eksekusi hanya kelompok kecil dari pengujian tersebut. Pada kasus
semacam ini maka pengujian yang memiliki kemungkinan paling besar untuk
mengungkap seluruh kelas kesalahan yang tinggi harus digunakan.
d.
Pengujian yang baik
tidak boleh terlalu sederhana atau terlalu kompleks. Secara
umum masing-masing test case harus dieksekusi secara terpisah.
2.2. Desain Test Case
Lebih dari dua dekade terakhir telah
berkembang berbagai metode desai test case untuk perangkat lunak.
Metode-metode tersebut memebrikan kepada pengembang sebuah pendekatan yang
sistematik ke pengujian. Yang lebih penting, metode itu memberikan mekanisme
yang dapat membantu memastikan kelengkapan pengujian dan memberikan
kemungkinan tertinggi untuk mengungkap kesalahan pada perangkat lunak.
Semua produk yang direkayasa dapat diuji dengan satu atau dua cara : (1) denganmengetahui
fungsi yang ditentukan dimana produk dirancang untuk melakukannya, pengujian
dapatdilakukan untuk memperlihatkan bahwa masing-masing fungsi beroperasi
sepenuhnya, pada waktu yang sama mencari kesalahan pada setiap fungsi; (2) mengetahui
kerja internal suatu produk, maka pengujian dapat dilakukan untuk memastikan
bahwa “semua roda gigi berhubungan”, yaitu operasi internal bekerja sesuai
dnegan spesifikasi dan semua komponen ineternal telah diamati dengan baik. Pendekatan
pengujian pertama disebut pengujian black box dan yang kedua
disebut white box. Jika perangkat lunak komputer
dipertimbangkan, maka pengujian black box berkaitan dengan pengujian yang
dilakukan pada interface perangkat lunak.
Meskipun didesain untuk mengungkap
kesalahan, pengujian black box digunakan untuk memperlihatkan bahwa
fungsi-fungsi perangkat lunak adalah operasional, bahwa input diterima dengan
baik dan output dihasilkan dengan tepat dan integrasi informasi eksternal
(seperti file data) dipelihara. Pengujian balck box
menguji
beberapa aspek dasar suatu sistem dengan sedikit memperhatikan struktur logika
internal perangkat lunak tersebut.
Pengujian white box perangkat lunak
didasarkan pada pengamatan yang teliti terhadap detail prosedural. Jalur-jalur
logika yang melewati perangkat lunak diuji dengan memberikan test case yang
menguji serangkaian kondisi dan atau loop tertentu. “Status program
tersebut”dapat diuji pada pada berbgai titik untuk menentukan apakah status
yang diharapkan atau dituntut sesuai dengan status aktual.
2.3. Pengujian White-Box
Pengujian white box, kadang-kadang
disebut pengujian glass box, adalah metode desaintest case yang
menggunakan struktur kontrol desain prosedural untuk memperoleh test case.
Dengan menggunakan metode pengujian white box, perekayasa sistem dapat
melakukan test case yang :
1.
memberikan jaminan
bahwa semua jalur independen pada suatu modal telah digunakan, paling tidak
satu kali.
2.
Menggunakan semua
keputusan logis pada sisi true dan false.
3.
Mengeksekusi semua loop
pada batasan mereka dan bahasa operasional mereka.
4.
Menggunakan struktur
data internal untuk menjamin validitasnya.
Pada titik ini, dapat diajukan
pertanyaan yang beralasan, yaitu “Mengapa menghabiskan waktu dan energi untuk
menguji logika jika kita dapat dengan lebih baik memperluas kerja yang dapat
memastikan bahwa persyaratan program telah dipenuhi ?” Bila dinyatakan dengan
cara lain, mengapa kita tidak menggunakan semua energi kita untuk melakukan
pengujian black box? Jawabannya ada pada sifat cacat perangkat lunak :
· Kesalahan
logis dan asumsi yang tidak benar berbanding terbalik dengan probabilitas jalur
program yang akan dieksekusi. Kesalahan cenderung
muncul dalam kerja kita pada saat kita mendesain dan mengimplementasi fungsi,
kondisi atau kontrol yang berada di luar mainstraim. Pemrosesan setiap hari
cenderung dipahami dengan baik sementara pemrosesan “kasus khusus” cenderung
berantakan.
· Kita
sering percaya bahwa jalur logis mungkin tidak akan diseksekusi bila pada kenyataannya
akan diseksekusi pada basis reguler. Aliran logika
dari suatu program kadangkadang bersifat konterintuitif yang berarti asumsi
kita yang tidak kita sasari mengenai aliran dan data kontrol dapat menyebabkan
kita membuat kesalahan desai yang akan terungkap hanya setelah pengujian jalur
mulai.
· Kesalahan
tipografis adalah random. Bila sebuah program
diterjemahkan ke dalam kode sumber bahasa pemrograman maka dimungkinkan akan
terjadi banyak kesalahan pengetikan. Beberapa akan ditemukan dengan mekanisme
pengecekan sintaks, tetapi yang lainnya akan tetap tidak terdeteksi sampai
pengujianmulai.
Masing-masing alasan tersebut memberikan
suatu argurmen untuk melakukan pengujian white box. Pengujian black box, tidak
peduli seberapa cermat dilakukan, dapat menangkap bentuk kesalahan tersebut.
2.4. Pengujian Basis-Path
Pengujian basis path adalah teknik
pengujian white box yang diusulkan pertama kali oleh Tom McCabe. Metode
basis ini memungkinkan desainer test case mengukur kompleksitas logis dari desai
prosedural dan menggunakannya sebagai pedoman untuk menetapkan basis set dari
jalur eksekusi. Test case yang dilakukan untuk menggunakan basis set
tersebut dijamin menggunakan setiap statment di dalam program paling
tidak sekali selama pengujian.
1. Notasi
Diagram Alir
Sebelum
metode babsis path diperkenalkan, terlebih dahulu akan dijelaskanmengenasi notasi
sederhana dalam bentuk diagram alir (grafik alir). Diagral alir menggambarkan
aliran kontrol logika yang menggunakan notasi seperti ditunjukkan pada
gambar 1. Masing-masing gagasan terstruktur memiliki simbol diagram alir
yang sesuai.
Gambar 2 merepresentasikan desain
prsedural grafik alir. Paga gambar tersebut tampak struktrul kontrol progrm.
Gambar 3 memetakan grafik alir tersebut ke dalam grafik alir yang sesuai. Pada
gambar tersebut masing-masing lingkaran disebut simpulu grafik alir,
merepresentasikan satu atau lebih statemen prosedural. Urutan kotak proses dan
belahketupat keputusan dapat memetakan simpul tunggal. Anak panah pada grafik
alir tersebut disebut edges atau links, merepresentasikan aliran kontrol dan
analog dengan anak panah bagan alir. Edge harus berhenti pada suatu simpul, mesikipun
nila simpul tersebut tidak merepresentasikan statemen prosedural (misal simpul
untuk bangun if-then-else). Area yang dibatasi oleh edge dan simpul disebtu
region. Pada saat menghitung region kita perlu memasukkan area di luar grafik
dan menghitungnya sebgai sebuah region.
EmoticonEmoticon