Teknik Pengujian (1) - Bahan Kuliah-STMIK Bandung | Bahan ... · Melakukan seluruh keputusan...

37
Teknik Pengujian (2) Whitebox Testing Pengujian Perangkat Lunak Mina Ismu Rahayu 2011

Transcript of Teknik Pengujian (1) - Bahan Kuliah-STMIK Bandung | Bahan ... · Melakukan seluruh keputusan...

Teknik Pengujian (2)

Whitebox TestingPengujian 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.

Hasil Akhir

Faktor Reliability :

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

Test Case Design

mendesain test :

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

• pemeriksaan detail prosedural

• Alur logikal suatu software diujicoba

• Status dari program dapat diperiksa pada beberapa titik yang bervariasi

White Box

• Dilakukan pada interface software

• Mendemonstrasikan fungsi software yang dioperasikan

• Apakah input diterima dengan benar, dan ouputyang dihasilkan benar

• apakah integritas informasi eksternal terpelihara

Black Box

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

Basic Path Testing

Flow Graph Notation

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

Nested Loop

Pendekatan :

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

The End

Next -> Blackbox