-->
Implementasi Dengan White Box Testing
IMPLEMENTASI DENGAN WHITE BOX TESTING
Kadang disebut juga glass box testing atau clear box testing, yaitu suatu metode disain test case yang menggunakan struktur kendali dari disain prosedural.
Metode disain test case ini sanggup menjamin:

  • tiruana jalur (path) yang independen / terpisah sanggup dites setidaknya sekali tes.Semua kecerdikan keputusan sanggup dites dengan jalur yang salah dan atau jalur yang benar.
  • Semua loop sanggup dites terhadap batasannya dan ikatan operasionalnya.
  • Semua struktur internal data sanggup dites untuk memastikan validitasnya.
  • Seringkali white box testing diasosiasikan dengan penguukuran cakupan tes (test coveragemetrics), yang mengukur persentase jalur-jalur dari tipe yang diplih untuk dihukum oleh test cases.
Mengapa melaksanakan white box testing bilamana black box testing berfungsi untuk testing pemenuhan terhadap kebutuhan / spesifikasi? Kesalahan kecerdikan dan perkiraan yang tidak benar kebanyakan dilakukan ketika coding untuk “kasus tertentu”. Dibutuhkan kepastian bahwa sanksi jalur ini sudah dites. Asumsi bahwa adanya kemungkinan terhadap sanksi jalur yang tidak benar. melaluiataubersamainiwhite box testing sanggup ditemukan kesalahan ini Kesalahan penulisan yang acak. Seperti berada pada jalur kecerdikan yang membingungkan pada jalur normal.[JON81] Argumen di atas yaitu kesalahan-kesalahan yang tak sanggup ditemukan dengan menggunakan black box testing yang terbaik sekalipun.

Cakupan pernyataan, cabang dan jalurCakupan pernyataan, cabang dan jalur yaitu suatu metode white box testing yang menggunakan alur kecerdikan dari kegiatan untuk membuat test cases. Yang dimaksud dengan alur kecerdikan yaitu cara dimana suatu belahan dari kegiatan tertentu dihukum ketika menjalankan program.Alur kecerdikan suatu kegiatan sanggup direpresentasikan dengan flow graph, yang akan dibahas lebih lanjut pada sub belahan diberikutnya (basis path testing). 


Suatu flow graph terbentuk dari:

  • ‰Nodes (titik), mewakili pernyataan (atau sub program) yang akan ditinjau ketika eksekusi
  • program
  • Edges (anak panah), mewakili jalur alur kecerdikan kegiatan 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 cabang
  • Paths (jalur), jalur yang mungkin untuk bergerak dari satu titik ke lainnya sejalan dengan
  • keberadaan arah anak panah.
Eksekusi suatu test case menyebabkan kegiatan untuk mengeksekusi pernyataan-pernyaan
tertentu, yang berkaitan dengan jalur tertentu, sebagaimana tergambar pada flow graph.
Cakupan cabang, pernyataan dan jalur dibuat dari sanksi jalur kegiatan yang berkaitan
dengan peninjauan titik, anak panah, dan jalur dalam flow graph.

Cakupan pernyataan
Cakupan pernyataan ditentukan dengan menilai proporsi dari pernyataan-pernyataan yang
ditinjau oleh sekumpulan test cases yang ditentukan. Cakupan pernyataan 100 % yaitu bila
Ø tiap pernyataan pada kegiatan ditinjau setidaknya minimal sekali tes.
Cakupan pernyataan berkaitan dengan tinjauan terhadap titik (node) pada flow graph.
Cakupan 100 % terjadi bilamana tiruana titik dikunjungi oleh jalur-jalur yang dilalui oleh test
cases.

Misal suatu jalur sanksi kegiatan melewati titik-titik A, B, D, H, K. Berarti ada 5 titik dari 10 titik yang dikunjungi, maka cakupan pernyataan sebesar 50 %.Karena satu titik pada flow graph sanggup ialah kelompok dari beberapa pernyataan, oleh sebab itu tingkat cakupan pernyataan yang sesungguhnya tidak sama dengan tingkat cakupan titik (nodes), tergantung dari cara pendefinisian flow graph.

Cakupan Cabang
Cakupan cabang ditentukan dengan menilai proporsi dari caban keputusan yang diuji oleh sekumpulan test cases yang ah bilamana tiapitinjau oleh jalur-jalur yang dilalui oleh test cases.sudah ditentukan. Cakupan cabang 100 % adal cabang keputusan pada kegiatan ditinjau setidaknya minimal sekali tes.Cakupan cabang berkaitan dengan peninjauan anak panah cabang (branch edges) dari flowgraph. Cakupan 100 % yaitu bilamana tiruana anak panah cabang

Cakupan Jalur
Cakupan jalur ditentukan dengan menilai proporsi sanksi jalur kegiatan yang diuji oleh
sekumpulan test cases yang sudah ditentukan. Cakupan jalur 100 % yaitu bilamana tiap jalur
pada kegiatan dikunjungi setidaknya minimal sekali tes.
Cakupan jalur berkaitan dengan peninjauan jalur sepanjang flow graph. Cakupan 100 %
yaitu bilamana tiruana jalur dilalui oleh test cases.

Disain Cakupan Test
Untuk mendisain cakupan dari tes, perlu diketahui tahap-tahap sebagai diberikut:
1. Menganalisa source code untuk membuat flow graph.
2. Mengidentifikasi jalur tes untuk mencapai pemenuhan tes menurut pada flow graph.
3. Mengevaluasi kondisi tes yang akan dicapai dalam tiap tes.
4. Memdiberikan nilai masukan dan keluaran menurut pada kondisi

Basis Path Testing
Merupakan metode white box testing yang dikenalkan oleh Tom McCabe [MC76].
Metode ini memungkinkan pendisain test cases untuk melaksanakan pengukuran terhadap
kompleksitas kecerdikan dari disain prosedural dan menggunakannya sebagai panduan dalam
sebab cabang-cabang dari instruksi atau

  • Zero Path: Jalur penghubung yang tidak penting atau jalur pintas yang ada pada suatu sistem.
  • One Path: Jalur penghubung yang penting atau berupa proses pada suatu sistem.
menentukan kelompok basis dari jalur eksekusi, dimana hal ini akan menjamin sanksi tiap pernyataan dalam kegiatan sekurangnya sekali selama testing berlangsung.Metode identifikasi yang menurut pada jalur, struktur atau koneksi yang ada dari suatu sistem ini biasa disebut juga sebagai branch testing,fungsi kecerdikan diidentifikasi dan dites, atau disebut juga sebagai control-flow testingBasis path hadir dalam 2 bentuk, yaitu:

Konsep utama basis path:
Tiap basis path harus diidentifikasi, dilarang ada yang terabaikan (setidaknya dites 1
kali).Kombinasi dan permutasi dari suatu basis path tidak perlu dites.konstruksi struktural pada flow graph, dimana tiap siklus melambangkan 1 atau lebih pernyataan instruksi (source code statement)

Suatu proses yang berurutan yang digambarkan dalam bentuk kotak pada flow chart atau suatu keputusan yang digambarkan dalam bentuk belah ketupat pada flow chart sanggup diwakili oleh satu node.panah pada flow graph, disebut edges atau links (hubungan), mewakili alur pengiriman
kendali dan ialah analogi dari panah pada flow chart. Suatu edge harus diakhiri dengan
suatu node, bahkan bilamana node tersebut tidak mewakili suatu pernyataan prosedural
sekalipun (lihat simbol untuk bentuk IF-THEN-ELSE).area yang dibatasi oleh edges dan nodes disebut regions. Bila menghitung regions, harus juga mengikutkan area di luar dari grafik sebagai belahan dari regions.

Cyclomatic Complexity
Adalah pengukuran software yang mempersembahkan pengukuran kuantitatif dari kompleksitas kecerdikan program.pada konteks metode basis path testing,nilai yang dihitung bagi cyclomatic complexit. Menentukan jumlah jalur-jalur yang independen dalam kumpulan basis suatu kegiatan dan mempersembahkan jumlah tes minimal yang harus dilakukan untuk memastikan bahwa tiruana pernyataan sudah dihukum sekurangnya satu kali.
Jalur independen yaitu tiap jalur pada kegiatan yang menawarkan 1 kelompok gres dari pernyataan proses atau kondisi baru

[Region / Complexity] V(G) = E (edges) – N (nodes) + 2
misal lihat Flow G
V(G) = 11 – 9 + 2 = 4
) = P (predicate node) + 1
toh lihat Flow Graph 
V(G) = 3 + 1

Tahapan dalam membuat test cases dengan menggunakan cyclomatic complexity:

  • Gunakan disain atau instruksi sebagai dasar, gambarlah flow graph
  • Berdasarkan flow graph, tentukan cyclomatic complexity
  • Tentukan kelompok basis dari jalur independen secara linier
  • Siapkan test cases yang akan melaksanakan sanksi dari tiap jalur dalam kelompok basiska program.a konteks metode basis path testing
Beberapa jalur mungkin spesialuntuk sanggup dihukum sebagai belahan dari tes yang lain.Direkomendasikan biar tidakboleh hingga kompleksitas tiap unit / komponen terkecil sistem
melebihi nilai 10 [V(G)]. Beberapa Praktisi menggunakan dari tiap unit/komponenn terkecil untuk mempersembahkan penilaian kompleksitas.

Alasan mengapa tiap komponen terkecil sistem dianjurkan untuk tidak mempunyai nilai V(G
yang melebihi 10:

  • Semakin banyak komponen,penghubung antar komponen dan titik persimpangan (keputusan) akan makin menaikan overhead (biaya), membuat instruksi menjadi makin komplek dan sanggup menurunkan kinerja system.
  • Menempatkan fungsi-fungsi dalam jumlah besar ke suatu modul akan menaikan jumlahantar muka (interfaces) dari tiap modul ke modul lainnya.Bila dalam 1 modul spesialuntuk mempunyai sedikit fungsi, akan membuat komponen menjadi sederhana dan potens,Terjadinya defect juga akan makin berkurang, serta biaya pengerjaan juga akan dapatditekan secara efisien
Graph Matrix
yaitu matrik berbentuk segi empat sama sisi, dimana jumlah baris dan kolom sama dengan jumlah node, dan identifikas baris dan kolom sama dengan identifikasi node, serta isi data yaitu keberadaan penghubungan antar node (edges).

Beberapa property yang sanggup dimenambahkan sebagai pembobotan pada koneksi antar node di dalam graph matrix, sebagai diberikut:

  • Kemungkinan jalur (Edges) akan dilalui / eksekusi.
  • Waktu proses yang dibutuhkan pada jalur selama proses transfer dilakukan.
  • Memori yang dibutuhkan selam proses transfer dilakukan pada jalur.
  • Sumber daya (resources) yang dibutuhkan selama proses transfer dilakukan pada jalur.
  • Control Structur testing
Control structure testing meliputi:

  • Testing kondisi (Condition Testing
  • Testing alur data (Data Flow Tesing)
  • Testing loop (Loop Testing)
Testing Kondisi (Condition Testing)
Suatu metode disain test case yang menyidik kondisi kecerdikan yang terdapat pada modul
a beberapa definisi yang berkaitan dengan testing kondisi:
Berikut ini yaitu beberapa definisi yang berkaitan dengan testing kondisi:

  • Kondisi sederhana yaitu variabel boolean atau ekspresi relasional, yang mungkin diproses dengan satu operator NOT (–).
  • Ekspresi operasional berbentuk E1<operator-relasional>E2, dimana E1 dan E2 yaitu ekspresi aritmatika dan <operator-relasional> yaitu salah satu dari : < , ≤ , = , ≠ (pertidaksamaan), ≥ ,>.Kondisi komplek (compound condition) tersusun oleh dua atau lebih kondisi sederhanaoperator boolean, dan parentheses
  • Operator boolean yang sanggup digunakan dalam suatu kondisi komplek yaitu OR (),׀ AND (&) dan NOT (–).
  • Suatu kondisi tanpa ekspresi relasional sanggup direferensikan sebagai suatu ekspresi
Boolean
Sedangkan tipe elemen yang mungkin ada dalam suatu kondisi adalah:

  • Operator
  • Variabel Boolean
  • Sepasang Boolean parentheses (sebagaimana yang terdapat pada kondisi sederhana ataupun komplek)
  • Operator relasional
  • Ekspresi aritmatika.
Jika suatu kondisi tidak benar, maka paling tidak satu komponen dari kondisi tersebut tidak
benar.Tipe eror pada kondisi yaitu sebagai diberikut

  • Kesalahan operator Boolean
  • Kesalahan variabel Boolean
  • Kesalahan boolean parentheses
  • Kesalahan operator relasional
  • Kesalahan ekspresi aritmatika.
metode tes kondisi berserius pada testing tiap kondisi dalam program. Strategi tes kondisi
punyai dua laba yaitu :

  • Pengukuran cakupan kondisi yang dites yaitu sederhana.
  • Cakupan kondisi kegiatan yang dites menyediakan tuntunan untuk pembuatan tes
pemanis bagi program.tujuaan tes kondisi disamping untuk mendeteksi error dari kondisi kegiatan juga untuk

kesalahan lainnya dari program.
Branch Testing
Merupakan taktik tes kondisi yang paling sederhana.untuk kondisi komplek C, cabangbenar dan salah dari C dan tiap kondisi sederhana dalam C harus dihukum setidaknya sekali [MYE79].sebagai pola ilustrasi penerapan, diasumsikan terdapat penggalan instruksi diberikut:
Bila testing pernyataan instruksi kegiatan sanggup dipuaskan dengan sekali tes, yaitu dengan mempersembahkan nilai (X,Y,Z) = (1,1,1). Dan hasil kondisi yang dibutuhkan yaitu true. Namun untuk branch testing dibutuhkan dua tes, yaitu

  • melaluiataubersamaini mempersembahkan nilai (X, Y, Z) = (1,1,1), untuk mengevaluasi dengan kondisi benar (true)
  • Dan dengan mempersembahkan nilai (X,Y,Z) = (2,1,1), sebagai wakil untuk mengevaluasi dengan kondisi salah (false)
Domain Testing[ W H I 8 0 ]
membutuhkan tiga atau empat tes yang dilaksanakan untuk suatu ekspresi relasional. untuk suatu ekspresi relasional dalam bentuk: E1<operator-relasional>E2tiga tes dibutuhkan nilai-nilai, biar E1 lebih besar, sama dengan, atau lebih 2
[HOW82]. Jika <operator-relasional> tidak benar dan E1 dan E2 benar, maka tiga tes Untuk mendeteksi kesalahan pada E1 dan E2,inimen error operator relasional. suatu tes terhadap nilai, biar E1 lebih besar atau lebih kecil dari E2, dimana selisih dari nilai-nilai ini diusahakan sekecil mungkin.
Ada tiga tes yang dilakukan, yaitu:

  • Tes pertama dengan mewakilkan E1 dan E2 dengan nilai 5 dan 2, yang didapat dari
  • masukan (X,Y,Z) = (4,5,3), biar E1 > E2. Dan hasil kondisi yang dibutuhkan yaitu true.
  • Tes kedua dengan mewakilkan E1 dan E2 dengan nilai 2 dan 2, yang didapat dari masukan (X,Y,Z) = (1,4,2), biar E1 = E2. Dan hasil kondisi yang dibutuhkan yaitu false.
  • Tes ketiga dengan mewakilkan E1 dan E2 dengan nilai 1 dan 2, yang didapat dari masukan (X,Y,Z) = (0,4,2), biar E1 < E2. Dan hasil kondisi yang dibutuhkan yaitu false.
Untuk suatu ekspresi boolean dengan n variabel, dibutuhkan tiruana kemungkinan tes 2n (n>0).Strategi ini sanggup mendeteksi dan error dari operator variabel boolean serta Booleannamun ini spesialuntuk dipraktekkan kalau n yaitu kecil.

Dimana X dan Y yaitu variable Boolean,maka akan di lakukan tes sebanyak 22 = 4,yaitu dengan mempersembahkan nilai x dan y perator boolean AND {(t,f), (f,t),(f ,f), (t,t)} dengan hasil kondisi yang dibutuhkan dari operator AND {f,f,f,t}. Untuk suatu ekspresi boolean yang tunggal (suatu ekspresi boolean dimana tiap variable boolean ya terjadi sekali) dengan n variabel boolean (n > 0), kita sanggup dengan simpel membuat suatu kumpulan tes yang kurang dari 2n tes dimana sekumpulan tes ini menjamin Deteksi eror multiple operator boolean dan juga efektif untuk mendeteksi error yang lain
misal
Maka do tidak membutuhkan 22 = 4 tes, namun cukup 2 tes, yaitu

  • melaluiataubersamaini mempersembahkan nilai (X,Y) = (t,t), untuk penilaian kondisi benar (true)‰
  • Dan (X,Y) = (f,t,), sebagai wakil dari sisa kemungkinan masukan untuk penilaian kondisi salah(false)
Branchand Relational Operator
Teknik ini menjamin deteksi error dari operator cabang dan relasional dalam suatu
ada dimana tiruana variabel boolean dan operator relasional yang terdapat di dalam
terjadi spesialuntuk sekali dan tidak ada variabel yang digunakan bersama.
BRO testing menggunakan batasan kondisi untuk suatu kondisi C.

Suatu batasan kondisi untuk C dengan n kondisi sederhana didefinisikan(D1,D2 ...D n),dimana D1(0 < I < n)adalah suatu simbol yang me-spesifikasi-kan suatu batasan yang ada pada kondisi sederhana ke I pada suatu kondisi c. Suatu batasan kondisi D untuk kondisi C sudah dicakup dengan suatu sanksi C jika, selama sanksi C ini, hasil dari tiap kondisi sederhana pada C memuaskan batasan yang dikorespondesikan dalam D.untuk variabel boolean, B, kita me-spesifikasi-kan suatu batasan hasil dari D yang
Menyatakan bahwa B bernilai true (t) atau false (f). sama halnya, untuk ekspresi relational, symbol <,=,> digunakan untuk me-spesifikasi-kan batasan hasil dari ekspresi.

Data Flow Testing
Metode data flow testing menentukan jalur kegiatan menurut pada lokasi dari definisi dan Menggunaan variabel-variabel pada program.Sebagai ilustrasi pendekatan data flow testing, diasumsikan bahwa tiap pernyataan dalam Suatu kegiatan ditandai dengan suatu penomoran pernyataan yang unik sifatnya, sebagai entitas dari tiap pernyataan tersebut, dimana tiap fungsi tidak memodifikasi parameter atau ariabel globalnya.
untuk suatu pernyataan dengan S sebagai nomor pernyataannya:

  • DEF(S) = [X | pernyataan S mengandung suatu definisi X]
  • USE(S) = [X | pernyataan S mengandung suatu penerapan X]
Jika pernyataan S yaitu suatu pernyataan IF atau LOOP, maka belahan DEF akan kosong
dan belahan USE didasarkan pada kondisi dari pernyataan S. Definisi dari variabel X pada
pernyataan S ditetapkan “tinggal” di dalam pernyataan S’ kalau ada suatu jalur dari pernyataan
ke pernyataan S’ yang tidak mengandung definisi X tersebut.ikatan Definition-Use (DU) dari X ditulis dalam bentuk [X,S,S’], dimana S dan S’ adalahnomor pernyataan, hal ini berarti X ada pada DEF(S) dan USE(S’), dan definisi X pada pernyataan S tinggal di dalam pernyataan S’. suatu taktik data flow testing sederhana harus meliputi beberapa aspek tiap ikatan DU setidaknya sekali.oleh sebab itu data flow testing disebut juga taktik DU testing.
DU testing tidak selalu menjamin pemenuhan cakupan seluruh cabang dari program. Namun hal ini yaitu suatu situasi yang jarang terjadi, bilamana suatu cabang tidak menjadi cakupa dari DU testing, ibarat konstruksi IF-THEN-ELSE, dimana belahan THEN tidak mempunyai definisi variabel apapun, dan belahan ELSE tidak ada. Pada situasi ini, cabang ELSE dari pernyataan IF tidak perlu di cakup oleh DU testing. Strategi data flow testing sangat mempunyai kegunaan untuk menentukan jalur tes pada kegiatan yang
meliputi pernyataan nested if dan loop.

LOOP TESTING
suatu metode white box testing yang berserius pada validitas konstruksi Loop secara eklusif empat kelas yang tidak sama dari loop:
1. Simple Loops. Sekumpulan tes diberikut ini sanggup digunakan untuk simple loops, dimana n
yaitu jumlah maksimum yang sanggup dilewatkan pada loop

  • Lompati loop secara keseluruhan, tak ada iterasi / lew
  • Lewatkan spesialuntuk satu kali iterasi pada loop.
  • Lewatkan dua kali iterasi pada loop.
  • Lewatkan m kali iterasi pada loop dimana m<n.
  • Lewatkan n-1, n, n+1 kali iterasi pada loop.:
2. Nested Loops Jika pendekatan tes untuk simple loops dikembangkan pada nested loops kemungkinan tes akan berkembang secara geometris searah dengan semakin tingginya tingkat dari nested loop
3. Concatenated Loops Concatenated loops sanggup dites dengan menggunakan pendekatan yang didefinisikan untuk simple loops, kalau tiap loops independen (tidak saling bergantung) antara satu dengan yang lainnya. Dikatakan dua loops tidak independen, kalau dua loops loop ialah concatenated loops, dan nilai loop counter pada loop 1 digunakan sebagai nilai pertama untuk loop 2. 

Bila loops tidak independen, direkomendasikan menggunakan pendekatansebagaimana yang digunakan pada nested loops
4. Unstructured Loops. Tidak sanggup dites dengan efektif. Dan bila memungkinkan loops jenisini harus didisain ulang.

Lines of Code
Pengukuran sederhana: menghitung jumlah baris instruksi dalam kegiatan dan menggunakanperhitungan ini untuk mengukur kompleksitas.
Berdasarkan studi yang sudah dilakukan LIP82A]:

  • Program kecil mempunyai error rata-rata 1,3 % hingga 1,8 %.
  • Program besar mempunyai kenaikan error rata-rata dari 2,7 % hingga 3,2 %. Halstead’s Metrics
Halstead’s metric yaitu pengukuran yang menurut pada penerapan operator-operator (seperti kata kunci) dan operan-operan (seperti nama variabel, obyek database) yang ada dalam suatu program.

  • n1 = jumlah operator yang unik (distinct) dalam program
  • n2 = jumlah operan yang unik (distinct) dalam program.
  • Panjang program: H = n1 log2 n1 + n2 log2 n2.
  • N1 = perhitungan jumlah keseluruhan operator program.
  • N2 = perhitungan jumlah keseluruhan operan program.
  • Prediksi bug: B = (N1 + N2) log2 (n1 + n2) / 3000.

LihatTutupKomentar