TIS 4

52
STIKOM - Romeo, S.T. © 2006 Testing & Implementasi Sist White Box Testing

Transcript of TIS 4

Testing & Implementasi SistemWhite Box Testing (2)

STIKOM - Romeo, S.T. 2006

Basis Path Testing

(Cont.)

Merupakan teknik white box testing yang dikenalkan oleh Tom McCabe [MC76]. Metode identifikasi yang berdasarkan pada jalur, struktur atau koneksi yang ada dari suatu sistem ini biasa disebut juga sebagai branch testing, karena cabangcabang dari kode atau fungsi logika diidentifikasi dan dites, atau disebut juga sebagai control-flow testing .STIKOM - Romeo, S.T. 2006

Basis Path Testing

(Cont.)

Basis path hadir dalam 2 bentuk, yaitu: Zero Path: Jalur penghubung yang tidak penting atau jalur pintas yang ada pada suatu sistem. One Path: Jalur penghubung yang penting atau berupa proses pada suatu sistem.

Konsep utama basis path: Tiap basis path harus diidentifikasi, tidak boleh ada yang terabaikan (setidaknya dites 1 kali). Kombinasi dan permutasi dari suatu basis path tidak perlu dites.

STIKOM - Romeo, S.T. 2006

Basis Path Testing Notasi Flow Graph

(Cont.)

STIKOM - Romeo, S.T. 2006

Basis Path Testing Contoh1 Do while records remain read record; 2 Calculate proses; 3 If record field 1 = 0 4 Then process record; 5 Store in buffer; Increment counter; 6 Else If record field 2 = 0 7Then reset counter; 8 Else process record; Store in file; 9Endif 10 Endif 11 Enddo End

(Cont.)

STIKOM - Romeo, S.T. 2006

Basis Path Testing

(Cont.)

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) Adalah pengukuran software yang memberikan pengukuran kuantitatif dari kompleksitas logika program. Pada konteks metode basis path testing , nilai yang dihitung bagi cyclomatic complexity menentukan jumlah jalur-jalur yang independen dalam kumpulan basis suatu program dan memberikan jumlah tes minimal yang harus dilakukan untuk memastikan bahwa semua pernyataan telah dieksekusi sekurangnya satu kali. Jalur independen adalah tiap jalur pada program yang memperlihatkan 1 kelompok baru dari pernyataan proses atau kondisi baru.STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) Berdasarkan urutan alurnya, didapatkan suatu kelompok basis flow graph (Contoh) Jalur 1 : 111 Jalur 2 : 1-2-3-4-5-10-1-11 Jalur 3 : 1-2-3-6-7-9-10-1-11 Jalur 4 : 1-2-3-6-8-9-10-1-11

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) [Region / Complexity] V(G) = E (edges) N (nodes) + 2 Lihat Flow Graph (Contoh) V(G) = 11 9 + 2 = 4

V(G) = P (predicate node) + 1Lihat Flow Graph (Contoh) V(G) = 3 + 1 = 4

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) Tahapan dalam membuat test cases dengan menggunakan cyclomatic complexity: Gunakan disain atau kode sebagai dasar, gambarlah flow graph Berdasarkan flow graph, tentukan cyclomatic complexity Tentukan kelompok basis dari jalur independen secara linier Siapkan test cases yang akan melakukan eksekusi dari tiap jalur dalam kelompok basis

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) Contoh Test Case (lihat flow graph contoh) Test case jalur (Path) 1 Nilai(record.eof) = input valid, dimana record.eof = true Hasil yang diharapkan : Sistem keluar dari loop dan sub program.

Test case jalur (Path) 2 Nilai(field 1) = input valid, dimana field 1 = 0 Nilai(record.eof) = input valid, dimana record.eof = false Nilai(counter) = Nilai(counter) + 1 Hasil yang diharapkan : Sistem melakukan [process record], [store in buffer] dan [increment counter].

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity (Cont.) Test case jalur (Path) 3 Nilai(field 2) = input valid, dimana field 2 = 0 Nilai(record.eof) = input valid, dimana record.eof = false Nilai(counter) = 0 Hasil yang diharapkan : Sistem melakukan [reset counter].

Test case jalur (Path) 4 Nilai(field 2) = input valid, dimana field 2 0 Nilai(record.eof) = input valid, dimana record.eof = false Hasil yang diharapkan : Sistem melakukan [process record] dan [store in file].

STIKOM - Romeo, S.T. 2006

Cyclomatic Complexity Catatan : Beberapa jalur mungkin hanya dapat dieksekusi sebagai bagian dari tes yang lain. Direkomendasikan agar jangan sampai kompleksitas tiap unit / komponen terkecil sistem melebihi nilai 10 [V(G)]. Beberapa praktisi menggunakan nilai rata-rata V(G) dari tiap unit / komponenn terkecil untuk memberikan penilaian kompleksitas.STIKOM - Romeo, S.T. 2006

Graph Matrix (Cont.) Adalah matrik berbentuk segi empat sama sisi, dimana jumlah baris dan kolom sama dengan jumlah node, dan identifikasi baris dan kolom sama dengan identifikasi node, serta isi data adalah keberadaan penghubung antar node (edges). Beberapa properti yang dapat ditambahkan sebagai pembobotan pada koneksi antar node di dalam graph matrix, sebagai berikut: Kemungkinan jalur (Edge) akan dilalui / dieksekusi. Waktu proses yang diharapkan pada jalur selama proses transfer dilakukan. Memori yang dibutuhkan selama proses transfer dilakukan pada jalur. Sumber daya (resources) yang dibutuhkan selama proses transfer dilakukan pada jalur.STIKOM - Romeo, S.T. 2006

Graph Matrix

STIKOM - Romeo, S.T. 2006

Control Structure Testing Control structure testing meliputi: Testing kondisi (Condition Testing) Testing alur data (Data Flow Testing) Testing loop (Loop Testing)

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing)(Cont.) Suatu metode disain test case yang memeriksa kondisi logika yang terdapat pada modul program. Berikut ini adalah beberapa definisi yang berkaitan dengan testing kondisi: Kondisi sederhana adalah variabel boolean atau ekspresi relasional, yang mungkin diproses dengan satu operator NOT (). Ekspresi operasional berbentuk E1E2, dimana E1 dan E2 adalah ekspresi aritmatika dan adalah salah satu dari : < , , = , (pertidaksamaan), ,>. Kondisi komplek (compound condition) tersusun oleh dua atau lebih kondisi sederhana, operator boolean, dan parentheses. Operator boolean yang dapat digunakan dalam suatu kondisi komplek adalah OR ( ,)AND (&) dan NOT (). Suatu kondisi tanpa ekspresi relasional dapat direferensikan sebagai suatu ekspresi boolean.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing)(Cont.) Sedangkan tipe elemen yang mungkin ada dalam suatu kondisi adalah: Operator boolean Variabel boolean Sepasang boolean parentheses (sebagaimana yang terdapat pada kondisi sederhana ataupun komplek) Operator relasional Ekspresi aritmatika.

Jika suatu kondisi tidak benar, maka paling tidak satu komponen dari kondisi tersebut tidak benar.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing)(Cont.)

Tipe error pada kondisi adalah sebagai berikut: Kesalahan operator boolean Kesalahan variabel boolean Kesalahan boolean parentheses Kesalahan operator relasional Kesalahan ekspresi aritmatika.

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing)(Cont.) Metode tes kondisi berfokus pada testing tiap kondisi dalam program. Strategi tes kondisi mempunyai dua keuntungan yaitu: Pengukuran cakupan kondisi yang dites adalah sederhana. Cakupan kondisi program yang dites menyediakan tuntunan untuk pembuatan tes tambahan bagi program.

Tujuan tes kondisi disamping untuk mendeteksi error dari kondisi program juga untuk kesalahan lainnya dari program.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Branch Testing (Cont.) Merupakan strategi tes kondisi yang paling sederhana. Untuk kondisi komplek C, cabang benar dan salah dari C dan tiap kondisi sederhana dalam C harus dieksekusi setidaknya sekali [MYE79]. Sebagai contoh ilustrasi penggunaan, diasumsikan terdapat penggalan kode berikut: IF (X=1) AND (Y=1) AND (Z=1) then [Do Something] END IF Bila testing pernyataan kode program dapat dipuaskan dengan sekali tes, yaitu dengan memberikan nilai (X,Y,Z) = (1,1,1). Dan hasil kondisi yang diharapkan adalah true.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Branch Testing Namun untuk branch testing dibutuhkan dua tes, yaitu Dengan memberikan nilai (X, Y, Z) = (1,1,1), untuk mengevaluasi dengan kondisi benar (true). Dan dengan memberikan nilai (X,Y,Z) = (2,1,1), sebagai wakil untuk mengevaluasi dengan kondisi salah (false).

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing (Cont.) Membutuhkan tiga atau empat tes yang dilaksanakan untuk suatu ekspresi relasional. Untuk suatu ekspresi relasional dalam bentuk: E1E2

tiga tes dibutuhkan nilai-nilai, agar E1 lebih besar, sama dengan, atau lebih kecil dari E2 [HOW82]. Jika tidak benar dan E1 dan E2 benar, maka tiga tes ini menjamin deteksi error operator relasional.

Untuk mendeteksi kesalahan pada E1 dan E2, suatu tes terhadap nilai-nilai, agar E1 lebih besar atau lebih kecil dari E2, dimana selisih dari nilainilai ini diusahakan sekecil mungkin.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing (Cont.) Contoh: If (X + 1) > (Y Z) then [Do Something] End if Dimana E1 diwakili oleh (X + 1) dan E2 diwakili oleh (Y Z).

Ada tiga tes yang dilakukan, yaitu: Tes pertama dengan mewakilkan E1 dan E2 dengan nilai 5 dan 2, yang didapat dari masukan (X,Y,Z) = (4,5,3), agar E1 > E2. Dan hasil kondisi yang diharapkan adalah true. Tes kedua dengan mewakilkan E1 dan E2 dengan nilai 2 dan 2, yang didapat dari masukan (X,Y,Z) = (1,4,2), agar E1 = E2. Dan hasil kondisi yang diharapkan adalah false. Tes ketiga dengan mewakilkan E1 dan E2 dengan nilai 1 dan 2, yang didapat dari masukan (X,Y,Z) = (0,4,2), agar E1 < E2. Dan hasil kondisi yang diharapkan adalah false.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing (Cont.) Untuk suatu ekspresi boolean dengan n variabel, dibutuhkan semua kemungkinan tes 2n (n>0). Strategi ini dapat mendeteksi error dari operator dan variabel boolean serta boolean parenthesis, namun ini hanya dipraktekkan jika n adalah kecil.

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing (Cont.) Contoh:IF X AND Y THEN[Do Something] END IF

Dimana X dan Y adalah variabel boolean, maka akan dilakukan tes sebanyak 22 = 4, yaitu dengan memberikan nilai X dan Y {(t,f), (f,t), (f,f), (t,t)} dengan hasil kondisi yang diharapkan dari operator boolean AND {f,f,f,t} .STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing (Cont.) Untuk suatu ekspresi boolean yang tunggal (suatu ekspresi boolean dimana tiap variabel boolean hanya terjadi sekali) dengan n variabel boolean (n > 0), kita dapat dengan mudah membuat suatu kumpulan tes yang kurang dari 2n tes dimana sekumpulan tes ini menjamin deteksi error multiple operator boolean dan juga efektif untuk mendeteksi error yang lain.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) Domain Testing Contoh:IF X = TRUE AND Y = TRUE THEN [Do Something] END IF Maka domain testing tidak membutuhkan 22 = 4 tes, namun cukup 2 tes, yaitu Dengan memberikan nilai (X,Y) = (t,t), untuk evaluasi kondisi benar (true). Dan (X,Y) = (f,t), sebagai wakil dari sisa kemungkinan masukan untuk evaluasi kondisi salah (false).STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) - BRO (Branch and Relational Operator) Testing (Cont.) Teknik ini menjamin deteksi error dari operator cabang dan relasional dalam suatu kondisi yang ada dimana semua variabel boolean dan operator relasional yang terdapat di dalam kondisi terjadi hanya sekali dan tidak ada variabel yang dipakai bersama. Strategi BRO testing menggunakan batasan kondisi untuk suatu kondisi C. Suatu batasan kondisi untuk C dengan n kondisi sederhana didefinisikan sebagai (D1,D2,,Dn), dimana Di (0 < i n) adalah suatu simbol yang mespesifikasi-kan suatu batasan yang ada pada kondisi sederhana ke i pada suatu kondisi C.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) - BRO (Branch and Relational Operator) Testing (Cont.) Suatu batasan kondisi D untuk kondisi C telah dicakup dengan suatu eksekusi C jika, selama eksekusi C ini, hasil dari tiap kondisi sederhana pada C memuaskan batasan yang dikorespondesikan dalam D. Untuk variabel boolean, B, kita me-spesifikasikan suatu batasan hasil dari D yang menyatakan bahwa B bernilai true (t) atau false (f). sama halnya, untuk ekspresi relational, simbol digunakan untuk me-spesifikasikan batasan hasil dari ekspresi.

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) - BRO (Branch and Relational Operator) Testing (Cont.) Sebagai ilustrasi sebagai berikut: diberikan contoh-contoh

Contoh 1: Suatu kondisi C1: B1 &B2

Dimana B1 dan B2 adalah variabel boolean. Batasan kondisi C1 dalam bentuk (D1, D2), dan D1 dan D2 adalah t atau f. Nilai (t,f) adalah suatu batasan kondisi C1 dan dicakup oleh tes yang membuat nilai B1 menjadi true dan nilai B2 menjadi false. Strategi BRO testing membutuhkan sekumpulan batasan {(t,t), (f,t), (t,f)} dicakup oleh eksekusi dari C1. Jika C1 tidak benar terhadap satu atau lebih error operator boolean, setidaknya satu dari sekumpulan batasan akan membuat C1 salah.

STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) - BRO (Branch and Relational Operator) Testing (Cont.) Contoh 2: Suatu kondisi C2 : B1 &(E3 = E4) Dimana B1 adalah ekspresi boolean, E3 dan E4 adalah ekspresi aritmatika. Batasan kondisi C2 dalam bentuk (D1, D2 ), dan D1 adalah t atau f dan D2 adalah >, =, . Dengan mengganti (t,t) dan (f,t) dengan (t,=) dan (f,=), dan dengan menggantikan (t,f) dengan (t,), menghasilkan sekumpulan batasan untuk C2 yaitu {(t,=), (f,=), (t,)}. Cakupan untuk sekumpulan batasan diatas akan menjamin deteksi error dari operator boolean dan relational pada C2.STIKOM - Romeo, S.T. 2006

Testing Kondisi (Condition Testing) - BRO (Branch and Relational Operator) Testing (Cont.) Contoh 3: Suatu kondisi C3: (E1 > E2) & (E3 = E4) Dimana E1, E2, E3, dan E4 adalah ekspresi aritmatika. Batasan kondisi C3 dalam bentuk (D1, D2), dan D1 dan D2 adalah >, =, , dan f dengan =, dan ,=),(=,=),(,>),(>,