You are on page 1of 29

Kim th (9)

Nguyn Thanh Bnh


Khoa Cng ngh Thng tin Trng i hc Bch khoa i hc Nng

Ni dung
Gii thiu v kim th Kim th trong tin trnh pht trin Kim th hp en Kim th hp trng

Kim th l g ?
IEEE: Kim th l tin trnh vn hnh h thng hoc thnh phn di nhng iu kin xc nh, quan st hoc ghi nhn kt qu v a ra nh gi v h thng hoc thnh phn Myers: Kim th l tin trnh thc thi chng trnh vi mc ch tm thy li (The art of software testing)
3

Kim th l g ?
Kim th G ri (debug)
Kim th
nhm pht hin li

G r i
xc nh bn cht li v nh v li trong chng trnh tin hnh sa li

Cc khi nim
Mt sai st (error) l mt s nhm ln hay mt s hiu sai trong qu trnh pht trin phn mm ca ngi pht trin Mt li (fault, defect) xut hin trong phn mm nh l kt qu ca mt sai st Mt hng hc (failure) l kt qu ca mt li xut hin lm cho chng trnh khng hot ng c hay hot ng nhng cho kt qu khng nh mong i
sai st
5

l i

hng hc

Cc khi nim
D liu th (test data)
d liu vo cn cung cp cho phn mm trong khi thc thi

Kch bn kim th (test scenario)


cc bc thc hin khi khi kim th

Phn xt kim th (test oracle)


nh gi kt qu ca kim th
t ng: chng trnh th cng: con ngi

Cc khi nim
Kim th vin (tester)
ngi thc hin kim th

Ca kim th (test case)


tp d liu th iu kin thc thi kt qu mong i

Cc khi nim

Tin trnh kim th


Kim th thng bao gm cc bc
thit k cc ca kim th bc to d liu th
kim th vi tt c cc d liu vo l cn thit
khng th kim th vt cn

chn tp cc d liu th i din t min d liu vo


da trn cc tiu chun chn d liu th

bc thc thi chng trnh trn d liu th


cung cp d liu th thc thi ghi nhn kt qu

bc quan st kt qu kim th
thc hin trong khi hoc sau khi thc thi so snh kt qu nhn c v kt qu mong i
9

Tin trnh kim th

10

Kh khn ca kim th
Lin quan n tin trnh pht trin
gm nhiu giai on pht trin
ci ra ca mt giai on l ci vo ca giai on khc mt mt thng tin

V mt con ngi
thiu o to t ch trng vai tr kim th

V mt k thut
khng tn ti thut ton tng qut c th chng minh s ng n hon ton ca bt k mt chng trnh no
11

Ti sao kim th
Hp thc ha (validation)
ch ra rng sn phm p ng c yu cu ngi s dng

Xc minh (verification)
ch ra rng sn phm tha mn c t yu cu

Phn bit hp thc ha v xc minh


Verification: Are we building the product right ? Validation: Are we building the right product ?

12

Kim th trong tin trnh pht trin


Cc k thut kim th
k thut kim th tnh (static testing) k thut kim th ng (dynamic testing)
kim th hp en (black-box testing)
k thut kim th chc nng (functional testing)

kim th hp trng (white-box testing)


k thut kim th cu trc (structural testing)

Cc hot ng kim th/chin lc kim th


kim kim kim kim th n v (unit testing) th tch hp (integration testing) th hp thc ha (validation testing) th hi quy (regression testing)

13

Kim th trong tin trnh pht trin


Kim th n v (unit testing)
kim th mi n v phn mm (m-un) s dng k thut kim th hp en d liu th c to ra da trn ti liu thit k c th s dng c kim th hp trng v kim th tnh
phn mm yu cu cht lng cao

thng c thc hin trn phn cng pht trin phn mm


14

Kim th trong tin trnh pht trin


Kim th tch hp (integration testing)
sau khi thc hin kim th n v ghp ni cc n v/thnh phn phn mm kim th s ghp ni, trao i d liu gia cc n v/thnh phn s dng k thut kim th hp en mt s trng hp, s dng k thut kim th hp trng
chi ph cao, kh khn

d liu th c to ra da trn thit k tng th


15

Kim th trong tin trnh pht trin


Kim th tch hp (2)
cn xy dng thm
nt trm (stub): cc thnh phn khc m phng cc thnh phn phn mm cha c tch hp trnh iu khin (driver): cc thnh phn to ra cc d liu vo cho mt vi cc thnh phn phn mm trong tp hp ang c kim th
16

Kim th trong tin trnh pht trin


Kim th tch hp (3)

17

Kim th trong tin trnh pht trin


Kim th tch hp (4)
chin lc t trn xung (top-down)
kim th tch hp cc thnh phn chnh trc, sau thm vo cc thnh phn c gi trc tip bi cc thnh phn va kim th cho php xc nh sm cc li v kin trc cc b d liu th c th c ti s dng cho cc bc tip theo tuy nhin chin lc ny i hi phi xy dng nhiu nt trm

chin lc t di ln (bottom-up)
kim th cc thnh phn khng gi cc thnh phn khc, sau thm vo cc thnh phn gi cc thnh phn va kim th t s dng cc nt trm nhng li xc nh li tr hn

18

Kim th trong tin trnh pht trin


Kim th hp thc ha (validation testing)
cn gi l kim th h thng (system testing) thc hin sau khi kim th tch hp kt thc chng minh phn mm thc hin ng mong i ca ngi s dng da vo yu cu ngi s dng ch s dng k thut kim th hp en nn thc hin trong mi trng m phn mm s c s dng
19

Kim th trong tin trnh pht trin


Kim th hi quy (regression testing)
phn mm sau khi a vo s dng, c th c cc chnh sa
c th pht sinh li mi

cn kim th li: kim th hi quy thng ti s dng cc b d liu th s dng trong cc giai on trc

20

10

Kim th trong m hnh V

c t yu cu Thit k kin trc Thit k chi tit M ha

Kim th hp thc ha Kim th tch hp Kim th n v

21

Cc k thut kim th
k thut kim th tnh (static testing)
khng thc thi chng trnh

k thut kim th ng (dynamic testing)


kim th hp en (black-box testing)
k thut kim th chc nng (functional testing)

kim th hp trng (white-box testing)


k thut kim th cu trc (structural testing)

22

11

Kim th tnh
Thanh tra m ngun (code inspection) Chng minh hnh thc Thc thi hnh thc (symbolic execution) nh gi phc tp
McCabe Nejmeh

23

Kim th hp en
Input test data I
e

Inputs causing anomalous behaviour

System

Output test results


24

Oe

Outputs which reveal the presence of defects

12

Kim th hp en
Ch cn da vo c t chng trnh
Xy dng d liu th trc khi m ha/lp trnh

Thng pht hin cc li c t yu cu, thit k D dng thc hin Chi ph thp

25

Kim th hp en
Kim th gi tr bin (boundary value analysis) Kim th lp tng ng (equivalence class testing) Kim th ngu nhin (random testing) th nhn-qu (cause-efect graph) Kim th c php

26

13

Kim th gi tr bin
C s
li thng xut hin gn cc gi tr bin ca min d liu

Tp trung phn tch cc gi tr bin ca min d liu xy dng d liu kim th Nguyn tc: kim th cc d liu vo gm
gi tr nh nht gi tr gn k ln hn gi tr nh nht gi tr bnh thng gi tr gn k nh hn gi tr ln nht gi tr ln nht
27

Kim th gi tr bin

28

14

Kim th gi tr bin
Nguyn tc chn d liu th
Nu d liu vo thuc mt khong, chn
2 gi tr bin 4 gi tr = gi tr bin sai s nh nht

Nu gi tr vo thuc danh sch cc gi tr, chn


phn t th nht, phn t th hai, phn t k cui v phn t cui

Nu d liu vo l iu kin rng buc s gi tr, chn


s gi tr ti thiu, s gi tr ti a v mt s cc s gi tr khng hp l

T vn dng kh nng v thc t chn cc gi tr bin cn kim th

29

Kim th gi tr bin
V d (1)
Chng trnh nhn vo ba s thc, kim tra ba s thc c l di ba cnh mt tam gic. Nu l di ba cnh ca mt tam gic, th kim tra xem l tam gic thng, cn, u cng nh kim tra l tam gic nhn, vung hay t.

30

15

Kim th gi tr bin
V d (2) D liu th

1, 1, 2 0, 0, 0 4, 0, 3 1, 2, 3.00001 0.001, 0.001, 0.001 99999, 99999, 99999 3.00001, 3, 3 2.99999, 3, 4 3, 4, 5.00001 3, 4, 5, 6 3 -3, -3, 5

Khng l tam gic Ch mt im Mt cnh bng khng Gn l mt tam gic Tam gic rt nh Tam gic rt ln Tam gic gn u Tam gic gn cn Tam gic gic gn vung Bn gi tr Ch mt gi tr D liu vo rng Gi tr m

31

Kim th lp tng ng
tng
phn hoch min d liu vo thnh cc lp cc d liu c quan h vi nhau mi lp dng kim th mt chc nng, gi l lp tng ng

32

16

Kim th lp tng ng
Ba bc
i vi mi d liu vo, xc nh cc lp tng ng t min d liu vo chn d liu i din cho mi lp tng ng kt hp cc d liu th bi tch -cc ti ra b d liu kim th

33

Kim th lp tng ng
Nguyn tc phn hoch cc lp tng ng

Nu d liu vo thuc mt khong, xy dng


1 lp cc gi tr ln hn 1 lp cc gi tr nh hn n lp cc gi tr hp l

Nu d liu l tp hp cc gi tr, xy dng


1 lp vi tp rng 1 lp qu nhiu cc gi tr n lp hp l

Nu d liu vo l iu kin rng buc, xy dng


1 lp vi rng buc c tha mn 1 lp vi rng buc khng c tha mn
34

17

Kim th lp tng ng
V d
Bi ton tam gic
Thng Cn u Nhn 6,5,3 6,1,6 4,4,4 -1,2,8 Vung 5,6,10 7,4,4 khng th T 3,4,5 2,2,2 khng th

Khng l tam gic

35

Bi tp
Kim th gi tr bin
Vit mt chng trnh thng k phn tch mt tp cha tn v im ca sinh vin trong mt nm hc. Tp ny cha nhiu nht 100 trng. Mi trng cha tn ca mi sinh vin (20 k t), gii tnh (1 k t) v im ca 5 mn hc (t 0 n 10). Mc ch chng trnh:
tnh dim trung bnh mi sinh vin tnh im trung bnh chung (theo gii tnh et theo mn hc) tnh s sinh vin ln lp (im trung bnh trn 5)

Xy dng d liu th cho chng trnh trn bi kim th gi tr bin

36

18

Bi tp
Kim th lp tng ng
Vit chng trnh dch, trong c cu lnh FOR, c t cu lnh FOR nh sau: Lnh FOR ch chp nhn mt tham s duy nht l bin m. Tn bin khng c s dng qu hai k t khc rng. Sau k hiu = l cn di v cn trn ca bin m. Cc cn trn v cn di l cc s nguyn dng v c t gia t kha TO. Xy dng d liu th kim th cu lnh FOR theo k thut kim th lp tng ng

37

Kim th hp trng
Da vo m ngun/cu trc chng trnh
Xy dng d liu th sau khi m ha/lp trnh

Thng pht hin cc li lp trnh Kh thc hin Chi ph cao

38

19

Cc k thut kim th hp trng


Kim th da trn th lung iu khin Kim th da trn th lung d liu Kim th t bin (mutation testing)

39

th lung iu khin
th lung iu khin (Control Flow Graph TLK) l th c hng, biu din mt chng trnh
nh: biu din lnh tun t hay khi lnh cung: biu din cc r nhnh mt nh vo v mt nh ra c thm vo biu din im vo v ra ca chng trnh

L trnh (path) trong TLK


xut pht t nh vo i qua cc nh v cung trong th v kt thc ti nh ra
40

20

th lung iu khin
V d 1
if x <= 0 then x := -x else x := 1 -x; if x = -1 then x=1 else x := x+1; writeln(x);

41

th lung iu khin
V d 1 (2)
C 4 l trnh
[a, b, d, f, g] [a, b, d, e, g] [a, c, d, f, g] [a, c, d, e, g]

42

21

th lung iu khin
V d 1 (3)
th G1 c th biu din dng biu thc chnh quy: G1 = abdfg + abdeg + acdfg + acdeg Hay n gin: G1 = a(bdf + bde + bdf + bde)g G1 = a(b + c)d(e + f)g

43

th lung iu khin
Biu din cc cu trc

Cu trc tun t: ab

Cu trc r nhnh: b(a + d)c

Cu trc lp: ab(cb)*d


44

22

th lung iu khin
V d 2
i := 1; found:= false; while (not found) do begin if (a[i] = E) then begin found:= true; s := i; end; i := i + 1; end; G2 = ab(c( + d)eb)*f
45

th lung iu khin
Bi tp 1
V th lung iu khin Xy dng biu thc chnh quy biu din th
if n <= 0 then n := 1-n end; if (n mod 2) = 0 then n := n / 2 else n := 3*n + 1 end ; write(n);
46

23

th lung iu khin
Bi tp 2
V th lung iu khin Xy dng biu thc chnh quy biu din th
read(i); s := 0; while(i <= 3) do begin if a[i] > 0 thens := s + a[i]; i := i + 1; end

47

Kim th da trn TLK


Cc tiu chun bao ph
Ph tt c cc nh/lnh Ph tt c cc cung Ph tt c cc quyt nh Ph tt c cc ng i

48

24

Kim th da trn TLK


Ph tt c cc nh/lnh
Cho php ph tt c cc nh/lnh
mi lnh c thc thi t nht mt ln tiu chun ti thiu
functionsum(x,y : integer) : integer; begin if (x = 0) then sum := x else sum := x + y end; Khi thc thi l trnh acd s pht hin li
49

Kim th da trn TLK


Ph tt c cc nh/lnh
Hn ch ca tiu chun

read(x); if (x <> 0) then x := 1; y := 1/x;

Ph tt c cc nh khng pht hin c pht hin li


50

25

Kim th da trn TLK


Ph tt c cc cung
Ph tt c cc cung t nht mt ln
ph tt cc gi tr ng sai ca mt biu thc l-gc ph tt c cc cung ko theo ph tt c cc nh
if ((a < 2) and (b = a)) then x := 2 -a else x := a -2

51

D liu th DT1 = {a=b=1} v DT2 = {a=b=3} tha mn ph tt c cc cung, nhng khng ph tt c cc quyt nh, chng hn DT3 = {a=3, b=2}

Kim th da trn TLK


Ph tt c cc quyt nh
Ph tt c cc quyt nh c tha mn khi:
tiu chun ph tt c cc cung c tha mn v mi biu thc con ca biu thc iu kin c th vi tt c cc gi tr c th

Nu (a AND b)
a = b = true a = b = false a = true, b = false a = false, b = true

52

26

Kim th da trn TLK


Ph tt c cc quyt nh
D liu th
DT1 = {a = b = 1} DT2 = {a = 1, b = 0} DT3 = {a = 3, b = 2} DT4 = {a = b = 3}

53

Kim th da trn TLK


Ph tt c cc quyt nh
Hn ch
Khng pht hin li trng hp khng thc thi vng lp
read(inf, sup); i := inf; sum:= 0; while(i <= sup) do begin sum:= sum+ a[i]; i := i + 1; end; writeln(1/sum); D liu th DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} ph tt c cc cung/quyt nh, nhng khng pht hin li

54

27

Kim th da trn TLK


Ph tt c cc l trnh
Mi l trnh phi c thc thi t nht mt ln Gp kh khn khi s ln lp v hn
Ch thc hin mt s ln lp nht nh
Hoc ch thc hin hai loi l trnh
cc l trnh vt qua vng lp nhng khng lp cc l trnh ch lp n ln (chng hn n = 1)

55

Kim th da trn TLK


Ph tt c cc l trnh
D liu th
DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} DT2 = {a[1]=50, a[2]=60, a[3]=80, inf=3, sup=2}

56

28

Kim th da trn TLK


Bi tp
Xy dng d liu th tha mn cc tiu chun
ph tt c cc nh ph tt c cc cung ph tt c cc l trnh
if n 0 then n := 1-n end; if (n mod 2) = 0 then n := n / 2 else n := 3*n + 1 end ; write(n);
57

Kim th da trn TLK


Bi tp
Xy dng d liu th tha mn cc tiu chun ph tt c cc l trnh
function goodstring(var count : integer) : boolean; var ch : char; begin goodstring := false; count := 0; read(ch); if ch = a then begin read(ch) while(ch = b) or (ch = c) do begin count := count + 1; read(ch); end; if ch = x then goodstring = true; end; end;

58

29

You might also like