REKAYASA PERANGKAT
LUNAK (RPL)
Pendahuluan
Relevansi Perkuliahan
– Untuk mengetahui unjuk kerja dari sebuah kendaraan maka kendaraan tsb. diuji terlebih dahulu sebelum
dilempar ke pasaran
– PL sebagai sebuah sistem yang relatif kompleks
maka perlu dilakukan pengujian-pengujian sebelum diserahkan kepada kustomer
Tujuan Instruksional Khusus
Mahasiswa akan dapat menjabarkan pengertian
Agenda Pembahasan
Pengertian dan Urgensi
Prinsip-prinsip
Karakteristik dan Teknik
White Box Testing
Black Box Testing
Pengertian, Urgensi
Suatu proses eksekusi program yang ditujukan
untuk menemukan kesalahan (
Glen Myers
)
Sebuah elemen penting dari penjaminan kualitas
perangkat lunak dan merepresentasikan review
akhir dari spesifikasi, perancangan dan
implementasi (
Roger S. Pressman
)
Urgensi
: PL harus sedapat mungkin terbebas
dari segala kesalahan pada saat dieksekusi oleh
pengguna, sehingga PL harus diuji terlebih
dahulu untuk menemukan sebanyak mungkin
kesalahan sebelum digunakan oleh pengguna
Prinsip-prinsip
Menurut Davis :
– Semua pengujian harus bisa ditelusuri ke kebutuhan-kebutuhan kustomer
– Pengujian seharusnya direncanakan jauh sebelum pengujian dimulai
– Pengujian seharusnya dimulai dari yang kecil menuju ke besar
– Tidak mungkin untuk menguji seluruh kemungkinan jalur kesalahan
– Untuk lebih efektif, pengujian dilakukan oleh pihak ketiga (bukan s/w engineer maupun programmer)
Karakteristik, Teknik
Karakteristik menurut Kaner, Falk dan Nguyen :
– Pengujian yang baik adalah yang memiliki kemungkinan yang tinggi untuk menemukan kesalahan
– Pengujian yang baik adalah tidak duplikasi (redundant) – Pengujian yang baik adalah bisa mewakili beberapa
pengujian yang memiliki kemiripan (tujuan, waktu dan sarana)
– Pengujian yang baik adalah yang tidak terlalu sederhana dan tidak terlalu kompleks
Teknik :
– Pengujian kotak putih (white box testing) – Pengujian kotak hitam (black box testing)
White Box Testing
Disebut juga dengan pengujian struktur (
structural
testing
)
Teknik pengujian yang menggunakan struktur kontrol
dari prosedur yang terdapat dalam perancangan
untuk membuat kasus uji
Aspek-aspek pengujian :
– memastikan bahwa semua jalur algoritma telah diuji minimal sekali
– menguji seluruh keputusan lojik (true atau false) – mengeksekusi seluruh loop dalam batasan yang
ditentukan
White Box Testing
Jenis :
– Pengujian Jalur Dasar (Basis Path Testing)
– Pengujian Struktur Kontrol (Control Structure Testing)
Pengujian Jalur Dasar (
Basis Path Testing
)
– Pengujian kotak putih yang dibuat berdasarkan ukuran tingkat kompleksitas dari algoritma hasil perancangan
– Langkah-langkah :
Mendefinisikan flow graph berdasarkan mapping dari flow chart atau struktur dari algoritma
Menentukan ukuran kompleksitas (cyclomatic complexity) Mendefinisikan kasus uji
Basis Path Testing : Flow Graph
Notasi sederhana yang merepresentasikan aliran kontrol Notasi yang digunakan :
– proses dan keputusan yg berurutan dimapping menjadi 1 node
– setiap edge harus berakhir pada sebuah node (walaupun tdk merepresentasikan proses apapun)
– region : daerah yang dibatasi oleh edge dan node
– predicate node : node yg merupakan kondisi (2 atau lebih edge
akan keluar dari sini)
sequence if while until case
Basis Path Testing : Flow Graph
Transformasi dari
flow chart
ke
flow graph
:
1 2 3 4 5 6 7 8 9 10 11 1 2,3 6 8 7 9 10 11 4,5 R1 R2 R3 R4 predicate node
Basis Path Testing : Cyclomatic Complexity
Definisi
: angka yang menyatakan jumlah jalur
independen/jalur dasar dari sebuah program
(representasi dari kompleksitas program)
Menunjukkan jumlah pengujian (kasus uji) yang
harus dieksekusi
Jalur independen (
independent path
) : setiap jalur
dalam program yang memiliki setidaknya satu set
pernyataan (
processing statement
) atau satu
kondisi yang baru sama sekali (blm digunakan
oleh jalur sebelumnya)
Basis Path Testing : Cyclomatic Complexity
Contoh :
1 2,3 6 8 7 9 10 11 4,5 R1 R2 R3 R4 Jalur independen : – jalur 1 : 1-11 – jalur 2 : 1-2-3-4-5-10-1-11 – jalur 3 : 1-2-3-6-8-9-10-1-11 – jalur 4 : 1-2-3-6-7-9-10-1-11Bukan Jalur independen :
Basis Path Testing : Cyclomatic Complexity
Perhitungan matematis
cyclomatic complexity
–
V(G) :
– V(G) = jumlah region – V(G) = E – N + 2
– V(G) = P + 1, dimana P – predicate node
Contoh perhitungan :
– V(G) = 4, ada 4 region R1, R2, R3, R4 – V(G) = 11 edges – 9 nodes + 2 = 4
Basis Path Testing :
Contoh
Contoh : prosedur
average
PROCEDURE average;
INTERFACE RETURNS average, total.input, total.valid; INTERFACE ACCEPTS value, minimum, maximum;
TYPE value[1:100] IS SCALAR ARRAY;
TYPE average, total.input, total.valid, minimum, maximum, sum IS SCALAR;
TYPE i IS INTEGER; i = 1;
total.input = total.valid = sum = 0;
DO WHILE value[i] <> -999 AND total.input < 100 increment total.input by 1;
IF value[i] >= minimum AND value[i] <= maximum THEN increment total.valid by 1;
sum = sum + value[i]; ELSE skip;
ENDIF
increment i by 1; ENDDO
IF total.valid > 0
THEN average = sum / total.valid; ELSE average = -999; ENDIF END average 2 3 1 4 6 5 7 8 9 10 11 12 13
Basis Path Testing :
Contoh
Prosedur
average
:
flow graph
1 2 3 4 5 6 9 7 8 12 11 10 13 R1 R2 R3 R4 R5 R6 P P Cyclomatic complexity : – V(G) = 6 regions – V(G) = 17E – 13N + 2 = 6 – V(G) = 5P + 1 = 6 Jalur independen : – jalur 1 : 1-2-10-11-13 – jalur 2 : 1-2-10-12-13 – jalur 3 : 1-2-3-10-11-13 – jalur 4 : 1-2-3-4-5-8-9-2-… – jalur 5 : 1-2-3-4-5-6-8-9-2-… – jalur 6 : 1-2-3-4-5-6-7-8-9-2-…Basis Path Testing :
Contoh
Prosedur
average
:
test case
Jalur 1: value(k) = valid input, dimana k < i untuk 2 < i < 100 value(i) = -999, dimana 2 < i < 100
exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya Note : jalur 1 tdk bisa diuji sendiri, bag. dr. jalur 4,5,6 Jalur 2: value(i) = -999
exp.res. = nilai rata2 adl. -999, nilai total pd nilai awal Jalur 3: mulai dari proses 101 atau lebih
hasil dari 100 pertama harus valid exp.res. = idem jalur 1
Jalur 4: value(i) = valid input, dimana i < 100 value(k) < minimum, dimana k < i
exp.res. = nilai rata2 valid sesuai dg nilai k dan totalnya Jalur 5: value(i) = valid input, dimana i < 100
value(k) > maximum, dimana k < i
exp.res. = nilai rata2 valid sesuai dg nilai n dan totalnya Jalur 6: value(i) = valid input, dimana i < 100
Control Structure Testing
Pengujian struktur kontrol, sebagai pelengkap
bagi pengujian jalur dasar (
basis path testing
)
Jenis :
– Pengujian Kondisi (Condition Testing) – Pengujian Loop (Loop Testing)
Pengujian Kondisi (
Condition Testing
)
– Pengujian kotak putih yang dibuat untuk menguji kondisi lojik dalam sebuah program
– Jenis-jenis kondisi :
Kondisi Sederhana (simple condition) Kondisi Majemuk (compound condition)
Condition Testing
Kondisi Sederhana (
Simple Condition
)
– Terdiri dari sebuah ekspresi relasi atau sebuah ekspresi boolean – Ekspresi relasi : E1 <operator relasi> E2
dimana, E1 dan E2 adl. ekspresi aritmatika operator relasi : <, <, =, ≠, >, >
Contoh : IF skor < 45 THEN nilai = ‘E’
END IF
– Ekspresi boolean : berisi variabel boolean, tanpa eksp. relasi Contoh : selesai: boolean
IF selesai THEN
//lakukan sesuatu
Condition Testing
Kondisi Majemuk (
Compound Condition
)
– Terdiri dari dua atau lebih kondisi sederhana, operator boolean, dan tanda kurung
– Operator boolean : OR (|), AND (&), NOT (!) Contoh : skor, absen: float
nilai: string
IF (skor > 45 AND skor < 55) OR
absen < 0.8 THEN
nilai = ‘D’
ELSE
//lakukan sesuatu
Condition Testing
Strategi Pengujian
– Pengujian Cabang (branch testing)
Pengujian dilakukan untuk setiap cabang true atau false
dari kondisi, minimal sekali dilakukan untuk setiap cabang Contoh : IF skor < 45 THEN
nilai = ‘E’ END IF
Kasus uji: - TRUE, skor < 45 - FALSE, skor > 45
Condition Testing
Strategi Pengujian
– Pengujian Domain (domain testing)
Pengujian dilakukan untuk setiap kemungkinan nilai dari ekspresi kondisi
Untuk ekspresi relasi : E1 <operator relasi> E2, perlu 3 kasus uji yaitu E1 > E2, E1 = E2 dan E1 < E2
Contoh : IF skor < 45 THEN
nilai = ‘E’ END IF
Kasus uji:1. E1 > E2 : skor bernilai lebih dari 45 2. E1 = E2 : skor bernilai 45
Condition Testing
Strategi Pengujian
– Pengujian Domain (domain testing) - lanjutan
Untuk ekspresi boolean : dengan n variabel maka perlu 2n kasus uji
Contoh : IF selesai THEN
//lakukan sesuatu END IF
Loop Testing
Pengujian kotak putih yang dilakukan untuk menguji validitas dari struktur loop
Jenis-jenis loop :
Simple loop : dg. maks. n kali
– Kasus uji tidak melewati loop sama sekali – Kasus uji m kali melewati loop, dimana m < n – Kasus uji n-1, n, n+1 melewati loop
simple loop
Loop Testing
Nested loop : loop bersarang/loop di dalam loop, jumlah kasus uji semakin besar
– Pengujian dimulai dari loop paling dalam. Set iterator loop yang lain dengan nilai minimum
– Lakukan pengujian simple loop untuk loop paling dalam, sementara loop luarnya diset pada iterator yang minimum – Contoh : i, j: integer
DO WHILE i < 100 j = 0
DO WHILE j < 10
Tampilkan nilai j ke layar Naikkan nilai j dengan 1 ENDDO
Black Box Testing
Disebut juga dengan pengujian perilaku (
behavioral
testing
) atau pengujian fungsi (
functional testing
)
Fokus pada kebutuhan fungsi (
functional
requirement
) dari PL
Sebagai pelengkap bagi
white box testing
(bukan
sebagai alternatif)
Jenis-jenis :
– Pengujian klas ekivalen (equivalence class testing) – Pengujian batas (limit testing)
– Pengujian acak (robustness testing)