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)

Kim th l g ?


Kim th G ri (debug)


Kim th
nhm pht hin li

G ri
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

li

hng hc

Cc khi nim


D liu th (test data)




Kch bn kim th (test scenario)




d liu vo cn cung cp cho phn mm


trong khi thc thi
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

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)


Xc minh (verification)


ch ra rng sn phm p ng c yu cu ngi


s dng
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

Kim th hp thc ha

Thit k kin trc

Kim th tch hp
Kim th n v

Thit k chi tit


M ha

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

Inputs causing
anomalous
behaviour

System

Output test results

Oe

Outputs which reveal


the presence of
defects

24

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

Khng l tam gic

Vung
5,6,10
7,4,4
khng th

T
3,4,5
2,2,2
khng th

-1,2,8

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);

54

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

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


58

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;

29

You might also like