780 likes | 1.13k Views
TESTING & IMPLEMENTASI SISTEM. Pertemuan 4 “ Teknik-teknik pengujian perangkat lunak ” Diema HS,S. Kom. WHITEBOX TESTING. Definisi White Box Testing.
E N D
TESTING & IMPLEMENTASI SISTEM Pertemuan 4 “Teknik-teknikpengujianperangkatlunak” Diema HS,S. Kom
Definisi White Box Testing • Kadangdisebutjugaglass box testing atauclear box testing, adalahsuatumetodedisaintest case yang menggunakanstrukturkendalidaridisainprosedural. • Metodedisaintest caseinidapatmenjamin: • Semuajalur (path) yang independen / terpisahdapatditessetidaknyasekalites. • Semualogikakeputusandapatditesdenganjalur yang salahdanataujalur yang benar. • Semualoopdapatditesterhadapbatasannyadanikatanoperasionalnya. • Semuastruktur internal data dapatditesuntukmemastikanvaliditasnya.
Cakupanpernyataan, cabangdanjalur(Cont.) • Cakupanpernyataan, cabangdanjaluradalahsuatuteknikwhite box testing yang menggunakanalurlogikadari program untukmembuattest cases. • Yang dimaksuddenganalurlogikaadalahcaradimanasuatubagiandari program tertentudieksekusisaatmenjalankan program.
Cakupanpernyataan, cabangdanjalur(Cont.) • Alurlogikasuatu program dapatdirepresentasikandenganflow graph, yang akandibahaslebihlanjutpada sub babberikutnya (basis path testing). Sebagaicontohdapatdilihatpadagambardibawahini.
Cakupanpernyataan, cabangdanjalur(Cont.) • Suatu flow graph terbentukdari: • Nodes (titik), mewakilipernyataan (atau sub program) yang akanditinjausaateksekusi program. • Edges (anakpanah), mewakilijaluralurlogika program untukmenghubungkansatupernyataan (atau sub program) dengan yang lainnya. • Branch nodes (titikcabang), titik-titik yang mempunyailebihdarisatuanakpanahkeluaran. • Branch edges (anakpanahcabang), anakpanah yang keluardarisuatucabang • Paths (jalur), jalur yang mungkinuntukbergerakdarisatutitikkelainnyasejalandengankeberadaanarahanakpanah.
Cakupanpernyataan, cabangdanjalur • Eksekusisuatutest casemenyebabkan program untukmengeksekusipernyataan-pernyaantertentu, yang berkaitandenganjalurtertentu, sebagaimanatergambarpadaflow graph. • Cakupancabang, pernyataandanjalurdibentukdarieksekusijalur program yang berkaitandenganpeninjauantitik, anakpanah, danjalurdalamflow graph
Cakupanpernyataan, cabangdanjalur • Cakupanpernyataanditentukandenganmenilaiproporsidaripernyataan-pernyataan yang ditinjauolehsekumpulantest cases yang ditentukan. • Cakupanpernyataan 100 % adalahbilatiappernyataanpada program ditinjausetidaknya minimal sekalites. • Cakupanpernyataanberkaitandengantinjauanterhadaptitik (node) padaflow graph. • Cakupan 100 % terjadibilamanasemuatitikdikunjungiolehjalur-jalur yang dilaluiolehtest cases
Cakupanpernyataan Padacontohgambarflow graph diatasterdapat 10 titik. Misalsuatujalureksekusi program melewatititik-titik A, B, D, H, K. Berartiada 5 titikdari 10 titik yang dikunjungi, makacakupanpernyataansebesar 50 %. Karenasatutitikpadaflow graphdapatmerupakankelompokdaribeberapapernyataan, olehkarenaitutingkatcakupanpernyataan yang sebenarnyaberbedadengantingkatcakupantitik (nodes), tergantungdaricarapendefinisianflow graph
Cakupancabang(Cont.) • Cakupancabangditentukandenganmenilaiproporsidaricabangkeputusan yang diujiolehsekumpulantest cases yang telahditentukan. • Cakupancabang 100 % adalahbilamanatiapcabangkeputusanpada program ditinjausetidaknya minimal sekalites. • Cakupancabangberkaitandenganpeninjauananakpanahcabang (branch edges) dariflow graph. • Cakupan 100 % adalahbilamanasemuaanakpanahcabangditinjauolehjalur-jalur yang dilaluiolehtest cases.
Cakupancabang Berdasarkanpadacontohgambarflow graph diatas, terdapat 6 anakpanahcabang. Misalsuatujalureksekusi program melawatititik-titik A, B, D, H, K, makajalurtersebutmeninjau 2 dari 6 anakpanahcabang yang ada, jadicakupannyasebesar 33 %.
Cakupanjalur(Cont.) • Cakupanjalurditentukandenganmenilaiproporsieksekusijalur program yang diujiolehsekumpulantest cases yang telahditentukan. • Cakupanjalur 100 % adalahbilamanatiapjalurpada program dikunjungisetidaknya minimal sekalites. • Cakupanjalurberkaitandenganpeninjauanjalursepanjangflow graph. • Cakupan 100 % adalahbilamanasemuajalurdilaluiolehtest cases.
Cakupanjalur Berdasarkancontohflow graph diatas, terdapat 4 jalur. Bilasuatueksekusijalurpada program melaluititik-titik A, B, D, H, K, makaeksekusitersebutmeninjau 1 dari 4 jalur yang ada, jadicakupannyasebesar 25 %.
Perbedaanantaracakupanpernyataan, cabangdanjalur • Dari contoh, dapatdilihatbahwahanyadibutuhkan 2 jaluruntukmengunjungisemuaanakpanahcabang, dari 4 jalur yang adapadaflow graph. • Jadibilacakupanjalursebesar 100 %, makasecaraotomatiscakupancabangsebesar 100 % pula. Demikian pula bilacakupancabangsebesar 100 %, makasecaraotomatiscakupanpernyataansebesar 100 %.
Disaincakupantes • Untukmendisaincakupandarites, perludiketahuitahap-tahapsebagaiberikut: • Menganalisasource codeuntukmembuatflow graph. • Mengidentifikasijalurtesuntukmencapaipemenuhantesberdasarkanpadaflow graph. • Mengevaluasikondisites yang akandicapaidalamtiaptes. • Memberikannilaimasukandankeluaranberdasarkanpadakondisi.
Basis Path Testing • Merupakanteknikwhite box testing yang dikenalkanoleh Tom McCabe [MC76]. • Metodeidentifikasi yang berdasarkanpadajalur, strukturataukoneksi yang adadarisuatusisteminibiasadisebutjugasebagaibranch testing, karenacabang-cabangdarikodeataufungsilogikadiidentifikasidandites, ataudisebutjugasebagaicontrol-flow testing .
Basis Path Testing • Basis pathhadirdalam 2 bentuk, yaitu: • Zero Path: Jalurpenghubung yang tidakpentingataujalurpintas yang adapadasuatusistem. • One Path: Jalurpenghubung yang pentingatauberupaprosespadasuatusistem. • Konseputamabasis path: • Tiapbasis pathharusdiidentifikasi, tidakbolehada yang terabaikan (setidaknyadites 1 kali). • Kombinasidanpermutasidarisuatubasis pathtidakperludites.
Basis Path Testing • Notasi Flow Graph
Basis Path Testing • Contoh 1 Do while records remain read record; 2 Calculate proses; 3 If record field 1 = 0 4 Then process record; 5 Store in buffer; Increment counter; 6 Else If record field 2 = 0 7Then reset counter; 8 Else process record; Store in file; 9Endif 10 Endif 11 Enddo End
Cyclomatic Complexity • Adalahpengukuransoftware yang memberikanpengukurankuantitatifdarikompleksitaslogika program. • Padakonteksmetodebasis path testing , nilai yang dihitungbagicyclomatic complexitymenentukanjumlahjalur-jalur yang independendalamkumpulan basis suatu program danmemberikanjumlahtes minimal yang harusdilakukanuntukmemastikanbahwasemuapernyataantelahdieksekusisekurangnyasatu kali. • Jalurindependenadalahtiapjalurpada program yang memperlihatkan 1 kelompokbarudaripernyataanprosesataukondisibaru.
Cyclomatic Complexity • Berdasarkanurutanalurnya, didapatkansuatukelompok basis flow graph (Contoh) • Jalur 1 : 1–11 • Jalur 2 : 1-2-3-4-5-10-1-11 • Jalur 3 : 1-2-3-6-7-9-10-1-11 • Jalur 4 : 1-2-3-6-8-9-10-1-11
Cyclomatic Complexity • [Region / Complexity] V(G) = E (edges) – N (nodes) + 2 LihatFlow Graph (Contoh) V(G) = 11 – 9 + 2 = 4 • V(G) = P (predicate node) + 1 LihatFlow Graph (Contoh) V(G) = 3 + 1 = 4
Cyclomatic Complexity • Tahapandalammembuattest casesdenganmenggunakancyclomatic complexity: • Gunakandisainataukodesebagaidasar, gambarlahflow graph • Berdasarkanflow graph, tentukancyclomatic complexity • Tentukankelompok basis darijalurindependensecara linier • Siapkantest cases yang akanmelakukaneksekusidaritiapjalurdalamkelompok basis
Cyclomatic Complexity • Contoh Test Case (lihat flow graph contoh) • Test case jalur (Path) 1 • Nilai(record.eof) = input valid, dimana record.eof = true • Hasil yang diharapkan : Sistemkeluardari loop dan sub program. • Test case jalur (Path) 2 • Nilai(field 1) = input valid, dimana field 1 = 0 • Nilai(record.eof) = input valid, dimana record.eof = false • Nilai(counter) = Nilai(counter) + 1 • Hasil yang diharapkan : Sistemmelakukan [process record], [store in buffer] dan [increment counter].
Cyclomatic Complexity • Test case jalur (Path) 3 • Nilai(field 2) = input valid, dimana field 2 = 0 • Nilai(record.eof) = input valid, dimana record.eof = false • Nilai(counter) = 0 • Hasil yang diharapkan : Sistemmelakukan [reset counter]. • Test case jalur (Path) 4 • Nilai(field 2) = input valid, dimana field 2 <> 0 • Nilai(record.eof) = input valid, dimana record.eof = false • Hasil yang diharapkan : Sistemmelakukan [process record] dan [store in file].
Cyclomatic Complexity • Catatan : Beberapajalurmungkinhanyadapatdieksekusisebagaibagiandarites yang lain. • Direkomendasikan agar jangansampaikompleksitastiap unit / komponenterkecilsistemmelebihinilai 10 [V(G)]. Beberapapraktisimenggunakannilai rata-rata V(G) daritiap unit / komponennterkeciluntukmemberikanpenilaiankompleksitas
Graph Matrix • Adalahmatrikberbentuksegiempatsamasisi, dimanajumlahbarisdankolomsamadenganjumlahnode, danidentifikasibarisdankolomsamadenganidentifikasinode, sertaisi data adalahkeberadaanpenghubungantarnode (edges). • Beberapaproperti yang dapatditambahkansebagaipembobotanpadakoneksiantarnodedidalamgraph matrix, sebagaiberikut: • Kemungkinanjalur (Edge) akandilalui / dieksekusi. • Waktuproses yang diharapkanpadajalurselamaproses transfer dilakukan. • Memori yang dibutuhkanselamaproses transfer dilakukanpadajalur. • Sumberdaya (resources) yang dibutuhkanselamaproses transfer dilakukanpadajalur.
Control Structure Testing • Control structure testingmeliputi: • Testing kondisi (Condition Testing) • Testing alur data (Data Flow Testing) • Testing loop (Loop Testing)
Testing Kondisi (Condition Testing) • Suatumetodedisaintest case yang memeriksakondisilogika yang terdapatpadamodul program. • Berikutiniadalahbeberapadefinisi yang berkaitandengan testing kondisi: • Kondisisederhanaadalahvariabelbooleanatauekspresirelasional, yang mungkindiprosesdengansatu operator NOT (). • Ekspresioperasionalberbentuk E1<operator-relasional>E2, dimana E1 dan E2 adalahekspresiaritmatikadan <operator-relasional> adalahsalahsatudari : < , ≤ , = , ≠ (pertidaksamaan), ≥ ,>. • Kondisikomplek (compound condition) tersusunolehduaataulebihkondisisederhana, operator boolean, danparentheses. • Operator boolean yang dapatdigunakandalamsuatukondisikomplekadalah OR (׀), AND (&) dan NOT (). • Suatukondisitanpaekspresirelasionaldapatdireferensikansebagaisuatuekspresiboolean.
Sedangkantipeelemen yang mungkinadadalamsuatukondisiadalah: • Operator boolean • Variabelboolean • Sepasangbooleanparentheses (sebagaimana yang terdapatpadakondisisederhanaataupunkomplek) • Operator relasional • Ekspresiaritmatika. • Jikasuatukondisitidakbenar, maka paling tidaksatukomponendarikondisitersebuttidakbenar.
Tipeerrorpadakondisiadalahsebagaiberikut: • Kesalahan operator boolean • Kesalahanvariabelboolean • Kesalahanbooleanparentheses • Kesalahan operator relasional • Kesalahanekspresiaritmatika.
Testing Kondisi (Condition Testing) • Metodeteskondisiberfokuspada testing tiapkondisidalam program. Strategiteskondisimempunyaiduakeuntunganyaitu: • Pengukurancakupankondisi yang ditesadalahsederhana. • Cakupankondisi program yang ditesmenyediakantuntunanuntukpembuatantestambahanbagi program. • Tujuanteskondisidisampinguntukmendeteksierrordarikondisi program jugauntukkesalahanlainnyadari program.
Testing Kondisi (Condition Testing) • Merupakanstrategiteskondisi yang paling sederhana. Untukkondisikomplek C, cabangbenardansalahdari C dantiapkondisisederhanadalam C harusdieksekusisetidaknyasekali [MYE79]. • Sebagaicontohilustrasipenggunaan, diasumsikanterdapatpenggalankodeberikut: IF (X=1) AND (Y=1) AND (Z=1) then [Do Something] END IF • Bila testing pernyataankode program dapatdipuaskandengansekalites, yaitudenganmemberikannilai (X,Y,Z) = (1,1,1). Dan hasilkondisi yang diharapkanadalahtrue.
Testing Kondisi (Condition Testing) • Namununtukbranch testingdibutuhkanduates, yaitu • Denganmemberikannilai (X, Y, Z) = (1,1,1), untukmengevaluasidengankondisibenar (true). • Dan denganmemberikannilai (X,Y,Z) = (2,1,1), sebagaiwakiluntukmengevaluasidengankondisisalah (false).
Testing Kondisi (Condition Testing) • Membutuhkantigaatauempattes yang dilaksanakanuntuksuatuekspresirelasional. • Untuksuatuekspresirelasionaldalambentuk: E1<operator-relasional>E2 • tigatesdibutuhkannilai-nilai, agar E1 lebihbesar, samadengan, ataulebihkecildari E2 [HOW82]. Jika <operator-relasional> tidakbenardan E1dan E2benar, makatigatesinimenjamindeteksierror operator relasional. • Untukmendeteksikesalahanpada E1dan E2, suatutesterhadapnilai-nilai, agar E1lebihbesarataulebihkecildari E2, dimanaselisihdarinilai-nilaiinidiusahakansekecilmungkin.
Testing Kondisi (Condition Testing) • Contoh: If (X + 1) > (Y – Z) then [Do Something] End if • Dimana E1diwakilioleh (X + 1) dan E2diwakilioleh (Y – Z). • Adatigates yang dilakukan, yaitu: • Tespertamadenganmewakilkan E1dan E2dengannilai 5 dan 2, yang didapatdarimasukan (X,Y,Z) = (4,5,3), agar E1 > E2. Dan hasilkondisi yang diharapkanadalahtrue. • Teskeduadenganmewakilkan E1dan E2dengannilai 2 dan 2, yang didapatdarimasukan (X,Y,Z) = (1,4,2), agar E1 = E2. Dan hasilkondisi yang diharapkanadalahfalse. • Tesketigadenganmewakilkan E1dan E2dengannilai 1 dan 2, yang didapatdarimasukan (X,Y,Z) = (0,4,2), agar E1 < E2. Dan hasilkondisi yang diharapkanadalahfalse.
Testing Kondisi (Condition Testing) • Untuksuatuekspresibooleandengan n variabel, dibutuhkansemuakemungkinantes 2n (n>0). • Strategiinidapatmendeteksierrordari operator danvariabelbooleansertabooleanparenthesis, namuninihanyadipraktekkanjika n adalahkecil.
Testing Kondisi (Condition Testing) • Contoh: IF X AND Y THEN [Do Something] END IF • Dimana X dan Y adalahvariabelboolean, makaakandilakukantessebanyak 22 = 4, yaitudenganmemberikannilai X dan Y {(t,f), (f,t), (f,f), (t,t)} denganhasilkondisi yang diharapkandari operator booleanAND {f,f,f,t} .
Testing Kondisi (Condition Testing) • Untuksuatuekspresiboolean yang tunggal (suatuekspresibooleandimanatiapvariabelbooleanhanyaterjadisekali) dengan n variabelboolean (n > 0), kitadapatdenganmudahmembuatsuatukumpulantes yang kurangdari 2ntesdimanasekumpulantesinimenjamindeteksierror multiple operator booleandanjugaefektifuntukmendeteksierror yang lain.
Testing Kondisi (Condition Testing) • Contoh: IF X = TRUE AND Y = TRUE THEN [Do Something] END IF • Maka domain testing tidakmembutuhkan 22 = 4 tes, namuncukup 2 tes, yaitu • Denganmemberikannilai (X,Y) = (t,t), untukevaluasikondisibenar (true). • Dan (X,Y) = (f,t), sebagaiwakildarisisakemungkinanmasukanuntukevaluasikondisisalah (false).
Testing Kondisi (Condition Testing) • Teknikinimenjamindeteksierrordari operator cabangdanrelasionaldalamsuatukondisi yang adadimanasemuavariabelbooleandan operator relasional yang terdapatdidalamkondisiterjadihanyasekalidantidakadavariabel yang dipakaibersama. • StrategiBRO testingmenggunakanbatasankondisiuntuksuatukondisi C. Suatubatasankondisiuntuk C dengan n kondisisederhanadidefinisikansebagai (D1,D2,…,Dn), dimana Di (0 < i ≤ n) adalahsuatusimbol yang me-spesifikasi-kansuatubatasan yang adapadakondisisederhanakeipadasuatukondisi C.
Testing Kondisi (Condition Testing) • Suatubatasankondisi D untukkondisi C telahdicakupdengansuatueksekusi C jika, selamaeksekusi C ini, hasildaritiapkondisisederhanapada C memuaskanbatasan yang dikorespondesikandalam D. • Untukvariabelboolean, B, kita me-spesifikasi-kansuatubatasanhasildari D yang menyatakanbahwa B bernilaitrue (t) ataufalse (f).samahalnya, untukekspresi relational, simbol <, =, > digunakanuntuk me-spesifikasi-kanbatasanhasildariekspresi.
Testing Kondisi (Condition Testing) • Sebagaiilustrasidiberikancontoh-contohsebagaiberikut: • Contoh 1: Suatukondisi C1: B1 &B2 • Dimana B1dan B2adalahvariabelboolean. • Batasankondisi C1dalambentuk (D1, D2), dan D1dan D2adalah t atau f. • Nilai (t,f) adalahsuatubatasankondisi C1dandicakupolehtes yang membuatnilai B1menjaditruedannilai B2menjadifalse. • StrategiBRO testingmembutuhkansekumpulanbatasan {(t,t), (f,t), (t,f)} dicakupoleheksekusidari C1. • Jika C1tidakbenarterhadapsatuataulebiherror operator boolean, setidaknyasatudarisekumpulanbatasanakanmembuat C1salah.
Testing Kondisi (Condition Testing) • Contoh 2: Suatukondisi C2 : B1 &(E3 = E4) • Dimana B1 adalahekspresiboolean, E3dan E4adalahekspresiaritmatika. • Batasankondisi C2dalambentuk (D1, D2 ), dan D1adalah t ataufdan D2 adalah >, =, <. • Bila C2 = C1, kecualikondisisederhanakeduapada C2adalahekspresi relational, dapatdibangunsuatukumpulanbatasanuntuk C2denganmemodifikasisekumpulanbatasan {(t,t), (f,t),(t,f)} yang didefinisikanuntuk C1. • Dimana t untuk (E3 = E4) melambangkan = dan f untuk (E3 = E4) melambangkan < atau >. • Denganmengganti (t,t) dan (f,t) dengan (t,=) dan (f,=), dandenganmenggantikan (t,f) dengan (t,<) dan (t,>), menghasilkansekumpulanbatasanuntuk C2yaitu {(t,=), (f,=), (t,<), (t,>)}. • Cakupanuntuksekumpulanbatasandiatasakanmenjamindeteksierrordari operator booleandan relational pada C2.
Testing Kondisi (Condition Testing) • Contoh 3: Suatukondisi C3: (E1 > E2) & (E3 = E4) • Dimana E1, E2, E3, dan E4adalahekspresiaritmatika. • Batasankondisi C3 dalambentuk (D1, D2), dan D1dan D2 adalah >, =, <. • Bila C3samadengan C2kecualikondisisederhanapertamapada C3adalahekspresi relational, dapatdibangunsekumpulanbatasanuntuk C3denganmemodifikasikumpulanbatasanuntuk C2denganmenggantikan t dengan >, dan f dengan =, dan <, sehinggadidapat {(>,=),(=,=),(<,=),(>,>),(>,<)} • Cakupankumpulanbatasaniniakanmenjamindeteksierrordari operator relational pada C3.