Control Flow Testing Software Quality Eko Prasetyo Teknik Informatika Univ. Pembangunan Nasional Veteran Jawa Timur 2011
Basic Idea Dua jenis statemen dasar dalam unit program adalah assignment statements dan conditional statements. Statemen assignment secara eksplisit direpresentasikan menggunakan simbol assignment “=“, seperti : x = 2*y, dimana x dan y are variables. Condition adalah inti dalam statement kondisi, seperti: if(), for() loop, while() loop, and goto. Misal, dalam if(x! = y), kita menguji ketidaksamaan x dan y. Pemanggilan fungsi adalah mekanisme untuk memberikan abstraksi desain program. Karena fungsi menerima input dan memberikan output, maka sebuah fungsi sebenarnya menjalankan serangkaian statemen dari titik masukan sampai ke titik keluaran. Eksekusi serangkaian instruksi dari titik masuk ke titik keluar disebut dengan lintasan (path).
Lintasan (path) unit program Sebuah unit program bisa mempunyai sejumlah path, banyak, bahkan tak terhingga jumlahnya. Sebuah path dikarakteristikkan dengan sebuah input dan sebuah output yang diharapkan. Sebuah masukan bisa memberikan keluaran yang berbeda karena lintasan yang dilalui juga berbeda. Semakin banyak kemungkinan pengujian, akan memberikan kualitas unit yang lebih baik. Control flow testing, dilakukan oleh programmer.
Outline Control Flow Testing
Simbol Control Flow Graph (CFG)
Contoh CFG Unit program untuk menentukan bilangan terbesar dari 3 bilangan. Koding: A, B, C 1 A, B, C if A>B if A>C max = A else max = B end if B>C max = C 2 T F A > B 3 4 A > C B > C T F T F 5 6 7 8 max = A max = C max = B max = C
Jalur yang mungkin terjadi A, B, C 1 Jalur yang mungkin terjadi 2 Path Rantai Jalur 1 1-2(T)-3(T)-5 2 1-2(T)-3(F)-6 3 1-2(F)-4(T)-7 4 1-2(F)-4(F)-8 T F A > B 3 4 A > C B > C T F T F 5 6 7 8 max = A max = C max = B max = C Input Domain dan Jalur yang mungkin terjadi Input Domain Jalur A B C Terbesar pertama Terbesar kedua Terbesar ketiga 1-2(T)-3(T)-5 1-2(F)-4(T)-7 1-2(T)-3(F)-6 1-2(F)-4(F)-8
Pengujian KASUS UJI INTERPRETASI MASUKAN JALUR KELUARAN DIHARAPKAN A B C 1 10 8 5 1-2(T)-3(T)-5 max = 10 2 3 1-2(F)-4(T)-7 4 1-2(T)-3(F)-6 6 1-2(F)-4(F)-8 7 12 max = 12 9 15 max = 15 max = 3
Latihan Jika A adalah bilangan genap maka kalikan A dengan 2, kemudian hitung jumlah dari kelipatan 5 untuk 2*A Jika A adalah bilangan ganjil maka kalikan A dengan 2 kemudian ditambah 1, kemudian hitung jumlah dari kelipatan 10 untuk 2*A+1 Misal: A= 2, B=2*A=4, H=1 A= 4, B = 2*A = 8, H = 2 A = 10, B = 2*A=20, H=4 A = 3, B = 2*A+1=7, H=1 A= 7, B = 2*A+1 = 15, H=2 A = 11, B = 2*A+1 = 23, H=3
Latihan 1 A = ? sisa = A mod 2 H = 0; if sisa == 0 B = 2*A while B > 5 H = H+1 B = B - 5; end while else B = 2*A+1 while B > 10 B = B - 10; End if 2 F T sisa == 0 4 3 B = 2*A B = 2*A+1 5 6 B > 5 B > 10 F F T T 7 9 H = H + 1 B = B - 5 H = H + 1 B = B - 10 10 H = H + 1
1 2 F T 4 3 5 6 F F Pengujian T T 7 9 10 B > 5 B > 10 A = ? sisa = A mod 2 H = 0 Input domain dan Jalur yang mungkin terjadi 1 Input Domain Jalur A Genap 1-2(T)-3-5(T)-7-5(F)-10 A Genap 1-2(T)-3-5(F)-10 A Ganjil 1-2(F)-4-6(T)-9-6(F)-10 1-2(F)-4-6(F)-10 2 F T sisa == 0 4 3 B = 2*A B = 2*A+1 5 6 B > 5 B > 10 F F Pengujian T T 7 9 KASUS UJI JALUR KELUARAN DIHARAPKAN A = 2 1-2(T)-3-5(F)-10 H = 1 A = 4 A = 10 A = 3 A = 7 A = 11 H = H + 1 B = B - 5 H = H + 1 B = B - 10 10 H = H + 1
1 2 F T 4 3 5 6 F F Pengujian T T 7 9 10 B > 5 B > 10 A = ? sisa = A mod 2 H = 0 Input domain dan Jalur yang mungkin terjadi 1 Input Domain Jalur A Genap 1-2(T)-3-5(T)-7-5(F)-10 A Genap 1-2(T)-3-5(F)-10 A Ganjil 1-2(F)-4-6(T)-9-6(F)-10 1-2(F)-4-6(F)-10 2 F T sisa == 0 4 3 B = 2*A B = 2*A+1 5 6 B > 5 B > 10 F F Pengujian T T 7 9 KASUS UJI JALUR KELUARAN DIHARAPKAN A = 2 1-2(T)-3-5(F)-10 H = 1 A = 4 1-2(T)-3-5(T)-7-5(F)-10 H = 2 A = 10 1-2(T)-3-5(T)-7-5(T)-7-5(T)-7-5(F)-10 H = 4 A = 3 1-2(F)-4-6(F)-10 A = 7 1-2(F)-4-6(T)-9-6(F)-10 A = 11 1-2(F)-4-6(T)-9-6(T)-9-6(F)-10 H = 3 H = H + 1 B = B - 5 H = H + 1 B = B - 10 10 H = H + 1