Teknik Pengujian (2) Whitebox Testing Pengujian Perangkat Lunak Mina Ismu Rahayu 2011
Pengujian Ujicoba merupakan proses eksekusi program dengan tujuan untuk menemukan kesalahan. Sebuah ujicoba kasus yang baik adalah yang memiliki probabilitas yang tinggi dalam menemukan kesalahan-kesalahan yang belum terungkap. Ujicoba yang berhasil adalah yang mengungkap kesalahan yang belum ditemukan.
Tujuan mendesain serangkaian tes yang secara sistematis mengungkap beberapa jenis kesalahan yang berbeda dan melakukannya dalam waktu dan usaha yang minimum
Alur Informasi Test
Faktor Dua kategori input yang disediakan untuk proses ujicoba adalah : Software configuration yang terdiri dari spesifikasi kebutuhan software, spesifikasi desain dan kode sumber. Test configuration yang terdiri dari rencana dan prosedur ujicoba, Tools ujicoba apapun yang dapat digunakan kasus ujicoba termasuk hasil yang diharapkan. Pada kenyataannya, konfigurasi ujicoba merupakan subset dari konfigurasi software.
Faktor Reliability : Hasil Akhir Kualitas dan reliabilitas software dapat diterima, atau Ujicoba tidak cukup untuk menemukan kesalahan yang fatal. Jika Tidak Menemukan Kesalahan? keraguan bahwa konfigurasi ujicoba tersebut tidak berhasil dan masih terjadi kesalahan dalam software User
mendesain test : Test Case Design tingkat kemungkinan penemuan kesalahan yang tinggi jumlah waktu dan usaha yang sedikit Cara Test : Mengetahui fungsi-fungsi yang dispesifikasikan pada produk yang didesain Mengetahui cara kerja internal dari produk
Pendekatan White Box pemeriksaan detail prosedural Alur logikal suatu software diujicoba Status dari program dapat diperiksa pada beberapa titik yang bervariasi Black Box Dilakukan pada interface software Mendemonstrasikan fungsi software yang dioperasikan Apakah input diterima dengan benar, dan ouput yang dihasilkan benar apakah integritas informasi eksternal terpelihara
White Box Testing menggunakan struktur kontrol dari desain prosedural untuk menghasilkan kasus-kasus uji Kasus Uji yang dihasilkan : Menjamin bahwa seluruh independent paths dalam modul telah dilakukan sedikitnya satu kali, Melakukan seluruh keputusan logikal baik dari sisi benar maupun salah, Melakukan seluruh perulangan sesuai batasannya dan dalam batasan operasionalnya Menguji struktur data internal untuk memastikan validitasnya
Fungsi WhiteBox Sifat kerusakan alami dari software, yaitu : Kesalahan logika dan kesalahan asumsi secara proposional terbalik dengan kemungkinan bahwa alur program akan dieksekusi. Sering percaya bahwa alur logikal tidak akan dieksekusi ketika dikenyataannya, mungkin akan dieksekusi dengan basis regular. Kesalahan typographical (cetakan) bersifat random. Ketika program diterjemahkan kedalam kode sumber bahasa pemrograman, maka akan terjadi kesalahan pengetikan.
Basis Path Testing Diusulkan oleh Tom McCabe. Metode berbasis alur memungkinkan perancang kasus uji untuk menghasilkan ukuran kompleksitas logikal dari desain prosedural dan menggunakan ukuran ini untuk mendefinisikan himpunan basis dari alur eksekusi
Flow Graph Notation Basic Path Testing Cyclomatic Complexity Deriving Test Case Graph Matrix
Notasi Graf Alur Notasi sederhana untuk merepresentasikan alur kontrol disebut graf alur (flow graph)
Notasi Graf Alur edge harus berakhir pada sebuah node walaupun tidak semua node merepresentasikan perintah prosedural. Area yang dibatasi oleh edge dan node disebut region, area diluar graph juga dihitung sebagai region.
Flow Graph
Cyclomatic Complexity software metric yang menyediakan ukuran kuantitatif dari komplesitas logikal suatu program nilai yang dikomputasi untuk kompleksitas cyclomatic mendefinisikan jumlah independent path dalam himpunan basis suatu program menyediakan batas atas untuk sejumlah ujicoba yang harus dilakukan untuk memastikan bahwa seluruh perintah telah dieksekusi sedikitnya satu kali Independent path adalah alur manapun dalam program yang memperkenalkan sedikitnya satu kumpulan perintah pemrosesan atau kondisi baru
Cara menentukan Kompeksitas Jumlah region dari graf alur mengacu kepada komplesitas cyclomatic Kompleksitas cyclomatic untuk graf alur G didefinisikan : V(G) = E N + 2; E = jumlah edge, dan N = jumlah node Kompleksitas cyclomatic untuk graf alur G didefinisikan : V(G) = P + 1 P = jumlah predicates nodes
Contoh Path 1 : 1 11 Path 2 : 1 2 3 4 5 10 1 11 Path 3 : 1 2 3 6 8 9 10 1 11 Path 4 : 1 2 3 6 7 9 10 1 11 1. Flow graph mempunyai 4 region 2. V(G) = 11 edges 9 nodes + 2 = 4 3. V(G) = 3 predicates nodes + = 4
Deriving Test Case Menyiapkan kasus uji yang akan mengeksekusi setiap alur dalam himpunan basis Data harus dipilih sehingga kondisi pada predicate nodes dapat di uji dengan tepat
Contoh DTC
Contoh DTC (2)
Contoh DTC (3)
Contoh DTC (4)
Graph Matrix Prosedur untuk menghasilkan graf alur dan menentukan himpunan alur basis dapat di mekanisasi 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 merupakan representasi tabular dari flow graph,
Graph Matrix (2) Hal Yang Harus Diperhatikan : Kemungkinan suatu link/ edge akan dieksekusi Waktu proses yang dibutuhkan selama traversal suatu link Memori yang diperlukan selama traversal suatu link Sumber daya yang diperlukan selama traversal suatu link
Contoh Graph Matrix
Control Structure Testing Condition Test Data Flow Test Loop test
Condition Test rancangan metode ujicoba kasus yang menguji kondisi logikal yang ada didalam modul program E1 <operator relasional> E2 Jenis-jenis kesalahan dalam kondisi meliputi : Kesalahan operator boolean ( keberadaan operator boolean yang salah/berlebih/kurang) Kesalahan variable Boolean Kesalahan parantesis Boolean Kesalahan operator relasional Kesalahan ekspresi aritmatika
Data Flow Testing memilih alur dari program berdasarkan lokasi pendefinisian dan penggunaan variabel dalam program Untuk perintah dengan S sebagai nomor perintah : DEF (S) = {X perintah S mengandung definisi X} USE (S) = {X Perintah S mengandung penggunaan X} Jika perintah S merupakan perintah if atau loop, himpunan DEF = kosong (empty) himpunan USEberdasarkan pada kondisi perintah S Definisi variable X pada perintah S akan ada pada perintah S` jika ada alur(path) dari perintah S ke perintah S` yang tidak mengandung pendefinisian lain dari variable X.
Loop Testing ujicoba whitebox yang memfokuskan secara khusus pada validitas pembentukan loop Jenis : simple loop concatenated loop nested loop unstructured loop
Loop Testing Simple Loop Nested Loop Concatenated Loop Unstructured Loop
Simple Loop serangkaian ujicoba harus diaplikasikan pada loop sederhana, dimana n merupakan jumlah maksimum yang diperbolehkan dalam loop Teknik : Lewati loop secara keseluruhan (skip the loop entirely) Hanya satu yang melalui loop (only one pass through the loop) 2 melalui loop (two passes through the loop) m melalui loop, jika m < n (m passes the loop where m < n) n 1, n, n+1 passes the loop
Pendekatan : Nested Loop Mulai dari loop terdalam, Tetapkan loop lainnya pada nilai minimum 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) Lakukan mengarah keluar, dan tetap mempertahankan loop luarnya dalam nilai minimum dan nested loop lainnya dengan nilai yang sesuai. Lanjutkan sampai seluruh loop teruji.
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
Unstructured Loop Jika mungkin sebaiknya loop jenis ini didesain ulang untuk merefleksikan kegunaanpembentukan struktur program.
Gambaran
Next -> Blackbox The End