Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehDevi Budiman Telah diubah "7 tahun yang lalu
1
Testing dan Implementasi Sistem Desain Test case Lainnya
Materi Kuliah Testing dan Implementasi Sistem Desain Test case Lainnya
2
Pengujian Kondisi Pengujian kondisi adalah sebuah metode desain test case yang menggunakan . kondisi logis yang ada pada suatu program. Kondisi sederhana adalah variabel Boolean atau suatu persamaan hubungan, dapat didahului dengan satu operator
3
Dengan demikian, tipe-tipe komponen yang mungkin di dalam suatu kondisi meliputi operator Boolean, sebuah variabel Boolean, sepasang tanda kurung Boolean (yang mengelilingi suatu kondisi gabungan atau sederhana), sebuah operator relasional atau sebuah persamaan aritmatika. Bila suatu kondisi tidak benar, maka paling tidak satu komponen dari kondisi itu salah.
4
E1 (operator-relasional) E2
NOT ("-"). Persamaan relasional mengambil bentuk: E1 (operator-relasional) E2 di mana E1 dan E 2 merupakan persamaan aritmatika dan (operator relasional) adalah salah satu dari operator berikut ini: "<", "<","=","#"("-, =") (pertidak- samaan), ">", atau ">". Kondisi gabungan terdiri dari dua atau lebih kondisi sederhana, operator Boolean, dan tanda kurung. Diasumsikan bahwa operator Boolean yang diijinkan dalam suatu kondisi gabungan meliputi OR (" I "), AND ("&"), dan NOT ("-,"). Kondisi tanpa persamaan relasional disebu persamaan Boolean.
5
Tipe kesalahan pada suatu kondisi meliputi
kesalahan operator Boolean (adanya operator Boolean yang salah/ hilang/ekstra) kesalahan variabel Boolean kesalahan tanda kurung Boolean kesalahan operator relasional kesalahan persamaan aritmatika
6
Metode pengujian kondisi berfokus pada pengujian masing-masing kondisi di dalam program.
Strategi pengujian kondisi memiliki dua keuntungan. 1. pengukuran kupasan pengujian dari suatu kondisi adalah sederhana. 2. cakupan pengujian terhadap kondisi di dalam suatu program memberikan pedoman untuk melakukan pengujian tambahan untuk program tersebut.
7
Tujuan pengujian kondisi
Mendeteksi tidak hanya kesalahan di dalam kondisi program, tetapi juga kesalahan lain pada program. Jika pengujian ditentukan untuk program P efektif untuk mendeteksi kesalahan pada kondisi yang ada pada P, maka kemungkinan besar pengujian itu juga efektif untuk mendeteksi kesalahan lain pada P.
8
Efektifitas Strategi Pengujian
Untuk mendeteksi kesalahan-kesalahan pada suatu kondisi, maka kemungkinan besar strategi tersebut juga efektif untuk mendeteksi kesalahan pada suatu program.
9
Jenis-jenis Strategi Pengujian Kondisi
Pengujian cabang merupakan strategi pengujian kondisi yang paling sederhana. Untuk suatu kondisi gabungan C, cabang-cacang true dan false dari C dan setiap kondisi sederhana pada C perlu dieksekusi paling tidak satu kali. Pengujian domain membutuhkan tiga atau empat pengujian untuk dilakukan untuk sebuah persamaan relasional.
10
Persamaan relasional mempunyai bentuk :
E1(operator relasional) E2 Diperlukan tiga pengujian untuk membuat nilai E1 lebih tinggi dari pada, sama dengan, atau kurang dari nilai E2 secara berurutan. Bila (operator relasional) salah dan E1 dan E2 benar, maka ketiga pengujian itu menjamin pendeteksian kesalahan operator relasional. Untuk mendeteksi kesalahan pada E1 dan E2, maka tes yang membuat harga E1 lebih besar atau kurang dari harga E2 harus membuat perbedaan antara dua harga itu menjadi sekecil mungkin.
11
Untuk persamaan Boolean dengan n variabel, semua 2n pengujian yang mungkin (n>0) perlu dilakukan.
Strategi dapat mendeteksi operator, variabel, dan kesalahan tanda kurung Boolean, tetapi hanya praktis jika n kecil. Pengujian error-sensitive untuk persamaan Boolean dapat juga dilakukan.
12
Untuk persamaan Boolean tunggal (persamaan Boolean di mana masing-masing variabel Boolean terjadi hanya sekali) dengan n variabel Boolean (n>O), dapat dengan mudah memunculkan serangkaian pengujian dengan kurang dari 2n pengujian sehingga rangkaian pengujian itu menjamin pendeteksian kesalahan operator Boolean bertingkat serta efektif untuk mendeteksi kesalahan- kesalahan yang lain.
13
Strategi pengujian kondisi BRO (BROnch and relational operator)
Teknik ini menjamin pendeteksian kesalahan cabang dan operator relasional, dengan kondisi bahwa semua variabel Boolean dan operator relasional pada kondisi itu terjadi hanya sekali dan tidak memiliki variabel umum.
14
Pengujian BRO (Lanj) Strategi BRO menggunakan batasan kondisi bagi suatu kodisi C. Batasan kondisi untuk C dengan n kondisi sederhana ditentukan sebagai (D1, D2,.. , Dn, di mana Di (0 < i < n) merupakan simbol yang menentukan batasan pada hasil akhir dari kondisi sederhana ke-i dalam kondisi C. Batasan kondisi D untuk kondisi C dikatakan dipenuhi oleh eksekusi dari C bila selama eksekusi dari C, hasil akhir dari masing-masing kondisi sederhana di dalam C memenuhi batasan yang bersesuaian di dalam D.
15
Untuk variabel Boolean, B, dapat ditentukan batasan pada hasil akhir B yang menyatakan bahwa B harus true (t) atau false (f). Dengan cara yang sama, untuk suatu persamaan relasional, simbol-simbol >, _, dan < digunakan untuk menentukan batasan pada hasil akhir persamaan.
16
Sebagai contoh, perhatikan kodisi
C1: B1&B2 di mana B1 dan B2 adalah variabel Boolean. Batasan kondisi untuk C) adalah bentuk (D1,D2) di mana masing-masing dari D1 dan D2 adalah 't" atau "f'. Nilai (t, f) adalah batasan kondisi untuk C1 dan dicakup oleh pengujian yang membuat harga B1 menjadi true (t) dan harga B2 menjadi false (f).
17
Strategi pengujian BRO mengharuskan himpunan batasan [(t,t), (f,t), (t,f)] dicakup oleh eksekusi C1
Bila C1 tidak benar karena satu atau lebih kesalahan operator Boolean, maka sedikitnya satu anggota dari himpunan batasan akan memaksa C 1 untuk gagal.
18
Sebagai contoh kedua, perhatikan kondisi bentuk
C2 : B1&(E3=E4) di mana B1 adalah persamaan Boolean dan E3 dan E4 adalah persamaan aritmatika. Batasan kondisi untuk C2 adalah bentuk (D1, D2), di mana D1 adalah "t" atau "f' dan D2 adalah >, =, atau <. Karena C2 sama seperti C1 kecuali bahwa kondisi sederhana kedua di dalam C2 adalah persamaan relasional dapat membentuk himpunan batasan untuk C2 dengan memodifikasi himpunan pembatas [(t, t), (f, t), (t, t)] yang ditentukan untuk C1.
19
'1" untuk (E3 = E4) meng implikasikan "=" dan bahwa "f' untuk (E3 = E4) mengimplikasikan "<;' atau ">". Dengan menggantikan (t, t) dengan (t, =) dan (f, t) dengan (f, =) dan dengan menggantikan (t, f) dengan (t, <) \ < >) dan (t, >), maka hasil himpunan batasan untuk C2 adalah {(t, =), (t, <), (t,>). Cakupan himpunan batasan tersebut akan menjamin pendeteksian Boolean dan kesalahan-kesalahan operator relasional pada C2.
20
Sebagai contoh ketiga, perhatikan kondisi bentuk:
C3 : (El > E2 & (E3 = E4) di mana E1, E2, E3, dan E4 adalah persamaan aritmatika. Pembatas kondisi untuk C3 adalah bentuk (D1, D2), di mana masing-masing dari Dl dan D2 adalah >, =, atau <. Karena C3 sama seperti C2 kecuali bahwa kondisi sederhana yang pertama pada C3 adalah persamaan relasional,
21
{(>, =), (=, =), (<, =), (>, >), (>, <)}
Dapat membetuk himpunan batasan untuk C3 dengan memodifikasi himpunan batasan untuk C2, dan akan diperoleh: {(>, =), (=, =), (<, =), (>, >), (>, <)} cakupan dari himpunan batasan tersebut akan menjamin pendeteksian kesalahan operator relasional pada C3.
22
Pengujian Aliran Data Metode pengujian aliran data memilih jalur pengujian dari suatu program sesuai dengan lokasi definisi dan menggunakan variabel-variabel pada program. Sejumlah pengujian aliran data telah dipelajari dan dibandingkan. Untuk menggambarkan pendekatan pengujian aliran data, diasumsikan bahwa masing-masing statemen pada suatu program diberi nomor statemen yang unik dan setiap fungsi tidak memodifikasi parameter atau variabel globalnya.
23
Untuk statemen dengan S sebagai nomor statemennya,
DEF(S) = {XI statemen S berisi sebuah definisi dari X} USE(S) = {XI statemen S berisi suatu penggunaan dari X} Bila statemen S adalah statemen if atau loop, maka himpunan DEF-nya kosong dan himpunan USE-nya didasarkan pada kondisi statemen S.
24
Definisi variabel X pada statemen S dikatakan hidup pada statemen S' jika ada suatu jalur dari statemen S ke statemen S' yang tidak berisi defmisi yang lain dari X. Rantai definition-use (atau rantai DU) dari variabel X berbentuk [X, S, S1, di mana S dan S' adalah nomor statemen, X pada DEF(S) dan USE(S'), dan definisi X pada statemen S hidup pada statemen S'.
25
Strategi pengujian aliran data sederhana adalah untuk mengharuskan agar setiap rantai DU dicakup paling tidak satu kali. Strategi ini disebut strategi pengujian DU Telah diperlihatkan bahwa" pengujian DU tidak menjamin pencakupan semua cabang sebuah program.
26
Akan tetapi, satu cabang tidak dijamin dicakup oleh pengujian DU hanya pada situasi jarang seperti konstruksi if-then-else di mana bagian then tidak memiliki definisi mengenai sembarang variabel dan bagian else tidak ada.
27
Dalam situasi seperti itu, cabang else dari statemen if tersebut tidak perlu dicakup oleh pengujian DU. Strategi pengujian aliran data berguna untuk memilih jalur pengujian dari suatu program yang berisi statemen if dan loop yang tersarang.
28
Contoh aplikasi pengujian DU untuk memilih jalur pengujian seperti berikut ini:
Proc x B1; do while cl if C2 then if c4 then B4; else B5; endif; else if C3 then B2; else B3 end if enddo; B6; endproc;
29
Untuk membuat strategi pengujian DU memilih jalur pengujian dari diagram aliran kontrol, perlu diketahui definisi dan penggunaan masing-masing kondisi atau blok pada Program. Anggap bahwa variabel X didefinisikan pada statemen terakhir dari blok BI, B2, B3, B4, dan B5, dan digunakan dalam statemen pertama dari blok B2, B3, 84, B5, dan B6.
30
Strategi pengujian DU memerlukan eksekusi jalur terpendek dari masing-masing dari Bi, 0 < I < 5, ke masing-masing dari Bj, 1 < j < 6. (pengujian semacam itu juga mencakup banyak penggunaan variabel X dalam kondisi CI, C2, C3, dan C4). Meskipun ada 25 rantai DU dari variabel X, kita hanya membutuhkan lima jalur untuk mencakup rantai-rantai DU tersebut.
31
Alasan-nya adalah diperlukan lima jalur untuk mencakup rantai DU X dari Bi, 0 < I < 5, ke B6, dan rantai DU yang lain dapat dicakup dengan membuat lima jalur tersebut berisi iterasi dari loop.
32
Bila akan mengaplikasikan strategi pengujian cabang untuk memilih jalur pengujian dari Program tersebut di atas, maka tidak memerlukan informasi tambahan. Untuk memilih jalur dari diagram pengujian BRO, perlu mengetahui struktur masing-masing kondisi atau blok.
33
(Setelah pemilihan suatu jalur dari suatu program, maka harus menentukan apakah jalur tersebut mungkin dikerjakan dengan mudah untuk program itu; misalnya apakah ada paling tidak satu input yang menggunakan jalur tersebut.)
34
Karena statemen pada suatu program berhubungan satu dengan yang lainnya sesuai dengan definisi dan penggunaan variabel, maka pendekatan aliran data efektif untuk perlindungan dan kesalahan. Tetapi, masalah cakupan pengujian pengukuran dan pemilihan jalur pengujian untuk pengujian aliran data lebih sulit daripada masalah yang berhubungan dengan pengujian kondisi.
35
Ujicoba Perulangan (Loop Testing)
Ujicoba perulangan (Loop Testing) merupakan ujicoba whitebox yang memfokuskan secara khusus pada validitas pembentukan loop. Terdapat 4 jenis loop yang berbeda, yaitu : simple loop, concatenated loop, nested loop, unstructured loop.
37
1. Lewati loop secara keseluruhan (skip the loop entirely)
Simple loop, serangkaian ujicoba harus diaplikasikan pada loop sederhana, dimana n merupakan jumlah maksimum yang diperbolehkan dalam loop : 1. Lewati loop secara keseluruhan (skip the loop entirely) 2. Hanya satu yang melalui loop (only one pass through the loop) 3. 2 melalui loop (two passes through the loop) 4. m melalui loop, jika m < n (m passes the loop where m < n) 5. n – 1, n, n+1 passes the loop
38
Nested loop, jumlah dari ujicoba berkembang secara geometri sejalan dengan peningkatan level dari nested. Beizer menyarankan pendekatan yang akan mengurangi jumlah ujicoba : 1. Mulai dari loop terdalam, Tetapkan loop lainnya pada nilai minimum 2. Lakukan uji loop sederhana untuk loop terdalam dan loop luar tetap pada parameter iterasi minimum. Tambahkan ujicoba lainnya untuk out-of-range atau nilai lainnya (exclude value) 3. Lakukan mengarah keluar, dan tetap mempertahankan loop luarnya dalam nilai minimum dan nested loop lainnya dengan nilai yang sesuai. 4. Lanjutkan sampai seluruh loop teruji.
39
Concatenated loop, dapat diuji dengan menggunakan pendekatan yang didefinisikan untuk loop sederhana, jika setiap loop saling independen. Jika loop digabungkan (concatenated) dan counter untuk loop1 digunakan sebagai nilai awal dari loop2, maka loop saling bergantung dan pendekatan untuk nested loop direkomendasikan
40
Unstructured loop, Jika mungkin sebaiknya loop jenis ini didesain ulang untuk merefleksikan kegunaan pembentukan struktur program.
41
NEXT Time
42
Materi Kuliah Testing dan Implementasi Sistem
Pert 4 : Desain Test case Lainnya (Lanj)
43
Deriving Test Cases Metode ujicoba berbasis alur dapat diaplikasikan pada detail desain prosedural atau kode sumber. Ujicoba berbasis alur direpresentasikan menjadi beberapa tahapan :
44
Tahapan Ujicoba berbasis alur direpresentasikan sbb :
1. Menggunakan desain atau kode sebagai pondasi, menggambarkan graf alur yang berhubungan. Dengan menggunakan contoh Gambar (a), diagram alur dapat dibentuk dengan memberikan nomor untuk PDL. Perintah-perintah yang ada akan mengacu pada node dari suatu diagram alur. Perintah yang telah diberi nomor terlihat pada gambar (b).
45
Gambar (a) PDL for test design
46
3. Menentukan himpunan basis dari alur independen yang linear.
Nilai dari V(G) menyediakan sejumlah alur independen yang linear melalui struktur kontrol. Dalam kasus prosedur Average terdapat 6 : Path 1 : 1 – 2 – 10 – 11 – 13 Path 2 : 1 – 2 – 10 – 12 – 13 Path 3 : 1 – 2 – 3 – 10 – 11 – 13 Path 4 : 1 – 2 – 3 – 4 – 5 – 8 – 9 – 2 – ... Path 5 : 1 – 2 – 3 – 4 – 5 – 6 – 8 – 9 – 2 – ... Path 6 : 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – 2 – ... Tanda (...) mengindikasikan perulangan yang diperbolehkan. Dalam kasus ini node 2, 3, 5, 6, 10 merupakan Predicates node
47
Gambar (c) Flow Graph of procedure Average
2. Menetapkan komplesitas cyclomatic dari graf alur yang dihasilkan. Berdasarkan flow graph yang didapat pada Gambar (c), maka : V(G) = 6 region V(G) = 17 edges – 13 Nodes + 2 = 6 V(G) = 5 Predicate nodes + 1 = 6 Gambar (c) Flow Graph of procedure Average
48
Gambar (b) Identifying Nodes
49
4. Menyiapkan kasus uji yang akan mengeksekusi setiap alur dalam himpunan basis Data harus dipilih sehingga kondisi pada predicate nodes dapat di uji dengan tepat
50
nilai (k) = Input yang Valid, dimana k < i yang didefinisikan
UJI KASUS Path 1: nilai (k) = Input yang Valid, dimana k < i yang didefinisikan nilai (i) = -999 dimana 2 i 100 Hasil yang diharapkan : Nilai rata-rata yang benar berdasarkan nilai k dan total yang tepat Catatan : Tidak dapat diujicoba secara terpisah, harus diujikan sebagai bagian dari uji Path 4, 5, dan 6
51
UJI KASUS Path 2: nilai (1) = -999 Hasil yang diharapkan : Nilai rata-rata/average = -999; total lainnya berisi nilai awal UJI KASUS Path 3: Berusaha untuk memproses nilai 101 atau lebih 100 nilai pertama harus valid Sama dengan UJI KASUS Path 1
52
UJI KASUS Path 4: nilai (i) = Input yang Valid, dimana i < 100 nilai (k) < minimum dimana k < i Hasil yang diharapkan : Nilai rata-rata yang benar berdasarkan nilai k dan total yang tepat UJI KASUS Path 5: nilai (k) > maksimum dimana k i Nilai rata-rata yang benar berdasarkan nilai n dan total yang tepat
53
UJI KASUS Path 6: nilai (i) = Input yang Valid, dimana i < 100 Hasil yang diharapkan : Nilai rata-rata yang benar berdasarkan nilai n dan total yang tepat
54
Setiap uji kasus dijalankan dan hasil yang diperoleh dibandingkan dengan hasil yang diharapkan.
Ketika seluruh uji kasus telah dijalankan, maka penguji dapat memastikan bahwa setiap perintah yang ada telah dieksekusi sedikitnya 1 kali.
55
Graph Matrix Prosedur untuk menghasilkan graf alur dan menentukan himpunan alur basis dapat di mekanisasi. Untuk membangun tool software yang membantu dalam ujicoba berbasis alur, struktur data yang disebut graph matrix.
56
Graph matrix merupakan matrik persegi yang jumlah baris dan kolomnya sesuai dengan jumlah node pada graf alur. Setiap baris dan kolom mengacu kepada sebuah node dan isi dari matrix mengacu kepada edge, contoh gambar (d).
58
Gambar (e) Connection Matrix
Perhatikan Gambar (e) dibawah ini, setiap huruf telah diganti dengan angka 1, yang mengindikasikan terdapat koneksi. Setiap baris dengan 2 atau lebih input merepresentasikan predicate node. Lihat bagian kanan tabel menunjukan cyclomatic complexity. Gambar (e) Connection Matrix
59
Hal lain yang dapat diketahui melalui matrik graf adalah :
1. Kemungkinan suatu link/ edge akan dieksekusi 2. Waktu proses yang dibutuhkan selama traversal suatu link 3. Memori yang diperlukan selama traversal suatu link 4. Sumber daya yang diperlukan selama traversal suatu link
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.