You are on page 1of 59

I HC QUC GIA H NI TRNG I HC CNG NGH

Vng Th Qunh Dng

NGHIN CU V MC BAO PH CA KIM TH

KHO LUN TT NGHIP I HC H CHNH QUY Ngnh : Cng Ngh Thng Tin

H NI - 2009
1

I HC QUC GIA H NI TRNG I HC CNG NGH

Vng Th Qunh Dng

NGHIN CU V MC BAO PH CA KIM TH

KHO LUN TT NGHIP I HC H CHNH QUY Ngnh: Cng Ngh Thng Tin Cn b hng dn : TS. Trng Ninh Thun Cn b ng hng dn: ThS. T Vn Khnh

H NI - 2009
2

LI CM N
Bn thn em t c thnh qu nh ngy hm nay l nh mt phn khng nh cng lao du dt ca cc thy c trong khoa Cng Ngh Thng Tin - i Hc Cng Ngh - i Hc Quc Gia H Ni. Em xin ghi nhn cng lao ca cc thy c v em xin gi li cm n su sc ti thy c. hon thnh c kho lun ny em xin gi li cm n chn thnh ti TS. Trng Ninh Thun v ThS. T Vn Khnh, hai thy hng dn, gip , ch bo rt tn tnh cho em. D c gng rt nhiu trong qu trnh lm kho lun, nhng cng khng th trnh khi nhng thiu st, em rt mong nhn c s gp ca cc thy, c gio em c th hon thin hn.

H ni, ngy 23 thng 5 nm 2009 Sinh vin: Vng Th Qunh Dng

TM TT KHO LUN
Trong thi i cng ngh thng tin bng n nh hin nay, phn mm ng mt vai tr cc k quan trng trong hu ht cc lnh vc ca i sng. Phn mm l mt sn phm cn phi c m bo v cht lng. m bo cht lng phn mm (SQASoftware Quality Assuarance) l mt nhim v c bit quan trng trong pht trin phn mm v l vn sng cn i vi tt c cc cng ty phn mm. m bo cht lng phn mm th trong cc d n phn mm phi tin hnh xc minh v thm nh. Mt trong cc hot ng xc minh v thm nh quan trng l tin hnh kim th phn mm. Kim th cn c tin hnh nhiu mc v phi hp nhiu k thut khc nhau. Phn khng th thiu trong kim th l vic xy dng cc ca kim th. Cc ca kim th phi tt mi c th pht hin ra khim khuyt ca phn mm. Mt vn t ra y l lm th no xc nh c ca kim th l tt, nhng tiu ch no nh gi cht lng ca chnh ca kim th? V cng vic tin hnh kim tra khi no th dng li? Ni dung ca kho lun s cp n hai phng php nhm mc ch xy dng cc ca kim th tt l k thut phn tch bao ph code v k thut phn tch gi tr im bin. Phn tch bao ph code s phi tin hnh xy dng cc ca kim th tt c cc lung ng i c th qua chng trnh, cc lung ng i t input ti output c xc nh da trn cc nhnh r ca chng trnh. Thng thng cc li v lp trnh thng hay xy ra ti gi tr bin do vy ti gi tr bin cn phi thit k ca kim th kim tra n. Trong phm vi ca kho lun chng ti s tin hnh ci t mt chng trnh nhm tm ra cc cu lnh iu khin ca file ngun java v ch ra gi tr bin trong cc biu thc so snh nhm mc ch ch ra xut cc gi tr bin baseline v robust cn c kim tra.

Mc lc
4

Vng Th Qunh Dng............................................................................................2 CHNG 1. M U ..............................................................................................10 1.1 Bi cnh nghin cu..........................................................................................10 1.2 Ni dung bi ton...............................................................................................11 1.3 Cu trc ca kho lun.....................................................................................12 CHNG 2. GII THIU V BAO PH CODE...................................................14 2.1 Bao ph code l g ?...........................................................................................14 2.2 Ti sao cn o lng code c bao ph ?......................................................14 2.3 Lm th no xc nh lng code c bao ph ?.....................................15 2.4. Trong tin trnh test th bao ph code hp vi k thut kim th no ?.....15 2.4.1 Kim th hp en ......................................................................................15 2.4.2 Kim th hp trng ...................................................................................15 2.4.3 Bao ph code ..............................................................................................16 CHNG 3. GII THIU MT S PHNG PHP BAO PH.......................17 3.1 Bao ph cu lnh (Statement coverage)...........................................................17 3.2 Bao ph nhnh (Branch coverage)...................................................................17 3.3 Bao ph ng i (path coverage)...................................................................18 3.4 Bao ph iu kin (condition coverage)...........................................................18 3.5 Bao ph nhiu iu kin (multiple condition coverage)..................................18 CHNG 4. PHN TCH, NH GI CC PHNG PHP BAO PH.........19 4.1 Phn tch phng php bao ph cu lnh (statement coverage)....................19 4.2 Phn tch phng php bao ph nhnh (branch coverage)...........................23 4.3 Phn tch phng php bao ph ng i (path coverage)...........................28 .............................................................................................................................32 CHNG 5. PHN TCH GI TR IM BIN...................................................33 5.1 Gii thiu ...........................................................................................................33 5.2 Phn hoch tng ng(equivalence partitioning).......................................33 5.3 Phn tch gi tr bin (boundary value analysis).............................................34 5.3.1 Tng quan v phn tch gi tr im bin.................................................34 5.3.2 La chn cc ca kim th s dng phn tch gi tr im bin...............34 5.3.3 Phn tch gi tr bin n bin (Single-Variable BVA)............................34 5.3.4 Phn tch gi tr bin a bin (Multi Variable BVA)............................36 5.3.5 Kt lun ......................................................................................................40 CHNG 6. THC NGHIM..................................................................................41 6.1 V d mt chng trnh n gin ....................................................................41 6.1.1 Xy dng cc ca kim th cho chng trnh trn ...................................42 6.1.2 Kt lun ......................................................................................................45 6.2 Chng trnh ci t tm kim cc cu lnh r nhnh trong m ngun java. ...................................................................................................................................46 6.2.1 Gii thiu v chng trnh ........................................................................46 6.2.2 M t cc chc nng chnh .......................................................................46 6.2.3 Biu trnh t...........................................................................................47 6.2.4 Thut ton s dng ...............................................................................49 6.2.5 Cc lp ci t ............................................................................................51

6.2.5 Kt qu thao tc cc chc nng gia ngi dng v chng trnh nh sau ........................................................................................................................51 6.3 Kt lun..............................................................................................................56 CHNG 7: KT LUN KHO LUN..................................................................57 7.1 Kt lun v kho lun .......................................................................................57 7.2 Hng nghin cu pht trin trong tng lai ................................................57 TI LIU THAM KHO...........................................................................................58

DANH SCH CC HNH V


Hnh 1 : Kt qu kim tra m ngun c thc thi.................................................20 Hnh 2 : Kt qu o bao ph dng lnh ...................................................................23 Hnh 3 : Kt qu thc hin test case 1 .......................................................................25 Hnh 4 : Kt qu o bao ph nhnh khi thc hin test case 1 .................................26 Hnh 5 : Kt qu khi thc hin test case 2.................................................................27 Hnh 6 : Kt qu o bao ph nhnh khi thc hin test case 2.................................27 Hnh 7: Kt qu thc hin test case 3 ........................................................................30 Hnh 8 : Kt qu o bao ph khi thc hin test case 3..............................................30 Hnh 9 : Kt qu thc hin test case 4 .......................................................................31 Hnh 10 : Kt qu o bao ph khi thc hin test case 4............................................32 Hnh 11 : Tp hp cc gi tr bin baseline cho n bin trn mt khong u vo .......................................................................................................................................35 Hnh 12 : ng cc gi tr baseline v robust cho n bin trn mt khong u vo.........................................................................................................................35 Hnh 13 : Tp hp cc gi tr baseline v rubust trng hp n bin trn hai khong u vo............................................................................................................36 Hnh 14 : Tp gi tr baseline v robust ca bin N trong trng hp hai bin u vo.................................................................................................................................37 Hnh 15 : Tp hp gi tr baseline v rubust trn hai khong ca bin M trong trng hp hai bin u vo.......................................................................................38 Hnh 16 : Tng hp tt c cc gi tr ca hai bin N v M trn hai khong u vo .......................................................................................................................................38 Hnh 17 : Tng hp ton b gi tr baseline, robust trng hp a bin u vo trn hai khong............................................................................................................39 Hnh 18 : V d cu trc mt chng trnh n gin ...............................41 Hnh 19 : Cc cng vic cn thc hin (t m)......................................................42 Hnh 20 : Test case 1 kim tra cng vic A................................................................42 Hnh 21 : Test case 2 kim tra cng vic B........................................................42 Hnh 22 : Test case 3 kim tra cng vic C................................................................43 Hnh 23 : Hai iu kin mt v hai l c lp nhau .................................................43 Hnh 24 : Kim tra ng thi cng vic A v cng vic C trong cng 1 test case...44 Test case 2 kim tra cng vic B v cng vic C:.......................................................44 Hnh 25 : Test case kim tra ng thi cng vic B v C..........................................44 Hnh 26 : Nhnh khng c bao ph.......................................................................45 Hnh 27. Biu trnh t............................................................................................47 Hnh 28: Biu trnh t khi tng tc cu lnh if..................................................48 Hnh 29: Biu trnh t khi tng tc cu lnh while...........................................48 Hnh 30: Biu trnh t khi tng tc cu lnh for...............................................49 Hnh 31: Kin trc lp ci t Get_File_Name ........................................................51 Hnh 32: Kin trc lp ReadContentFile...................................................................51 Hnh 33: Giao din yu cu nhp tn file cn c...................................................52 Hnh 34: Nhp tn file khng ng nh dng *.java..............................................52 7

Hnh 35: Nhp vo mt tn file ng c ............................................................52 Hnh 36 : Ni dung ca file TestFile.java..................................................................52 Hnh 37: Kt qu tm kim cu lnh iu khin.......................................................53 Hnh 38 : Ni dung ca file cha cu lnh iu khin c tm kim ...................53 Hnh 39 : Kt qu khi ngi dng mun thao tc vi cu lnh if............................54 Hnh 40 : Kt qu khi ngi dng mun thao tc vi cu lnh while.....................55 Hnh 41 : Kt qu khi ngi dng mun thao tc vi cu lnh for.........................55

DANH MC CC THUT NG
Thut ng Statement coverage Branch coverage Path coverage Condition coverage Boundary value analysis(BVA) Single-variable BVA Multi-variable BVA Equivalence partitioning Test case Valication Verification Test entropy Cyclomatic complextity Baseline Robust Module Khi nim Bao ph cu lnh Bao ph nhnh Bao ph ng i Bao ph iu kin Phn tch gi tr bin Phn tch gi tr bin n bin Phn tch gi tr bin a bin Phn hoch tng ng Ca kim th Xc minh Thm nh Kim tra bt nh trong cu trc ca h thng S ng c lp tuyn tnh i qua m ngun ng c s mnh m M un

CHNG 1. M U
1.1 Bi cnh nghin cu
Trong thi i cng ngh thng tin bng n nh ngy nay, phn mm ng vai tr v cng quan trng hu ht cc lnh vc ca cuc sng. c bit trong khi ngnh doanh nghip, dch v, qung co, n tr gip c lc nhm lm tng cht lng nghip v. Mi b phn u ph thuc vo phn mm h tr cho vic pht trin, sn xut, qung co nhm tip th cc sn phm v dch v ca h. Phn mm cng c xem l mt sn phm, nhng l loi hnh sn xut c bit. Trong mt quy trnh sn xut phn mm, giai on pht hin, xc nh v sa cc li phn mm c xem l phn khng th thiu nhm m bo cht lng phn mm. m bo cht lng phn mm l mt nhim v c bit quan trng trong pht trin phm mm v l vn sng cn i vi tt c cc cng ty phn mm. mc cao, vic m bo cht lng lin quan n mt lot cc vn nh chun v qui trnh qun l ca cng ty, mi trng v cng c pht trin, m hnh pht trin phn mm c la chn, k nng ca nhn vin mc thp hn, cht lng phn mm c m bo trn c s hiu ng yu cu ca khch hng, c t ng yu cu, to ra cc thit kt tt v chuyn ti n mt cch ng n thnh m ngun ca phn mm. Chi ph b ra cho giai on ny thng chim khng nh trong tng chi ph m cc t chc pht trin phn mm b ra cho ton b qui trnh. Vi tc pht trin chng mt ca lnh vc cng ngh thng tin trn c h thng phn cng v phn mm, kh nng xy ra nhiu li, c bit l nhng li phc tp l rt cao. Li c th gy thit hi to ln c v tin bc, thi gian v cng sc con ngi. Chnh v vy, cn c phng php pht hin ra li sm nhm gim cng sc sa chng. pht hin ra nhng li phn mm, phn mm cn phi c thm nh (Valication) v kim chng (Verification). Xc minh, thm nh gip ta pht hin v sa li phn mm t nh tnh dng c ca phn mm. Con ngi khng th khng mc sai lm, v phn mm m khng c kim tra s lm vic khng hiu qu. Thng thng, c t 20 n 50 li trn 1000 dng lnh c tm thy trong sut qu trnh pht trin, v vn cn t 1.5 n 4 li trn 1000 dng lnh sau khi kim th h thng [1]. Mi li ny u c th dn ti li tng th hay khng ng vi c t yu cu. Mc ch ca kim th phn mm l lm gim li phn mm xung mc c th chp nhn c, tu thuc vo mc phc tp ca d n. Chnh v vy, 10

kim th phn mm c vai tr v cng quan trng trong ton b quy trnh pht trin phn mm, v trong cng nghip phn mm hin nay, n ang thu ht s quan tm ca nhiu nh nghin cu. Trong quy trnh pht trin phn mm hin i c giai on kim th phn mm dng kim tra tnh ng n ca phn mm. Mc tiu chnh ca nhm pht trin phn mm l phi lm sao to ra c nhng sn phm phn mm c cht lng tt nht.Vic vit tp hp cc ca kim th (test cases) l mt phn quan trng khng th thiu trong phng php pht trin phn mm linh hot. Tp hp cc ca kim th ng n gip chng ta gim thiu ti a cc li, gim thi gian tm kim li, to ra c cc phn mm tt, tnh n nh cao. Mt cch l tng th ngi kim tra (tester) phi kim tra tt c cc gi tr ca bin u vo, tuy nhin iu ny l khng tng bi v thng th min gi tr ca bin u vo l rt ln, thm ch gn nh di v hn hoc v hn. Do ngi kim tra khng th km tra c tt c mi gi tr, mi trng hp m ch kim tra mt s trng hp i din m thi. Nh vy lun xut hin cu hi: xy dng nhng ca kim th no l hp l ? Bao gi c th ngng kim tra? Cc ca kim th to ra liu c tt hay khng? Gi tr c chn xy dng ca kim th l nhng gi tr no?... nhm gii p cc thc mc ny v xy dng ln cc ca kim th tt, trong ti liu ny chng ti s phn tch mt s xut c a ra nhm nh gi cht lng ca mt ca kim th: phn tch bao ph code (code coverage analysis), kim tra cc im c bit (particular point) c th l phn tch nh gi gi tr ti v tr bin.

1.2 Ni dung bi ton


Kim th l giai on v cng quan trng trong qu trnh pht trin phn mm. Trong giai on ny th cng vic thit k cc ca kim th li ng vai tr cc k quan trng. Nhm gip xy dng cc ca kim th tt, chin lc kim th ti u, trong ti liu ny s cp n k thut phn tch code bao ph v phn tch cc gi tr bin. K thut phn tch bao ph s nh gi bao ph t xc nh qu trnh kim tra c t c bao ph yu cu hay khng, t l yu cu c kim tra (tnh trn cc yu cu ca phn mm v s lng code vit). Trong phm vi ti liu s phn tch cc cch bao ph c bn nhng chng v cng mnh m. Thng thng, khng th kim th vi mi d liu, chin lc chung khi thit k ca kim th l phn hoch tng ng (equivalence partitioning). Phn hoch tng ng chia min d liu vo ra thnh cc vng, m mi vng cha cc d liu c cng hnh vi. Do , i vi mi vng d liu ch cn xy dng mt ca kim th i din. Theo kinh nghim, cc sai st v lp trnh thng xy ra i vi d liu bin nn cn thm vo cc ca kim th kim tra i vi 11

bin ca cc vng. Trong ti liu ny cng s tin hnh phn tch nh gi cc gi tr bin s dng trong cc ca kim th. a ra cc gi tr bin xut cn phi c kim tra m bo phn mm vn hot ng tt v n nh trn cc gi tr . Lung chng trnh t input n output c cc cch i khc nhau ch yu c da vo cc cu lnh iu khin trong m ngun, chng ti s tin hnh ci t mt chng trnh tm kim cu lnh iu khin trong file m ngun java v xut ra gi tr bin trong cu lnh iu khin c cha ton t so snh. Tm li bi ton a ra y l lm sao xy dng c ca kim th tt, cc li lp trnh thng xy ra cc im bin ca di gi tr u vo, vy th ca kim th thit k kim tra gi tr bin l g? Gii quyt bi ton ny chng ti s phn tch k thut bao ph code v k thut phn tch gi tr bin, sau cng l ci t chng trnh tm kim cu lnh iu khin ca m file m ngun java, xut ra gi tr bin trong .

1.3 Cu trc ca kho lun


Phn cn li ca kho lun c trnh by nh sau: Chng 2 gii thiu v bao ph code. Trong chng ny s gii thiu v k thut bao ph code. L do, tm quan trng ca bao ph code. Cch tip cn c th o code c bao ph. Phn loi bao ph code vo k thut kim th hp trng. Chng 3 gii thiu v mt s phng php o bao ph code c bn nhng v cng mnh m l cc phng php : bao ph cu lnh o bao nhiu cu lnh c thc thi trong tng s cu lnh m ngun, bao ph nhnh o bao nhiu nhnh c thc thi trong tng s cc nhnh r ca chng trnh, bao ph ng i o bao nhiu lung ng i c kim tra, bao ph iu kin tng t nh bao ph nhnh nhng n c nhy tt hn, bao ph nhiu iu kin kt hp cc biu thc iu kin con trong cc cu lnh r nhnh. Chng 4 phn tch, nh gi cc phng php bao ph. Trong chng ny s tin hnh phn tch c th tng phng php : bao ph cu lnh, bao ph nhnh, bao ph ng i, ng thi nh gi u nhc im ca tng phng php. Chng 5 trnh by tng quan v phn tch gi tr im bin, chin lc phn hoch tng ng. Tip phn tch k thut phn tch gi tr bin n bin v a bin. Chng 6 thc nghim mt chng trnh n gin. Chng ti s tin hnh phn tch bi ton thc nghim, xut cc ca kim th m bo kim tra code c bao ph chng trnh. Thng thng xy dng cc ca kim th kim tra bao ph cc nhnh v bao ph ng i ta phi xc nh trong chng trnh m ngun c bao nhiu cu lnh r 12

nhnh, chng ti s ci t mt chng trnh n gin gip xut ra ton b cu lnh r nhnh v gi tr bin trong cc biu thc iu kin trong file ngun cn kim tra. File ngun u vo c l file java. Chng 7 kt lun v kho lun v hng nghin cu tip theo.

13

CHNG 2. GII THIU V BAO PH CODE


2.1 Bao ph code l g ?
Bao ph code l phn trm code c ph bng cch kim tra (test) t ng. o lng code bao ph n gin l xc nh nhng cu lnh no c thc thi, nhng cu lnh no khng c thc thi thng qua vic kim tra. Nhn chung, mt h thng bao ph code s thu thp thng tin v chng trnh ang chy v kt hp vi thng tin ngun to ra bo co bao ph code trn test suite [2]. Trong tin trnh pht trin th bao ph code l mt phn ca vng lp cc thng tin phn hi. Khi cc ca kim th (test case) c thc thi, bao ph code s lm ni bt ln din mo ca cc dng code khng c kim tra tho ng v cc dng code ny yu cu cn phi c kim tra thm. Qu trnh kim tra code khng c thc thi v sau thm vo cc ca kim th thch hp kim tra li l mt vng lp. Vng lp ny s tip tc lp i lp li cho ti khi bao ph t n mt vi ch tiu ra.

2.2 Ti sao cn o lng code c bao ph ?


Cn phi hiu mt cch ng n rng test unit gip ta ci thin cht lng v gip ta d on trc c cht lng ca phn mm. Tuy nhin liu rng ta c th bit c unit test no tt cho phn code ca ta? Test bao nhiu th ? C cn phi test nhiu hn? o bao ph code s tm ra cu tr li cho nhng cu hi ny. Vic o code bao ph gip ta trnh c test entropy (kim tra bt nh trong cu trc ca h thng)[3]. Khi code ca ta tri qua nhiu chu trnh pht hnh, c th c khuynh hng lm hao mn cc unit test. Khi c code mi c thm vo th c th s khng cn n cc test case chun m d n s dng trong ln pht hnh u tin. o bao ph code c th gi cho cc test ca ta t n cc chun m ta mong mun. Code khng pass ton b nhng ta c th t tin rng n c kim tra k lng. Ni tm li, o bao ph code v cc l do sau: bit phn kim ca ta c thc s kim tra c code. bit c kim tra n khi no l . duy tr cht lng cc ca kim th qua cc vng i ca d n

Nhn chung bao ph code theo nguyn tc 80 20. Tng gi tr bao ph s dn tr ln kh khn, vi vic thc hin cc kim tra mi s cng ngy cng t lm tng gi tr 14

bao ph. Nu ta tun theo cc nguyn tc lp trnh, cc iu kin li thng s c kim tra nhiu cp trong phn mm ca ta, c nhng dng code c th rt kh t ti cc mc kim tra thc t. o bao ph khng phi l vic thay th bng code tt v phong cch lp trnh hay.

2.3 Lm th no xc nh lng code c bao ph ?


C nhiu phng php o bao ph code. i th c ba cch tip cn chnh, chng c th c kt hp s dng vi nhau. o m ngun: Phng php ny s thm cc cu lnh cng c vo m ngun v bin dch li m ngun vi cc cng c bin dch thng thng. Mt im bt li ca phng php ny l phi bin dch hai ln do c th lm chm tin trnh, c bit l trong cc d n ln. Cng c m trung gian: cc lp bin dch l cng c, bng vic thm vo bytecodes mi th cc lp cng c mi cng c to ra. Thu thp thng tin thc thi: phng php ny thu thp thng tin t mi trng thc thi khi code thi hnh xc nh thng tin bao ph.

2.4. Trong tin trnh test th bao ph code hp vi k thut kim th no ?


2.4.1 Kim th hp en Kim th hp en l s kim th s dng cc ca kim th c thit k da trn c t yu cu, ti liu ngi dng nhm mc ch pht hin ra cc khim khuyt. Kim th hp en nhn nhn m un (module) c kim tra nh l mt hp en, v ch quan tm n chc nng (hnh vi) ca m un (module), tc l kim tra xem c hot ng ng vi c t hay khng. Cc ca kim th bao gm cc trng hp bnh thng v khng bnh thng (d liu khng hp l) ca m un[4]. 2.4.2 Kim th hp trng Kim th hp trng l s kim th da trn vic phn tch chng trnh xc nh cc ca kim th. K thut chnh y l phn tch m ngun, xc nh cc lung iu khin t input n output. Da trn vic xc nh cc ng i ngi ta a ra cc ca kim th nhm mc ch kim tra tt c cc ng i c th. Tc l m bo mi t hp hai lnh lin tip u c thc hin t nht mt ln trong mt ca kim th no . Vic xc nh cc ng i da trn vic phn tch cc cu trc r nhnh v cc vng lp[5]. 15

2.4.3 Bao ph code T nhng c im v k thut kim th hp en v kim th hp trng nh trn ta c th ni bao ph code l mt phng php kim th hp trng, bao ph code cn phi hiu v m ngun, c th truy cp vo m ngun hn l n gin s dng cc giao din c cung cp. C th ni bao ph code l phng php hu ch nht trong sut giai on kim th m un (module), tuy nhin n cng c nhng li ch trong kim th tch hp v trong cc ln kim th khc na, ph thuc vo chng ta kim tra ci g v kim tra nh th no. Kim th quy thng l kim th hp en do c th khng ph hp vi bao ph code.

16

CHNG 3. GII THIU MT S PHNG PHP BAO PH


3.1 Bao ph cu lnh (Statement coverage)
Bao ph cu lnh cn c gi l bao ph dng lnh (line coverage), l mt cch o s cu lnh c thc thi khi ta p dng nhng ca kim th thch hp. i vi mi cu lnh khng c bao ph, chng ta s tm hiu nguyn nhn ti sao n khng c bao ph. Nhng cu lnh khng c thc thi th cng c bao ph s dng c nh du, nhng cu lnh c thc thi s c xut ra thnh bn bo co. o cu lnh c bao ph gn nh c xem l cch thc thi n gin nht, n c th p dng thng qua bytecode. Bao ph cu lnh thng hay c nhng ngi pht trin s dng bi v n d dng kt hp vi cc dng m ngun. c th tin hnh phn tch kt qu test ta cn tnh t l phn trm cu lnh c kim tra. Tnh c phn trm s cu lnh c bao ph cn tin hnh hai php o ct yu l : tng s cc cu lnh trong m ngun v s cu lnh c kim tra bi test suite. Cng thc tnh phn trm dng lnh c thc thi [6]: S cu lnh c kim tra Phn trm dng lnh = Tng s cu lnh m ngun * 100%

3.2 Bao ph nhnh (Branch coverage)


Bao ph nhnh cn c bit n l bao ph quyt nh (Decision coverage). Bao ph nhnh l mt php o da trn cc im quyt nh nh l cc im quyt nh trong cu lnh r nhnh if, whileMt v d n gin v lnh r nhnh if : if (a>b) System.out.println( a); else System.out.println(b); Bo co ca cch bao ph nhnh l bo ra cc biu thc boolean c kim tra trong cc cu trc iu khin, nh gi c gi tr true v false. Chng hn mt cu lnh if(a>b) trong v d trn s chia chng trnh thnh 2 nhnh. Nu mun c 2 nhnh u c thc hin th cn phi c nhng test case cho a > b trong cu lnh trn mang c hai gi tr true v false ti hai thi im no . Nhng cng c trng hp ch 17

mt ca kim th m a > b c th mang c hai gi tr, chng hn nu cu lnh ny nm trong mt vng lp th c th trong mt ln lp no ta c a > b mang gi tr true, nhng ln lp sau th a > b mang gi tr false.Cng thc tnh phn trm nhnh c bao ph [6]: S nhnh c thc thi Phn trm nhnh c bao ph = Tng s nhnh trong chng trnh *100%

3.3 Bao ph ng i (path coverage)


Mt ng i th hin mt lung vic thc thi t khi bt u n khi kt thc mt chng trnh, mt phng thc c N quyt nh s c 2N cch i, v nu phng thc c vng lp th c th s c v s cch i. Bao ph ng i cng l mt trong s cc cch o trong kim th hp trng, n s kim tra trong tng hm xem cc ng i c c kim tra hay khng. K thut chnh y l phn tch m ngun, xc nh cc lung iu khin hay ng i ca chng trnh t input n output. Da trn vic xc nh cc ng i ngi ta a ra cc ca kim th nhm kim tra tt c cc ng i c th. Vic xc nh cc ng i da trn vic phn tch cc cu trc r nhnh v cc vng lp.

3.4 Bao ph iu kin (condition coverage)


Bao ph iu kin tng t nh bao ph nhnh nhng n c nhy tt hn vi lung iu khin. Bao ph iu kin o cc biu thc con c lp vi cc biu thc con khc. Bao ph iu kin bo co kt lun logic true hoc false ca tng biu thc boolean con, cc biu thc boolean con c phn tch bng cc php logic-and v logicor nu chng xy ra.

3.5 Bao ph nhiu iu kin (multiple condition coverage)


Bao ph nhiu iu kin l bao ph kt hp ng thi cc biu thc boolean con xy ra. Ging vi bao ph iu kin (condition coverage) cc biu thc con c phn tch bng cc php logic-and v logic-or.

18

CHNG 4. PHN TCH, NH GI CC PHNG PHP BAO PH


Chng ta xut mt s phng php bao ph code nhm nh gi c cht lng ca ca kim th. nhn nhn bn trong mi hm, v xc nh nhng cu lnh no c thc thi, nhng cu lnh no khng c thc thi th yu cu ta cn phi phn tch bao ph code. Phn tch code s gip ta: lm r nhng code khng c thc thi nh test suite. Thm vo cc ca kim th kim tra li. Nhn ra code d tha. Khi chng trnh thit k thay i thng s dn n code d tha. Code d tha nn c loi b v n c th gy kh hiu cho cng vic ca ngi bo tr. Phn tch code bao ph cn c s dng theo di cc phn code c bit. Vi vic m tng dng code, bn phn tch bao ph cn c s dng sp xp c th t cc khi c bn trong mt hm. Thng qua phn tch bao ph code s lm gim s li. Bao ph code khng phi l phng thuc cha bch bnh, bao ph code s khng gip nhn dng cc loi iu kin, cc vn v s dng b nh, con tr li, thm nh kt qu chng trnh. Phn tch bao ph code lun sn c trong nhiu ngn ng lp trnh ph bin nh C++, nhng chng thng l cc sn phm th ba c tch hp vi b bin dch, v thng rt t. Nh vy phn tch bao ph code l qu trnh to ra cc ca kim th tm ra cc vng cha c thc thi, to thm cc ca kim th tng bao ph v xc nh lng code bao ph s gin tip o cht lng code. Di y ta s ln lt phn tch mt s xut bao ph nhm a ra nh gi cht lng ca ca kim th: bao ph cu lnh (statement coverage), bao ph nhnh (branch coverage) v bao ph ng i (path coverage) .

4.1 Phn tch phng php bao ph cu lnh (statement coverage)


Trong thit k test case ta lun c gng bao ph ti a cu lnh trong m ngun vi s test case t nht c th. Bao ph cu lnh s nhn ra cc cu lnh trong mt phng thc hay trong mt lp c thc thi. y l mt phng php o n gin l tm ra s cu lnh c thc thi trong tng s cc cu lnh m ngun [7]. Do li ch ca bao ph cu lnh l kh nng tm ra cc dng code khng c thc thi. Xt mt v d n gin. M ngun ca chng trnh nh sau: public class StatementCoverage { public void FunctionPrint () { System.out.println("This is example about statement coverage"); } 19

public static void main (String [] args) { StatementCoverage hi=new StatementCoverage(); hi.FunctionPrint(); } } Trong chng trnh m ngun trn ta nhn thy c : o S lp : 1 lp (lp StatementCoverage). o S phng thc : 3 phng thc : Main() FunctionPrint() Println() o S dng lnh : 6 dng. S dng cng c EMMA (open source) o bao ph dng lnh,(phn gii thiu v cch ci t cng c EMMA s c gii thiu phn ph lc) kim tra cc dng m ngun c thc thi ta c bo co kt xut nh sau :

Hnh 1 : Kt qu kim tra m ngun c thc thi

20

Kt qu kt xut trn thng bo c s gi c tm thy l mt, tng s lp c trong chng trnh l mt, tng s phng thc trong lp l ba, tng s file thc thi l mt v tng s dng thc thi l su. Vi kt qu bo co nh trn ta nhn thy 100% m ngun c thc thi. Tuy nhin bao ph dng lnh c nhc im l khng th nhn ra cc li xy ra t cu trc lung iu khin trong m ngun nh l khi ghp cc iu kin hay cc nhn switch lin tip. iu ny c ngha l bo co bao ph ca ta vn s kt sut ra kt qu bo co l 100% code c bao ph nhng thc t th cc li khng c bt. V d ta xt hm returnInput() sau: public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if (condition1) x++; if(condition2) x--; if(condition3) x=x; return x; } Trong phng thc returnInput() trn c 7 cu lnh trong n. Kt qu mong mun l gi tr u ra bng vi gi tr u vo. Ta s kim tra hot ng ca hm trn bng cch thit lp ca kim th vi cc gi tr truyn vo hm : int x=1; boolean condition1=true; boolean condition2=true; boolean condition3=true; Chng trnh m ngun y : public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3)

21

{if (condition1) x++; if(condition2) x--; if(condition3) x=x; return x; } public static void main (String [] args) {int x=0; boolean condition1=true; boolean condition2=true; boolean condition3=true; Path constructorInstance=new Path(); int methodReturn=constructorInstance.returnInput condition2,condition3); } } (x,condition1,

Kim tra cc cu lnh c thc thi ta c c kt qu bo co: tng s gi l 1, tng s lp l 1, tng s file l 1, tng s phng thc l 3, tng s dng thc thi l 16. Minh ho kt qu bo co bao ph cu lnh nh sau.

22

Hnh 2 : Kt qu o bao ph dng lnh Kt qu nhn c l chng trnh c bao ph 100% nhng thc t r rng c mt li trong hm returnInput(). Nu ta nh gi nhnh u tin hoc nhnh th hai l true th kt qu tr li ca hm khng nh mong mun, gi tr tr li khng bng vi gi tr u vo. Li ny tht nguy him, nu ngi qun l xem kt qu bao ph 100%, quyt nh vic test hon thnh th sn phm pht hnh s c li. Nh vy c th ni bao ph dng lnh khng bo co v cc vng lp ti cc iu kin lp, n ch bo co phn thn ca vng lp c c thc thi hay khng. Vi ngn ng C, C++ v Java th hn ch ny nh hng ti cc vng lp. i vi vng lp dowhile khi lnh sau do c thc hin t nht mt ln, bao ph dng lnh xem chng ging vi cc cu lnh khng r nhnh. Bao ph cu lnh khng th phn bit cc nhn switch lin tip[6]. Nhn chung cc ca kim th tng thch vi cc nhnh hn l vi cc cu lnh. Ta s khng th to ra 10 ca kim th ring bit cho 10 cu lnh khng r nhnh m ta s to ra mt ca kim tra chng. V d : xem xt cu lnh if-else. C mt cu lnh theo sau mnh if v c 99 cu lnh theo sau mnh else. Sau khi p dng mt trong hai ng i c th, bao ph cu lnh cho ta kt qu bao ph hoc 1% hoc l 99 %. Bao ph cu khi lnh thng l i vn ny. Trc nhng hn ch ca bao ph cu lnh ta c th tm n mt k thut bao ph khc tt hn l bao ph nhnh.

4.2 Phn tch phng php bao ph nhnh (branch coverage)


Mt nhnh l mt kt lun logic ca mt quyt nh, do vy bao ph nhnh n gin l o kt lun logic no c kim tra. Phng php bao ph ny xem xt m ngun su sc hn l phng php bao ph cu lnh. Xc nh s nhnh c trong mt phng thc l mt vic d lm. Kt lun kiu boolean hin nhin c hai kt lun logic l true hoc false do chng trnh c N quyt nh s c 2N nhnh. Phng php bao ph nhnh vn c nhng n gin nh bao ph cu lnh tuy nhin n loi b c mt s hn ch c bao ph cu lnh. Tng s quyt nh tc ng ln mt phng thc bng vi tng s nhnh cn c bao ph v nhnh entry trong phng thc. Quay tr li vi v d : public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) 23

x++; if(condition2) x--; if(condition3) x =x; return x; } } Trong v d ny ta s c 7 nhnh: 3 nhnh true, 3 nhnh false v mt nhnh entry. Nhn thy rng bao ph 7 nhnh ny ta ch cn n 2 test case nh sau : Test case 1 : public void testReturnInputIntBooleanBooleanBoolean_Path1(){ int x=0; boolean condition1=true; boolean condition2=true; boolean condition3=true; Path contructorInstance=new Path(); Int methodReturn= constructorInstance.returnInput(x, condition1, condition2,condition3); } Test case 2 : public void testReturnInputIntBooleanBooleanBoolean_Path2(){ int x=0; boolean condition1=false; boolean condition2=false; boolean condition3=false; Path contructorInstance=new Path(); int methodReturn= constructorInstance.returnInput(x, condition1, condition2,condition3); } 24

Bin dch chng trnh y kim tra vi test case 1 public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) x++; if(condition2) x--; if(condition3) x=x; return x; } public static void main(String []args) { int x=0; boolean condition1=true; boolean condition2=true; boolean condition3=true; Path constructorInstance=new Path(); int methodReturn= constructorInstance.returnInput(x, condition1, condition2,condition3); System.out.println("Ket qua mong doi : output value = input value"); System.out.println("output value :"+methodReturn);} } Kt qu test 1:

Hnh 3 : Kt qu thc hin test case 1 Cho chy qua cng c o bao ph ta c kt qu 25

Hnh 4 : Kt qu o bao ph nhnh khi thc hin test case 1 Bin dch v chy chng trnh y vi test case 2 public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) x++; if(condition2) x--; if(condition3) x=x; return x; } public static void main(String []args) { System.out.println("Test case : false-false-false"); System.out.println("Cac cau lenh trong cac dieu kien se khong duoc thuc thi"); int x=0; 26

boolean condition1=false; boolean condition2=false; boolean condition3=false; Path constructorInstance=new Path(); int methodReturn= constructorInstance.returnInput(x, condition1, condition2,condition3); System.out.println("Ket qua mong doi : output value = input value"); System.out.println("output value :"+methodReturn); } } Kt qu test 2:

Hnh 5 : Kt qu khi thc hin test case 2 Cho chy qua cng c bao ph ta c kt qu :

Hnh 6 : Kt qu o bao ph nhnh khi thc hin test case 2 Vi 2 test case nh trn thm nh c yu cu gi tr output bng vi gi tr input v 100% nhnh c bao ph. Nhng d dng nhn thy ngay c khi 100% nhnh c bao ph th chng trnh vn c li c tm ra. Trong v d va cp, ta khng kim tra cc trng hp : TRUE-FALSE-TRUE hay FALSE-TRUE-TRUEVi 3 quyt nh trong mt phng thc nh trn ta s c 2^3=8 quyt nh. Kim tra 8 cch i l mt iu d dng, nhng c nhng phng thc c rt nhiu quyt nh th s ng i s tng theo hm m. V d mt phng thc c ti 10 quyt nh kiu boolean nh vy 27

ta s c 210=1024 cch i. Lc ny t c mc tiu bao ph 100% cu lnh v 100% nhnh l iu v cng kh khn v khng kh thi cho nhng phng thc phc tp[11].

4.3 Phn tch phng php bao ph ng i (path coverage)


Mt ng i th hin mt lung thc thi t khi bt u n khi kt thc mt hm. Mt phng thc vi N quyt nh s c 2^N ng i, v nu phng thc c cha vng lp th c th c v s ng i. Nhng may thay, ta c th s dng phng php c gi l Cyclomatic Complexity [3] lm gim s ng i m chng ta cn kim tra. Cysclomatic complexity ca mt phng thc l tng s quyt nh duy nht trong phng thc. Cysclomatic complexity gip ta nh ngha s tuyn tnh cc ng c lp, c gi l cc thit lp c s qua mt phng thc. Cc thit lp c s l cc thit lp cc ng i mt cch t nht c th. Ging nh bao ph nhnh, kim tra cc ng thit lp m bo kim tra tng quyt nh nhng khng ging nh bao ph nhnh, bao ph ng i m bo kim tra tt c cc quyt nh tc ng ng lp vi nhau. Ni mt cch khc, mi ng i mi flips chnh xc nhnh thc thi trc , cc nhnh cn li khc khng thay i. y l nhn t ch yu lm cho bao ph ng i mnh m hn bao ph nhnh, ng thi n cn cho php ta nhn nhn c nhng thay i khi mt nhnh tc ng ln hot ng ca mt phng thc. Ta vn s s dng v d trong bao ph cu lnh v bao ph nhnh minh ho. public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) x++; if(condition2) x--; if(condition3) x =x; return x; } } t c bao ph 100% ng i, chng ta cn nh ngha cc ng c s. Cysclomatic complexity ca phng thc ny l bn, do vy ta cn nh ngha bn tuyn 28

ng c lp nhau. thc hin cng vic ny ta s chn bt k ng u tin lm ng c s v sau s lt cc quyt nh mt ln cho ti khi ta c cc ng thit lp c s. Path 1: Chn cc gi tr true cho cc quyt nh, biu din l TTT. y l ng u tin trong thit lp c s ca ta. Path 2 : Ta s tm ng c s tip theo, lt quyt nh u tin trong ng c s, em li gi tr FTT, gi tr ta mong mun quyt nh tc ng. Path 3 : Lt quyt nh th 2 trong ng c s, em li cho ta gi tr TFT Path 4 : Cui cng, lt quyt nh th 3 trong ng c s, ta c ng th 4 vi gi tr TTF. Vy c 4 ng l : TTT, FTT,TFT v TTF. Tip theo y ta s xy dng cc ca kim th v xem iu g xy ra. Hai ng i TTT v FFF c kim tra trong bao ph nhnh.Tin hnh kim tra ng i FTT v TFT: Test case 3: Kim tra FTT. Thc thi on code sau : public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) x++; if(condition2) x--; if(condition3) x=x; return x; } public static void main(String []args) { System.out.println("Test case : false-true-true"); System.out.println("Cac cau lenh trong cac dieu kien 1 se khong duoc thuc thi"); int x=0; boolean condition1=false; boolean condition2=true; 29

boolean condition3=true; Path constructorInstance=new Path(); int methodReturn= constructorInstance.returnInput(x, condition1, condition2,condition3); System.out.println("Ket qua mong doi : output value = input value"); System.out.println("output value :"+methodReturn); } } Kt qu :

Hnh 7: Kt qu thc hin test case 3 o bao ph code ta c kt qu :

Hnh 8 : Kt qu o bao ph khi thc hin test case 3 Test case 4 : Kim tra TFT.Thc thi on code sau : public class Path { public int returnInput(int x, boolean condition1, boolean condition2, boolean condition3) { if(condition1) x++; 30

if(condition2) x--; if(condition3) x=x; return x; } public static void main(String []args) { System.out.println("Test case : true-false-true"); System.out.println("Cac cau lenh trong cac dieu kien 2 se khong duoc thuc thi"); int x=0; boolean condition1=false; boolean condition2=true; boolean condition3=true; Path constructorInstance=new Path(); int methodReturn= condition1,condition2,condition3); constructorInstance.returnInput(x,

System.out.println("Ket qua mong doi : output value = input value"); System.out.println("output value :"+methodReturn);} } Kt qu :

Hnh 9 : Kt qu thc hin test case 4 o bao ph code ta c kt qu :

31

Hnh 10 : Kt qu o bao ph khi thc hin test case 4 Vi kt qu ca test case 3 v 4 ta nhn c li chng trnh, cc li ny khng nhn ra trong bao ph cu lnh v bao ph nhnh. Kt qu mong i ca chng trnh l gi tr u vo v gi tr u ra phi bng nhau. y gi tr u vo l 0 nhng ta nhn c gi tr u ra l +1 v -1, vy l li c tm ra. Tng s ng c s s tng theo s quyt nh nhng lc ny khng tng theo hm m m vn m bo c yu cu bao ph y cc nhnh. Ta nhn thy rng bao ph ng i bao gm c bao ph cu lnh v bao ph nhnh trong phng thc. N tc ng gp ln c bao ph nhnh v bao ph cu lnh. Ta lun nh rng, mc ch kim tra ca cc ng c s l kim tra tt c cc nhnh tc ng c lp vi nhau. Kim tra 4 ng c s nhm t c mc ch ny. Ta c th xy dng cc ng i hon ton khc na, nu ta bt u vi ng c s FFF sau tin hnh flips nh lm trn ta s thit lp c 4 ng c s hon ton khc l : FFF, TFF, FTF,FFT. Kt qu ca b 4 ng mi ny vi b 4 ng trn l nh nhau, u tho mn tiu chun tc ng c lp ln cc quyt nh. Qua y d dng nhn thy vi Cyclomatic complexity (s ng c lp tuyn tnh i qua m ngun) gip ta gim mt na s test case cn tin hnh.

32

CHNG 5. PHN TCH GI TR IM BIN


5.1 Gii thiu
Trong nhiu chng trnh c nhiu hm c v s gi tr u vo do vic kim tra tng gi tr l v cng kh khn, khng kh thi. Nhng trong v vn gi tr u vo ta nn chn gi tr no l tt nht cho kim tra ? Ly bao nhiu gi tr kim tra l ?...Mt k thut c xut phc v cho vic la chn gi tr kim tra l k thut phn hoch tng ng (equivalence partitioning) v phn tch gi tr im bin (boundary value analysis), vi k thut ny gip ta gim ng k s ca kim th cn thc hin. Phn tch gi tr im bin l mt k thut ph bin v quan trng nht trong vic thit k cc ca kim th. Nu nh o bao ph code l mt k thut trong kim th hp trng th phn tch gi tr im bin li l mt k thut kim th hp en. Trong kim th hp en, cc ca kim th khng tp trung vo cu trc thc bn trong logic chng trnh m n c la chn da trn cc chc nng mong mun c trong sn phm nh trong ti liu yu cu m t. Chng ta kim tra chng trnh c lm vic chnh xc hay khng trong mt vi trng hp c bit, cc trng hp c bit thng l cc gi tr bin hoc cc gi tr v cng ca bin u vo. Thng thng cc li chng trnh thng hay xy ra gi tr bin. Phn tch gi tr bin thng c kt hp vi phn hoch tng ng (equivalence partitioning). Phn hoch tng ng v phn tch gi tr bin c mi quan h cht ch vi nhau, lun i lin vi nhau, i khi tht kh phn bit cc ca kim th c to bi hai k thut ny. Ni chung gi tr bin c nhn dng l gi tr vin ca cc lp phn hoch tng ng. hiu c gi tr bin trc ht ta i tm hiu v phn hoch tng ng.

5.2 Phn hoch tng ng(equivalence partitioning)


Phn hoch tng ng l mt k thut kim th hp en. Phn hoch tng ng xc nh s ca kim th cho tng trng hp c th. Nhn chung dng phn hoch tng ng nhm mc ch : Gim s ca kim th La chn cc ca kim th chnh xc bao hm cc trng hp c th. Phn hoch tng ng chia min d liu vo ra thnh cc vng, mi vng cha cc d liu c cng hnh vi. i vi mi vng d liu do d liu c cng hnh vi nn ta 33

ch cn xy dng mt ca kim th i din. Gi tr bn trong mt vng d liu c xem l tng ng do s ca kim th s gim xung. Di d liu u vo bao gm di hp l v di khng hp l. Ta c v d : truyn tham s thng cho ngy. Trong v d ny ta c cc di gi tr hp l v khng hp l nh sau: Di gi tr hp l cho thng l t 1 n 12 tng ng t thng 1 n thng 12, c hai di gi tr khng hp l l nh hn hoc bng 0 v ln hn hoc bng 13. Vi 3 di d liu ny s c 3 ca kim th c d xut tng ng vi 3 di. Phn hoch tng ng khng n thun l phng php xc nh cc ca kim th mt cc y . Kt hp vi phn tch cc gi tr bin gii gia cc vng, ta s thm vo cc ca kim th gi tr bin, t tm ra cc ca kim th hiu qu nht cho tng vng[12].

5.3 Phn tch gi tr bin (boundary value analysis)


5.3.1 Tng quan v phn tch gi tr im bin Phn tch gi tr bin l mt k thut thit k ca kim th v c s dng ch ra d liu kim tra t xy dng cc ca kim th. Theo kinh nghim, a phn cc sai st v lp trnh thng xy ra i vi cc d liu bin, nhng ni din ra tnh ton c hc hoc s thao tc d liu phi thay i cho hp l chng trnh xut ra kt qu chnh xc. tng ca phn tch gi tr bin l s dng gi tr bin u vo cc v tr : gi tr nh nht, gi tr ln nht, gi tr ngay bn trong bin, gi tr ngay bn ngoi bin, gi tr i in thng thng, v cc gi tr li. Kt qu mong i l khi chng trnh lm vic chnh xc vi cc gi tr c bit ny th n s lm vic chnh xc vi cc gi tr thng thng bn trong min gi tr. kim tra mt phng thc no vic u tin ta phi xc nh di d liu hp l v khng hp l u vo cng vi cc iu kin cho chc nng c xt[10]. 5.3.2 La chn cc ca kim th s dng phn tch gi tr im bin Thit lp cc ca kim th c ch ra bi phn tch gi tr im bin ph thuc vo c s yu cu v tnh tin cy ca phn mm v c nhng gi thuyt c th xy ra trong qu trnh kim sot li. Tip theo sau y chng ta s tho lun v phn tch gi tr im bin ca n bin (single-variable) v a bin (multi-variable) da trn phn loi phn tch gi tr bin. 5.3.3 Phn tch gi tr bin n bin (Single-Variable BVA) 34

Xem xt gi tr u vo ch ra gi tr bin. Tt c cc gi tr bin ny s c kt hp cht ch trong vic thit lp cc ca kim th. Nhng gi tr gn bin s c thm vo v s c s dng kim tra. Gi tr gn bin s tr gip kim sot logic cc ng bin ca chng trnh. V d khi kim tra di gi tr trong mt nhnh hoc cu lnh lp ngi pht trin c th s dng ton t nh hn (<), ton t nh hn hoc bng (), ton t ln hn (>). Cc on code c bin dch nhng chy khng chnh xc vi cc iu kin s dn n li. Cc gi tr gn gi tr bin phi c trong cc ca kim th kim tra cc loi li ny [4].Trong cc ca kim th thm vo ng bin cc gi tr gn bin, qu trnh phn tch gi tr bin baseline s gm mt vi gi tr u vo tn ti trn danh ngha. V d sau s minh ho cho qu trnh phn tch gi tr bin baseline: Xem xt chng trnh vi mt gi tr u vo N, di gi tr ca N l : a N c. Cc ca kim th c chn trong tp hp gi tr baseline ={a, a+, b, c-, c}. a+ l gi tr ln hn a, c- l gi tr nh hn c v b l mt gi tr tn ti trn danh ngha, b nm trong khong a+ v c-. Trong v d ny, qu trnh phn tch gi tr bin baseline s ch ra nm ca kim th. Minh ho bng hnh bn di.

baseline Hnh 11 : Tp hp cc gi tr bin baseline cho n bin trn mt khong u vo Nu nh qun l li l mt vic then cht sau khi kim tra phn mm th cn phi tng thm cc ca kim th kim tra mt cch mnh m thng qua qu trnh phn tch gi tr bin baseline, cn thm vo cc gi tr bn ngoi di cho php. Cc ca kim tra baseline c ch ra trn s c thm vo gi tr {a-,c+}, gi tr a- l gi tr bn di gi tr chp nhn a v c+ l gi tr ngay trn gi tr chp nhn c. C hai gi tr {a-,c+} dng trong cc ca kim th cn phi c thc thi x l trng hp ngoi l hoc che du khuyt im code. Quay tr li vi v d trn gi tr u vo n lc ny s gm by gi tr ht sc mnh m: robust={a-, a, a+, b, c-, c, c+}. Minh ho bng hnh bn di :

baseline

robust

Hnh 12 : ng cc gi tr baseline v robust cho n bin trn mt khong u vo

35

Qu trnh phn tch gi tr bin baseline hay qu trnh phn tch bin rubust u c th c p dng cho gi tr u vo c nhiu di gi tr. Xem xt bin u vo n M vi hai di gi tr con lin nhau, di 1 c l d M < f v di 2 l f M h. Thit lp cc ca kim th lc ny l kt hp tt c cc ca kim th c ch ra khi cch p dng qu trnh phn tch gi tr bin i vi tng di gi tr ring l. Do vy kt hp kt qu tt c cc ca kim th p dng cho tng di ring r ta c : Mbaseline= {d, d+, e, f-, f} {f, f+, g, h-, h} = {d, d+, e, f-, f, f+, g, h-, h} p dng phn tch gi tr bin robust lm M baseline tng thm cc gi tr {d-, h+} mang li kt qu Mrobust = {d-, d, d+, e, f-, f, f+, g, h-, h, h+} c minh ho bng hnh bn di

baseline

robust augmentation

Hnh 13 : Tp hp cc gi tr baseline v rubust trng hp n bin trn hai khong u vo Thm vo nhiu di gi tr con hin nhin s lm tng s ca kim th. i vi hai di gi tr lin nhau ca mt bin u vo, phn tch gi tr bin baseline ch ra 9 ca kim th v phn tch gi tr bin rubust ch ra 11 ca kim th. 5.3.4 Phn tch gi tr bin a bin (Multi Variable BVA) i vi bi ton a bin qu trnh phn tch gi tr bin la chn ca kim th cn phi xem xt li c th xy ra, trong bi vit ny ta s cp n li ti bin vi a bin u vo l mt kiu li (ta s gi l multiple-fault). i vi kiu li multiple-fault [4] c cho rng nhiu li ng thi xy ra, do vy ta s thm vo cc ca kim th sot li trn ng thi nhiu bin. Ly ra t v d n bin trn, xt bi ton vi hai bin u vo N v M, vi di gi tr ca N: a N c v gi tr ca M tri di trn hai di, di #1:d M < f , di #2: f M h. Nh d tho lun trn, cc ca kim th n bin ch ra i vi N v M l : Nbaseline= {a, a+, b, c-, c} Mbaseline= {d, d+, e, f-, f, f+, g, h-, h} Cc ca kim th phn tch gi tr bin a bin s dng cch phn tch cc ng bin ca mt bin trong khi cc bin khc c gi l mt gi tr danh ngha. Hp tt c 36

cc ca kim th p dng cho tng bin u vo ta c tp cc ca kim th p dng cho a bin u vo. Trong v d trn ta s p dng cho tng bin u vo trn tng di gi tr con. Bi ton c hai gi tr u vo, cc ca kim th s gm cc cp gi tr u vo (m,n) trong n l thnh phn ca Nbaseline v m s l thnh phn ca Mbaseline . Quan st s di y :

Hnh 14 : Tp gi tr baseline v robust ca bin N trong trng hp hai bin u vo Trong hnh biu din trn ta biu din gi tr m thay i(m thay i trong min Mbaseline), ti di th nht (d m <f) m c biu din bng gi tr e, ti di th hai (f m h) m c biu din bng g, gi nguyn gi tr n, n c biu din bng gi tr b. Quan st s ta nhn thy c 9 ca kim th c ch ra, tng ng vi cc gi tr giao im ca ng thng qua b v giao vi cc ng trong min gi tr thay i ca m. Tip theo c nh gi tr m ti hai di gi tr, cho n thay i trong min Nbaseline, biu din n bng gi tr b, (a b c). Quan st s biu din di y :

37

Hnh 15 : Tp hp gi tr baseline v rubust trn hai khong ca bin M trong trng hp hai bin u vo Trong trng hp ny ta nhn c 10 ca kim th. Tng hp c 2 trng hp ta nhn c s sau :

Hnh 16 : Tng hp tt c cc gi tr ca hai bin N v M trn hai khong u vo Trng hp 1 cho ta 9 ca, trng hp 2 cho ta 10 ca, tng hp c 2 trng hp cho ta 19 ca, nhng ti cc v tr (e,b) v (g,b) c lp li 2 ln, nn tng c 2 trng hp ta c 17 ca kim th.

38

i vi vic kim tra mnh m (rubustness), p dng cch thc nh ta lm vi tng bin trc , kt qu c ch ra trong Mrubust v Nrubust. Lu rng trong qu trnh phn tch baseline vi tng bin th ng thi 6 gi tr rubust cng c ch ra (quan st trn hnh v). Nh vy n thi im ny ta c tng s 23 ca kim th tt c. Cc ca kim th trn di gi tr khng hp l cn phi c la chn kim sot ng thi vi c hai bin. Qu trnh phn tch gi tr bin multiple-fault s c bt u vi tp hp gi tr trong Mbaseline v Nbaseline trong trng hp cc ng bin khng c kim tra, cn trong trng hp vic kim tra cc ng bin c u tin cao th ta s s dng vi tp gi tr Mrubust v Nrubust . Tng ng vi hai trng hp va nu ta c c lng tch -cc (cartesian) Mbaselien x Nbaselien xc nh s ca kim th cho baseline multiple-fault, v tch cc Mrubust x Nrubust xc nh s ca kim th cho rubust multiple-fault. Vi hai tp gi tr M v N, tch -cc ca M v N c nh ngha l : M x N = {(m,n) | m M^n N} M x N l tp tt c cc cp phn t (m,n) c ly ra t tp M v tp N. Do , nu tp M c x phn t v tp N c y phn t, kt qu ca tp M x N s gm x * y phn t. Tr li bi ton v d, hnh di y s biu din tng hp cc ca kim th phn tch gi tr bin baseline v rubust c ch ra cho kiu li multiple-fault ca bi ton.

Hnh 17 : Tng hp ton b gi tr baseline, robust trng hp a bin u vo trn hai khong

39

S lng cc ca kim th tng ln ng k, 45 ca baseline c ch ra v trong trng hp xu nht (worst-case) c thm 32 ca rubust. Tng hp cc ca kim th cho bi ton 2 bin vi cc mc yu cu v tnh tin cy ta c bng nh sau :

Bng 1 : Tng hp cc ca kim th theo mc tin cy . Nhn thy rng, gi thuyt tnh hung bi ton c nhiu li ng thi xy ra cng mt lc dn n kh nhiu ca kim th, c bit nu nh bi ton xt trn nhiu di gi tr th s lng ca kim th tng ln l ng k. 5.3.5 Kt lun T nhng phn tch trnh by r rng phn tch gi tr im bin c nhiu u im qu trnh phn tch gi tr im bin ch ra cc kim tra l mt vic d s dng, thm ch c cc gi tr bin u vo cn c m t mt cch r rng trong ti liu yu cu. Vi phn tch gi tr bin, ta c th iu chnh s ca kim th do ti nguyn c s dng cho nghin cu cn ph thuc vo i hi v tnh cht mnh ca phn mm. Phn tch gi tr bin c li cho s bt u cc k thut kim th khc. Ti liu tho lun v phn tch gi tr bin thng ho ln v c lin h vi k thut kim th hp en phn hoch tng ng. Tuy nhin phn tch gi tr im bin c th nh hng ti vic nhn ra cc li. So vi vic kim tra gi tr ngu nhin v gi tr phn hoch tng ng th phn tch gi tr bin c s ln kim tra nhiu hn 6 ln so vi kim tra ngu nhin v gp 2 ln so vi kim tra theo phn hoch tng ng. Gi c kim tra cng tng theo s ca kim th. K thut phn tch gi tr bin cung cp mt qu trnh c h thng cho vic nh gi mc hon thnh v cht lng ca sn phm phn mm. i khi bng cch phn tch gi tr bin ta c th tm ra cc ca kim th d tha trong tp hp ca kim th c ch ra. Phn tch gi tr bin cung cp nn tng c bn cho vic hc cc k thut khc, c th l k thut phn hoch tng ng, trong vic ch ra li phn tch gi tr bin c hiu qu nh mt k thut kim tra chc nng.

40

CHNG 6. THC NGHIM


6.1 V d mt chng trnh n gin
Nu ta bit cu trc ca chng trnh ta c th thit k cc ca kim th m bo bao ph : cu lnh, nhnh, ng i v bao ph cc iu kin. Chng ta s xem xt mt chng trnh vi cu trc n gin, phn tch chng trnh v xut cc ca kim th m bo ton b cu lnh, ton b nhnh, ton b lung i qua chng trnh u c bao ph. Chng trnh c hai iu kin, theo sau iu kin mt s c hai nhnh r. Nu iu kin mt l true s thi hnh khi lnh A thc hin cng vic A. Nu iu kin mt l false s thi hnh khi lnh B thc hin cng vic B. Xt n iu kin hai, nu iu kin hai true s thc hin khi lnh C, cn nu iu kin hai false s kt thc chng trnh M t v d bng s di y.

Hnh 18 : V d cu trc mt chng trnh n gin Khi chy cc unit test ta mong mun kim tra c tt c cc cng vic trong cc khi lnh trong chng trnh. C th trong v d ang xt cn phi kim tra vic thc hin ca cc khi lnh A, B, C xy ra theo ng iu kin, khi lnh trong tng cng vic phi hot ng ng. Hnh v sau m t ni bt cc cng vic cn phi kim tra.

41

Hnh 19 : Cc cng vic cn thc hin (t m) 6.1.1 Xy dng cc ca kim th cho chng trnh trn Da vo cu trc ca chng trnh ngun nh trn xut cc ca kim th kim tra code trong tng nhnh c c thc thi hay khng. Test case 1 :Cng vic A c thc hin khi iu kin mt true do kim tra vic thc thi cng vic A chng ta cn gn sao cho iu kin mt true.

Hnh 20 : Test case 1 kim tra cng vic A Test case 2 :Khi iu kin mt false cu lnh r nhnh s thc hin cng vic trong khi lnh B. kim tra vic thc thi cng vic B ta cn gn cho iu kin mt l false

Hnh 21 : Test case 2 kim tra cng vic B Tng hp li i vi iu kin mt ta s c hai ca kim th kim tra 42

Testcase #1: Condition-1 l true. Testcase #2: Condition-1 l false Test case 3 :Xt n iu kin hai.Khi iu kin hai l true th khi lnh C s c thc hin. Do kim tra vic thc thi cng vic C ta s gn cho iu kin 2 l true.

Hnh 22 : Test case 3 kim tra cng vic C Testcase #3: condition-2 l true. kim tra cc cng vic A, B, C ba test case c xut. Tuy nhin c th d dng nhn thy iu kin 1 v l 2 b phn c lp nhau.

Hnh 23 : Hai iu kin mt v hai l c lp nhau Do bao ph ton b 3 cng vic ny ta ch cn dng n 2 test case l 100% cu lnh c bao ph. Test case 1 kim tra ng thi cng vic A v cng vic C

43

Hnh 24 : Kim tra ng thi cng vic A v cng vic C trong cng 1 test case Test case 2 kim tra cng vic B v cng vic C:

Hnh 25 : Test case kim tra ng thi cng vic B v C Test case #1 #2 Condition - 1 TRUE FALSE Condition-2 TRUE TRUE

Thit k 2 test case nh trn th 100% cu lnh c kim tra. Mc d bao ph 100% nhng c mt iu kin khng c bao ph v mt nhnh khng c bao ph. C th l trong iu kin th 2 iu kin false khng c bao ph. V nhnh khng c bao ph l :

44

Hnh 26 : Nhnh khng c bao ph Thay mt iu kin ca condition-2 l false ta c bng tng hp cc gi tr dng trong cc ca kim th nh sau: Test case #1 #2 Condition-1 TRUE FALSE Condition-2 TRUE FALSE

Nu xem nh cc biu thc trong cc iu kin ca ta l cc biu thc boolean nguyn t (tc l khng cha cc php ton logic nh and, or, xor) th lc ny ta nhn thy l ton b nhnh v ton b iu kin c bao ph. Tuy nhin mc d 100% cu lnh v 100% nhnh c bao ph th vn c li c tm ra. Chng ta mi bao ph c 2 ng i, vi 2 gi tr true false ca hai iu kin. T hp cc iu kin vi nhau ta c 4 cch i c th do s c 4 ca kim th c xut nh sau : Test case #1 #2 #3 #4 6.1.2 Kt lun Condition-1 TRUE FALSE TRUE FALSE Condition-2 TRUE FALSE FALSE TRUE

45

Nh vy da vo vic phn tch tng mc bao ph : bao ph dng lnh, bao ph nhnh, bao ph ng i ta thit k c mt b test case hon chnh, m bo tt c cc cu lnh c kim tra, cc nhnh, cc ng i c th u c bao ph.

6.2 Chng trnh ci t tm kim cc cu lnh r nhnh trong m ngun java.


T nhng phn tch v bao ph code chng ti nhn thy trong qu trnh bao ph nhnh s bao hm kim tra bao ph cu lnh, ng thi trong phng php bao ph ng i t hp cc ng i c th cn da trn cc nhnh r trong chng trnh. Bn cnh trong cc cu lnh iu kin, cu lnh lp thng cha cc di gi tr ca bin u vo. Do c th ni vic nhn ra cc cu lnh r nhnh, cu lnh lp l rt cn thit. Khi c tp cc lnh r nhnh ta c th tin hnh xy dng cc ca kim th, da vo di gi tr trong n ta c th xc nh gi tr bin cho bin u vo. Trong phn ny chng ti xy dng chng trnh tm kim cu lnh r nhnh trong file ngun java, ch ra gi tr bin trong di gi tr u vo ca cu lnh iu khin. 6.2.1 Gii thiu v chng trnh Ngn ng lp trnh s dng : Java. Cng c lp trnh s dng : eclipse. Giao din giao tip vi ngi s dng qua mn hnh console 6.2.2 M t cc chc nng chnh Cho php ngi s dng nhp vo tn file cn c. Yu cu file c phi l file c m rng *.java. Nu ngi dng nhp vo file khng phi l file nh dng .java chng trnh s hin th thng bo khng phi l mt file java. Nhp vo tn file dng lu cu lnh iu khin. Kim tra tn file va nhp tn ti hay cha. Nu tn file tn ti yu cu ngi dng phi nhp vo tn khc. Chng trnh xut ra cc thng bo nu file c c thnh cng. Xut ra tng s cu tng loi cu lnh r nhnh if, while, for tm kim c. Chng trnh a ra la chn hi ngi dng c mun tip tc thao tc. Nhp vo Yes tip tc. Sau ngi dng cn phi chn loi cu lnh r nhnh if hay while hay for thao tc. Nhp vo tn file s lu nhng cu lnh . V cui cng l chn cu lnh cn thao tc bng cch nhp vo mt s nguyn ch 46

s th t ca cu lnh. Chng trnh s xut ra cu lnh m ngi dng chn. Ch ra gi tr bin trong di gi tr u vo. 6.2.3 Biu trnh t Vi cc chc nng lit k trn trnh t tng tc gia ngi dng v h thng nh sau. Biu trnh t di y m t tng tc ca ngi dng mun tm ra ton b cu lnh iu khin c trong file ngun java, m tng loi cu lnh iu khin.

Hnh 27. Biu trnh t Biu trnh t di y th hin tng tc gia ngi dng v h thng khi ngi dng mun thao tc trn tng cu lnh if ch ra gi tr bin ca chnh cu lnh

47

Hnh 28: Biu trnh t khi tng tc cu lnh if Biu trnh t di y th hin tng tc gia ngi dng v h thng khi ngi dng mun thao tc trn cu lnh while v xut ra gi tr bin ca chnh cu lnh .

Hnh 29: Biu trnh t khi tng tc cu lnh while 48

Biu trnh t di y th hin tng tc gia ngi dng v h thng khi ngi dng mun thao tc trn cu lnh for v xut ra gi tr bin ca chnh cu lnh

Hnh 30: Biu trnh t khi tng tc cu lnh for 6.2.4 Thut ton s dng Ci t chng trnh thc hin nhng chc nng trn ch yu dng kin thc v java core. S dng cc thuc tnh v cc phng thc ca lp vo ra chun (java.io.*;) l lp (java.lang.String;). Khi ngi dng nhp vo tn file cn c, mt i tng BufferedReader c khi to lu tn file nhp vo. Yu cu nh dng ca file nhp vo phi l file *.java. Kim tra phn m rng ca file dng hm: object. endsWith(.java) Yu cu tip theo ngi dng cn nhp vo tn file s lu ton b cc cu lnh iu khin ca file cn c. i tng BufferedReader lu tn file nhp vo hm createNewFile () to file vi tn va nhp s dng boolean exist=fout.createNewFile() kim tra tn file va nhp vo tn ti hay cha. 49

c file : s dng cc lp FileInputStream, DataInputStream v BufferedReader. Chng ti s tin hnh c tng dng trong file s dng hm readLine(). Duyt ton b file cho ti khi gp dng rng (null). Khi c tng dng s tin hnh c tng k t lu vo mt mng kiu char (mng token[]). Cu lnh r nhnh if s c dng if(biu thc logic boolean). Chng ti s tin hnh so snh phn t th (i) trong mng char token[], nu nh token[i] = = i v token[i+1]= = f th s thc hin vng lp in c cu lnh if ra file lu tr. lm c iu ny chng ti s dng hm charAt(i) chuyn phn t th (i) thnh kiu char, dng i tng thuc lp BufferedWriter ghi ra file lu tr.Vic tm kim cu lnh while v for cng tng t nh thc hin vi cu lnh if. i vi cu lnh while tin hnh so snh nu tt c cc phn t c dng sau s in ra cu lnh while: token[i]= = w token[i+1]= = h token[i+2]= = i token[i+3]= = l token[i+4]= = e Mt dng lnh l cu lnh for th cc phn t trong dng ang c phi c dng nh sau : token[i]= = f token[i+1]= = o token[i+2]= = r Khai bo cc bin m count_if, count_while, count_for, mi ln mt cu lnh iu khin c tm thy cc bin m ny s c tng ln mt theo ng loi cu if hay while hay for. Ngi dng mun tip tc thao tc. Cn phi nhp vo Yes, mun thot phi nhp vo No. Nu xu nhp vo l Yes s thc thi khi lnh tip theo: hi ngi dng la chn loi cu lnh iu khin s thao tc. Nu ngi dng mun thao tc cu lnh if th nhp vo if , khi mun thao tc trn while nhp vo while v nu l for th cn nhp vo for. bit ngi dng nhp vo nhng la chn no s dng n i tng lp BufferedReader c, hm so snh xu equals(String object) . Ngi dng chn cu lnh mun thao tc bng cch nhp vo mt s nguyn (kiu int). ly ra ng cu lnh

50

l s th t m ngi dng va nhp s phi dng n i tng kiu LineNumberReader v gi n hm getLineNumber(). Gi tr bin trong cc di gi tr ca bin lun nm ng sau cc ton t so snh >, >=, <, <= do thut ton ly ra cc gi tr bin trong cc cu lnh iu khin s l tin hnh c qua file, c tng dng mt, xt cu lnh c phi l cu lnh iu khin hay khng, nu l cu lnh iu khin s ly ra xu ng sau cc ton t so snh trn. Duyt qua file v c tng k t v cch lm tng t nh lm trn. 6.2.5 Cc lp ci t Ci t lp ly tn file cn c do ngi dng nhp vo

Hnh 31: Kin trc lp ci t Get_File_Name Ci t lp ReadContenFile thc thi cc chc nng ca chng trnh

Hnh 32: Kin trc lp ReadContentFile. 6.2.5 Kt qu thao tc cc chc nng gia ngi dng v chng trnh nh sau 51

Giao din yu cu nhp tn file cn c

Hnh 33: Giao din yu cu nhp tn file cn c Nhp vo mt file khng phi l nh dng *.java, h thng s xut ra thng bo This is not a java file y khng phi l mt file java.

Hnh 34: Nhp tn file khng ng nh dng *.java Nhp vo mt tn file ng c, chng ti th nghim bng cch c file TestFile.java.

Hnh 35: Nhp vo mt tn file ng c Ni dung bn trong ca file s dng (file TestFile.java) nh sau

Hnh 36 : Ni dung ca file TestFile.java

52

Sau khi nhp vo tn file cn c, h thng s yu cu nhp vo mt tn file lu ton b cu lnh iu khin ca file cn c. Kt qu sau khi tm kim cu lnh iu khin nh sau

Hnh 37: Kt qu tm kim cu lnh iu khin M file ghi cu lnh iu khin, ni dung file nh sau

Hnh 38 : Ni dung ca file cha cu lnh iu khin c tm kim 53

Sau khi tm kim cu lnh iu khin, h thng s hi ngi dng c mun tip tc thao tc. tip tc thao tc ngi dng phi nhp vo Yes. C ba la chn cho ngi dng, nhp vo if thao tc vi cu lnh if, nhp vo while thao tc vi cu lnh while, nhp vo for thao tc vi cu lnh for. Nhp vo tn file lu ton b lnh iu khin chn. Sau ngi dng phi nhp vo mt s nguyn chn cu lnh cn thao tc. V d khi mun thao tc vi cu lnh if s 2 th s phi nhp vo 2. Kt qu khi ngi dng tip tc mun thao tc vi cu lnh if.

Hnh 39 : Kt qu khi ngi dng mun thao tc vi cu lnh if Trong tng tc trn, ngi dng chn cu lnh iu khin if thao tc, dng file if_save.txt lu ton b cu lnh if trong . Nhp vo s nguyn 2 thao tc vi cu lnh if s 2. H thng xut ra ni dung ca cu lnh l if(a>b). Gi tr bin c ch ra y l b. Cc thao tc cng lm tng t nh cu lnh if khi ngi dng mun thao tc trn lnh while. Kt qu khi ngi dng tip tc mun thao tc vi cu lnh while nh sau.

54

Hnh 40 : Kt qu khi ngi dng mun thao tc vi cu lnh while Trong tng tc trn ngi dng chn tng tc vi cu lnh while, dng file while_save.txt lu ton b cu lnh while, nhp vo s nguyn 3 thao tc vi cu lnh while s 3. Ni dung ca cu lnh while ny l while(a>b). Gi g bin c ch ra y l b. Cc thao tc cng lm tng t nh cu lnh if khi ngi dng mun thao tc trn lnh for. Kt qu khi ngi dng tip tc mun thao tc vi cu lnh for

Hnh 41 : Kt qu khi ngi dng mun thao tc vi cu lnh for Trong tng tc trn, ngi dng chn tng tc vi cu lnh for, dng file for_save.txt lu ton b cu lnh for, nhp vo s nguyn 2 thao tc vi cu lnh for s 2. Ni dung ca cu lnh for ny l for(int i=0;a>121313;i++). Gi tr bin c ch ra y l 121313.

55

6.3 Kt lun
Nh vy chng ti ci t thnh cng chng trnh tm kim ton b cu lnh iu khin trong mt file java bt k. Xut ra c gi tr bin trong cc biu thc nh gi ca di gi tr u vo. Danh sch nhng cu lnh iu khin ny s c dng vo mc ch to ra cc ca kim th nhm t ti mc tiu thit k cc ca kim th tt bao ph ti a m ngun. Ch ra gi tr bin gip cho ngi kim tra xut cc gi tr kim tra baseline v robust.

56

CHNG 7: KT LUN KHO LUN


7.1 Kt lun v kho lun
Trong qu trnh thc hin kho lun ny, chng ti tm hiu nhng kin thc c bn v kim th phn mm, giai an v cng quan trng gip pht trin v sa li nhm m bo cht lng phn mm. ng thi, chng ti nghin cu, phn tch hai k thut phc v cho vic thnh lp cc ca kim th tt. Mt k thut thuc v kim th hp trng l : phn tch bao ph code v mt k thut thuc v kim th hp en l : phn tch gi tr im bin. Trong phn phn tch v k thut bao ph code chng ti ch ra nhng u nhc im ca cc phng php bao ph c bn l : bao ph dng lnh, bao ph nhnh v bao ph ng i. Nhn chung phng php bao ph ng i bao gm c 2 phng php bao ph cu lnh v bao ph nhnh. Vi k thut phn tch bao ph code i hi chng ta phi tm hiu su sc v m ngun. Thit k cc ca kim th thch hp tm ra nhng dng lnh khng c thc thi, nhng dng lnh d tha. Qu trnh ny l mt vng lp: t kt qu ca ca kim th ta c th nh gi c m ngun, ng thi nh gi c ca kim th va xy dng tt, ti u hay cha t xy dng ca kim th tip theo hay hn, c mc bao ph code nhiu hn. Vi vic phn tch gi tr im bin chng ti cng ch ra nhng gi tr cn phi c kim tra trong di gi tr u vo ca cc bin. khc phc nhng sai st v lp trnh xy ra ti nhng im bin cn phi tin hnh cc ca kim th kim tra tp gi tr baseline v robust. Tuy nhin, hai k thut xut ny cng gp phi nhng kh khn. Vi nhng phng thc phc tp vi nhiu cu lnh r nhnh, nhiu biu thc logic trong tng cu lnh r nhnh th s ca kim th thit k m bo bao ph 100% l mt con s v cng ln, v i khi ngay c khi bo co 100% code c bao ph nhng trn thc t vn c li c tm ra. Do bn cnh k thut phn tch bao ph code chng ta cn phi tin hnh cc phng php kim th khc, kim th cc mc khc nhau sm tm ra li. Trong k thut phn tch gi tr im bin cng gp phi nhng kh khn nh nu bin u vo c nhiu di gi tr th s lng cc ca kim th robust cng tng ln ng k. V trc khi tin hnh phn tch gi tr im bin ta phi tin hnh phn hoch tng ng min gi tr u vo, vic phn hoch ny khng phi lc no cng chnh xc tuyt i.

7.2 Hng nghin cu pht trin trong tng lai


T nhng vn cn tn ti ca kho lun ny, trong tng lai, chng ti s tip tc theo hng nghin cu ny nhm xy dng mt cng c o bao ph code cho ngn 57

ng java. Bn cnh l xy dng chng trnh t ng tm ra gi tr bin ngu nhin dng trong cc ca kim th bin.

TI LIU THAM KHO


58

[1] Study of Average Error Rates for Censorware Programs Bennett Haselton. [2] Introduce to code coverage Lasse K oskela Accenture Technology Solutions -2004 [6] Statement Coverage & Decision Coverage Shailaja Kiran [7] Statement, Branch, and Path Coverage Testing in Java Joe Ponczak [4] A Review of Boundary Value Analysis Techniques Dr. David J. Coe, The University of Alabama in Huntsville [5] http:// www. Wikipedia. Org [6] Measuring the multiple-condition converage with test suites for AspectJ programs Arnold Zanderink [3] Beizer, B.(1990). Software Testing Techniques. Boston, International Thompson Comtuter Press. [4] Beizer, B.(1995). Black Box Testing. New York, John Wiley & Sons, Inc. IEEE(1987). ANSI/IEEE Standard 1008-1987, IEEE Standard for Software Unit Testing. IEEE (1990). IEEE Standard 610.12 1990. IEEE Standard Glossary of Software Engineering Terminology. [5] Kaner, C., J. Falk, et al. (1999). Testing Computer Software. New York, Weley Computer Publishing. [10] Testing via Boundary Value Analysis Craig Borysowich Chief Technology Tactician. [11] PathExpander: Architectural Support for Increasing the Path Coverage of Dynamic Bug Detection - Shan Lu, Pin Xhou, Wei Liu, Yuanyuan Zhou and Josep Torrellas Department of Computer Science. [12] Equivalence partitioning and Boundary Value Analysis IOTAP Quality Assurance Team.

59

You might also like