• Tidak ada hasil yang ditemukan

Testing dan Implementasi Sistem

N/A
N/A
Protected

Academic year: 2021

Membagikan "Testing dan Implementasi Sistem"

Copied!
46
0
0

Teks penuh

(1)

Testing dan Implementasi

Sistem

(2)
(3)
(4)

Outline

n

White box testing

n

Pembuatan flowgraph

(5)

White box testing

n

Adalah testing yang diturunkan dari “pengetahuan”

tentang struktur dan implementasi program

n

Nama lain : glass box, structural, clear box atau

open box testing

n

harus tahu secara detail tentang perangkat lunak

yang akan di uji.

n

Untuk pengujian yang lengkap maka suatu

perangkat lunak harus diuji dengan white box dan

black box testing

(6)

White Box Testing menggunakan 3 macam

tahapan testing

1.

Unit Testing

2.

Integration testing

3.

Regression Testing

(7)

White box testing

n 

Pembuatan testcase didasarkan pada alur logika

Alur logika : cara dimana suatu bagian dari

program tertentu dieksekusi saat menjalankan

program.

n 

Alur logika dapat direpresentasikan dengan

(8)

Kegunaan

n

Menguji setiap jalur independent

n

Menguji keputusan logic (true atau falsa)

n

Menguji Loops dan batasannya

(9)
(10)
(11)

Komponen flowgraph

Nodes (titik)

à

pernyataan (atau sub program) yang

akan ditinjau saat eksekusi program.

Edges (anak panah)

à

jalur alur logika program untuk

menghubungkan satu pernyataan (atau sub program)

dengan yang lainnya.

Branch nodes (titik cabang)

à

titik-titik yang

mempunyai lebih dari satu anak panah keluaran.

Branch edges (anak panah cabang)

à

anak panah

yang keluar dari suatu titik cabang

Paths (jalur)

à

jalur yang mungkin untuk bergerak dari

satu titik ke lainnya sejalan dengan keberadaan arah

anak panah.

(12)

Komponen flowgraph

n 

Eksekusi suatu test case menyebabkan program

untuk mengeksekusi pernyataan-pernyataan

tertentu, yang berkaitan dengan jalur tertentu,

sebagaimana tergambar pada flow graph.

n 

Cakupan cabang, pernyataan dan jalur dibentuk

dari eksekusi jalur program yang berkaitan

dengan peninjauan titik, anak panah, dan jalur

dalam flow graph.

(13)

Cakupan pernyataan

n 

Ditentukan dengan menilai proporsi dari

pernyataan-pernyataan yang ditinjau oleh

sekumpulan test cases yang ditentukan.

n 

Cakupan pernyataan 100% jika tiap pernyataan

pada program ditinjau setidaknya minimal sekali

tes

n 

Cakupan pernyataan berkaitan dengan nodes

(14)

Contoh Cakupan Pernyataan

• 

Pada contoh gambar

flow

graph

di samping

terdapat 10 titik.

• 

Misal suatu jalur eksekusi

program melewati titik-titik

A, B, D, H, K.

• 

Berarti ada 5 titik dari 10

titik yang dikunjungi,

maka cakupan

(15)

Cakupan cabang

n 

Cakupan cabang ditentukan dengan menilai

proporsi dari cabang keputusan yang diuji oleh

sekumpulan test cases yang telah ditentukan.

n 

Cakupan cabang 100% adalah bilamana tiap

cabang keputusan pada program ditinjau

setidaknya minimal sekali tes.

n 

Cakupan cabang berkaitan dengan peninjauan

anak panah cabang (branch edges) dari flow

graph.

(16)

Contoh Cakupan Cabang

• 

Pada contoh gambar

flow graph

di samping,

terdapat 6 anak panah

cabang.

• 

Mis. suatu jalur eksekusi

program melewati

titik-titik A, B, D, H, K,

maka jalur tersebut

meninjau 2 dari 6 anak

panah cabang yang ada,

jadi cakupannya sebesar

33 %.

(17)

Cakupan jalur

n 

Cakupan jalur ditentukan dengan menilai

proporsi eksekusi jalur program yang diuji oleh

sekumpulan test cases yang telah ditentukan.

n 

Cakupan jalur 100 % adalah bilamana tiap jalur

pada program dikunjungi setidaknya minimal

sekali tes.

n 

Cakupan jalur berkaitan dengan peninjauan jalur

(18)

Contoh Cakupan Jalur

• 

Berdasarkan contoh

flow

graph

di atas, terdapat 4

jalur.

• 

Bila suatu eksekusi jalur

pada program melalui

titik-titik A, B, D, H, K, maka

eksekusi tersebut

meninjau 1 dari 4 jalur

yang ada, jadi cakupannya

sebesar 25%.

(19)

Disain cakupan tes

Untuk mendisain cakupan dari tes, perlu diketahui tahap-

tahap sebagai berikut:

1.

Menganalisa

source code

untuk membuat

flow graph

.

2.

Mengidentifikasi jalur tes untuk mencapai pemenuhan

tes berdasarkan pada

flow graph

.

3.

Mengevaluasi kondisi tes yang akan dicapai dalam tiap

tes.

4.

Memberikan nilai masukan dan keluaran berdasarkan

(20)

Basis path testing

n

Merupakan teknik

white box testing

yang dikenalkan oleh

Tom McCabe [MC76].

n

Memungkinkan pendisain

test cases

untuk melakukan

pengukuran terhadap kompleksitas logika dari disain

prosedural

n

Menggunakan ukuran kompleksitas tsb sebagai panduan

dalam menentukan kelompok basis dari jalur eksekusi

dimana hal ini akan menjamin eksekusi tiap pernyataan

dalam program sekurangnya sekali selama testing

berlangsung.

(21)

Basis path testing

n 

Identifikasi didasarkan pada jalur, struktur atau

koneksi yang ada dari suatu sistem (branch

testing), karena cabang-cabang dari kode atau

fungsi logika diidentifikasi dan dites

n 

Konsep utama basis path :

Tiap basis path harus diidentifikasi, tidak boleh

ada yang terabaikan (setidaknya dites 1 kali).

Kombinasi dan permutasi dari suatu basis

(22)

Cyclomatic complexity

n

Adalah

pengukuran kuantitatif dari kompleksitas

logika program.

n

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.

(23)

Cyclomatic complexity

n 

Jalur independen adalah tiap jalur pada program

yang memperlihatkan 1 kelompok baru dari

pernyataan proses atau kondisi baru.

n 

[

Region / Complexity

] V(G) = E (

edges

) – N

(24)
(25)

Pembuatan

test cases

dengan

menggunakan

cyclomatic complexity

:

Tahapan :

1.

Gunakan disain atau kode sebagai dasar,

gambarlah

flow graph

2.

Berdasarkan

flow graph

, tentukan

cyclomatic

complexity

3.

Tentukan kelompok basis dari jalur independen

secara linier

4.

Siapkan

test cases

yang akan melakukan

(26)
(27)

public static int binarySearch( int key, int[] sequence ) { int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) { mid = ( top + bottom ) / 2;

if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; }

(28)

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 1 1

(29)

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 1 2 1 2

(30)

1 2

10

F

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 10 F 1 2

(31)

3 1 2 10 F T F

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 10 3 T F 10 F 1 2

(32)

3 1 2 10 F T F 4 T 5 T

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 4 T 5 T 10 3 T F F 1 2

(33)

3 1 2 10 F T F 4 T 5 T 6 F

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 10 6 4 T 5 T 3 T F F 1 2 F

(34)

3 1 2 10 F T F 4 T 5 T 6 F 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 9 6 4 T 5 T 3 T F F 1 2 F 10

(35)

3 1 2 10 F T F 4 T 5 T 6 F 7 T 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 7 T 9 6 4 T 5 T 3 T F F 1 2 F 10

(36)

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 8 F 7 T 9 6 4 T 5 T 3 T F F 1 2 F 10

(37)

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 8 F 7 T 9 6 4 T 5 T 3 T F F 1 2 F 10

(38)

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 8 F 7 T 9 6 4 T 5 T 3 T F F 1 2 F 10

(39)

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 8 F 7 T 9 6 4 T 5 T 3 T F F 1 2 F 10

(40)

n

Setelah pembuatan flowgraph,

tahap selanjutnya adalah

menghitung CC untuk

menentukan jumlah jalur

independen

CC = jml edges-jml nodes+2

CC = 13-10+2

= 5

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

(41)

n 

Berdasarkan urutan alurnya,

didapatkan suatu kelompok

basis flow graph

:

Jalur 1 = 1-2-10

Jalur 2 = 1-2-3-10

Jalur 3 = 1-2-3-4-6-7-9-2-10

Jalur 4 = 1-2-3-4-6-8-9-2-10

Jalur 5 = 1-2-3-4-5-9-2-10

3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

(42)

n

Tahap selanjutnya adalah menyusun

test

cases

yang akan melakukan eksekusi dari tiap

jalur dalam kelompok basis

(43)

n

Testcase jalur 1

nilai bottom valid

dimana nilai record

bernilai false

hasil yang

diharapkan :

sistem melakukan

[return keyPosition]

dan keluar dari

subprogram

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; }

(44)

n

Testcase jalur 3

public static int binarySearch( int key, int[] sequence ) {

int bottom = 0;

int top = sequence.length - 1; int mid = 0;

int keyPosition = -1;

while( bottom <= top && keyPosition == -1 ) {

mid = ( top + bottom ) / 2; if( sequence[ mid ] == key ) { keyPosition = mid;

}

else {

if( sequence[ mid ] < key ) { bottom = mid + 1; } else { top = mid - 1; } } } return keyPosition; } 3 1 2 10 F T F 4 T 5 T 6 F 7 T 8 F 9

n

Jalur 3 = 1-2-3-4-6-7-9-2-10

(45)

nilai bottom dan keyPosition valid dimana nilai record

bernilai True

nilai mid = (top+bottom)/2

nilai sequence[mid] valid dimana nilai record bernilai

False

nilai sequence[mid] valid dimana nilai record bernilai True

hasil yang diharapkan :

nilai bottom = mid+1

sistem keluar dari loop

sistem melakukan [return keyPosition] dan keluar dari

subprogram

(46)

n

Buat flowgraph

n

Hitung CC dan tentukan

jalur independen

n

Buatkan satu testcase

berdasarkan jalur

independen yang telah

ditentukan

Referensi

Dokumen terkait

Ibu yang memberi ASI eksklusif dan 55% ibu yang menyusui mengalami mastitis, puting susu lecet,dan dapat mengakibatkan bayi bingung puting hal tersebut di sebabkan karena

Tanggal atas efektifnya penggabungan 30 September 2011 Tanggal Pembayaran atas pembelian saham dari pemegang saham 03 Oktober 2011 publik yang telah menyatakan maksud mereka

Untuk memilih indi- kator yang akan digunakan, perpustakaan dapat ber- konsultasi dengan pihak lain, seperti: lembaga induk, instansi terkait, pemakai dan lain-lain.. Apakah

[r]

Anak suka memperhatikan segala sesuatu peristiwa yang ada/terjadi di sekitarnya. Kepedulian terhadap sekitar/lingkugan dalam kegiatan musik menjadi kemampuan dasar sosial dalam

 Skrining wanita menopause Skrining wanita menopause  Skrining kelainan sistem indra Skrining kelainan

a) Bahwa dalil pengaduan Pengadu dalam kedudukannya sebagai pendukung Calon Bupati Kabupaten Karawang dengan nomor urut 6 ( enam ) yaitu Saan Mustopa adalah dalil

Kahit na dumaan na sa maraming salin o pagbabago ang tawag sa wikang pambansa—mula sa Tagalog, na naging Pilipino (na base pa rin sa Tagalog ), na ngayon ay Filipino na—marami pa