You are on page 1of 29

Ki m th (9)

Nguy n Thanh Bnh


Khoa Cng ngh Thng tin Tr ng i h c Bch khoa i h c N ng

N i dung
Gi Ki Ki Ki i thi m th m th m th u v ki m th trong ti n trnh pht tri n h p en h p tr ng

Ki m th l g ?
IEEE: Ki m th l ti n trnh v n hnh h th ng ho c thnh ph n d i nh ng i u ki n xc nh, quan st ho c ghi nh n k t qu v a ra nh gi v h th ng ho c thnh ph n Myers: Ki m th l ti n trnh th c thi chng trnh v i m c ch tm th y l i (The art of software testing)
3

Ki m th l g ?
Ki m th G r i (debug)
Ki m th
nh m pht hi n l i

G r i
xc nh b n ch t l i v nh v l i trong chng trnh ti n hnh s a l i

Cc khi ni m
M t sai st (error) l m t s nh m l n hay m t s hi u sai trong qu trnh pht tri n ph n m m c a ng i pht tri n M t l i (fault, defect) xu t hi n trong ph n m m nh l k t qu c a m t sai st M t h ng hc (failure) l k t qu c a m t l i xu t hi n lm cho chng trnh khng ho t ng c hay ho t ng nhng cho k t qu khng nh mong i
sai st
5

l i

h ng hc

Cc khi ni m
D li u th (test data)
d li u vo c n cung c p cho ph n m m trong khi th c thi

K ch b n ki m th (test scenario)
cc b c th c hi n khi khi ki m th

Phn xt ki m th (test oracle)


nh gi k t qu c a ki m th
t ng: chng trnh th cng: con ng i

Cc khi ni m
Ki m th vin (tester)
ng i th c hi n ki m th

Ca ki m th (test case)
t p d li u th i u ki n th c thi k t qu mong i

Cc khi ni m

Ti n trnh ki m th
Ki m th th ng bao g m cc b c
thi t k cc ca ki m th b c t o d li u th
ki m th v i t t c cc d li u vo l c n thi t
khng th ki m th vt c n

ch n t p cc d li u th i di n t mi n d li u vo
d a trn cc tiu chu n ch n d li u th

b c th c thi chng trnh trn d li u th


cung c p d li u th th c thi ghi nh n k t qu

b c quan st k t qu ki m th
th c hi n trong khi ho c sau khi th c thi so snh k t qu nh n c v k t qu mong i
9

Ti n trnh ki m th

10

Kh khn c a ki m th
Lin quan n ti n trnh pht tri n
g m nhi u giai o n pht tri n
ci ra c a m t giai o n l ci vo c a giai o n khc m t mt thng tin

V m t con ng i
thi u o t o t ch tr ng vai tr ki m th

V m t k thu t
khng t n t i thu t ton t ng qut c th ch ng minh s ng n hon ton c a b t k m t chng trnh no
11

T i sao ki m th
H p th c ha (validation)
ch ra r ng s n ph m p ng c yu c u ng i s d ng

Xc minh (verification)
ch ra r ng s n ph m th a mn c t yu c u

Phn bi t h p th c ha v xc minh
Verification: Are we building the product right ? Validation: Are we building the right product ?

12

Ki m th trong ti n trnh pht tri n


Cc k thu t ki m th
k thu t ki m th tnh (static testing) k thu t ki m th ng (dynamic testing)
ki m th h p en (black-box testing)
k thu t ki m th ch c nng (functional testing)

ki m th h p tr ng (white-box testing)
k thu t ki m th c u trc (structural testing)

Cc ho t ng ki m th /chi n l c ki m th
ki ki ki ki m m m m th th th th n v (unit testing) tch h p (integration testing) h p th c ha (validation testing) h i quy (regression testing)

13

Ki m th trong ti n trnh pht tri n


Ki m th n v (unit testing)
ki m th m i n v ph n m m (m-un) s d ng k thu t ki m th h p en d li u th c t o ra d a trn ti li u thi t k c th s d ng c ki m th h p tr ng v ki m th tnh
ph n m m yu c u ch t l ng cao

th ng c th c hi n trn ph n c ng pht tri n ph n m m


14

Ki m th trong ti n trnh pht tri n


Ki m th tch h p (integration testing)
sau khi th c hi n ki m th n v ghp n i cc n v /thnh ph n ph n m m ki m th s ghp n i, trao i d li u gi a cc n v /thnh ph n s d ng k thu t ki m th h p en mt s tr ng h p, s d ng k thu t ki m th h p tr ng
chi ph cao, kh khn

d li u th c t o ra d a trn thi t k t ng th
15

Ki m th trong ti n trnh pht tri n


Ki m th tch h p (2)
c n xy d ng thm
nt trm (stub): cc thnh ph n khc m ph ng cc thnh ph n ph n m m cha c tch h p trnh i u khi n (driver): cc thnh ph n t o ra cc d li u vo cho m t vi cc thnh ph n ph n m m trong t p h p ang c ki m th
16

Ki m th trong ti n trnh pht tri n


Ki m th tch h p (3)

17

Ki m th trong ti n trnh pht tri n


Ki m th tch h p (4)
chi n l c t trn xu ng (top-down)
ki m th tch h p cc thnh ph n chnh tr c, sau thm vo cc thnh ph n c g i tr c ti p b i cc thnh ph n v a ki m th cho php xc nh s m cc l i v ki n trc cc b d li u th c th c ti s d ng cho cc b c ti p theo tuy nhin chi n l c ny i h i ph i xy d ng nhi u nt trm

chi n l c t d i ln (bottom-up)
ki m th cc thnh ph n khng g i cc thnh ph n khc, sau thm vo cc thnh ph n g i cc thnh ph n v a ki m th t s d ng cc nt trm nhng l i xc nh l i tr hn

18

Ki m th trong ti n trnh pht tri n


Ki m th h p th c ha (validation testing)
cn g i l ki m th h th ng (system testing) th c hi n sau khi ki m th tch h p k t thc ch ng minh ph n m m th c hi n ng mong i c a ng i s d ng d a vo yu c u ng i s d ng ch s d ng k thu t ki m th h p en nn th c hi n trong mi tr ng m ph n m m s c s d ng
19

Ki m th trong ti n trnh pht tri n


Ki m th h i quy (regression testing)
ph n m m sau khi a vo s d ng, c th c cc ch nh s a
c th pht sinh l i m i

c n ki m th l i: ki m th h i quy th ng ti s d ng cc b d li u th s d ng trong cc giai o n tr c

20

10

Ki m th trong m hnh V

c t yu c u Thi t k ki n trc Thi t k chi ti t M ha

Ki m th h p th c ha Ki m th tch h p Ki m th n v

21

Cc k thu t ki m th
k thu t ki m th tnh (static testing)
khng th c thi chng trnh

k thu t ki m th ng (dynamic testing)


ki m th h p en (black-box testing)
k thu t ki m th ch c nng (functional testing)

ki m th h p tr ng (white-box testing)
k thu t ki m th c u trc (structural testing)

22

11

Ki m th tnh
Thanh tra m ngu n (code inspection) Ch ng minh hnh th c Th c thi hnh th c (symbolic execution) nh gi ph c t p
McCabe Nejmeh

23

Ki m th h p en
Input test data I
e

Inputs causing anomalous behaviour

System

Output test results


24

Oe

Outputs which reveal the presence of defects

12

Ki m th h p en
Ch c n d a vo c t chng trnh
Xy d ng d li u th tr c khi m ha/l p trnh

Th ng pht hi n cc l i c t yu c u, thi t k D dng th c hi n Chi ph th p

25

Ki m th h p en
Ki m th gi tr bin (boundary value analysis) Ki m th l p tng ng (equivalence class testing) Ki m th ng u nhin (random testing) th nhn-qu (cause-efect graph) Ki m th c php

26

13

Ki m th gi tr bin
C s
l i th ng xu t hi n g n cc gi tr bin c a mi n d li u

T p trung phn tch cc gi tr bin c a mi n d li u xy d ng d li u ki m th Nguyn t c: ki m th cc d li u vo g m


gi tr gi tr gi tr gi tr gi tr
27

nh nh t g n k l n hn gi tr nh nh t bnh th ng g n k nh hn gi tr l n nh t l n nh t

Ki m th gi tr bin

28

14

Ki m th gi tr bin
Nguyn t c ch n d li u th
N u d li u vo thu c m t kho ng, ch n
2 gi tr bin 4 gi tr = gi tr bin sai s nh nh t

N u gi tr vo thu c danh sch cc gi tr , ch n


ph n t th nh t, ph n t th hai, ph n t k cu i v ph n t cu i

N u d li u vo l i u ki n rng bu c s gi tr , ch n
s gi tr t i thi u, s gi tr t i a v m t s cc s gi tr khng h p l

T v n d ng kh nng v th c t ch n cc gi tr bin c n ki m th

29

Ki m th gi tr bin
V d (1)
Chng trnh nh n vo ba s th c, ki m tra ba s th c c l di ba c nh m t tam gic. N u l di ba c nh c a m t tam gic, th ki m tra xem l tam gic th ng, cn, u cng nh ki m tra l tam gic nh n, vung hay t.

30

15

Ki m th gi tr bin
V d (2) D li u 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 m t i m M t c nh b ng khng G n l m t tam gic Tam gic r t nh Tam gic r t l n Tam gic g n u Tam gic g n cn Tam gic gic g n vung B n gi tr Ch m t gi tr D li u vo r ng Gi tr m

31

Ki m th l p tng ng
t ng
phn ho ch mi n d li u vo thnh cc l p cc d li u c quan h v i nhau m i l p dng ki m th m t ch c nng, g i l l p tng ng

32

16

Ki m th l p tng ng
Ba b c
i v i m i d li u vo, xc nh cc l p tng ng t mi n d li u vo ch n d li u i di n cho m i l p tng ng k t h p cc d li u th b i tch -cc t i ra b d li u ki m th

33

Ki m th l p tng ng
Nguyn t c phn ho ch cc l p tng ng

N u d li u vo thu c m t kho ng, xy d ng


1 l p cc gi tr l n hn 1 l p cc gi tr nh hn n l p cc gi tr h p l

N u d li u l t p h p cc gi tr , xy d ng
1 l p v i t p r ng 1 l p qu nhi u cc gi tr nl ph pl

N u d li u vo l i u ki n rng bu c, xy d ng
1 l p v i rng bu c c th a mn 1 l p v i rng bu c khng c th a mn
34

17

Ki m th l p tng ng
V d
Bi ton tam gic
Th ng Cn u Nh n 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 t p
Ki m th gi tr bin
Vi t m t chng trnh th ng k phn tch m t t p ch a tn v i m c a sinh vin trong m t nm h c. T p ny ch a nhi u nh t 100 tr ng. M i tr ng ch a tn c a m i sinh vin (20 k t ), gi i tnh (1 k t ) v i m c a 5 mn h c (t 0 n 10). M c ch chng trnh:
tnh di m trung bnh m i sinh vin tnh i m trung bnh chung (theo gi i tnh et theo mn h c) tnh s sinh vin ln l p (i m trung bnh trn 5)

Xy d ng d li u th cho chng trnh trn b i ki m th gi tr bin

36

18

Bi t p
Ki m th l p tng ng
Vi t chng trnh d ch, trong c cu l nh FOR, c t cu l nh FOR nh sau: L nh FOR ch ch p nh n m t tham s duy nh t l bi n m. Tn bi n khng c s d ng qu hai k t khc r ng. Sau k hi u = l c n d i v c n trn c a bi n m. Cc c n trn v c n d i l cc s nguyn dng v c t gi a t kha TO. Xy d ng d li u th ki m th cu l nh FOR theo k thu t ki m th l p tng ng

37

Ki m th h p tr ng
D a vo m ngu n/c u trc chng trnh
Xy d ng d li u th sau khi m ha/l p trnh

Th ng pht hi n cc l i l p trnh Kh th c hi n Chi ph cao

38

19

Cc k thu t ki m th h p tr ng
Ki m th d a trn th lu ng i u khi n Ki m th d a trn th lu ng d li u Ki m th t bi n (mutation testing)

39

th lu ng i u khi n
th lu ng i u khi n (Control Flow Graph TLK) l th c h ng, bi u di n m t chng trnh
nh: bi u di n l nh tu n t hay kh i l nh cung: bi u di n cc r nhnh m t nh vo v m t nh ra c thm vo bi u di n i m vo v ra c a chng trnh

L trnh (path) trong TLK


xu t pht t nh vo i qua cc nh v cung trong th v k t thc t i nh ra
40

20

th lu ng i u khi n
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 lu ng i u khi n
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 lu ng i u khi n
V d 1 (3)
th G1 c th bi u di n d ng bi u th c chnh quy: G1 = abdfg + abdeg + acdfg + acdeg Hay n gi n: G1 = a(bdf + bde + bdf + bde)g G1 = a(b + c)d(e + f)g

43

th lu ng i u khi n
Bi u di n cc c u trc

C u trc tu n t : ab

C u trc r nhnh: b(a + d)c

C u trc l p: ab(cb)*d
44

22

th lu ng i u khi n
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 lu ng i u khi n
Bi t p 1
V th lu ng i u khi n Xy d ng bi u th c chnh quy bi u di n 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 lu ng i u khi n
Bi t p 2
V th lu ng i u khi n Xy d ng bi u th c chnh quy bi u di n th
read(i); s := 0; while(i <= 3) do begin if a[i] > 0 thens := s + a[i]; i := i + 1; end

47

Ki m th d a trn TLK
Cc tiu chu n bao ph
Ph Ph Ph Ph t t t t tc tc tc tc cc nh/l nh cc cung cc quy t nh cc ng i

48

24

Ki m th d a trn TLK
Ph t t c cc nh/l nh
Cho php ph t t c cc nh/l nh
m i l nh c th c thi t nh t m t l n tiu chu n t i thi u
functionsum(x,y : integer) : integer; begin if (x = 0) then sum := x else sum := x + y end; Khi th c thi l trnh acd s pht hi n l i
49

Ki m th d a trn TLK
Ph t t c cc nh/l nh
H n ch c a tiu chu n

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

Ph t t c cc nh khng pht hi n c pht hi n l i


50

25

Ki m th d a trn TLK
Ph t t c cc cung
Ph t t c cc cung t nh t m t l n
ph t t cc gi tr ng sai c a m t bi u th c l-gc ph t t c cc cung ko theo ph t t c cc nh
if ((a < 2) and (b = a)) then x := 2 -a else x := a -2

51

D li u th DT1 = {a=b=1} v DT2 = {a=b=3} th a mn ph t t c cc cung, nhng khng ph t t c cc quy t nh, ch ng h n DT3 = {a=3, b=2}

Ki m th d a trn TLK
Ph t t c cc quy t nh
Ph t t c cc quy t nh c th a mn khi:
tiu chu n ph t t c cc cung c th a mn v m i bi u th c con c a bi u th c i u ki n c th v i t t c cc gi tr c th

N u (a AND b)
a = b = true a = b = false a = true, b = false a = false, b = true

52

26

Ki m th d a trn TLK
Ph t t c cc quy t nh
D li u th
DT1 = {a = b = 1} DT2 = {a = 1, b = 0} DT3 = {a = 3, b = 2} DT4 = {a = b = 3}

53

Ki m th d a trn TLK
Ph t t c cc quy t nh
H n ch
Khng pht hi n l i tr ng h p khng th c thi vng l p
read(inf, sup); i := inf; sum:= 0; while(i <= sup) do begin sum:= sum+ a[i]; i := i + 1; end; writeln(1/sum); D li u th DT1 = {a[1]=50, a[2]=60, a[3]=80, inf=1, sup=3} ph t t c cc cung/quy t nh, nhng khng pht hi n l i

54

27

Ki m th d a trn TLK
Ph t t c cc l trnh
M i l trnh ph i c th c thi t nh t m t l n G p kh khn khi s l n l p v h n
Ch th c hi n m t s l n l p nh t nh
Ho c ch th c hi n hai lo i l trnh
cc l trnh v t qua vng l p nhng khng l p cc l trnh ch l p n l n (ch ng h n n = 1)

55

Ki m th d a trn TLK
Ph t t c cc l trnh
D li u 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

Ki m th d a trn TLK
Bi t p
Xy d ng d li u th th a mn cc tiu chu n
ph t t c cc nh ph t t c cc cung ph t t 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

Ki m th d a trn TLK
Bi t p
Xy d ng d li u th th a mn cc tiu chu n ph t t 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