Testing implementasi sistem
Sponsored Links
This presentation is the property of its rightful owner.
1 / 76

TESTING & IMPLEMENTASI SISTEM PowerPoint PPT Presentation


  • 144 Views
  • Uploaded on
  • Presentation posted in: General

TESTING & IMPLEMENTASI SISTEM. Pertemuan 4 “ Teknik-teknik pengujian perangkat lunak ” Diema HS,S. Kom. WHITEBOX TESTING. Definisi White Box Testing.

Download Presentation

TESTING & IMPLEMENTASI SISTEM

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


TESTING & IMPLEMENTASI SISTEM

Pertemuan 4

“Teknik-teknikpengujianperangkatlunak”

Diema HS,S. Kom


  • WHITEBOX TESTING


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 (Cont.)


Perbedaanantaracakupanpernyataan, cabangdanjalur (Cont.


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


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


Basis Path Testing


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.


Graph Matrix


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.


Testing Kondisi (Condition Testing)

  • Contoh 4: Padacontohini, diberikansebagaicontohpenerapansebenarnya, denganmenampilkanpenggalankodeberikut:

    IF (X = TRUE) AND (Y = TRUE) AND (Z = TRUE) THEN

    [Do Something]

    END IF

    • Dimana X, Y dan Z adalahvariabelboolean. Makadapatdituliskankembali, menurutBranch and relational operator testing (BRO), yang diterdapatpada [TAI89]: C4: X & Y & Z

    • Dengan C4 adalahidentitasdarikondisi yang mewakilipredicatedaripenggalankodediatas.

    • Dibutuhkandelapantesdenganbatasankondisi C4, sebagaiberikut: {(t,f,f), (t,f,t), (t,t,f), (t,t,t), (f,f,f), (f,f,t), (f,t,f), (f,t,t)}, denganhasilkondisi C4 yang diharapkanadalah (f, f, f, t, f, f, f, f).


Testing Kondisi (Condition Testing)

  • Untukmendapatkanjumlahpemenuhancakupankondisipadasuatumodul program, dapatdigunakanflow graph, sebagaimana yang telahdijelaskandalambasis path testing, dimanaakandiwakiliolehjumlahpredicate (P).


Data Flow Testing(Cont.)

  • Adalahtidakrealistisuntukmengasumsikanbahwadata flow testingakandigunakansecaraekstensifbilamelakukantessuatusistem yang besar. Namunbiasanyaakandigunakanpadadaerahtertentu yang ditargetkansebagaipenyebabkesalahandarisoftware.


Data Flow Testing(Cont.)

  • Metodedata flow testingmemilihjalur program berdasarkanpadalokasidaridefinisidanpenggunaanvariabel-variabelpada program.

  • Sebagaiilustrasipendekatandata flow testing, diasumsikanbahwatiappernyataandalamsuatu program ditandaidengansuatupenomoranpernyataan yang uniksifatnya, sebagaiidentitasdaritiappernyataantersebut, dimanatiapfungsitidakmemodifikasi parameter atauvariabelglobalnya.


Data Flow Testing(Cont.)

  • Untuksuatupernyataandengan S sebagainomorpernyataannya:

    • DEF(S) = [X | pernyataan S mengandungsuatudefinisi X]

    • USE(S) = [X | pernyataan S mengandungsuatupenggunaan X]

  • Jikapernyataan S adalahsuatupernyataan IF atau LOOP, makabagian DEF akankosongdanbagian USE didasarkanpadakondisidaripernyataan S. Definisidarivariabel X padapernyataan S dinyatakan “tinggal” didalampernyataan S’ jikaadasuatujalurdaripernyataan S kepernyataan S’ yang tidakmengandungdefinisi X tersebut.


Data Flow Testing(Cont.)

  • IkatanDefinition-Use (DU) dari X ditulisdalambentuk [X,S,S’], dimana S dan S’ adalahnomorpernyataan, haliniberarti X adapada DEF(S) dan USE(S’), dandefinisi X padapernyataan S tinggaldidalampernyataan S’.

  • Suatustrategidata flow testingsederhanaharusmencakuptiapikatan DU setidaknyasekali. Olehkarenaitudata flow testing disebutjugastrategiDUtesting.


Data Flow Testing(Cont.)

  • DUtesting tidakselalumenjaminpemenuhancakupanseluruhcabangdari program. Namunhaliniadalahsuatusituasi yang jarangterjadi, bilamanasuatucabangtidakmenjadicakupandariDU testing, sepertikonstruksi IF-THEN-ELSE, dimanabagian THEN tidakmempunyaidefinisivariabelapapun, danbagian ELSE tidakada. Padasituasiini, cabang ELSE daripernyataan IF tidakperludicakupolehDU testing.

  • Strategidata flow testingsangatbergunauntukmenentukanjalurtespada program yang berisipernyataannested if danloop.


Data Flow Testing(Cont.)

Proc x

B1;

Do while C1

If C2 Then

If C4 Then B4;

Else B5;

Endif;

Else

If C3 Then B2;

Else B3;

Endif;

Endif;

Enddo;

B6;

End proc;

  • SebagaiilustrasidaripenerapanDU testinguntukmemilihjalurtes PDL sebagaiberikut:


Data Flow Testing(Cont.)

  • UntukmenggunakanstrategiDU testingdalammemilihjalurtesdari diagram control flow, perlumengetahuidefnisidanpenggunaandarivariabelditiapkondisiataublokpada PDL.

  • Diasumsikanbahwavariabel X didefinisikanpadapernyataanakhirdariblok B1, B2, B3, B4, dan B5 dandigunakanpadapernyataanpertamadariblok B2, B3, B4, B5, dan B6.


Data Flow Testing(Cont.)

  • StrategiDU testingmembutuhkansuatueksekusijalurterpendekdaritiap Bi, 1 < i 5, ketiapBj, 2 < j  6. (Suatu testing tertentujugamencakuppenggunaantiapvariabeldari X dalamkondisi C1,C2, C3, dan C4.)

  • Walaupunada 25 ikatan DU darivariabel X, hanyadibutuhkan lima jalurtesuntukmencakupikatan DU ini. Alasannyaadalahkelimajalurinidibutuhkanuntukmencakupikatan DU X dari Bi, 1 < i 5, ke B6 danikatan DU lainnyadapatdicakupdenganmembuatkelimajaluriniberiterasisesuaidenganloop.


Data Flow Testing(Cont.)

  • Jikamenggunakanstrategibranch testinguntukmemilihjalurtesdari PDL, sebagaimanadisebutkandiatas, tidakdibutuhkaninformasitambahan.

  • Untukmemilihjalurtesdari diagram untukBRO testing, dibutuhkanpengetahuanakanstrukturdaritiapkondisiataublok. (Setelahpemilihanjalur program, perlumenentukanapakahjalurfisibeluntuk program; yaitusetidaknyasatumasukanada yang melaluijalur.)

  • Sejakpernyataan-pernyataanpadasuatu program dihubungkansatusama lain berdasarkanpadadefinisidanpenggunaanvariabel, pendekatandata flow testing akanefektifuntukmendeteksierror.

  • Bagaimanapunjuga, masalah-masalahpengukurancakupantesdanpemilihanjalurtesuntukdata flow testingakanlebihsulitdaripadamasalah yang berkaitandengan testing kondisi.


Loop Testing

  • Loop testingadalahsuatuteknikwhite box testing yang berfokuspadavaliditaskonstruksiloopsecaraeksklusif. Gambar 3.10 memperlihatkanempatkelas yang berbedadariloop [BEI90], yaitu:

    • Simple Loops

    • NestedLoops

    • ConcatenatedLoops

    • UnstructuredLoops


Loop Testing


Loop Testing

  • Simple Loops.Sekumpulantesberikutinidapatdigunakanuntuksimple loops, dimana n adalahjumlahmaksimum yang dapatdilewatkanpadaloop:

    • Lompatiloopsecarakeseluruhan, takadaiterasi / lewatanpadaloop.

    • Lewatkanhanyasatu kali iterasipadaloop.

    • Lewatkandua kali iterasipadaloop.

    • Lewatkan m kali iterasipadaloopdimana m<n.

    • Lewatkan n-1, n, n+1 kali iterasipadaloop.


Loop Testing

  • Nested Loops. Jikapendekatantesuntuksimple loopsdikembangkanpadanested loops, jumlahkemungkinantesakanberkembangsecarageometrissearahdengansemakintingginyatingkatdarinested loops.

    • Beizer [BEI90], memberikansuatupendekatan yang akanmenolonguntukmengurangijumlahtes.

    • Mulailahdariloop yang paling dalam. Set semualoops lainnyadengannilai minimum.

    • Lakukantessimple loopsuntukloop yang paling dalam, dengantetapmempertahankanloops yang adadiluarnyadengannilai parameter iterasi yang minimum. Tambahkanteslainnyauntuknilai yang diluardaerahatautidaktermasukdalambatasannilai parameter iterasi.

    • Kerjakandaridalamkeluar, lakukantesuntukloop berikutnya, tapidengantetapmempertahankansemualoop yang beradadiluarpadanilai minimum dannested looplainnyapadanilai yang umum.

    • Teruskanhinggakeseluruhandariloopstelahdites.


Loop Testing

  • Concatenated Loops. Concatenated loopsdapatditesdenganmenggunakanpendekatan yang didefinisikanuntuksimple loops, jikatiaploopsindependen (tidaksalingbergantung) antarasatudengan yang lainnya. Dikatakandualoopstidakindependen, jikadualoopsmerupakanconcatenated loops, dannilailoop counterpadaloop 1 digunakansebagainilaiawaluntukloop 2. Bilaloopstidakindependen, direkomendasikanmemakaipendekatansebagaimana yang digunakanpadanested loops.

  • Unstructured Loops. Tidakdapatditesdenganefektif. Dan bilamemungkinkanloops jenisiniharusdidisainulang.


Lines of Code

  • Pengukuransederhana: menghitungjumlahbariskodedalam program danmenggunakanperhitunganiniuntukmengukurkompleksitas.

  • Berdasarkanstudi yang telahdilakukan [LIP82a]:

    • Program kecilmempunyaierror rata-rata 1,3 % sampai 1,8 %.

    • Program besarmempunyaikenaikanerror rata-rata dari 2,7 % sampai 3,2 %.


Halstead’s Metrics

  • Halstead’s metric adalahpengukuran yang berdasarkanpadapenggunaan operator-operator (sepertikatakunci) danoperan-operan (sepertinamavariabel, obyek database) yang adadalamsuatu program.

    • n1 = jumlah operator yang unik (distinct) dalam program

    • n2 = jumlahoperan yang unik (distinct) dalam program.

    • Panjang program: H = n1 log2 n1 + n2 log2 n2.

    • N1 = perhitunganjumlahkeseluruhan operator program.

    • N2 = perhitunganjumlahkeseluruhanoperan program.

  • Prediksibug: B = (N1 + N2) log2 (n1 + n2) / 3000


  • BLACKBOX TESTING


Black-box testing

  • Pendekatanpengujiandimana program dianggapsebagaisuatu ‘black-box’ (‘kotakhitam’)

  • Program test case berbasiskanspesifikasi

  • Test planning dapatdimulaisejakawalprosespengembangansistem


Black-box testing


Black-box testing

  • Pengujian black box berusahamenemukankesalahandalamkategori :

    • Fungsi-fungsi yang tidakbenaratauhilang

    • Kesalahan interface

    • Kesalahandalamstruktur data atauakses database eksternal

    • Kesalahankinerja

    • Inisialisasi dan kesalahan terminasi


PartisiEkivalensi (equivalensipartition)

  • Input data dan output hasilterdapatdiklas yang berbeda yang sesuaidenganklasinputnya

  • Masing-masingklasequivalensi partition diprosresdimana program akanmemprosesanggota klas-klas tersebut secara equivale.

  • Test cases dipilihdarimasing-masingpartisi


PartisiEkivalensi (Equivalencepartitioning)


PartisiEkivalensi (Equivalencepartitioning)

  • Partition system inputs and outputs into ‘equivalence sets’

    • If input is a 5-digit integer between 10000 and

      99999, equivalence partitions are <10000, 10000-99999

      and > 100000

  • Choose test cases at the boundary of these sets

    • 00000, 9999, 10000, 99999, 100001


Equivalence partitions


  • Login