Agenda Pembahasan Pengertian dan Urgensi Prinsip-prinsip Karakteristik dan Teknik White Box Testing Black Box Testing Strategi Pengujian Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 memvalidasi struktur data internal Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
White Box Testing Jenis : Pengujian Jalur Dasar (Basis Path Testing) Pengujian Struktur Kontrol (Control Structure 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 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 - node (N) - edge/link (E) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Basis Path Testing : Flow Graph Transformasi dari flow chart ke flow graph : 1 2 3 4 5 6 7 8 9 10 11 1 predicate node 2,3 6 4,5 R2 R1 7 8 R3 9 10 R4 11 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Basis Path Testing : Cyclomatic Complexity Contoh : 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-11 1 2,3 6 4,5 R2 R1 7 8 R3 Bukan Jalur independen : 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11 9 10 R4 11 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 V(G) = 3 predicate node + 1 = 4 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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; END average 2 3 1 6 4 5 7 8 9 10 11 12 13 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Basis Path Testing : Contoh Prosedur average : flow graph Cyclomatic complexity : V(G) = 6 regions V(G) = 17E – 13N + 2 = 6 V(G) = 5P + 1 = 6 1 P 2 R4 10 3 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-… 12 11 4 R5 13 5 R3 R6 P R1 6 8 R2 7 9 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 exp.res. = nilai rata2 valid sesuai dg nilai n dan totalnya Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 kotak putih yang dibuat untuk menguji kondisi lojik dalam sebuah program Jenis-jenis kondisi : Kondisi Sederhana (simple condition) Kondisi Majemuk (compound condition) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 END IF Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 3. E1 < E2 : skor bernilai kurang dari 45 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 Kasus uji:1. selesai=TRUE 2. selesai=FALSE Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 nested loop Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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 Naikkan nilai i dengan 1 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
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) Pengujian kebutuhan (requirements testing) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Equivalence Class Testing Dikenal juga sbg. Pengujian Partisi Ekivalen (equivalence partitioning testing) Pengujian kotak hitam yg. membagi domain masukan sebuah program menjadi klas-klas data dimana kasus uji nantinya akan diturunkan Satu kasus uji mengkover satu klas kesalahan Kumpulan data dari setiap klas data memiliki pengaruh yang sama terhadap program Mengurangi jumlah kasus uji : efisiensi Sebuah klas ekivalen merepresentasikan sebuah kondisi masukan yg mewakili keadaan valid atau tidak valid Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Equivalence Class Testing Pedoman umum penentuan klas ekivalen : Kondisi masukan adalah sebuah rentang : 1 klas ekivalen valid dan 2 klas ekivalen tidak valid Contoh : Sebuah counter hanya menghitung 1 – 999 (req.) - Kasus uji valid : nilai [1..999] - Kasus uji tdk valid : counter < 1, counter > 999 Kondisi masukan adalah sebuah nilai tertentu : 1 klas ekivalen valid dan 2 klas ekivalen tidak valid Sebuah list nama terdiri 1 - 6 (req.) - Kasus uji valid : list terdiri [1..6] nama - Kasus uji tdk valid : - tdk ada nama sama sekali - list terdiri > 6 nama Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Equivalence Class Testing Pedoman umum penentuan klas ekivalen (lanjutan) : Kondisi masukan adl. sebuah anggota dari suatu kumpulan : 1 klas ekivalen valid per anggota dan 1 klas ekivalen tidak valid Contoh : Merk mobil yg diperbolehkan adl. Toyota, Honda, Daihatsu dan Suzuki (req.) - Kasus uji valid : Toyota, Honda, Daihatsu, Suzuki - Kasus uji tdk valid : Hyundai atau KIA atau Audi Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Equivalence Class Testing Contoh kasus : Req.: - masukan dari program adl. integer [-100,100] - keluarannya adl. tanda ‘+’/’-’ sesuai nilai masukan (0 dianggap positif) Klas ekivalen valid : - nilai [-100,-1] akan menghasilkan ‘-’ - nilai [0,100] akan menghasilkan ‘+’ Klas ekivalen tidak valid : - integer < -100 - integer > 100 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Limit Testing Dikenal juga sbg. Pengujian Analisis Nilai Batas (boundary value analysis testing - BVA) Pengujian kotak hitam yg. menguji nilai-nilai yang terdapat di perbatasan (limit) Pedoman umum - jika suatu kondisi masukan adalah sebuah rentang antara a dan b maka kasus ujinya (2 kasus valid dan 2 kasus tidak valid): - nilai a, b - nilai > b (mendekati b), nilai < a (mendekati a) Contoh : Jika masukan data valid adl. [-1,0;1,0] Kasus uji valid : nilai -1,0 dan 1,0 Kasus uji tdk. valid : nilai -1,001 dan 1,001 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Robustness Testing Pengujian kotak hitam dengan memasukkan nilai-nilai yang diluar dari kebutuhan yang ditentukan (requirement) Tujuan : untuk membuktikan bahwa tidak ada even yang kacau (catasthropic : hang, shutdown, dll.) pada P/L dengan dimasukkannya nilai-nilai yang tidak normal Contoh : Jika masukan sebuah password valid adl. 5 karakter [a..z;A..Z] Kasus uji :masukkan sembarang karakter dan sembarang jumlah karakter, misal : z##12 atau iu831280j Ex. result:P/L tidak boleh mengalami hang Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Requirements Testing Pengujian kotak hitam yang dilakukan untuk menguji apakah kebutuhan (requirement : functional, performance, security, dll.) yang ditentukan selama proses analisis kebutuhan terpenuhi atau tidak Setiap kebutuhan harus bisa dilacak ke kasus uji dengan menggunakan traceability matrix Traceability matrix : No. Requirements Test Name Test Case Remark 1. SRS_REQ_XXX1 Measure_Data_T1 Get_Marked_T4.1 .... SRS_REQ_XXX2 Get_Traced_T4.2 Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT
Strategi Aktifitas untuk mengintegrasikan kasus2 uji dari beberapa teknik yang ada ke dalam sebuah rangkaian langkah-langkah pengujian yang terencana Urgensi : untuk efisiensi dan efektifitas Tahapan : Pengujian Unit (unit testing) Pengujian Integrasi (integration testing) Pengujian Validasi (validation testing) Pengujian Sistem (system testing) Bahan Kuliah RPL - Pengujian PL / Tri Astoto K.,ST.MT