-->
g2QFCKwavghUp2yzjKrIFwEeG13RASCerFTCMH35

Pengujian Struktur Kontrol

PENGUJIAN STRUKTUR KONTROL


Teknik pengujian basis path yang digambarkan adalah satu dari sejumlah teknikuntuk pengujian struktur kontrol.  Meskipun pengujian basis path adalah sederhana dan sangat efektif, tetapi pengujian itu tidak memadai.  Dalam subbab ini akan dibahas variasi lain pada pengujian struktur kontrol.  Hal ini memperluas kupasan pengujian dan meningkatkan kualitas pengujian white-box.

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 NOT (“­­¬”).  Persamaan relasional mengambil bentuk : E1 (Operator-relasional) E2
Dimana E1 dan E2 merupakan persamaan aritmatika dan (operator relasional) adalah salah satu dari operator berikut ini : “<”, “≤”, “=”, “≠”, (“­­¬ =”) (pertidaksamaam), “>” atau “≥”.              Kondisi gabungan terdiri dari dua atau lebih kondisi sederhana, operator Boolean dan tanda kurung.  Diasumsikan nahwa operator Boolean yang diijinkan dalam suatu kondisi gabungan meliputi OR (“|”), AND (“&”) dan NOT (“­­¬”).  Kondisi tanpa persamaan relasional disebut persamaan Boolean.
Dengan demikian, tipe-tipe komponen yang mungkin di dalam suatu kondisi meliputi operator Boolean, sebuah variabel Boolean, sepasang tanda kurung Noolean (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.  Dengan demikian, tipe kesalahan pada suatu kondisi meliputi berikut ini :
·           Kesalahan operator Boolean (adanya operator Boolean yang salah / hilang / ekstra)
·           Kesalahan variabel Boolean
·           Kesalahan tanda kurung Boolean
·           Kesalahan operator relasional
·           Kesalahan  persamaan aritmatika
Metode pengujian kondisi berfokus pada pengujian masing-masing kondisi di dalam program.  Strategi pengujian kondisi biasanya memiliki dua keuntungan :
13.    Pengukuran kupasan pengujian dari suatu kondisi adalah sederhana
14.    Cakupan pengujian terhadap kondisi di dalam suatu program memberikan pedoman untuk melakukan pengujian tambahan untuk program tersebut.
Tujuan pengujian kondisi adalah 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.  sebagai tambahan, jika strategi efektif untuk mendeteksi kesalahan-kesalahan pada suatu kondisi maka kemungkinan besar strategi tersebut juga efektif untuk mendeteksi kesalahan pada suatu program.
Sejumlah strategi pengujian kondisitelah diusulkan.  Pengujian cabang mungkin merupakan strategi pengujian kondisi yang paling sederhana.  Untuksuatu kondisi gabungan C, cabang-cabang tru dan false dari C dan setiap kondisi sederhana pada C perlu dieksekusi paling tidak satu kai.
Pengujian domain membutuhkan tiga atau empat pengujian untuk dilakukan untuksebuah persamaan rasional karena persamaan relasional mengambil bentuk : E1 (Operator relasional) E2 maka diperlikan tiga pengujian untuk membuat nilai E1 lebih tinggi daripada, 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.
Untuk persamaan Boolean dengan n variabel, semua 2n pengujian yang mungkin ( n > 0) perlu dilakukan.  Strategi itu dapat mendeteksi operator, variabel dan kesalahan tanda kurung Boolean tetapi hanya praktis jika n kecil.
Pengujian error-sensitive untuk persamaan Boolean dapat juga dilakukan.  Untuk persamaan Boolean tunggal (persamaan Boolean masing-masing variabel Boolean terjadi hanya sekali) dengan n variabel Boolean (n > 0), kita dapat dengan mudah memunculkan serangkaian pengujian dengan kurang dari 2n pengujian sehingga rangkaian pengujian itu menjamin pendeteksian kesalahan operator Boolean bertingkat secara efektif untuk mendeteksi kesalahan-kesalahan yang lain.
Tai dalam pressman (1997;547) mengusulkan strategi pengujian kondisi yang didasarkan atas teknik yang sidah diuraikan.  Disebut pengujian BRO (Branch and Relational Operator), teknik tersebut 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.
Strategi BRO menggunakan batasan kondisi bagi suatu kondisi C.  batasan kondisi untuk C dengan n kondisi sederhana ditentukan sebagai (D1, D2, …, Dn), dimana 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.
Untuk variabel Boolean, B, kita menentukan 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.               
Sebagai contoh, perhatikan kondisi bentuk C2 : B1 & (E3 = E4), dimana B1 adalah persamaan Boolean dan E3 dan E4 adalah persamaan aritmatika.  Batasan kondisi untuk C2 adalah bentuk (D1, D2), dimana 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, kita dapat membangun himpunan batasan untuk C2 dengan memodifikasi himpunan pembatas [(t, t), (f, t), (t, f)] yang ditentukan untuk C1.  Perhatikan bahwa “t” untuk (E3 = E4) mengimplikasikan “=” 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.
Sebagai contoh ketiga, perhatikan kondisi bentuk : C3 : (E1 > 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 D1 dan D2 adalah >, = atau <, karena C3 sama seperti C2 kecuali bahwa kondisi sederhana yang pertama pada C3 adalah persamaan relasional, maka kita dapat membangun 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.

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.  Untuk statemen dengan S sebagai nomor statemennya.
DEF(S) = {X | statemen S berisi sebuah definisi dari X}
USE(S) = {X | 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.  Definisi variabel X pada statemen S dinyatakan hidup pada statemen S’ jika ada suatu jalur dari statemen S ke statemen S’ yang tidak berisi definisi yang lain dari X.
Rantai definition-use (atau rantai DU) dari variabel X berbentuk [X, S, S’], 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’.
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.  Akan tetapi, satu cabang tidak dijamin dicakup oleh pengujian DU hanya pada situai jarang seperti konstruksi if-then-else di mana bagian then tidak memiliki definisi mengenai sembarang variabel dan bagian else tidak ada.  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 satu program yang berisi statement if dan loop yang tersarang.  
Untuk membuat strategi pengujian DU memilih jalur pengujian dari diagram aliran kontrol, kita perlu tahu definisi dari penggunaan masing-masing kondisi atau blok pada PDL.  Anggap bahwa variabel X didefinisikan pada statemen terakhir dari blok B1, B2, B3, B4 dan B5 dan digunakan dalam statemen pertama dari blok B2, B3, B4, B5 dan B6.  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 C1, C2, C3 dan C4).  Meskipun ada 25 rantai DU dari variabel X, kita hanya membutuhkan lima jalur untuk mencakup rantai-rantai DU tersebut. Alasannya adalah diperlukan lima jalur untuk mencakuprantai-rantai DU X dari Bi, 0 < i ≤ 5, ke B6 dan rantai DU yang lain dapat dicakup dengan membuat lima jalut tersebut berisi iterasi dari loop.
Perhatikan bahwa bila kita mengaplikasikan strategi pengujian cabang untuk memilih jalur pengujian dari PDL tersebut di atas, kita tidak memerlukan informasi tambahan. Untuk memilih jalur dari diagram pengujian BRO, kita perlu tahu struktur masing-masing kondisi atau blok (setelah pemilihan suatu jalur dari suatu program, kita harus menentukan apakah jalur tersebut mungkin dikerjakan dengan mudah untuk program itu; misalnya apakah ada paling tidak satu input yang menggunakan jalur tersebut).
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.

Pengujian Loop

Loop adalah batu pertama untuk mayoritas algoritma yang diimplementasikan pada perangkat lunak.  Seringkali sedikit saja perhatian yang kita berikan pada loop, sementara melakukan pengujian perangkat lunak.
Pengujian loop merupakan teknik pengujian white-box yang secara ekslusif berfokus pada validitas konstruksi loop.  Empat kelas loop yang berbeda dapat didefinisikan, yaitu loop sederhana, loop terangkai, loop tersarang dan loop tidak terstruktur terlihat pada gambar 9.

Loop Sederhana
Himpunan pengujian berikut harus diaplikasikan pada loop sederhana, di mana n adalah jumlah maksimum yang diijinkan melewati loop tersebut.
1.        Abaikan keseluruhan loop
2.        Hanya satu yang melewati loop
3.        Dua yang melewati loop
4.        m melewati loop di mana m < n
5.        n-1, n, n+1melewati loop
Loop tersarang
Bila kita ingin memperluas pendekatan pengujian bagi loop sederhana ke loop tersarang.  Jumlah pengujian mungkin akan berkembang secara geometris sesuai tingkatan pertambahan persarangan sehingga sejumlah pengujian menjadi tidak praktis.  Beizer dalam pressman (2002;551) mengusulkan suatu pendekatan yang membantu mengurangi jumlah pengujian :
1.        mulai pada loop yang paling dalam.  Atur semua loop ke nilai minimum.
2.        Lakukan pengujian loop sederhana untuk loop yang paling dalam sementara menjaga loop yang paling luar pada nilai parameter iterasi minimumnya (misalnya, pencacah loop).  Tambahkan pengujian yang lain untuk nilai out-of-range atau nilai yang tidak diperbolehkan
3.        Bekerja menuju ke luar, dengan melakukan pengujian untuk loop selanjutnya, tetapi menjaga semua loop bagian luar yang lain pada nilai minimumnya dan loop tersarang lainnya pada harga “tertentu”.
4.        Lanjutkan sampai semua loop telah bersarang.
Loop Terangkai.
Loop terangkai dapat diuji dengan menggunakan pendekatan yang ditentukan untuk loop sederhana bila masing-masing dari loop itu independen terhadap yang lain.  Tetapi bila dua loop dirangkai dan pencacah loop untuk loop 1 digunakan sebagai harga awal untuk loop 2, kemudian loop tersebut menjadi tidak independen, maka pendekatan yang diaplikasikan ke loop tersarang direkomendasikan.
Loop tidak terstruktur
Kapan saja memungkinkan kelas loop ini harus didesain lagi untuk mencerminkan penggunaan konsepsi pemograman terstruktur.

Sumber :amir-saribudin.blogspot.com
Related Posts

Related Posts

Post a Comment