You are on page 1of 29

1

Kim th (9)
Nguyn Thanh Bnh
Khoa Cng ngh Thng tin
Trng i hc Bch khoa
i hc Nng
2
Ni dung
Gii thiu v kim th
Kim th trong tin trnh pht trin
Kim th hp en
Kim th hp trng
2
3
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)
4
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
3
5
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
6
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
4
7
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
8
Cc khi nim
5
9
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
10
Tin trnh kim th
6
11
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
12
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 ?
7
13
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 th n v (unit testing)
kim th tch hp (integration testing)
kim th hp thc ha (validation testing)
kim th hi quy (regression testing)
14
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
8
15
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
16
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
9
17
Kim th trong tin trnh
pht trin
Kim th tch hp (3)
18
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
10
19
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
20
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
11
21
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
22
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)
12
23
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
24
Kim th hp en
I
e
Input test data
O
e
Output test results
System
Inputs causing
anomalous
behaviour
Outputs which reveal
the presence of
defects
13
25
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
26
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
14
27
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
28
Kim th gi tr bin
15
29
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
30
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.
16
31
Kim th gi tr bin
V d (2)
D liu th
1, 1, 2 Khng l tam gic
0, 0, 0 Ch mt im
4, 0, 3 Mt cnh bng khng
1, 2, 3.00001 Gn l mt tam gic
0.001, 0.001, 0.001 Tam gic rt nh
99999, 99999, 99999 Tam gic rt ln
3.00001, 3, 3 Tam gic gn u
2.99999, 3, 4 Tam gic gn cn
3, 4, 5.00001 Tam gic gic gn vung
3, 4, 5, 6 Bn gi tr
3 Ch mt gi tr
D liu vo rng
-3, -3, 5 Gi tr m
32
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
17
33
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
34
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
18
35
Kim th lp tng ng
V d
Bi ton tam gic
Nhn Vung T
Thng 6,5,3 5,6,10 3,4,5
Cn 6,1,6 7,4,4 2,2,2
u 4,4,4 khng th khng th
Khng l tam gic -1,2,8
36
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
19
37
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
38
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
20
39
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)
40
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
21
41
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);
42
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]
22
43
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
44
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
23
45
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
46
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);
24
47
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
48
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
25
49
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
50
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
26
51
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
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}
52
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
27
53
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}
54
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
28
55
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)
56
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}
29
57
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);
58
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;

You might also like