Download as pdf or txt
Download as pdf or txt
You are on page 1of 286

GIO TRNH

KIM TH PHN MM
Phm Ngc Hng, Trng Anh Hong v
ng Vn Hng
Thng 1 nm 2014

ii

Mc lc

1 Tng quan v kim th

1.1

Cc thut ng v nh ngha c bn v kim th . . . . . . . .

1.2

Ca kim th . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

M t bi ton kim th qua biu Venn . . . . . . . . . . .

1.4

Vic xc nh cc ca kim th . . . . . . . . . . . . . . . . . . 10
1.4.1

Kim th hm . . . . . . . . . . . . . . . . . . . . . . . 10

1.4.2

Kim th cu trc . . . . . . . . . . . . . . . . . . . . 12

1.4.3

Tranh lun v kim th hm so vi kim th cu trc . 13

1.5

Phn loi cc li v sai . . . . . . . . . . . . . . . . . . . . . . 14

1.6

Cc mc kim th . . . . . . . . . . . . . . . . . . . . . . . . 15

1.7

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Mt s v d
2.1

2.2

21

Bi ton tam gic . . . . . . . . . . . . . . . . . . . . . . . . . 21


2.1.1

Pht biu bi ton . . . . . . . . . . . . . . . . . . . . 22

2.1.2

Nhn xt

2.1.3

Ci t truyn thng . . . . . . . . . . . . . . . . . . . 22

2.1.4

Ci t c cu trc . . . . . . . . . . . . . . . . . . . . 25

. . . . . . . . . . . . . . . . . . . . . . . . . 22

Hm NextDate (ngy k tip) . . . . . . . . . . . . . . . . . . 26


iii

iv

MC LC

2.3

2.2.1

Pht biu bi ton . . . . . . . . . . . . . . . . . . . . 28

2.2.2

Nhn xt

2.2.3

Ci t . . . . . . . . . . . . . . . . . . . . . . . . . . 28

. . . . . . . . . . . . . . . . . . . . . . . . . 28

H thng rt tin t ng n gin . . . . . . . . . . . . . . . 30


2.3.1

Pht biu bi ton . . . . . . . . . . . . . . . . . . . . 31

2.3.2

Nhn xt

. . . . . . . . . . . . . . . . . . . . . . . . . 32

2.4

B iu khin gt nc t . . . . . . . . . . . . . . . . . . . 34

2.5

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 C s ton hc ri rc cho vic kim th


3.1

3.2

3.3

3.4

37

L thuyt tp hp . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.1

Phn t ca tp hp . . . . . . . . . . . . . . . . . . . 38

3.1.2

nh ngha tp hp . . . . . . . . . . . . . . . . . . . . 38

3.1.3

Tp hp rng . . . . . . . . . . . . . . . . . . . . . . . 39

3.1.4

Biu Venn . . . . . . . . . . . . . . . . . . . . . . . 40

3.1.5

Cc php ton v tp hp . . . . . . . . . . . . . . . . 41

3.1.6

Quan h gia cc tp hp . . . . . . . . . . . . . . . . 43

3.1.7

Phn hoch tp hp . . . . . . . . . . . . . . . . . . . 43

3.1.8

Cc ng nht thc v tp hp . . . . . . . . . . . . . 45

Hm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.1

Min xc nh v min gi tr . . . . . . . . . . . . . . 46

3.2.2

Cc loi hm . . . . . . . . . . . . . . . . . . . . . . . 46

3.2.3

Hm hp . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Quan h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.1

Quan h gia cc tp hp . . . . . . . . . . . . . . . . 49

3.3.2

Quan h trn mt tp hp . . . . . . . . . . . . . . . . 51

Lgic mnh . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

MC LC

3.4.1

Cc php ton lgic . . . . . . . . . . . . . . . . . . . . 53

3.4.2

Biu thc lgic . . . . . . . . . . . . . . . . . . . . . . 53

3.4.3

Tng ng lgic . . . . . . . . . . . . . . . . . . . . 54

3.5

L thuyt xc sut . . . . . . . . . . . . . . . . . . . . . . . . 55

3.6

L thuyt th . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.1

3.6.2

3.6.3

3.7

th . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.6.1.1

Bc ca nh . . . . . . . . . . . . . . . . . . 58

3.6.1.2

Ma trn ti . . . . . . . . . . . . . . . . . . . 59

3.6.1.3

Ma trn lin k . . . . . . . . . . . . . . . . . 59

3.6.1.4

ng i trong th . . . . . . . . . . . . . 60

3.6.1.5

Tnh lin thng . . . . . . . . . . . . . . . . . 61

3.6.1.6

Rt gn th . . . . . . . . . . . . . . . . . 61

3.6.1.7

Ch s chu trnh . . . . . . . . . . . . . . . . 62

th c hng . . . . . . . . . . . . . . . . . . . . . . 63
3.6.2.1

Bc vo v bc ra . . . . . . . . . . . . . . . . 64

3.6.2.2

Loi ca nh . . . . . . . . . . . . . . . . . . 65

3.6.2.3

Ma trn lin k ca th c hng . . . . . 65

3.6.2.4

ng i v ta ng i . . . . . . . . . . . 66

3.6.2.5

Ma trn t c . . . . . . . . . . . . . . . . 67

3.6.2.6

Tnh N -lin thng . . . . . . . . . . . . . . . 68

3.6.2.7

Thnh phn lin thng mnh . . . . . . . . . 69

Cc loi th dng cho kim th . . . . . . . . . . . . 70


3.6.3.1

My hu hn trng thi . . . . . . . . . . . . 71

3.6.3.2

Mng Petri . . . . . . . . . . . . . . . . . . . 73

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4 Kho st c t v m ngun

79

vi

MC LC
4.1

Kho st c t . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.1.1

4.1.2

Tin hnh duyt c t mc cao . . . . . . . . . . . . . 80


4.1.1.1

Hy l khch hng ca sn phm . . . . . . . 80

4.1.1.2

Hy nghin cu cc chun v hng dn hin


hnh . . . . . . . . . . . . . . . . . . . . . . . 81

4.1.1.3

Hy xem xt v kim th cc phn mm tng


t . . . . . . . . . . . . . . . . . . . . . . . . 82

Cc k thut kim th c t mc thp . . . . . . . 82


4.1.2.1

Danh sch cc hng mc cn thm nh v


cc thuc tnh ca c t . . . . . . . . . . . 83

4.1.2.2

Danh sch cc hng mc cn thm nh v


cc thut ng ca c t . . . . . . . . . . . . 84

4.2 Kho st m ngun . . . . . . . . . . . . . . . . . . . . . . . . 85

4.3

4.2.1

Kho st thit k v m ngun hay l vic kim th


hp trng tnh . . . . . . . . . . . . . . . . . . . . . . . 85

4.2.2

Phn bin hnh thc . . . . . . . . . . . . . . . . . . . 86

4.2.3

Phn bin cho . . . . . . . . . . . . . . . . . . . . . . 87

4.2.4

Thng qua . . . . . . . . . . . . . . . . . . . . . . . . . 87

4.2.5

Thanh tra . . . . . . . . . . . . . . . . . . . . . . . . . 88

4.2.6

Cc chun v hng dn trong lp trnh . . . . . . . . 89

4.2.7

Danh sch cc hng mc chung cho vic kho st m


ngun . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

5 Kim th hm
5.1

97

Tng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.1.1

S phc tp ca kim th hm . . . . . . . . . . . . . 99

5.1.2

Phng php h thng . . . . . . . . . . . . . . . . . . 101

5.1.3

La chn phng php ph hp . . . . . . . . . . . . . 106

MC LC
5.2

Kim th gi tr bin . . . . . . . . . . . . . . . . . . . . . . . 108


5.2.1

Gi tr bin . . . . . . . . . . . . . . . . . . . . . . . . 108

5.2.2

Mt s dng kim th gi tr bin . . . . . . . . . . . . 111

5.2.3

5.2.4
5.3

Kim th gi tr bin mnh . . . . . . . . . . 111

5.2.2.2

Kim th gi tr bin t hp . . . . . . . . . . 112

5.2.2.3

Kim th cc gi tr c bit . . . . . . . . . 113

V d minh ha . . . . . . . . . . . . . . . . . . . . . . 114
5.2.3.1

Kim th gi tr bin cho Triangle . . . . . . 114

5.2.3.2

Kim th gi tr bin cho NextDate . . . . . . 115

Kinh nghim p dng . . . . . . . . . . . . . . . . . . . 115

5.3.1

Lp tng ng . . . . . . . . . . . . . . . . . . . . . 117

5.3.2

Phn loi kim th lp tng ng . . . . . . . . . . 118

5.3.4

5.5

5.2.2.1

Kim th lp tng ng . . . . . . . . . . . . . . . . . . . . 117

5.3.3

5.4

vii

5.3.2.1

Kim th lp tng ng yu . . . . . . . . 118

5.3.2.2

Kim th lp tng ng mnh . . . . . . . 119

5.3.2.3

Kim th lp tng ng n gin . . . . . 120

V d minh ha . . . . . . . . . . . . . . . . . . . . . . 121
5.3.3.1

Kim th lp tng ng cho Triangle . . . 121

5.3.3.2

Kim th lp tng ng cho NextDate . . . 122

5.3.3.3

Kim th tng ng yu cho NextDate . . 123

5.3.3.4

Kim th tng ng mnh cho NextDate . 123

Kinh nghim p dng . . . . . . . . . . . . . . . . . . . 124

Kim th bng bng quyt nh . . . . . . . . . . . . . . . . . 126


5.4.1

Bng quyt nh . . . . . . . . . . . . . . . . . . . . . 126

5.4.2

V d minh ha . . . . . . . . . . . . . . . . . . . . . . 128

5.4.3

Kinh nghim p dng . . . . . . . . . . . . . . . . . . . 130

Kim th t hp . . . . . . . . . . . . . . . . . . . . . . . . . 132

viii

MC LC

5.6

5.5.1

Kim th i mt . . . . . . . . . . . . . . . . . . . . . 132

5.5.2

Ma trn trc giao . . . . . . . . . . . . . . . . . . . . . 133

5.5.3

Kinh nghim p dng . . . . . . . . . . . . . . . . . . . 134

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

6 Kim th dng iu khin

137

6.1

Kim th hp trng . . . . . . . . . . . . . . . . . . . . . . . . 137

6.2

th dng iu khin . . . . . . . . . . . . . . . . . . . . . . 138

6.3

Cc o kim th . . . . . . . . . . . . . . . . . . . . . . . . 139

6.4

Kim th da trn o . . . . . . . . . . . . . . . . . . . . . 142


6.4.1

Kim th cho o C1 . . . . . . . . . . . . . . . . . . 143

6.4.2

Kim th cho o C2 . . . . . . . . . . . . . . . . . . 144

6.4.3

Kim th cho o C3 . . . . . . . . . . . . . . . . . . 145

6.4.4

Kim th vng lp . . . . . . . . . . . . . . . . . . . . 147

6.5

Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

6.6

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

7 Kim th dng d liu


7.1

7.2

159

Kim th da trn gn v s dng gi tr bin . . . . . . . . . 160


7.1.1

tng . . . . . . . . . . . . . . . . . . . . . . . . . . 160

7.1.2

Cc vn ph bin v dng d liu . . . . . . . . . . 160

7.1.3

Tng quan v kim th dng d liu ng . . . . . . . 164

7.1.4

th dng d liu . . . . . . . . . . . . . . . . . . . . 166

7.1.5

Cc khi nim v dng d liu . . . . . . . . . . . . . . 169

7.1.6

Cc o cho kim th dng d liu . . . . . . . . . . 172

7.1.7

Sinh cc ca kim th . . . . . . . . . . . . . . . . . . . 176

Kim th da trn lt ct . . . . . . . . . . . . . . . . . . . . 178

MC LC

ix

7.2.1

tng v kim th da trn lt ct . . . . . . . . . . 179

7.2.2

V d p dng . . . . . . . . . . . . . . . . . . . . . . . 182

7.2.3

Mt s lu vi kim th da trn lt ct . . . . . . . 188

7.3

Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

7.4

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

8 Kim th da trn m hnh

197

8.1

Khi nim v kim th da trn m hnh . . . . . . . . . . . . 197

8.2

Cc phng php c t m hnh . . . . . . . . . . . . . . . . 198


8.2.1

My hu hn trng thi . . . . . . . . . . . . . . . . . 198

8.2.2

tmat n nh hu hn trng thi . . . . . . . . . . 200

8.2.3

Biu trng thi . . . . . . . . . . . . . . . . . . . . 201

8.2.4

My trng thi UML . . . . . . . . . . . . . . . . . . . 201

8.2.5

Cc phng php c t khc . . . . . . . . . . . . . . 203

8.3

Sinh cc ca kim th t m hnh . . . . . . . . . . . . . . . . 203

8.4

Sinh u ra mong mun cho cc ca kim th . . . . . . . . . . 205

8.5

Thc hin cc ca kim th . . . . . . . . . . . . . . . . . . . . 205

8.6

V d minh ha . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.1

c t h thng . . . . . . . . . . . . . . . . . . . . . . 206

8.6.2

Sinh cc ca kim th . . . . . . . . . . . . . . . . . . . 208

8.6.3

Thc hin cc ca kim th . . . . . . . . . . . . . . . . 209

8.7

Thun li v kh khn ca kim th da trn m hnh . . . . 210

8.8

Mt s cng c kim th da trn m hnh . . . . . . . . . . . 212


8.8.1

AGEDIS . . . . . . . . . . . . . . . . . . . . . . . . . . 212

8.8.2

Spec Explorer . . . . . . . . . . . . . . . . . . . . . . . 213

8.8.3

Conformiq Qtronic . . . . . . . . . . . . . . . . . . . . 214

8.8.4

JCrasher . . . . . . . . . . . . . . . . . . . . . . . . . . 214

MC LC

8.9

8.8.5

Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . 215

8.8.6

SoapUI . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

8.8.7

W3af . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

8.10 Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9 Kim th t ng v cng c h tr

219

9.1

Tng quan v kim th t ng . . . . . . . . . . . . . . . . . 219

9.2

Kin trc ca mt b cng c kim th t ng . . . . . . . . 221

9.3

Mt s cng c kim th t ng . . . . . . . . . . . . . . . . 223


9.3.1

CFT4CUnit . . . . . . . . . . . . . . . . . . . . . . . . 223

9.3.2

JDFT . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9.3.3

JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

9.3.4

QuickTest Professional . . . . . . . . . . . . . . . . . . 227

9.3.5

Apache JMeter . . . . . . . . . . . . . . . . . . . . . . 228

9.3.6

Load Runner . . . . . . . . . . . . . . . . . . . . . . . 228

9.4

Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

9.5

Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

10 Kim th tch hp

231

10.1 Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231


10.2 Cc loi giao din v li giao din . . . . . . . . . . . . . . . . 232
10.3 Tch hp da trn cu trc m-un . . . . . . . . . . . . . . . 234
10.3.1 Tch hp t trn xung . . . . . . . . . . . . . . . . . . 235
10.3.2 Tch hp t di ln . . . . . . . . . . . . . . . . . . . 236
10.3.3 Tch hp bnh kp . . . . . . . . . . . . . . . . . . . . 237
10.4 Tch hp da trn th gi hm . . . . . . . . . . . . . . . . 238
10.4.1 Tch hp i mt . . . . . . . . . . . . . . . . . . . . . 238

MC LC

xi

10.4.2 Tch hp lng ging . . . . . . . . . . . . . . . . . . . . 239


10.5 Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
11 Kim th h thng, chp nhn v hi quy

241

11.1 Tng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241


11.2 Kim th h thng . . . . . . . . . . . . . . . . . . . . . . . . 243
11.2.1 Kim th tnh d dng . . . . . . . . . . . . . . . . . . 246
11.2.2 Kim th giao din ngi dng . . . . . . . . . . . . . 250
11.2.3 Kim th hiu nng

. . . . . . . . . . . . . . . . . . . 250

11.2.3.1 Khi nim . . . . . . . . . . . . . . . . . . . . 250


11.2.3.2 Kim th hiu nng lin quan . . . . . . . . . 251
11.3 Kim th chp nhn . . . . . . . . . . . . . . . . . . . . . . . 253
11.4 Kim th hi quy . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.4.1 Tng quan . . . . . . . . . . . . . . . . . . . . . . . . . 255
11.4.2 K thut kim th hi quy . . . . . . . . . . . . . . . . 256
11.5 Bi tp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

xii

MC LC

Li ni u
Chng ta v ang chng kin s tng trng ng kinh ngc ca ngnh
cng nghip phn mm trong vi thp k qua. Nu nh trc y phn mm
my tnh ch c s dng tnh ton khoa hc k thut v x l d liu
th ngy nay n c ng dng vo mi mt ca ca i sng hng ngy
ca con ngi, t cc ng dng nh iu khin cc thit b dng trong
gia nh nh cc thit b nghe nhn, in thoi, my git, l vi sng, ni cm
in, n cc ng dng ln hn nh tr gip iu khin cc phng tin v
h thng giao thng, tr tin cho cc ho n, qun l v thanh ton v ti
chnh, vn vn. V th con ngi ngy cng ph thuc cht ch vo cc sn
phm phn mm v do vy i hi v cht lng ca cc sn phm phn
mm ngy cng cao, tc l cc phn mm phi c sn xut vi gi thnh
h, d dng, an ton v tin cy c. Kim th c phng php l mt hot
ng khng th thiu trong quy trnh sn xut phn mm m bo cc
yu t cht lng nu trn ca cc sn phm phn mm.
Theo thng k th vic kim th tiu tn khong 50% thi gian v hn
50% gi thnh ca cc d n pht trin phn mm. Tng nng sut kim th
l mt nhu cu thit yu tng cht lng phn mm. V th nghin cu
pht trin cc k thut, cng c kim th hu hiu v o to i ng
kim th c k nng v kinh nghim l cc ng gp thit thc nht tng
cng cht lng ca cc sn phm phn mm. T yu cu thc t ny, ngy
nay rt nhiu trng i hc trong nc v quc t a mn Kim th
v m bo cht lng Phn mm thnh mt mn gio dc chuyn ngnh
ca cng ngh phn mm c bc i hc v cao hc. Chng ti thy rng
cc hc vin cao hc v sinh vin cn c o to bi bn v c s ca kim
th phn mm, bao gm c cc kin thc hn lm c bn ln cc k thut
thc hnh trong ngnh cng nghip phn mm c th p ng cng vic
ca c nghin cu vin ln kim th vin. Chng ti vit cun gio trnh ny
xiii

xiv

MC LC

khng ngoi mc ch nhm p ng yu cu thit yu . Cun gio trnh


ny s cung cp cho sinh vin, hc vin cao hc v ging vin nhng cht
liu c bn bao ph nhng nt chnh v nhng pht trin l thuyt c s ca
vic kim th phn mm v cc thc hnh kim th chung trong ngnh cng
nghip phn mm. V cc khi nim v cht lng phn mm l qu rng,
chng ti ch nh gii thiu nhng nt chung nht v ci nhn tng th v
kim th v m bo cht lng phn mm m thi. Thc ra th phn mm
c rt nhiu loi khc nhau, vi nhiu min ng dng khc nhau. mi loi
v mi min ng dng ring bit li c cc c th ring v cn c b tr
bi cc k thut kim th ring cho chng. Chng ti khng c tham vng
i vo cc chi tit nh vy m ch gii thiu l thuyt v thc hnh kim th
chung v c bn nht nhm trang b cho sinh vin nhng k nng c bn
c th hiu v t pht trin cc k thut kim th thch hp cho cc h
thng phc tp v chuyn dng hn trong thc tin sau ny.
Gio trnh ny c vit da vo kinh nghim ging dy mn kim th
v m bo cht lng phn mm ca chng ti trong vi nm nm qua ti
Khoa Cng ngh Thng tin, Trng i hc Cng ngh, i hc Quc gia
H Ni v hng chc nm kinh nghim ca chng ti trong thc t pht trin
phn mm. vit gio trnh ny, chng ti tham kho nhiu cun sch
c dng ph bin trn th gii v kim th v m bo cht lng phn
mm. Chng ti cng s dng thm cc ti liu nghin cu gn y cp
nht cc phng php v kt qu nghin cu hin nay v lnh vc ny nh
c nu trong phn ti liu tham kho cui cun ti liu ny.
Cc ch chnh c trnh by trong cun ti liu ny bao gm:
C s ton hc cho kim th phn mm
Cc khi nim c bn v kim th phn mm
Cc phng php phn tch v kho st c t v m ngun
Cc phng php kim th hm (hay cn gi l kim th chc nng)
Cc phng php kim th hp trng hay kim th cu trc
Cc phng php v quy trnh kim th n v, kim th tch hp,
kim th h thng, kim th chp nhn v kim th hi quy
Cc phng php kim th da trn m hnh, kim th t ng v cc
cng c h tr

MC LC

xv

hon thnh cun gio trnh ny, chng ti nhn c s gip


tn tnh, kin ng gp qu bu v s v ng vin chn thnh t cc ng
nghip, cc nghin cu sinh, hc vin cao hc v sinh vin Khoa Cng ngh
Thng tin ca Trng i hc Cng ngh, i hc Quc gia H Ni. Nhiu
ng nghip v sinh vin dnh thi gian c cn thn, kim th n
tng chi tit nhm gip chng ti nng cao cht lng ca cun gio trnh
ny, c bit l PGS. TS. Nguyn Vit H, PGS. TS. Trng Ninh Thun,
TS. Trn Th Minh Chu (Trng i hc Cng ngh) v PGS. TS. ng
Vn c (Vin Cng ngh Thng tin, Vin hm lm Khoa hc Vit Nam).
Chng ti xin chn thnh cm n cc ng nghip, cc bn nghin cu sinh,
hc vin cao hc v sinh vin v nhng ng gp to ln .
Mc d chng ti rt n lc nhng v thi gian v trnh cn hn
ch, cun ti liu ny khng trnh khi cc thiu st. Chng ti rt mong
cun gio trnh s c bn c n nhn, thng cm v gp . Chng ti
xin trn trng cm n.
H Ni, Thng 11 nm 2013
Cc tc gi.

xvi

MC LC

Chng 1
Tng quan v kim th
Kim th nhm nh gi cht lng hoc tnh chp nhn c ca sn phm.
Kim th cng nhm pht hin li hoc bt c vn g v sn phm. Chng
ta cn kim th v bit rng con ngi lun c th mc sai lm. iu ny c
bit ng trong lnh vc pht trin phn mm v cc h thng iu khin
bi phn mm. Chng ny nhm phc ha mt bc tranh tng th v kim
th phn mm. Cc chng cn li s nm trong khun kh ca bc tranh
ny v mc chi tit hn.

1.1

Cc thut ng v nh ngha c bn v
kim th

K ngh kim th pht trin v tin ho hng my chc nm nn cc


thut ng trong cc ti liu khc nhau thng khng thng nht v thiu
tng thch. Cc thut ng c trnh by trong cun sch ny da vo cc
thut ng chun c pht trin bi IEEE (Vin K ngh in v in t)
vi vic chn lc cn thn cc thut ng ting Vit tng ng.
Li (Error): Li l nhng vn m con ngi mc phi trong qu trnh
pht trin cc sn phm phn mm. Trong thc t, con ngi lun c th
phm li. Khi lp trnh vin phm li trong lp trnh, ta gi cc li l
bug (con b). Li c th pht tn. Chng hn, mt li v xc nh yu cu
1

CHNG 1. TNG QUAN V KIM TH

c th dn n sai lm v thit k v cng sai khi lp trnh theo thit k ny.


Li l nguyn nhn dn n sai.
Sai (Fault): Sai l kt qu ca li, hay ni khc i, li s dn n sai.
Cng c th ni sai l mt biu din ca li di dng mt biu thc, chng
hn chng trnh, vn bn, s dng d liu, biu lp,.... Sai lm c th
kh b pht hin. Khi nh thit k mc li b st trong qu trnh thit k,
sai kt qu t li l thiu mt ci g m l ra cn phi c. Sai v nhim
v xut hin khi vo sai thng tin, cn sai v b qun xut hin khi khng
vo thng tin. Loi sai th hai kh pht hin v kh sa hn loi sai th
nht.
Tht bi (Failure): Tht bi xut hin khi mt li c thc thi. C
hai iu cn lu y. Mt l tht bi ch xut hin di dng c th
chy c m thng thng l m ngun. Hai l cc tht bi ch lin kt
vi cc li v nhim v. Cn cc tht bi tng ng vi cc li v b qun
th x l th no? Nhng ci li khng bao gi c tin hnh, hoc khng
c tin hnh trong khong thi gian di cn c x l th no? Virus
Michaelangelo l mt v d v li loi ny. N ch c tin hnh vo ngy
sinh ca Michaelangelo, tc ngy 6/3 m thi. Vic kho st c th ngn
chn nhiu tht bi bng cch tm ra cc li thuc c hai loi.
S c (Incident): Khi tht bi xut hin, n c th hin th hoc khng,
tc l r rng hoc khng r rng i vi ngi dng hoc ngi kim th.
S c l triu chng lin kt vi mt tht bi v th hin cho ngi dng
hoc ngi kim th v s xut hin ca tht bi ny.
Yu cu ca khch hng v c t ca phn mm: Phn mm c
vit thc hin cc nhu cu ca khch hng. Cc nhu cu ca khch hng
c thu thp, phn tch v kho cu v l c s quyt nh chnh xc
cc c trng cn thit m sn phm phn mm cn phi c. Da trn yu
cu ca khch hng v cc yu cu bt buc khc, c t c xy dng
m t chnh xc cc yu cu m sn phm phn mm cn p ng, v c
giao din th no. Ti liu c t l c s i ng pht trin phn mm
xy dng sn phm phn mm. Khi ni n tht bi trn y l ni n vic
sn phm phn mm khng hot ng ng nh c t. Li mt khi c

1.1. CC THUT NG V NH NGHA C BN V KIM TH

tin hnh c th dn n tht bi. Do , li v b qun c coi l tng


ng vi cc li khi xy dng c t.
Kim chng v thm nh: Kim chng (verification) v thm nh
(validation) hay c dng ln ln, nhng thc ra chng c ngha khc
nhau. Kim chng l qu trnh m bo rng mt sn phm phn mm
tha mn c t ca n. Cn thm nh l qu trnh m bo rng
sn phm p ng c yu cu ca ngi dng (khch hng). Trong thc
t, chng ta cn thc hin kim chng trc khi thc hin vic thm nh
sn phm phn mm. V vy, chng ta c thut ng V&V (Verification &
Validation). L do ca vic ny l chng ta cn m bo sn phm ng vi
c t trc. Nu thc hin vic thm nh trc, mt khi pht hin ra li,
chng ta khng th xc nh c li ny do c t sai hay do lp trnh sai
so vi c t.

Cht lng v tin cy ca phn mm: Theo t in, cht lng


ca mt sn phm c th hin bng cc c trng ph hp vi c t ca
n. Theo cch hiu ny, cht lng ca mt sn phm phn mm l s p
ng cc yu cu v chc nng (tc l cc hm cn c tnh ton), s hon
thin v cc chun c c t, cng cc c trng mong ch t mi sn
phm phn mm chuyn nghip. Cht lng phn mm c trng cho
tt, tuyt ho ca phn mm, v gm c cc yu t v cht lng nh:
tnh ng n (hnh vi ng nh c t), tnh hiu qu (tit kim thi gian
v tin bc), tin cy, tnh kh kim th (kim th c v d), d hc, d
s dng, d bo tr ... Nh vy, tin cy ch l mt yu t nh gi cht
lng phm mm. Ngi kim th hay nhm ln tin cy vi cht lng.
Khi kim th t ti mc phn mm chy n nh, c th ph thuc vo n,
ngi kim th thng cho rng phn mm t cht lng cao. Cc yu
t v mt cht lng m lin quan trc tip n vic pht trin phn mm
c gi l cc tiu chun cht lng nh tnh c cu trc, tnh n th,
tnh kh kim th, ...
tin cy ca phn mm l xc sut phn mm chy khng c tht
bi trong mt khong thi gian nht nh. N c xem l mt yu t quan
trng ca cht lng phn mm. Ngoi ra, thi gian trung bnh cho vic khc
phc mt s c cng l mt thng s quan trng trong vic nh gi tin
cy ca sn phm phn mm.

CHNG 1. TNG QUAN V KIM TH

Kim th: R rng vic kim th lin quan n cc khi nim trn: li,
sai, tht bi v s c. C hai mc ch chnh ca mt php th: tm tht bi
hoc chng t vic tin hnh ca phn mm l ng n.
Vai tr ca kim th phn mm: Kim th phn mm ng vai tr
quan trng trong vic nh gi v thu c cht lng cao ca sn phm
phn mm trong qu trnh pht trin. Thng qua chu trnh kim th - tm
li - sa li, ta hy vng cht lng ca sn phm phn mm s c ci
tin. Mt khc, thng qua vic tin hnh kim th mc h thng trc khi
cho lu hnh sn phm, ta bit c sn phm ca ta tt mc no. V
th, nhiu tc gi m t vic kim th phn mm l mt quy trnh kim
chng nh gi v tng cng cht lng ca sn phm phn mm. Quy
trnh ny gm hai cng vic chnh l phn tch tnh v phn tch ng.
Phn tch tnh: Vic phn tch tnh c tin hnh da trn vic kho
st cc ti liu c xy dng trong qu trnh pht trin sn phm nh
ti liu c t nhu cu ngi dng, m hnh phn mm, h s thit
k v m ngun phn mm. Cc phng php phn tch tnh truyn
thng bao gm vic kho st c t v m ngun cng cc ti liu thit
k. Cc k thut kho st ny s c gii thiu trong chng 4. Ngi
ta cng c th dng cc k thut phn tch hnh thc nh kim chng
m hnh (model checking) v chng minh nh l (theorem proving)
chng minh tnh ng n ca thit k v m ngun. Cc k thut
ny tng i phc tp v nm ngoi khun kh ca cun gio trnh
ny. Cng vic ny khng ng n vic thc thi chng trnh m ch
duyt, l gii v tt c cc hnh vi c th ca chng trnh khi c
thc thi. Ti u ha cc chng trnh dch l cc v d v phn tch
tnh.
Phn tch ng: Phn tch ng lin quan n vic thc thi chng
trnh pht hin nhng tht bi c th c ca chng trnh, hoc
quan st cc tnh cht no v hnh vi v hiu qu (performance).
V gn nh khng th thc thi chng trnh trn tt c cc d liu u
vo c th, ta ch c th chn mt tp con cc d liu u vo thc
thi, gi l cc ca kim th. Chn nh th no c cc b d liu
u vo hiu qu (tc l cc b d liu c xc sut pht hin tht bi
(nu c) cao hn l cng vic cn suy ngh v l ni dung chnh ca
cc gio trnh ny.

1.1. CC THUT NG V NH NGHA C BN V KIM TH

Bng vic phn tch tnh v ng, ngi kim th mun pht hin nhiu
li nht c th c chng c th c sa giai on sm nht trong
qu trnh pht trin phn mm. Phn tch tnh v ng l hai k thut b
sung cho nhau v cn c lm lp i lp li nhiu trong qu trnh kim th.

Ca kim th: Mi ca kim th c mt tn v c lin kt vi mt hnh


vi ca chng trnh. Ca kim th gm mt tp cc d liu u vo v mt
xu cc gi tr u ra mong i i vi phn mm.

Hnh 1.1: Mt vng i ca vic kim th.


Hnh 1.1 m t vng i ca vic kim th ng vi m hnh thc nc.
Lu rng trong giai on pht trin phn mm, li c th c a vo
ti cc gia on c t yu cu, thit k v lp trnh. Cc li ny c th to
ra nhng sai lan truyn sang cc phn cn li ca qu trnh pht trin. Mt
nh kim th li lc tm tt vng i ny nh sau: Ba giai on u l
a li vo, giai on kim th l tm li, v ba giai on cui l kh
li i [Pos90]. Bc sa sai l c hi mi cho vic a vo li (v cc sai
mi). V vy, vic sa sai ny c th lm cho phn mm t ng tr thnh
sai. Trong trng hp ny, vic sa sai l khng y . Kim th hi quy
(s c gii thiu trong chng 11) l gii php tt gii quyt vn
ny.

CHNG 1. TNG QUAN V KIM TH

Cc thut ng trn y cho thy cc ca kim th chim v tr trung tm


trong vic kim th da trn phn tch ng. Qu trnh kim th da trn
phn tch ng c chia thnh cc buc sau: lp k hoch kim th, pht
trin ca kim th, chy cc ca kim th v nh gi kt qu kim th. Tiu
im ca cun gio trnh ny l vic xc nh tp hu ch cc ca kim th,
tc l cc ca kim th gip ta ci tin tt hn cht lng ca sn phm.

1.2

Ca kim th

Ct li ca kim th phn mm da trn phn tch ng l vic xc nh


tp cc ca kim th sao cho chng c kh nng pht hin nhiu nht cc li
(c th c) ca h thng cn kim th. Vy ci g cn a vo cc ca kim
th? R rng thng tin u tin l u vo. u vo c hai kiu: tin iu
kin (pre-condition) - tc l iu kin cn tha mn trc khi tin hnh ca
kim th - v d liu u vo thc s c xc nh bi phng php kim
th. Thng tin tip theo cn a vo l u ra mong i. Cng c hai loi
u ra: hu iu kin (post-condition) v d liu u ra thc s. Phn u
ra ca ca kim th thng hay b b qun v n l phn kh xc nh. Gi s
ta cn kim th phn mm tm ng i ti u cho my bay khi cho trc
cc rng buc v hnh lang bay v d liu v thi tit trong ngy ca chuyn
bay. ng i ti u ca my bay thc s l g? C nhiu cu tr li cho
cu hi ny. Cu tr li l thuyt l gi thit v s tn ti ca mt cy a
thn (oracle) bit c tt c cc cu tr li. Cu tr li thc t, c gi
l kim th tham chiu, l h thng c kim th di s gim st ca cc
chuyn gia v lnh vc ng dng ca phn mm, nhng ngi c th phn
xt xem liu cc d liu u ra i vi vic tin hnh trn cc d liu u
vo ca ca kim th c chp nhn c hay khng.
Hot ng kim th dn n vic thit lp cc tin iu kin cn thit,
vic cung cp cc ca kim th, quan st d liu u ra v so snh chng vi
cc u ra mong i xc nh pht hin cc li/khim khuyt (c th c)
ca sn phm phn mm.
Hnh 1.2 m t cc thng tin c bn trong mt ca kim th c pht
trin y , ch yu l tr gip vic qun l. Cc ca kim th cn phi
nh danh bng tn/ch s v l do tn ti (chng hn c t nhu cu tng
ng l mt l do). Cng nn b sung thm lch s tin hnh ca mt ca kim

1.3. M T BI TON KIM TH QUA BIU VENN

Hnh 1.2: Thng tin v mt ca kim th tiu biu.


th bao gm c vic chng c thc hin bi ai v khi no, kt qu ca
mi ln thc hin ra sao, qua hay tht bi v c thc hin trn phin bn
no ca phn mm. Vi cc ca kim th cho cc hot ng kim th giao
din ngi dng, ngoi thng tin v u vo, chng ta cn b sung thm cc
thng tin v trnh t nhp cc u vo cho giao din. Tm li, ta cn nhn
thc rng ca kim th t nht cng quan trng nh m ngun. Cc ca kim
th cn c pht trin, kim tra, s dng, qun l v lu tr mt cch khoa
hc.

1.3

M t bi ton kim th qua biu


Venn

Kim th ch yu lin quan ti hnh vi ca chng trnh ni m hnh vi


phn nh quan im v cu trc ph dng i vi cc nh pht trin h
thng hoc phn mm. S khc bit l quan im cu trc tp trung vo l
ci g, cn quan im hnh vi li tp trung vo lm g. Mt trong nhng
nguyn nhn gy kh cho ngi kim th l cc ti liu c s thng c
vit bi v vit cho ngi pht trin v v th chng thin v thng tin cu
trc v coi nh thng tin v hnh vi ca chng trnh cn kim th. Trong

CHNG 1. TNG QUAN V KIM TH

mc ny, chng ta pht trin mt biu Venn n gin nhm lm sng


t vi iu v kim th. Chi tit v biu Venn s c trnh by trong
chng 3.

Hnh 1.3: Cc hnh vi c ci t v c c t.


Xt mt v tr ca hnh vi chng trnh cn kim th, lu rng chng
ta ang quan tm n bn cht ca vic kim th l xc nh tp cc ca kim
th h ch. Cho trc mt chng trnh cng c t ca n. Gi S l tp cc
hnh vi c c t v P l tp cc hnh vi ca chng trnh. Hnh 1.3 m
t mi quan h gia v tr cc hnh vi c lp trnh v hnh vi c c
t. Trong tt c cc hnh vi c th ca chng trnh, nhng hnh vi c
c t nm trong vng trn vi nhn S, cn nhng hnh vi c lp trnh
l trong vng trn vi nhn P . T biu ny, ta thy r cc bi ton m
ngi kim th cn i mt l g. Nu c hnh vi c c t nhng khng
c lp trnh th theo thut ng trc y, y l nhng sai v b qun.
Tng t, nu c nhng hnh vi c lp trnh nhng khng c c t,
th iu tng ng vi nhng sai v nhim v, v tng ng vi nhng
li xut hin sau khi c t hon thnh. Tng giao gia S v P l phn
ng n, gm c cc hnh vi va c c t va c ci t. Ch rng
tnh ng n ch c ngha i vi c t v ci t v l khi nim mang
tnh tng i.
Vng trn mi (vng trn T ) trong hnh 1.4 l cho cc ca kim th. Lu
rng tp cc hnh vi ca chng trnh nm trn trong v tr chuyn
m ta ang xt. V mt ca kim th cng xc nh mt hnh vi (xin cc nh
ton hc s b qua cho vic dng thut ng qu ti ny). Xt mi quan h

1.3. M T BI TON KIM TH QUA BIU VENN

Hnh 1.4: Cc hnh vi c ci t, c c t v c kim th.


gia S, P v T . C th c cc hnh vi c c t m khng c kim th
(cc min 2 v 5), cc hnh vi c c t v c kim th (cc min 1
v 4), v cc ca kim th tng ng vi cc hnh vi khng c c t (cc
min 3 v 7).
Tng t, c th c cc hnh vi c lp trnh m khng c kim th
(cc min 2 v 6), cc hnh vi c lp trnh v c kim th (cc min 1
v 3), v cc ca kim th tng ng vi cc hnh vi khng c lp trnh
(cc min 4 v 7). Vic xem xt tt c cc min ny l ht sc quan trng.
Nu c cc hnh vi c c t m khng c cc ca kim th tng ng, vic
kim th l cha y . Nu c cc ca kim th tng ng vi cc hnh
vi khng c c t, c th c hai kh nng: hoc c t cn thiu hoc
ca kim th khng m bo. Theo kinh nghim, mt ngi kim th gii s
thng cho cc ca kim th thuc loi u, v y chnh l l do ngi kim
th cn tham gia vo giai on kho st c t v thit k (xem chng 4).
Ta c th thy vic kim th nh l cng vic ca mt ngh nhn: ngi
kim th c th lm g lm cho min tng giao (phn giao) ca cc tp
(min 1) l ln nht c th? Lm th no xc nh cc ca kim th trong
tp T ? Cu tr li l cc ca kim th cn c xc nh bi mt phng
php kim th ph hp. Chnh khun kh ny cho php ta so snh tnh hiu

10

CHNG 1. TNG QUAN V KIM TH

qu ca cc phng php kim th khc nhau nh s c gii thiu trong


cc chng 5, 6 v 7.

1.4

Vic xc nh cc ca kim th

C hai cch tip cn c bn xc nh cc ca kim th l kim th hm


(kim th chc nng hay kim th hp en - black-box testing) v kim
th cu trc (kim th hp trng - white-box testing). Mi cch tip cn c
phng php xc nh ca kim th khc nhau v c gi chung l phng
php kim th.

1.4.1

Kim th hm

Kim th hm da trn quan nim rng bt k chng trnh no cng c


coi l mt hm nh x cc gi tr t min d liu u vo vo min d
liu u ra ca n. Khi nim ny c dng chung trong k thut khi cc
h thng u c coi l cc hp en. Chnh iu ny dn n thut ng
kim th hp en, trong ni dung ca hp en (vic ci t) khng c
bit/khng cn quan tm, v chc nng ca hp en c hiu theo cc d
liu u vo v d liu u ra ca n nh hnh 1.5. Trong thc t, chng ta
thng thao tc hiu qu vi nhng kin thc v hp en. Chnh iu ny l
trung tm ca khi nim nh hng i tng ni m cc i tng c
xem xt nh l cc hp en v chng ch tng tc vi nhau bng cc li gi
thng qua cc phng thc c th quan st c t bn ngoi.

Hnh 1.5: Mt hp en k thut.


Vi cch tip cn ca kim th hm, xc nh cc ca kim th, thng
tin duy nht c dng l c t ca phn mm cn kim th. C hai li

1.4. VIC XC NH CC CA KIM TH

11

im chnh ca cc ca kim th c sinh ra bi cch tip cn kim th hm:


chng c lp vi vic phn mm c ci t th no, v v th khi ci t
thay i th cc ca kim th vn dng c, ng thi cc ca kim th c
pht trin song song v c lp vi vic ci t h thng. Do , cch tip
cn ny rt gn c thi gian pht trin ca d n. im yu ca cch tip
cn ny l cc ca kim th hm thng c th c tnh d tha ng k trong
cc ca kim th.
Hnh 1.6 m t kt qu ca cc ca kim th xc nh bi cc phng
php kim th hm. Phng php A xc nh mt tp cc ca kim th ln
hn so vi phng php B. Lu rng i vi c hai phng php, tp cc
ca kim th u cha trn trong tp cc hnh vi c c t. Do cc phng
php kim th hm u da trn cc hnh vi c t, cc phng php ny
kh c th xc nh c cc hnh vi khng c c t. Trong chng 5
ta s so snh cc ca kim th sinh bi cc phng php hm khc nhau cho
cc v d nu trong chng 2.

Hnh 1.6: So snh cc phng php xc nh cc ca kim th hm.


Trong chng 5, chng ta s kho st cc cch tip cn ch yu cho cc
phng php kim th hm bao gm phn tch gi tr bin, kim th tnh
bn vng, phn tch trng hp xu nht, kim th gi tr c bit, kim th
phn lp tng ng ca min d liu u vo, lp tng ng ca min
d liu u ra, kim th da trn bng quyt nh. iu xuyn sut trong
cc k thut ny l tt c u da trn thng tin xc nh v cc thnh phn
ang c kim th.

12

1.4.2

CHNG 1. TNG QUAN V KIM TH

Kim th cu trc

Kim th cu trc hay kim th hp trng l cch tip cn khc xc nh


cc ca kim th. Biu tng hp trong sut l thch hp cho cch tip cn
ny v s khc nhau ct li vi kim th hp en l vic ci t ca hp
en c cho v c dng lm c s xc nh cc ca kim th. Vic bit
c bn trong ca hp en cho php ngi kim th da trn vic ci t
ca hm xc nh ca kim th.
Kim th cu trc tr thnh ch ca mt l thuyt tng i mnh.
hiu r kim th cu trc, cc khi nim v l thuyt th tuyn tnh
c trnh by trong chng 3 l cn thit. Vi nhng khi nim ny, ngi
kim th c th m t chnh xc cc yu cu kim th v h thng cn kim
th. Do c c s l thuyt mnh, kim th cu trc cho php nh ngha
chnh xc v s dng cc o v bao ph. Cc o v ph cho php
khng nh tng minh phn mm c kim th ti mc no v do
gip cho vic qun l qu trnh kim th tt hn.

Hnh 1.7: So snh cc phng php xc nh ca kim th i vi kim th


cu trc.
Hnh 1.7 phn nh cc kt qu ca cc ca kim th xc nh bi hai
phng php kim th cu trc. Tng t nh trn, phng php A xc
nh tp cc ca kim th ln hn so vi phng php B. C chc l tp cc
ca kim th ln hn l tt hn khng? y l mt cu hi th v v kim
th cu trc cung cp cc gii php tm cu tr li cho vn ny. Lu
rng c hai phng php A v B u cho cc tp cc ca kim th nm trn
trong tp cc hnh vi c lp trnh. Do cc ca kim th ca cc phng

1.4. VIC XC NH CC CA KIM TH

13

php ny c sinh ra da trn chng trnh nn rt kh xc nh cc


li lin quan n cc hnh vi c c t nhng khng c lp trnh.
Tuy nhin, d thy rng tp cc ca kim th cu trc l tng i nh so vi
tp tt c cc hnh vi c lp trnh. Ta s so snh cc cch tip cn ny
mc 1.4.3. Mt s phng php kim th cu trc (kim th dng iu
khin v kim th dng d liu) s c gii thiu chi tit trong cc chng
6 v 7.

1.4.3

Tranh lun v kim th hm so vi kim th cu


trc

Cho trc hai cch tip cn khc nhau xc nh cc ca kim th, cu hi


t nhin c t ra l phng php no tt hn? Cho n nay chng ta
vn cha c cu tr li tha ng cho cu hi ny. Ni v kim th cu trc,
Robert Poston vit: cng c ny lng ph thi gian ca ngi kim th v
t nhng nm by mi (ca th k trc) n chng tr gip tt cho vic
kim th phn mm v ng c a n vo b cng c ca ngi kim th
[Pos91]. Nhm bo v cho vic kim th cu trc, Edward Miller [Mil91] vit:
bao ph nhnh (mt o bao ph ca kim th), nu t c 85%
hoc cao hn, c th xc nh s li gp i so vi s li pht hin bi kim
th trc quan (kim th hm).

Hnh 1.8: Ngun cc ca kim th.


Biu Venn c m t trong hnh 1.8 c th gip ta tr li cu hi

14

CHNG 1. TNG QUAN V KIM TH

v cuc tranh lun trn. Chng ta cn khng nh li rng mc ch ca c


hai cch tip cn l xc nh cc ca kim th. Kim th hm ch dng
c t xc nh ca kim th, trong khi kim th cu trc dng m ngun
ca chng trnh (ci t) lm c s xc nh ca kim th. Nhng bn
lun trc y cho thy chng c cch tip cn no l tt. Xt cc hnh
vi chng trnh: nu tt c cc hnh vi c c t vn cha c ci t,
kim th cu trc s khng th nhn bit c iu . Ngc li, nu cc
hnh vi c ci t cha c c t, iu chng khi no c th c
phi by nh kim th hm. (Mt con vi rt l mt v d tt v cc hnh vi
khng c c t). Cu tr li s b l c hai cch tip cn u l cn thit
c; cn cu tr li cn thn hn l cch kt hp khn kho s cung cp nim
tin cho kim th hm v o ca kim th cu trc. Ta khng nh
trn rng kim th hm c khim khuyt v tnh d tha v h phn cch.
Nu kim th hm c tin hnh kt hp vi cc s o v ph ca kim
th cu trc th khim khuyt trn c th c pht hin v gii quyt.
Quan im biu Venn cho vic kim th cung cp mt chi tit na.
Mi quan h gia tp T cc ca kim th v cc tp S v P ca cc hnh vi
ci t v c t th no? R rng, cc ca kim th trong T c xc nh
bi phng php xc nh ca kim th c dng. Mt cu hi rt hay cn
t ra l th th phng php ny thch hp v hiu qu ra sao. Ta c th
ng li vng lun qun ny bng nhng li bn trc y. Nhc li ng
i t li n sai, tht bi v s c. Nu ta bit loi li no ta hay phm, v
loi sai no hay c trong phn mm c kim th, ta c th dng thng tin
ny la chn phng php thch hp hn xc nh cc ca kim th.
Chnh im ny lm cho vic kim th thnh mt ngh thut.

1.5

Phn loi cc li v sai

Cc nh ngha ca ta v li v sai xoay quanh s phn bit gia quy trnh


v sn phm: quy trnh ni ta lm iu g th no, cn sn phm l kt
qu cui cng ca quy trnh. Kim th phn mm v m bo cht lng
phn mm (Software Quality Assurance - SQA) gp nhau im l SQA c
gng ci tin cht lng sn phm bng vic ci tin quy trnh. Theo ngha
ny th kim th l nh hng sn phm. SQA quan tm nhiu hn n vic
gim thiu li trong qu trnh pht trin, cn kim th quan tm ch yu
n pht hin sai trong sn phm. C hai nguyn l ny u s dng nh

1.6. CC MC KIM TH

15

ngha v cc loi sai. Cc sai c phn loi theo vi cch: giai on pht
trin khi ci sai tng ng xut hin, cc hu qu ca cc tht bi tng
ng, kh cho vic gii quyt, ri ro ca vic khng gii quyt c,
vn vn. Mt cch phn loi c a thch l da trn vic xut hin bt
thng: ch mt ln, thnh thong, xut hin li hoc lp i lp li nhiu ln.
Hnh 1.9 minh ha mt cch phn loi sai [Bor84] da trn nghim trng
ca hu qu.
1
2
3

Nh
Va
Kh chu

4
5
6
7

Bc mnh
Nghim trng
Rt nghim trng
Cc k nghim trng

8 Qu qut
9 Thm ha
10 Dch ha

Li chnh t
Hiu lm hoc tha thng tin
Tn b thiu, ct ch hoc ha
n c gi tr 0.0 ng
Vi giao dch khng c x l
Mt giao dch
X l giao dch sai
Li rt nghim trng xy ra
thng xuyn
Hy hoi c s d liu
H thng b tt
Thm ha ly lan

Hnh 1.9: Phn loi sai bng nghim trng.


x l cc loi sai, hy tham kho [IEE93] v vic phn loi chun cho
cc bt thng ca phn mm. Chun IEEE nh ngha quy trnh gii quyt
bt thng mt cch chi tit gm bn giai on: nhn bit, kho st, hnh
ng v b tr li. Mt s bt thng ph bin c m t trong cc bng
t Bng 1.1 n Bng 1.5. Hu ht cc bt thng ny u c cp
trong chun IEEE. Ngoi ra, chng ti cng b sung thm mt s bt thng
khc.

1.6

Cc mc kim th

Mt trong cc khi nim then cht ca vic kim th l cc mc ca vic


kim th. Cc mc ca vic kim th phn nh mc tru tng c
thy trong m hnh thc nc ca vng i ca vic pht trin phn mm.

16

CHNG 1. TNG QUAN V KIM TH

Bng 1.1: Cc sai lm v u vo/u ra


Loi
d liu u vo

d liu u ra

Cc trng hp
d liu u vo ng nhng khng c chp
nhn
d liu u vo sai nhng c chp nhn
m t sai hoc thiu
tham s sai hoc thiu
khun dng sai
kt qu sai
kt qu ng ti thi gian sai (qu sm hoc qu
mun)
kt qu khng y hoc thiu
kt qu gi to
vn phm/chnh t
cc trng hp khc
Bng 1.2: Cc sai lm v lgic

thiu trng hp
lp tha trng hp
iu kin cc oan b b qua
th hin sai
thiu iu kin
iu kin ngoi lai
kim th sai bin
vic lp ca chu trnh khng ng
php ton sai (chng hn dng < cho )
D c mt s nhc im, m hnh ny vn rt hu ch cho vic kim th,
l phng tin xc nh cc mc kim th khc nhau v lm sng t mc
ch ca mi mc. Mt dng ca m hnh thc nc c trnh by trong
hnh 1.10. Dng ny nhn mnh s tng ng ca vic kim th vi cc mc
thit k. Lu rng theo cc thut ng ca vic kim th hm, ba mc ca
nh ngha (c t, thit k s b v thit k chi tit) tng ng trc tip vi
ba mc ca vic kim th l kim th n v, kim th tch hp v kim th

1.6. CC MC KIM TH

17

Bng 1.3: Cc sai lm v tnh ton


thut ton sai
thiu tnh ton
ton hng sai
sai v du ngoc
cha chnh xc (lm trn hoc ct ui)
hm i km sai

Bng 1.4: Cc sai lm v giao din


x l gin on sai (trong cc h thng nhng)
thi gian vo ra (time out)
gi sai th tc
gi n mt th tc khng tn ti
tham s khng snh cp c (mismatch) (chng hn v kiu v
s)
kiu khng tng thch
bao hm tha
h thng. Cc mc ca kim th cng lm ny sinh vn v th t kim
th: di ln, trn xung hoc cc kh nng khc.
Cc mc kim th c th c m t s b nh sau:
Kim th n v: Kim th n v l vic kim th cc n v chng
trnh mt cch c lp. Th no l mt n v chng trnh? Cu tr
li ph thuc vo ng cnh cng vic. Mt n v chng trnh l mt
on m ngun nh hm hoc phng thc ca mt lp, c th c
gi t ngoi, v cng c th gi n cc n v chng trnh khc. n
v cng cn c coi l mt n th kt hp. n v chng trnh
cn c kim th ring bit pht hin li trong ni ti v khc phc
trc khi c tch hp vi cc n v khc. Kim th n v thng
c lm bi chnh tc gi ca chng trnh, v c th tin hnh theo
hai giai on: kim th n v tnh, s dng cc k thut chng 4,

18

CHNG 1. TNG QUAN V KIM TH


Bng 1.5: Cc sai lm v d liu
khi to sai
lu tr v truy cp sai
gi tr ch s v c bo sai
gi v m sai
s dng sai bin
tham chiu sai d liu
n v hoc thang chia sai
chiu ca d liu sai
ch s sai
sai v kiu
sai v phm vi
d liu cm bin vt ra ngoi min cho php
li tha, thiu mt so vi bin
d liu khng tng thch

Hnh 1.10: Cc mc tru tng v mc kim th trong m hnh thc nc.


v kim th n v ng, s cc k thut chng ?? v ??.
Kim th tch hp: Mc k tip vi kim th n v l kim th tch
hp. Sau khi cc n v chng trnh cu thnh h thng c
kim th, chng cn c kt ni vi nhau to thnh h thng y
v c th lm vic. Cng vic ny khng h n gin v c th c
nhng li v giao din gia cc n v, v cn phi kim th pht

1.7. BI TP

19

hin nhng li ny. Cng on ny gm hai giai on: giai on kim


th tch hp v giai on kim th h thng. Kim th tch hp nhm
m bo h thng lm vic n nh trong mi trng th nghim
sn sng cho vic a vo mi trng thc s bng cch t cc n
v vi nhau theo phng php tng dn. K thut kim th tch hp
s c m t chi tit trong chng 10.
Kim th h thng: Kim th mc ny c p dng khi c mt
h thng y sau khi tt c cc thnh phn c tch hp. Mc
ch ca kim th h thng l m bo rng vic ci t tun th
y cc yu cu c c t ca ngi dng. Cng vic ny tn
nhiu cng sc, v c nhiu kha cnh v yu cu ngi dng cn c
kim th. K thut kim th hm trong chng 5 l thch hp nht
cho vic kim th ny. Cc k thut kim th h thng c trnh by
trong chng 11.
Kim th chp nhn: Khi nhm kim th h thng tha mn vi
mt sn phm, sn phm sn sng a vo s dng. Khi
h thng cn tri qua giai on kim th chp nhn. Kim th chp
nhn c thc thi bi chnh cc khch hng nhm m bo rng sn
phm phn mm lm vic ng nh h mong i. C hai loi kim th
chp nhn: kim th chp nhn ngi dng, c tin hnh bi ngi
dng, v kim th chp nhn doanh nghip, c tin hnh bi nh
sn xut ra sn phm phn mm. Chng 11 m t chi tit vic kim
th chp nhn.

1.7

Bi tp

1. Hy v biu Venn phn nh khng nh: ta khng lm ci m l


ra ta cn phi lm, v lm ci m l ra ta khng c lm.
2. M t mi min trong by min trong hnh 1.4
3. Mt trong cc cu chuyn c v lnh vc phn mm m t mt nhn
vin cu knh vit mt chng trnh qun l lng. Chng trnh c
chc nng kim tra s chng minh th ca cn b v nhn vin trc
khi a ra bn tnh lng. Nu c lc ngi nhn vin ny b ui vic,
chng trnh s to ra mt m c gy hi cho c quan. Hy bn v

20

CHNG 1. TNG QUAN V KIM TH


tnh trng ny theo cc thut ng trn y v li, sai, dng tht bi v
quyt nh dng kim th no l thch hp.
4. Hy so snh hai cch tip cn kim th hm v kim th cu trc.

Chng 2
Mt s v d
Chng ny trnh by mt s v d m s c dng trong cc chng tip
theo nhm minh ha cho cc phng php kim th. Cc v d ny gm:
bi ton tam gic, hm NextDate tng i phc tp v mt lgic . Cc v
d ny lin quan n mt s vn m ngi kim th s gp trong qu
trnh kim th. Khi bn v kim th tch hp v kim th h thng trong
chng 11, ta s dng v d v mt bn n gin ca my rt tin t ng
(ATM).
Trong chng ny cc v d mc n v, ci t bng ngn ng C, s
c trnh by cho mc ch kim th cu trc. Cc m t mc h thng
ca my ATM di dng mt tp cc s dng d liu v my hu hn
trng thi s c trnh by trong cc chng tip theo.

2.1

Bi ton tam gic

K t ngy c cng b ln u di dng mt v d ca kim th cch


y 30 nm [Gru73], bi ton ny c nhc ti trong nhiu bi bo v
sch v kim th, chng hn trong cc ti liu [Gru73, BL75, Mye75, S.82,
AJ83, AJ84, Mal87, Bil88].
21

22

2.1.1

CHNG 2. MT S V D

Pht biu bi ton

Bi ton tam gic nhn ba s nguyn lm cc d liu u vo; cc d liu


ny l s o cc cnh ca mt tam gic. u ra ca chng trnh l loi ca
tam gic xc nh bi ba cnh ng vi cc s o ny: tam gic u, tam gic
cn, tam gic thng, hoc khng l tam gic. Ta s dng cc t ting Anh
lm d liu u ra tng ng cho cc loi ny nh ly t v d nguyn thy:
Equilateral, Isosceles, Scalene, hoc NotATriangle. Bi ton ny i khi c
m rng vi u ra th nm l tam gic vung (right triangle). Trong cc
bi tp, ta s dng bi ton m rng nh vy.

2.1.2

Nhn xt

Mt trong cc l do lm bi ton ny c s dng rt ph bin c th l


v n tiu biu cho vic nh ngha khng y lm phng hi n vic
trao i thng tin gia khch hng, ngi pht trin v ngi kim th. c
t ny gi thit rng ngi pht trin bit cc chi tit v tam gic, c bit
tnh cht sau ca tam gic: tng ca hai cnh bt k cn thc s ln hn
cnh cn li. Nu a, b v c k hiu cho ba cnh ca tam gic th tnh cht
trn c biu din chnh xc bng ba bt ng thc ton hc a < b + c,
b < a + c v c < a + b. Nu bt k mt trong ba bt ng thc ny khng
c tha mn th a, b v c khng to thnh ba cnh ca mt tam gic. Nu
c ba cnh u bng nhau, chng to thnh tam gic u, nu ch c mt
cp cnh bng nhau, chng to thnh tam gic cn v nu khng c cp
cnh no bng nhau th chng l tam gic thng. Mt ngi kim th gii
c th lm r ngha bi ton ny hn na bng vic t gii hn cho cc
di cc cnh. V d, cu tr li no cho trng hp khi a vo chng trnh
ba s 5, 4 v 3? Ta s i hi l cc cnh phi t nht l bng 1, v khi
ta cng c th khai bo gii hn trn, chng hn 20000.

2.1.3

Ci t truyn thng

Ci t truyn thng ca v d c in ny c kiu ta FORTRAN []. Tuy


nhin, chng ti chuyn ci t ca v d ny sang ngn ng C thng
nht vi cc v d khc trong gio trnh ny. S khi ca v d ny c
biu th trong hnh 2.1. Cc s ca khi trong s ny tng ng vi cc

2.1. BI TON TAM GIC

23

ch gii trong chng trnh sau y. Mt ci t c cu trc hn s c cho


trong mc 2.1.4.
Bin match c dng ghi nhn s bng nhau gia cc cp cnh. Nu
hai cnh bng nhau, chng hn a = c, th ch cn so snh a + c vi b (do
b > 0, a + b > c s phi tha mn v a = c). Nh quan st ny ta rt gn
c s cc so snh cn lm. Ci gi phi tr cho tnh hiu qu ny ch l
s r rng v d kim th!.
Trong cc chng tip theo, ta s thy li th ca bn ny ca chng
trnh khi bn n cc ng i kh thi ca chng trnh. l l do tt
nht gi li bn ny.
int main(){
int a, b, c, match;
printf("Enter 3 integers which are sides of a triangle \n");
printf("a = ");
scanf("%d",&a);
printf("b = ");
scanf("%d",&b);
printf("c = ");
scanf("%d",&c);
printf ("Side A is ", a, "\n");
printf ("Side B is ", b, "\n");
printf ("Side C is ", c, "\n");
match = 0;
if(a == b)
{1}
match = match + 1;
{2}
if(a == c)
{3}
match = match + 2;
{4}
if(b == c)
{5}
match = match + 3;
{6}
if(match == 0)
{7}
if((a+b) <= c)
{8}
printf("Not a Triangle");
{12.1}
else if((b+c) <= a)
{9}
printf("Not a Triangle");
{12.2}
else if((a+c) <= b)
{10}
printf("Not a Triangle");
{12.3}

24

CHNG 2. MT S V D

Hnh 2.1: S khi cho ci t chng trnh tam gic truyn thng.

2.1. BI TON TAM GIC


else printf("Triangle is Scalene");
else
if(match == 1)
if((a+c) <= b)
printf("Not a Triangle");
else printf("Triangle is Isosceles");
else
if(match == 2)
if((a+c) <= b)
printf("Not a Triangle");
else printf("Triangle is Isosceles");
else
if(match == 3)
if((b+c) <= a)
printf("Not a Triangle");
else printf("Triangle is Isosceles");
else printf("Triangle is Equilateral");
return 0;
}//the end.

25
{11}
{13}
{14}
{12.4}
{15.1}
{16}
{17}
{12.5}
{15.2}
{18}
{19}
{12.6}
{15.3}
{20}

Lu l c su cch i n nt Not A Triangle (12.1 12.6) v c


ba cch i n nt Isosceles (15.1 15.3).

2.1.4

Ci t c cu trc

Hnh 2.2 l mt m t s dng d liu ca chng trnh tam gic. Ta c


th ci t bng mt chng trnh chnh v bn th tc. V ta s dng v
d ny sau ny na cho vic kim th n v, bn th tc c kt hp
thnh mt chng trnh C. Cc dng ch gii lin kt cc on m vi vic
phn r cho trong hnh 2.2.
int main(){
int a, b, c, IsATriangle;
//Function 1: Get Input
printf("Enter 3 integers being sides of a triangle\n");
printf("a = ");

26

CHNG 2. MT S V D
scanf("%d",&a);
printf("b = ");
scanf("%d",&b);
printf("c = ");
scanf("%d",&c);
printf ("Side A is ", a, "\n");
printf ("Side B is ", b, "\n");
printf ("Side C is ", c, "\n");
//Function 2: Is A Triangle?
if((a < b + c) && (b < a + c) && (c < a + b))
IsATriangle = 1;
else IsATriangle = 0;
//Function 3: Determine Triangle Type
if(IsATriangle)
if((a == b) && (b == c))
printf("Triangle is Equilateral");
else if((a != b) && (a != c) && (b != c))
printf("Triangle is Scalene");
else printf("Triangle is Isosceles");
else printf("Not a Triangle");

return 0;
}//the end

Lu : Function 4 v Output Controller c kt hp thnh cc lnh


trong Function 3.

2.2

Hm NextDate (ngy k tip)

phc tp ca chng trnh tam gic nm cc mi quan h gia d liu


u vo v d liu u ra. Hm NextDate nhm minh ha mt loi phc
tp khc: mi quan h gia cc bin u vo.

2.2. HM NEXTDATE (NGY K TIP)

27

Hnh 2.2: S dng d liu cho ci t c cu trc ca chng trnh tam


gic.

28

CHNG 2. MT S V D

2.2.1

Pht biu bi ton

NextDate l mt hm c ba bin biu din ngy, thng v nm l day, month


v year. Hm ny tr v ngy k tip ca ngy u vo. Cc bin day,
month, year c cc gi tr s tha mn cc rng buc: 1 day 31, 1
month 12, 1812 year 2012.

2.2.2

Nhn xt

C hai ngun to nn phc tp ca hm NextDate: phc tp nu trong


cc rng buc trn y ca min d liu u vo, v quy tc phn bit gia
nm nhun v nm khng nhun. Do trung bnh mt nm c 365, 2422 ngy,
nm nhun c dng gii quyt ngy vt tri. Nu ta chp thun c
bn nm li c mt nm nhun th s c mt sai s nh. Lch Gregorian (
xut nm 1582 bi Gio hong Gregory) gii quyt vn ny bng cch
iu chnh cc nm nhun theo nm th k (nhng nm chia ht cho 100).
Do , mt nm l nhun nu n chia ht cho 4 nhng khng l nm th
k. Cc nm th k l nhun khi v ch khi n l bi ca 400 [Ing61, fS91].
Do cc nm 1992, 1996 v 2000 l nm nhun, nhng nm 1900 li khng
phi l nm nhun.
Hm NextDate cng minh ha mt kha cnh ca kim th phn mm.
Ta thng thy cc v d v lut Zipf - ni rng 80% cc hot ng xy ra
ti ch 20% ca khng gian. Ta cng thy y phn ln m ngun (80%
cc hot ng) c dnh cho cc nm nhun (20% ca khng gian).

2.2.3

Ci t

int mai(){
typedef struct{
int month;
int day;
int year;
}dataType;
dataType today, tomorrow;

2.2. HM NEXTDATE (NGY K TIP)

29

printf("Enter todays date in the form DD MM YYYY");


scanf("","","",&today.day, &today.month, &today.year);
tomorrow := today;
if(today.month == 1
today.month == 7
if(today.day <
tomorrow.day =
else{
tomorrow.day =
tomorrow.month
}

|| today.month == 3 || today.month == 5 ||
|| today.month == 8 || today.month == 10)
31)
today.day + 1;
1;
= today.month + 1;

if(today.month == 4 || today.month == 6 || today.month == 9 ||


today.month == 11)
if(today.day < 30)
tomorrow.day = today.day + 1;
else{
tomorrow.day = 1;
tomorrow.month = today.month + 1;
}
if(today.month == 12)
if(today.day < 31)
tomorrow.day = today.day + 1;
else{
tomorrow.day = 1;
tomorrow.month = 1;
if(today.year == 2012)
printf("2012 is over");
else tomorrow.year = today.year + 1;
}
if(today.month == 2)
if(today.day < 28)
tomorrow.day = today.day + 1;
else{

30

CHNG 2. MT S V D
if(today.day == 28)
if((today.year%4 == 0)&&(today.year%400 != 0))
tomorrow.day = 29;//leap year
else{
tomorrow.day := 1;
tomorrow.month := 3;
}
else
if(today.day == 29){
tomorrow.day := 1;
tomorrow.month := 3;
}
else printf("Cannot have Feb.", today.day);
}
printf("Tomorrows date is %3d %3d %5d", tomorrow.day,
tomorrow.month, tomorrow.year);

return 0;
}//the end

2.3

H thng rt tin t ng n gin

bn v cc vn v kim th tch hp v kim th h thng d dng


hn, ta cn mt v d vi phm vi ln hn. H thng rt tin t ng (ATM)
c trnh by y l mt lm mn ca h thng trong [ADP93]. H ny
gm mt bin th kh hay v chc nng v giao din. D n c trng cho
cc h thi gian thc nhng vn thch hp vi mc ch ca ta v cc nh
thc hnh trong lnh vc thng mi in t u cho rng ngay c cc h
COBOL truyn thng cng gp nhiu vn lin quan n cc h thi gian
thc.

2.3. H THNG RT TIN T NG N GIN

31

Hnh 2.3: Trm rt tin ATM.

2.3.1

Pht biu bi ton

H thng rt tin t ng giao tip vi cc khch hng ca ngn hng thng


qua 15 mn hnh nh trong hnh 2.4. Khch hng c th chn mt trong ba
loi giao dch: gi tin vo ti khon, rt tin v kim tra s d trong ti
khon. Nhng loi giao dch ny c th c thc hin i vi hai loi ti
khon l tit kim hoc vng lai.
Khi mt khch hng ca ngn hng n mt trm rt tin, mn hnh 1
s xut hin. Ngi khch hng truy cp my ATM vi th nha c cha
m ha ca s ti khon c nhn (PAN) m chnh l kha truy cp tp
ti khon ni b ca khch hng, trong c tn v thng tin v ti khon
ca khch hng. Nu PAN trng khp vi thng tin trong tp khch hng,
h thng s hin th mn hnh 2 cho khch hng. Nu PAN ca khch hng
khng tn ti, mn hnh 4 c hin th v th s b gi.
Trn mn hnh 5, h thng thm hai mu thng tin vo tp ti khon ca
khch hng: ngy hin ti v tng s cc khon mc v ATM. Khch hng
chn giao dch mong mun t cc ty chn mn hnh 5. Sau h thng
lp tc chuyn qua mn hnh 6 v y khch hng c th chn ti khon
p dng giao dch chn.
Nu yu cu kim tra s d, h thng kim tra tp ATM a phng i
vi bt k cc giao dch cha gi i v kt hp vi cc giao dch ny vi s
d ban u i vi ngy tp ti khon khch hng. Sau mn hnh

32

CHNG 2. MT S V D

14 xut hin.
Nu yu cu gi tin vo ti khon, trng thi ca khe phong b gi tin
c xc nh t mt trng trong tp iu khin ca trm. Nu khng c
vn g, h thng hin th mn hnh 7 nhn lng tin giao dch. Nu
c vn vi khe phong b gi tin, h thng hin th mn hnh 12. Mt khi
lng tin gi c np vo, h thng hin th mn hnh 13, chp nhn
phong b tin gi v x l vic gi tin. Lng tin gi c np l lng
tin cha gi i trong tp ATM a phng, v s m s ln gi trong thng
c tng ln. C hai s ny c x l bi h ATM ch (tp trung) mt
ln mi ngy. H thng sau hin th mn hnh 14.
Nu yu cu rt tin t ti khon, h thng kim tra trng thi ca khe
nh tin (kt hay khng) trong tp iu khin trm. Nu b kt th mn hnh
9 xut hin. Tri li mn hnh 7 c hin th khch hng c th khai
bo lng tin nh rt. Khi d liu ny vo xong, h thng kim tra tp
trng thi ca trm bit lng tin trong my c tr khng. Nu khng
, hin th mn hnh 9, tri li vic rt tin c x l. H thng kim tra
s d ti khon ca khch hng (nh c m t trong giao dch kim tra
s d ti khon) v nu khng rt th hin th mn hnh 8. Nu s d
trong ti khon l th hin th mn hnh 11 v nh tin. Lng tin c
rt khi c ghi vo tp ATM a phng cha gi v s m s ln rt
trong thng c tng ln. S d trong ti khon c in ra trong sao k.
Sau khi khch hng ly tin, h thng hin th mn hnh 14.
Khi nt No c chn trong cc mn hnh 10, 12, hoc 14, h thng xut
hin mn hnh 15 v nh th ATM tr li cho khch hng. Khi th c
khch hng nhn v ly i, h thng tr li mn hnh 1. Khi nt Yes c
chn trong cc mn hnh 10, 12, hoc 14, h thng hin th mn hnh 5
khch hng chn cc giao dch khc.

2.3.2

Nhn xt

C mt lng thng tin ng k b qun trong h thng va m t. V


d, ta c th suy ra rng trm ch gm cc t 10 ngn ng (xem mn hnh
7). nh ngha bng vn bn c l chnh xc hn so vi ci ta gp trong thc
t. V d ny n gin mt cch c tnh ton.
C nhiu cu hi cn gii quyt bi xu cc gi thit. Chng hn, c

2.3. H THNG RT TIN T NG N GIN

Hnh 2.4: Cc mn hnh ca my ATM n gin.

33

34

CHNG 2. MT S V D

Bng 2.1: Tc ca cn gt ng vi tng v tr ca cht v nm vn


Cht
OFF
Nm vn n/a
Cn gt
0

INT
1
4

INT
2
6

INT
3
12

LOW HIGH
n/a
n/a
30
60

chng mt gii hn cho vay? Ci g ngn chn vic khch hng ly s tin
vt qu s d thc s ca ti khon bng cch n cc my ATM khc
nhau trong cng ngy? C nhiu cu hi v khi to: c bao nhiu tin trong
my? Bao nhiu khch hng mi c thm vo h thng? Nhng ci ny
v nhiu chi tit i thc khc b b qua m bo tnh n gin.

2.4

B iu khin gt nc t

Gt nc t trn xe Saturn (bn nm 1992) c iu khin bi mt cht


v mt nm vn. Cht c bn v tr: OFF, INT (thnh thong), LOW v
HIGH. Nm vn c ba v tr, c nh s 1, 2 v 3. Cc v tr ca nm
vn tng ng vi ba tc chm khc nhau. V tr ca nm vn ch c tc
dng khi cht v tr INT. Bng 2.1 ch ra cc tc ca cn gt tng ng
vi v tr ca cht v nm vn, trong gi tr n/a ngha l trng hp ny
khng p dng.

2.5

Bi tp

1. Xem li s khi ca bi ton tam gic trong hnh 2.1. Liu bin
chng trnh match c th c: gi tr 4?, gi tr 5? Liu c th tin
hnh dy cc khi 1, 2, 5, 6?
2. Nhc li li bn trong chng 1 v mi quan h gia c t v ci
t ca chng trnh. Nu xem xt cn thn vic ci t ca hm
NextDate, bn s thy mt vn nh sau. Hy nhn vo lnh CASE
i vi cc thng c 30 ngy (4, 6, 9, 11). Khng c mt hnh ng c
bit cho trng hp day = 31. Hy bn xem ci t ny c ng n

2.5. BI TP

35

hay khng. Lp li li bn ny cho vic x l ca trng hp day 29


trong lnh CASE i vi thng hai (February).
3. Trong chng 1, ta ni rng mt b phn ca ca kim th l d liu
u ra mong i. i vi hm NextDate bn dng ci g lm d liu
u ra mong i cho cc ca kim th ca ngy 31 thng 6 nm 1812
(June 31, 1812)? Ti sao?
4. Mt m rng ca bi ton tam gic l kim tra i vi tam gic vung.
Ba cnh to thnh mt tam gic vung nu h thc Pythagor tha
mn:
c2 = a2 + b2 .
Thay i ny a n mt i hi hp l l cc cnh cn c cho
theo th t gim dn v di, tc l a b c. Hy m rng chng
trnh Triangle2 a thm c trng tam gic vung. M rng ny
s c dng trong cc chng tip theo v kim th hp en v kim
th hp trng.
5. Chng trnh tam gic s lm g vi cc cnh 3, 3 v 5?
6. Hm YesterDate ngc li vi hm NextDate. Cho trc ngy, thng
v nm, hy tm ngy trc . Hy xy dng mt chng trnh cho
YesterDate bng bt k ngn ng lp trnh no.
7. Theo lch Gregorian c xut nm 1582, hy tnh nm u tin
trong h thng nm nhun cho d mt ngy y .

36

CHNG 2. MT S V D

Chng 3
C s ton hc ri rc cho vic
kim th
Vic kim th cn n cc m t v phn tch ca ton hc. Chng ny
cung cp nhng kin thc c s v ton cn thit i vi ngi kim th.
Theo biu tng ngh nhn ca vic kim th, cc ch ton hc c
chn trnh by y l cc cng c m mt ngh nhn kim th cn nm
vng s dng. Vi nhng cng c ny, ngi kim th s c c chnh
xc v tnh hiu qu t ton hc nhm ci tin cng vic ca mnh. Cc tho
lun t tnh hnh thc trong cc chng ny c th khng lm va cc nh
ton hc nhng thch hp vi mi trng kim th. Nu bn cm thy bn
vng v ton ri th c th b qua chng ny.
T ri rc c th lm ny sinh cu hi: th th ci g l ton khng ri
rc? l ton lin tc, m thng l cc php tnh vi v tch phn, cc
hm lin tc m cc nh kim th t khi dng n. Ton ri rc lin quan
n cc cu trc ri rc nh l thuyt tp hp, hm v quan h, lgic mnh
, php tnh xc sut ri rc. Ta s ni n cc ch ny trong cc mc
sau y.

3.1

L thuyt tp hp

Rt tic l khng c mt nh ngha tng minh, chnh xc v d hiu v tp


hp d tp hp ng vai tr trung tm trong ton hc. Cc nh ton hc
37

38 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


phn bit l thuyt tp hp ngy th vi l thuyt tp hp tin . Ta s
dng ci th nht. Trong l thuyt ngy th v tp hp, mt tp hp c
tha nhn nh l mt th nguyn thy ging nh cc khi nim im v
ng trong hnh hc. Mt vi t thng dng khc cho tp hp cng c
dng ph bin nh: m ng, b, nhm... Khi nim ca ta v tp hp l
mt nhm cc i tng, mt vi hoc tt c cc i tng c xt. Chng
hn tp hp cc thng c ng 30 ngy. Trong l thuyt tp hp, ta vit:
M1 = {thng t, thng su, thng chn, thng mi mt}
v c l M1 l tp hp m cc phn t ca n l cc thng t, su, chn
v mi mt.

3.1.1

Phn t ca tp hp

Cc thnh vin trong mt tp hp cn c gi l cc phn t ca tp hp


. Mi quan h thnh vin ny c k hiu bi php ton . Do , ta c
th vit thng mi mt M1 , khi i tng no khng trong tp hp,
ta dng k hiu . V th ta vit thng mi hai M1 .

3.1.2

nh ngha tp hp

C ba cch nh ngha mt tp hp: lit k tt c cc phn t ca n,


hoc bng mt quy tc quyt nh xc nh cc phn t ca n, hoc bng
vic xy dng t cc tp hp khc bit. Cch th nht dng cho cc tp
c mt s t cc phn t v cc tp c cc phn t tun theo mt quy lut
no c th lit k c. V d ta c th nh ngha tp cc nm trong
chng trnh NextDate nh sau:
Y = {1812, 1813, 1814, . . . , 2011, 2012}
Lu l th t ca cc phn t l khng quan trng trong biu din bng
phng php lit k. Cch biu din bng quy tc quyt nh l phc tp
hn v c c li ln bt li. Ta cng c th nh ngha tp cc nm trong
chng trnh NextDate theo cch ny:
Y = {nm : 1812 nm 2012}

3.1. L THUYT TP HP

39

v c l Y l tp cc nm sao cho chng nm gia 1812 v 2012 bao gm


c hai cn. Quy tc quyt nh dng nh ngha tp hp cn phi khng
nhp nhng. Cho bt k mt nm, ta c th quyt nh nh quy tc ny
xem n c trong tp Y hay khng.
Li th ca vic nh ngha tp hp bng quy tc quyt nh l n bt
buc tnh r rng v khng nhp nhng. Ngi kim th c kinh nghim hay
gp phi cc yu cu khng kh kim. Thng th l do cc yu cu nh
vy khng th c kim th l do quy tc quyt nh b nhp nhng. Trong
v d chng trnh tam gic chng hn, nu ta nh ngha mt tp hp N :
N = {t : t l mt tam gic gn u}
Ta c th ni tam gic vi ba cnh (500, 500, 501) l trong N , nhng
x l th no vi cc tam gic vi ba cnh l (50, 50, 51) hoc (5, 5, 6)?
Li th na ca vic nh ngha tp hp bng cc quy tc quyt nh l
ta c th vit ra cc tp hp m cc phn t ca chng khng th hoc kh
c th lit k c. Chng hn ta c th phi quan tm n cc tp hp
dng:
S = {sales : sales c t l hoa hng 15%}
Chng d g c th vit ra cc phn t ca tp ny, nhng cho trc
mt mt gi tr cho sales ta lun quyt nh c n c thuc tp ny hay
khng.
iu bt li ca cch biu din ny l i khi kh phc tp, chng hn
quy tc c biu din bng cc biu thc lgic vi cc lng t tn ti (k
hiu l ) v vi mi (k hiu l ). Nu ai cng hiu cch k hiu ny th
chng rt li do tnh chnh xc, nhng li c rt nhiu khch hng chng
hiu g v cc lng t ny c. Mt vn phin phc khc trong cch biu
din ny l khi cc quy tc l quy (tham kho n chnh n), chng s
thiu tnh trc quan v kh hiu.

3.1.3

Tp hp rng

Tp hp rng l tp khng c mt phn t no v c k hiu l . Tp


hp rng ng vai tr c bit trong l thuyt tp hp vi cc tnh cht
Tp rng l duy nht, ch c mt tp rng m thi.

40 CHNG 3. C S TON HC RI RC CHO VIC KIM TH

Hnh 3.1: Biu Venn ca tp cc thng c 30 ngy.


Cc tp , {}, {{}}, . . . u l khc nhau.
Mt tp hp c nh ngha bi mt quy tc khng th tha mn c
chnh l tp rng. Chng hn {y : 2012 y 1983} = .

3.1.4

Biu Venn

Cc tp hp c th c minh ha bi cc biu Venn nh gii thiu


chng 1 khi bn v tp cc hnh vi c t v tp cc hnh vi c lp
trnh. Trong biu Venn, mt tp hp c biu din bi mt hnh trn,
v cc im bn trong hnh trn tng ng vi cc phn t ca tp hp. Ta
c th biu din tp M1 ca cc thng gm 30 ngy nh hnh 3.1.
Cc biu Venn truyn ti nhiu thng tin v mi quan h khc nhau
ca tp hp mt cch trc quan. Tuy nhin, cng c vi vn nho nh vi
cc biu Venn nh vic phn bit gia tp v hn v tp hu hn ra sao.
C hai u c v bng cc biu Venn. Trong trng hp hu hn, ta
khng th gi thit mi im trong u biu din mt phn t ca tp hp.
D khng lo v iu , nhng cng nn bit v cc hn ch ny. i khi ta
thy hu ch khi gn nhn cho cc phn t ring bit no . Mt im cn
lu khc na l vic x l tp hp rng. Lm th no ch rng mt tp
hp hoc mt phn ca n l tp rng? Ta c th gch cho cc min rng
v gn ch thch vo.
Thng ta phi ngh v cc tp hp c xt trong mt bi ton l cc
tp con ca mt tp ln hn no c gi l v tr chuyn . Trong
chng 1 ta chn tp tt c cc hnh vi chng trnh lm v tr chuyn .
V tr chuyn lun c d on t cc tp c cho. Trong hnh 3.1, ta

3.1. L THUYT TP HP

41

c th ly v tr chuyn l tp tt c cc thng trong nm. Ngi kim


th cn nhn ra rng vic gi thit cc v tr chuyn d dn n nhm
ln v to nn s hiu lm gia khch hng v ngi pht trin phn mm.

3.1.5

Cc php ton v tp hp

Phn ln kh nng biu din ca tp hp n t cc php ton tp hp c


bn: hp, tng giao v php ly phn b. C mt s php ton khc na
nh phn b tng i, hiu i xng v tch -Cc. Cc php ton s
c nh ngha di y. Trong cc nh ngha ny, ta bt u vi hai tp
A v B, cha trong tp v tr chuyn U . Cc php ton ca l gic mnh
c dng trong cc nh ngha ny l , , v .
nh ngha 3.1. Cho trc hai tp hp A v B,
hp ca chng l tp A B = {x : x A x B},
tng giao ca chng l tp A B = {x : x A x B},
phn b ca A l tp A = {x : x A},
phn b tng i ca B i vi tp A l tp A B = {x : x
A x B},
hiu i xng ca A v B l tp hp A B = {x : x A x B}.
Cc biu Venn cho cc tp ny c cho hnh 3.2. Tnh trc quan
ca cc biu Venn rt hu ch trong vic m t mi quan h gia cc ca
kim th v gia cc thnh phn cn kim th.
T hnh 3.2, chng ta d dng kt lun tnh cht sau:
A B = (A B) (A B).
iu ny ng v c th c chng minh bng l gic mnh .
Biu Venn c dng rng ri trong cng ngh phn mm: cng vi
cc th nh hng, chng l c s ca khi nim s trng thi [Dav88]
v l mt trong cc k thut c t nghim tc c tr gip bi my tnh.
S trng thi cng l k php cho vic biu din iu khin trong cc

42 CHNG 3. C S TON HC RI RC CHO VIC KIM TH

Hnh 3.2: Cc biu Venn cho cc php ton c s.


ngn ng m hnh ha OMT (Object-Modeling Technique) v UML (Unified
Modeling Language).
Tch -Cc ca hai tp hp phc tp hn mt cht v da trn khi
nim cp c sp m gm hai phn t trong th t gia chng l quan
trng. Tp gm hai phn t a v b, tc l {a, b} l mt cp khng c sp.
Cp c sp ca hai phn t a v b c k hiu l a, b. Vai tr ca th
t ko theo, nu a = b th
{a, b} = {b, a}
a, b = b, a
nh ngha 3.2. Tch -Cc ca hai tp A v B l tp A B = {x, y :
x A y B}
Biu Venn khng minh ha cho tch -Cc. Cho A = {1, 2, 3} and
B = {w, x, y, z}, th
A B = {1, w, 1, x, 1, y, 1, z, 2, w, 2, x,
2, y, , 2, z, 3, w, 3, x, 3, y, 3, z}
Tch -Cc lin quan trc tip vi s hc. Lc lng ca A l s cc phn
t ca n v c k kiu bi |A| (hoc Card(A)). Ta c |A B| = |A| |B|.

3.1. L THUYT TP HP

43

Khi ni v kim th hm trong chng 5, ta s dng tch -Cc biu din


min cc ca kim th ca chng trnh c nhiu bin u vo hoc nhiu
bin u ra. Quy tc nhn ni trn v lc lng ca tch -Cc cho thy
loi chng trnh nh vy sinh s ca kim th rt ln.

3.1.6

Quan h gia cc tp hp

Cc tp hp c th c mt s quan h c bit vi nhau. Ta nh ngha ba


loi quan h c bn gia hai tp hp.
nh ngha 3.3.
Tp hp A l tp hp con ca tp hp B, k hiu l A B, nu v
ch nu a A a B.
A v B bng nhau, k hiu l A = B, nu v ch nu A B v B A.
Tp hp A l tp hp con thc s ca tp hp B, k hiu l A ( B,
nu v ch nu A B v B A = .
Ni bng li th A l tp hp con ca B nu mi phn t ca A cng l
mt phn t ca B, A v B l bng nhau nu mi tp ny l tp con ca
tp kia, v A l tp hp con thc s ca B nu A l tp hp con ca B v
c phn t ca B khng trong A.

3.1.7

Phn hoch tp hp

Phn hoch tp hp l mt khi nim cc k quan trng trong kim th


phn mm nh s thy sau ny trong vic chn cc ca kim th mt cch
hiu qu. Trong i sng hng ngy ta thng thy nhng th tng ng
vi phn hoch: tng phn hoch trong c quan phn chia khng gian
c quan thnh cc vn phng c nhn. Mt phn hoch hnh chnh l vic
chia mt nc thnh cc tnh. Ngha ca t phn hoch trong ngn ng t
nhin l chia ton b thnh cc mu sao cho cc mu ny l ri nhau v mi
th u phi trong mt mu no , khng cha th no. iu ny c
nh ngha hnh thc nh sau.

44 CHNG 3. C S TON HC RI RC CHO VIC KIM TH

Hnh 3.3: Biu Venn ca mt phn hoch.


nh ngha 3.4. Cho mt tp hp B v mt tp cc tp con khng rng
ca B l {A1 , A2 , . . . , An }. Tp hp {A1 , A2 , . . . , An } c gi l mt phn
hoch ca B nu cc iu kin sau c tha mn:
1. A1 A2 . . . An = B, v
2. Vi bt k i, j {1, 2, . . . , n}, i = j ta u c Ai Aj = .
Ta gi mi tp con Ai l mt phn t ca phn hoch.
Mt bc ha v m cung l mt v d tt v phn hoch. Biu Venn
ca phn hoch cng thng c v nh vy, xem hnh 3.3.
i vi ngi kim th, phn hoch rt hu ch v hai tnh cht nu trong
nh ngha ca phn hoch sinh ra mt m bo quan trng: tnh y
(cha mi iu) v tnh khng d tha (khng b lp li). Khi nghin cu v
kim th hm, ta thy c hai tnh yu l nguy c cho c b st ln d tha:
c ci g cha c kim th trong khi li c ci c kim th lp li vi
ln. Do tm c mt phn hoch thch hp l mt nhim v trung tm
trong kim th. Trong chng trnh tam gic, v tr chuyn l tp tt c
cc b ba s nguyn (tc l IN T IN T IN T , trong IN T l tp cc
s nguyn). Ta c th phn hoch v tr ny theo ba cch sau:
thnh cc b l s o ba cnh ca tam gic v cc b khng l s o
ba cnh ca tam gic
thnh cc b l s o ba cnh ca tam gic u, cn, thng v khng
tam gic

3.2. HM

45

thnh cc b l s o ba cnh ca tam gic u, cn, thng, vung


v khng tam gic
Cch cui cng c vn l cc b to thnh tam gic thng v cc b
to thnh tam gic vung l khng ri nhau nn cch ny khng to thnh
phn hoch.

3.1.8

Cc ng nht thc v tp hp

Mt lp quan trng cc ng nht thc tp hp c to thnh nh cc tnh


cht ca cc php ton v tp hp c nh ngha trc y. Cc ng nht
thc ny c lit k trong bng sau:
Tn
Lut ng nht
Lut tri
Lut ly ng
Lut phn b
Lut giao hon
Lut kt hp
Lut phn phi
Lut DeMorgan

3.2

ng nht thc
A=A
AU =A
AU =U
A=
AA=A
AA=A
(A ) = A
AB =BA
AB =BA
A (B C) = (A B) C
A (B C) = (A B) C
A (B C) = (A B) (A C)
A (B C) = (A B) (A C)
(A B) = A B
(A B) = A B

Hm

Khi nim hm ng vai tr trung tm trong pht trin v kim th phn


mm. Ni mt cch khng hnh thc, hm lin kt cc phn t ca cc tp
hp. Trong chng trnh NextDate, hm c tnh bi chng trnh lin kt

46 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


mt ngy c cho vi ngy k tip. Trong bi ton tam gic, hm ca ba
s nguyn u vo l loi ca tam gic to bi cc cnh c di ng vi
d liu u vo. Cc hm trong my ATM phc tp hn nhiu v chnh iu
to thm phc tp cho vic kim th.
Bt k mt chng trnh c th c coi l mt hm lin kt d liu u
ra vi d liu u vo. Trong pht biu ton hc ca hm, cc d liu u
vo to thnh min xc nh, v cc d liu u ra to thnh min gi tr.
nh ngha 3.5. Cho hai tp hp A v B, mt hm f l mt tp con ca
A B sao cho bt k a1 , a2 A v b1 , b2 B, nu a1 , b1 f v a2 , b2 f
v b1 = b2 th a1 = a2 . Tc l mi phn t ca A c lin kt vi khng
qu mt phn t ca B. V l , ta vit f (a) = b thay cho a, b f . Khi
f (a) = b, ta ni f xc nh trn a, hay f (a) l xc nh. Hm f l ton b
nu n xc nh trn mi phn t ca A. Ngc li, f c gi l hm b
phn. Sau ny, nu khng ni g thm, ta ngm nh rng hm f l ton b.

3.2.1

Min xc nh v min gi tr

Trong nh ngha trn, tp hp A c gi l min xc nh, v tp hp


B gi l min gi tr ca hm f . V d liu u vo v d liu u ra
bao hm mt th t t nhin gia chng, hm f c tnh bi chng trnh
chnh l tp cc cp c sp trong phn t th nht ca cp l t min
xc nh, v phn t th hai l t min gi tr. vit mt hm f vi min
xc nh l tp A v min gi tr l tp B, ta dng mt trong hai cch:
f :AB
f AB
Lu rng khng c hn ch g i vi cc tp A v B, chng c th l
cc tch -Cc, v c th c (v rt hay gp) trng hp A = B.

3.2.2

Cc loi hm

Mt t khc dnh cho hm l nh x. Cho f : A B. Min nh ca nh x


f c nh ngha l tp hp:
f (A) = {b B : b = f (a) vi a A no }

3.2. HM

47

Ta cng gi f (A) l nh ca tp A qua nh x f .


nh ngha 3.6. Cho f : A B.
f l hm t A ln B nu v ch nu f (A) = B.
f l hm t A vo B nu v ch nu f (A) ( B (k hiu ( dng ch
f (A) l tp con thc s ca B).
f l hm mt-mt t A sang B nu v ch nu vi bt k a1 , a2 A
sao cho f (a1 ), f (a2 ) xc nh v a1 = a2 , ta u c f (a1 ) = f (a2 ).
Ni bng li, nu f l hm t A ln B th mi phn t ca B u lin
kt vi t nht mt phn t ca A bi f . Nu f l hm t A vo B th c
t nht mt phn t ca B khng lin kt vi mt phn t no ca A qua
f . Hm mt-mt m bo tnh duy nht: cc phn t khc nhau khng bao
gi c nh x vo cng mt phn t. Nu mt hm khng l mt-mt, n
c gi l nhiu-mt.
Quay li v d trc y v kim th, i vi chng trnh NextDate,
nu ta ly A, B v C l cc tp hp cc ngy nh ngha nh sau:
A = {date : date l ngy gia 1/1/1812 v 31/12/2012}
B = {date : date l ngy gia 2/1/1812 v 1/1/2013}
C = AB
Th th hm NextDate: A B l mt-mt v ln, v hm NextDate:
A C l mt-mt v vo. Hm ca chng trnh tam gic l hm nhiumt v n nh x cc b s 3, 4, 5 v 12, 16, 20 vo cng mt loi tam gic.
Khi hm f l mt-mt v ln, mi phn t ca min gi tr c lin kt
vi ng mt phn t ca min xc nh v ngc li nh hm NextDate:
A B trn y. Khi ta c th tm hm ngc t min gi tr ca n
vo min xc nh ca n. Hm ngc ca NextDate: A B chnh l hm
YesterDate: B A.
Tt c cc khi nim trn y l quan trng vi ngi kim th. Phn
bit gia vo v ln c dng trong kim th hm da trn min gi tr
v min xc nh, v cc hm mt-mt thng yu cu nhiu ca kim th
hn cc hm nhiu-mt khi chng c cng min xc nh.

48 CHNG 3. C S TON HC RI RC CHO VIC KIM TH

Hnh 3.4: Dng nhn qu v khng nhn qu trong s dng d liu.

3.2.3

Hm hp

Gi s ta c ba hm sao cho min gi tr ca mt hm l min xc nh ca


hm k tip:
f :AB
g:BC
h:CD
Ta c th kt hp chng theo cch sau y. Vi bt k a A, gi b = f (a),
c = g(b), d = h(c), b B, c C, d D. Kt hp ca f, g, h l hm
h g f (a) =
=
=
=

h(g(f (a)))
h(g(b))
h(c)
d

Ta gi h g f l hm hp ca f, g, h. Hm hp c dng ph bin trong


pht trin phn mm. Khi nim ny cng nh cc th tc v cc chng
trnh con. Chui cc vic kt hp cc hm c th gy kh khn cho ngi
kim th, c bit i vi cc hm vo, nh c v trong s dng d
liu trong hnh 3.4.
Trong dng nhn qu, g f (a) (c nh ngha l g(b) v sinh ra c) l
qu trnh ging nh lp rp cc ng. Cn trong dng khng nhn qu,
kh nng c qu mt ngun to ra cc gi tr b cho kho d liu B c th gy
ra hai vn cho ngi kim th: vic nhiu ngun to ra cc gi tr b c
th lm mt tng thch gia min xc nh v min gi tr, v ngay c khi

3.3. QUAN H

49

khng b mt tng thch th cng c th ny sinh vn v cc bn khc


nhau ca b v hm g c th c p dng vo bn c ca b.
C mt trng hp c bit ca hm hp c ch vi ngi kim th. Nhc
li rng hm mt-mt c hm ngc duy nht. Nu f : A B l mt-mt,
gi f 1 : B A l hm ngc ca n. Khi i vi a A v b B, ta
c f 1 f (a) = a v f f 1 (b) = b. Khi khi cho f , f 1 ng vai tr gip
ngi kim th kim tra cho. Chng hn nh cc hm NextDate: A B
v YesterDate: B A. Vic kim tra cho c tin hnh trn cc ca kim
th hm ng nht.

3.3

Quan h

Hm l trng hp c bit ca quan h. C hai u l tp con ca tch


-Cc. Trong nh ngha hm ta i hi tnh hnh vi tt theo ngha l
mi phn t ca min xc nh khng c lin kt vi qu mt phn t
ca min gi tr, trong khi quan h l khng b rng buc bi i hi ny.
V th, khng phi tt c cc quan h u l hm. Xt mi quan h iu tr
gia bnh nhn v thy thuc. Mt bnh nhn c th c iu tr bi nhiu
thy thuc v mt thy thuc c th iu tr cho nhiu bnh nhn. R rng,
mi quan h ny l php tng ng nhiu-nhiu.

3.3.1

Quan h gia cc tp hp

Trc ht, ta cho mt nh ngha hnh thc v quan h.


nh ngha 3.7. Cho hai tp A v B. Mt quan h R t A sang B l mt
tp con ca tch -Cc A B, tc l R A B.
Thng thng ta vit aRb thay cho a, b R. Ta quan tm n quan h
trong ti liu ny v khi nim quan h l ct li cho vic m hnh ho d
liu v phn tch nh hng i tng.
Quan h c cc loi sau y:
nh ngha 3.8. Cho A, B l hai tp hp, R A B l mt quan h. Loi
ca quan h R l mt trong cc trng hp sau:

50 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


mt-mt nu R l hm b phn mt-mt t A sang B,
nhiu-mt nu R l hm b phn nhiu-mt t A sang B,
mt-nhiu nu c t nht a A sao cho a c quan h vi hai phn t
khc nhau ca B: c b1 , b2 B, b1 = b2 v a, b1 R, a, b2 R,
nhiu-nhiu nu t nht mt phn t ca A c quan h vi hai phn t
khc nhau ca B, v c t nht hai phn t khc nhau ca A c quan h
vi cng mt phn t ca B, tc l c a, a1 , a2 A v b, b1 , b2 B sao
cho a1 = a2 , b1 = b2 v a, b1 R, a, b2 R, a1 , b R, a2 , b R.
Tng t nh i vi cc hm, ta cng c khi nim b phn v ton b
cho quan h v gi tnh cht l tham gia ca quan h.
nh ngha 3.9. Cho A, B l hai tp hp, R A B l mt quan h.
Tham gia ca quan h R l:
ton b nu mi phn t ca A l trong cp c sp no trong
R,
b phn nu R khng c tham gia ton b,
ln nu mi phn t ca B u trong cp c sp no trong R,
vo nu R khng c tham gia ln.
Vic phn bit gia khi nim ton b v b phn l tng t vi vic
phn bit gia bt buc v ty chn.
Trn y cc quan h c nh ngha gia hai tp hp v chng d dng
c m rng thnh quan h gia nhiu tp hp. Chng hn, nu A, B, C l
ba tp hp, th bt k tp con R A B C l mt quan h. nh ngha
loi v tham gia ca quan h trong trng hp ny phc tp v phong ph
hn v c th c m rng t cc nh ngha trn dng cc kt hp khc
nhau ca tch -Cc.
Cc nh ngha ca quan h c dng lm cc tnh cht ca phn mm
cn kim th, do ngi kim th cn nm vng chng. Phn bit ca bt
buc v ty chn l bn cht cho vic x l cc ngoi l (exception handling)
nn cng khng km quan trng i vi ngi kim th.

3.3. QUAN H

3.3.2

51

Quan h trn mt tp hp

C hai quan h quan trng c nh ngha trn mt tp hp. l quan


h th t v quan h tng ng. Cc quan h ny c nh ngha nh
mt s tnh cht c bit ca quan h.
Cho A l mt tp hp, R A A l mt quan h trn A. C bn tnh
cht quan trng i vi cc quan h trn A.
nh ngha 3.10. Quan h R l
phn x nu vi bt k a A, a, a R,
i xng nu a, b R b, a R,
phn i xng nu a, b R b, a R a = b,
bc cu nu a, b R b, c R a, c R.
Quan h gia nh l cc v d th v v cc tnh cht trn. Hy ngh v
cc quan h sau y v quyt nh xem chng c nhng tnh cht no: anh
em ca, anh ch em ca, t tin ca.
nh ngha 3.11. Quan h R A A l mt quan h th t nu R l
phn x, phn i xng v bc cu.
Quan h th t c mt nim v hng; cc quan h th t ph bin
nh gi hn, , ko theo v lgic , t tin ca. Trong cc phn mm,
cc quan h th t xut hin kh ph bin nh: cc k thut truy cp d
liu, m bm, cu trc cy, mng, ...
Tp m ca tp cho l tp tt c cc tp con ca n. Tp m ca A
c k hiu l P (A) hoc 2A . Quan h tp con l mt quan h th t
trn P (A) v iu ny c kim chng d dng.
nh ngha 3.12. Quan h R A A l mt quan h tng ng nu R
l phn x, i xng v bc cu.
Trong ton hc ta gp y ry cc quan h tng ng: quan h bng
nhau hoc tng ng u l quan h tng ng. C mi lin quan mt
thit gia quan h tng ng trn A v phn hoch ca A. Cho trc mt

52 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


phn hoch A1 , A2 , . . . , An ca A. Ta nh ngha mt quan h trn A nh
sau: vi a, b A, a v b c quan h nu v ch nu a, b nm trong cng mt
phn t ca phn hoch. Quan h ny l phn x v bt k mt phn t
ca A u nm trong mt phn t no ca phn hoch, quan h ny l
i xng v nu a, b trong cng mt phn t ca phn hoch th b, a cng
cng nm trong phn t , quan h ny cng bc cu v a, b trong cng
mt tp Aj v b, c nm trong cng mt tp Ai th Ai = Aj , v do a, c
cng nm trong Aj . Quan h ny c gi l quan h tng ng sinh bi
phn hoch A1 , A2 , . . . , An ca A. iu ngc li cng hon ton tng t.
Nu R l quan h tng ng trn A, R sinh ra mt phn hoch ca A nh
sau: vi mi a A, gi [a] = {b : b A aRb}. [a] l mt tp con ca A
v c gi l lp tng ng cha a. Tp tt c cc lp tng ng ca
cc phn t ca A to thnh mt phn hoch ca A. V th phn hoch v
quan h tng ng c ng nht vi nhau, v ng vai tr quan trng
cho ngi kim th. Nh gii thiu, phn hoch c tnh y v khng
d tha, cho php ngi kim th bit mnh kim th c n u i
vi phn mm ang c kim th. Tnh hiu qu l chn mt phn t ca
mt lp tng ng xc nh ca kim th v cc phn t cn li ca lp
c hnh vi hon ton tng t.

3.4

Lgic mnh

Ta s dng cc k php ca lgic mnh trn y ri. nh ngha sau


khi dng cng l mt iu kh ph bin. Quan h gia l thuyt tp hp
v lgic mnh cng nh quan h gia g con v trng. Kh quyt nh
xem ci no cn a vo trc. Cng nh tp hp l khi nim nguyn thy
khng c nh ngha, mnh cng l cc phn t nguyn thy ca lgic
mnh . Mt mnh l mt cu khng nh m gi tr ca n hoc l
ng hoc l sai. Ta gi chng l cc gi tr chn l ca mnh . Cc mnh
cn phi khng nhp nhng: cho mt mnh , lun c th ni n l ng
hay sai. V d, cu ton hc l kh l nhp nhng nn ta khng xem n
nh l mt mnh . Cc mnh c k hiu l p, q hoc r. Lgic mnh
c cc php ton, biu thc v cc ng nht thc nh l thuyt tp hp.

3.4. LGIC MNH

3.4.1

53

Cc php ton lgic

Cc php ton lgic c nh ngha theo hiu qu ca n trn cc gi tr


chn l ca cc mnh m php ton c p dng. iu ny tng i
d dng v mi mnh ch c th c mt trong hai gi tr l T (ng) v F
(sai). Nu cc php ton s hc c nh ngha theo cch ny th bng gi
tr s ln hn nhiu. Cc php ton c s ca lgic mnh gm (php
ph nh), (php hi, v), (php tuyn, hoc). Hai php ton khc na
cng c dng ph bin l (php tuyn loi tr) v (php ko theo).
Cc php ton ny c nh ngha bng bng gi tr chn l di y.
p
T
T
F
F

q p
T F
F F
T T
F T

pq
T
F
F
F

pq
T
T
T
F

pq
F
T
T
F

pq
T
F
T
T

pq
T
F
F
T

Hi v tuyn l qu quen thuc trong i sng hng ngy: hi l ng


khi c hai thnh phn l ng, cn tuyn l ng khi c t nht mt thnh
phn l ng. Ph nh lm vic nh ngha mong i ca n. Tuyn loi tr
l ng nu c ng mt trong hai thnh phn l ng. Php ko theo, hay
cn gi l if-then, l kh nht v n kh c chuyn i ngn gn thnh
ngn ng t nhin. N c quan h mt thit vi vic suy din: nu tin
th kt lun. p q l ng nu hoc q l ng hoc p l sai.

3.4.2

Biu thc lgic

Ta dng cc php ton lgic xy dng cc biu thc lgic nh cc biu


thc s hc. Ta cng gi cc biu thc lgic l cc cng thc lgic. Ta c
th c t th t m cc php ton lgic trong biu thc lgic cn thc hin
vi cc quy c thng thng v cc du ngoc v bng cch s dng th t
u tin ca cc php ton l: php ph nh, php hi, v sau cng l php
tuyn. Cho mt biu thc lgic, ta lun c th xy dng bng chn l cho
n dng th t ni trn. V d, biu thc (p q) r p c bng chn l
nh sau:

54 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


p
T
T
T
T
F
F
F
F

3.4.3

q
T
T
F
F
T
T
F
F

r
T
F
T
F
T
F
T
F

pq
T
T
F
F
T
T
T
T

(p q) r p
F
T
F
F
T
T
T
F
F
F
F
F
F
F
F
F

(p q) r p
T
F
T
T
F
F
F
F

Tng ng lgic

Khi nim tng ng trong lgic cng tng t nh cc khi nim bng
nhau trong s hc v ng nht ca tp hp. C th thy cc biu thc
(p q) v p q c cng bng chn l. iu ny ngha l bt k gi tr no
c cho i vi p v q, gi tr chn l ca hai biu thc ny l nh nhau.
Cc biu thc nh vy c gi l tng ng.
nh ngha 3.13. Hai biu thc lgic P v Q c gi l tng ng, k
hiu l P Q, nu v ch nu chng c cng gi tr chn l i vi bt k
gi tr chn l no ca cc mnh c s thnh phn cha trong cc biu
thc ny. Hay ni khc i, chng c cng bng chn l.

Ta c th thy p q l tng ng vi p q q p.
nh ngha 3.14. Mt biu thc lgic m lun c gi tr chn l l ng
vi bt k gi tr chn l no ca cc mnh c s thnh phn s c gi
l mt hng ng. Mnh m lun lun nhn gi tr sai c gi l mt
mu thun (hng sai).

Ta c th k hiu hng ng l T v mu thun/hng sai l F . By gi


ta c cc lut sau y ging nh i vi cc tp hp.

3.5. L THUYT XC SUT

55

Lut
Lut ng nht
Lut
Lut
Lut
Lut
Lut
Lut
Lut

3.5

Biu thc
pT T
pF p
tri
pT T
pF F
ly ng
ppp
ppp
phn b
(p)) p
giao hon p q q p
pq qp
kt hp
(p q) r p (q r)
(p q) r p (q r)
phn phi p (q r) (p q) (p r)
p (q r) (p q) (p r)
DeMorgan (p q) p q
(p q) p q

L thuyt xc sut

Ta s c hai c hi dng n l thuyt xc sut trong gio trnh ny: mt


l khi lin quan n xc sut ca mt ng i ng vi cc lnh ca chng
trnh c tin hnh, hai l khi lin quan n mt khi nim cng nghip l
cc h s thao tc. Do ta ch nu nhng iu hiu cc khi nim
.
Cc khi nim nguyn thy trong php tnh xc sut l xc sut ca bin
c. Gi S l khng gian mu ca s hu hn cc kt qu c th v ng kh
nng xut hin ca mt php th. Mt tp con hu hn ca S s c gi
l mt bin c. Khi ta c mt nh ngha n gin ca xc sut l: xc
sut ca bin c E, k hiu l p(E), c tnh l p(E) = |E|/|S|.
L ngi kim th phn mm, ta s a ra nh ngha m lin quan hn
c n cng vic ca mnh. Ta dng cc khi nim v tp hp v mnh
phn trn. Ta gi bin c c s l ci g m c th xy ra, v gi tp tt
c cc bin c c s l mt v tr chuyn . Ta s s dng cc mnh
cho cc bin c, cc mnh l v cc phn t ca v tr. Cho mt v tr
chuyn U v mt mnh p v cc phn t ca U . Tp chn l ca mt

56 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


mnh c nh ngha nh sau:
nh ngha 3.15. Tp chn l ca mt mnh p, k hiu l T (p), l tp
tt c cc phn t ca U lm cho p ng.
V mnh l hoc ng hoc sai, p chia U thnh hai tp T (p) v (T (p)) .
Lu rng (T (p)) = T (p), v do T (p) T (p) = U . Cc tp chn l
lm sng t mi tng ng gia mnh , tp hp v xc sut.
nh ngha 3.16. Xc sut mnh p l ng, k hiu l P r(p), l
|T (p)|/|U |.
V tp chn l ca mt hng ng l U v ca mt mu thun l , ta
c xc sut ca U (hng ng) l 1 v xc sut ca (mu thun) l 0.
Xt v d hm NextDate, xt bin month v mnh sau:
p(m) : m l thng c 30 ngy
V tr chuyn trong bi ton ny l U = {1, 2, ..., 12}, v khi th
T (p) = {4, 6, 9, 11}. Vy xc sut mt thng cho trc c 30 ngy l:
P r(p) = |T (p)|/|U | = 4/12 = 1/3
Vai tr ca v tr chuyn l quan trng trong vic tnh xc sut, v
vic xc nh v tr chuyn (hay khng gian xc sut) cho ng vi bi
ton l mt ngh thut v cn phi c thc hnh nhiu. Gi s ta mun
bit xc sut mt thng l thng hai. Cu tr li ngay lp tc l 1/12.
By gi, gi s ta mun bit xc sut mt thng c 29 ngy, khi cu
tr li khng d nh vy. Ta cn mt v tr chuyn gm c nm nhun
ln khng nhun. Bng cch s dng s hc ng d, ta c th s dng mt
chu k bn nm lin tip, chng hn 1991, 1992, 1993 v 1994. Trong chu k
ny, ch c mt thng l c 29 ngy v chu k c tng cng 48 thng. Khi
xc sut cn tnh l 1/48.
Sau y l mt s cng thc quan trng v tnh xc sut:
1. P r(p) = 1 P r(p)
2. P r(p q) = P r(p) + P r(q) P r(p q)

3.6. L THUYT TH

3.6

57

L thuyt th

Phn ny s gii thiu nhng kin thc c s v l thuyt th cn thit


cho ngi kim th trong vic phn tch chng trnh v hiu cc k thut
kim th lin quan n cc s biu din thit k v c t phn mm.
Trong vic trnh by v th, ta c gng lin h cc khi nim vi cc
th hin ca chng trong cc ng dng kim th sau ny.
C hai loi th c bn: th c hng v th v hng hng.
Chng ta s bt u vi cc th v hng.

3.6.1

th

Mt th l mt cu trc ton hc gm mt tp cc nh v mt tp cc
cnh gia cc nh. Mt mng my tnh l mt v d v th. th c
nh ngha hnh thc nh sau.
nh ngha 3.17. th G = (V, E) gm mt tp hu hn v khng rng
V = {v1 , v2 , . . . , vm } cc nh, v mt tp E = {e1 , e2 , . . . , en } cc cnh,
trong mi cnh ek = {vi , vj } vi vi , vj V .
Lu rng {vi , vj } l cp khng c sp. i khi ta cng vit ek =
(vi , vj ) v cp (vi , vj ) hiu l khng c sp ty thuc vo ng cnh. Cnh
ca th cn c gi l cung v nh cng thng c gi l nt. Trong
vic biu din th bng hnh v, ta dng cc vng trn biu din nh
v dng cc ng ni hai nh biu din cc cnh. Hnh 3.5 l mt v d
v biu din bng hnh v ca mt th. Trong hnh v ny, cc tp nh
v cnh l
V = {v1 , v2 , v3 , v4 , v5 , v6 , v7 }
E = {e1 , e2 , e3 , e4 , e5 },
trong , e1 = (v1 , v2 ), e2 = (v1 , v4 ), e3 = (v3 , v4 ), e4 = (v2 , v5 ), v e5 =
(v4 , v6 ).
xc nh mt th, trc ht ta cn xc nh tp cc nh ca n v
sau l tp cc cnh gia cc cp nh. Ta c th coi cc lnh ca chng
trnh l cc nh v dng cc cnh biu din cc mi lin h gia cc lnh
nh dng iu khin hoc quan h nh ngha/s dng (def /use) i vi
bin no ca chng trnh.

58 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


e1
v1

v2
e4

e2
e3
v3

v4

v5

e5

v6

v7

Hnh 3.5: Mt v d v th.

3.6.1.1

Bc ca nh

nh ngha 3.18. Bc ca mt nh v ca mt th G l s cc cnh ca


G ni vi v v c k hiu l deg(v).

Ta cng c th coi bc ca mt nh c trng cho tnh ph bin ca


nh . Cc nh khoa hc x hi dng th m t s tng tc
trong x hi, trong mi ngi l mt nh v cc cnh biu din mi quan
h l bn hoc lin lc vi. Nu ta v mt th vi cc nh l cc i
tng v cc cnh l cc thng ip gia cc i tng, th bc ca nh cho
bit quy m ca kim th tch hp thch hp i vi i tng ca nh .
Bc ca cc nh trong th ca hnh 3.5 l:
deg(v1 )
deg(v2 )
deg(v3 )
deg(v4 )
deg(v5 )
deg(v6 )
deg(v7 )

=
=
=
=
=
=
=

2
2
1
3
1
1
0.

3.6. L THUYT TH
3.6.1.2

59

Ma trn ti

th khng nht thit c biu din bi hnh v. Chng c th c biu


din bng ma trn ti, m dng biu din ny rt quan trng i vi ngi
kim th. Khi th c gn cho mt th hin no , ma trn ti lun
cung cp nhng thng tin c ch v th hin.
nh ngha 3.19. Ma trn ti ca th m nh v n cnh, G = (V, E) =
({v1 , . . . , vm }, {e1 , . . . , en }), l mt ma trn m n trong phn t hng
i v ct j l 1 nu nh vi l mt u mt ca cnh ej , l 0 nu tri li.
Ma trn ti ca th trong hnh 3.5 l:

v1
v2
v3
v4
v5
v6
v7

e1
1
1
0
0
0
0
0

e2
1
0
0
1
0
0
0

e3
0
0
1
1
0
0
0

e4
0
1
0
0
1
0
0

e5
0
0
0
1
0
1
0

Ta c cc quan st sau y i vi ma trn ti: th nht l tng cc ct


lun bng 2 v mi cnh ch c hai u mt, v c dng lm iu kin
kim tra tnh tng thch, th hai l tng ca mt hng lun bng bc ca
nh tng ng vi hng . Khi bc bc ca mt nh bng 0, ta gi nh
l nh c lp. nh c lp c th tng ng vi m khng t c hoc
i tng tha.
3.6.1.3

Ma trn lin k

Ma trn lin k ca th l mt dng biu din khc b sung cho ma trn


ti. V ma trn lin k lin quan n tnh lin thng, khi nim ny l c s
cho nhiu khi nim sau ny v th.
nh ngha 3.20. Ma trn lin k ca th m nh v n cnh, G =
(V, E) = ({v1 , . . . , vm }, {e1 , . . . , en }), l mt ma trn m m, trong phn
t hng i v ct j l 1 nu v ch nu nh vi c ni vi nh vj bi mt
cnh, l 0 nu ngc li.

60 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


Ma trn lin k ca mt th lun lun l i xng, ngha l phn t
hng i ct j lun bng phn t hng j ct i. Ngoi ra, cng nh i vi ma
trn ti, tng ca mt hng lun l bc ca nh tng ng i vi hng .
Ma trn lin k ca th trong hnh 3.5 l:

v1
v2
v3
v4
v5
v6
v7
3.6.1.4

v1
0
1
0
1
0
0
0

v2
1
0
0
0
1
0
0

v3
0
0
0
1
0
0
0

v4
1
0
1
0
0
1
0

v5
0
1
0
0
0
0
0

v6
0
0
0
1
0
0
0

v7
0
0
0
0
0
0
0

ng i trong th

Trong cch tip cn cu trc ca vic kim th, cc loi ca ng i ng


vai tr trung tm. gip hiu chnh xc v cch tip cn , trong mc
ny ta a vo nh ngha hnh thc v ng i.
nh ngha 3.21. Mt ng i gia nh v v nh v trong th G l
mt dy lin tip cc cnh ni v v v , tc l dy cc cnh e1 = (v, v1 ),
e2 = (v1 , v2 ), e3 = (v2 , v3 ), . . . , ek+1 = (vk , v ).
Trong hnh 3.5, e1 , e4 l ng i ni v1 v v5 , e5 , e2 , e1 , e4 l ng i ni
v6 v v5 , v e3 , e2 , e1 l ng i gia v3 v v2 .
Cc ng i cng c th c sinh trc tip t ma trn lin k ca
th. Nu A l ma trn lin k ca th G th trong ma trn Ak , phn t
hng i ct j bng 1 nu v ch nu c ng i gm k cnh gia nh vi v
nh vj . V d, trong tch ca ma trn lin k ca th trong hnh 3.5 vi
chnh n, phn t v tr (1, 2) nhn vi phn t v tr (2, 5) to ra phn
t v tr (1, 5) ca ma trn tch, v tng ng vi ng i c hai cnh
gia v1 v v5 .
th trong hnh 3.5 khng tng qut lm. N khng c chu trnh, tc
l khng cha ng i ni mt nh vi chnh n. Nu ta thm vo cnh
(v3 , v6 ) th th ny s c chu trnh.

3.6. L THUYT TH
3.6.1.5

61

Tnh lin thng

Cc ng i cho php ta ni v tnh lin thng v cung cp phng tin


n gin nhng rt quan trng i vi ngi kim th.
nh ngha 3.22. Cc nh vi v vj l lin thng vi nhau nu chng nm
trn cng mt ng i.
Quan h lin thng l mt quan h tng ng.
1. Quan h lin thng l phn x, v mi nh u nm trn mt ng
i c di 0 ni n vi chnh n.
2. Quan h lin thng l i xng, v nu cc nh vi v vj nm trn
cng mt ng, th vj v vi cng nm trn cng ng .
3. Quan h lin thng l truyn ng (bc cu) v nu vi v vj nm trn
ng e1 , e2 , . . . , eh v vj v vk nm trn ng er , . . . , es , th vi v vk
cng nm trn ng e1 , e2 , . . . , eh , er , . . . , es .
V mi quan h tng ng sinh ra mt phn hoch, nn quan h lin thng
sinh ra mt phn hoch ca tp cc nh ca th. Nh ta nh ngha
cc thnh phn ca th nh sau:
nh ngha 3.23. Mt thnh phn (lin thng) ca th l mt tp hp
cc i cc nh lin thng vi nhau.
Vy l mt thnh phn l mt lp tng ng ca quan h lin thng.
Trong hnh 3.5, ta c hai thnh phn l {v1 , v2 , v3 , v4 , v5 , v6 } v {v7 }.
3.6.1.6

Rt gn th

By gi ta c th hnh thc ha mt c ch n gin ha quan trng cho


ngi kim th.
nh ngha 3.24. Cho trc mt th G = (V, E), th rt gn ca G
c to thnh bng cch thay mi thnh phn bng mt nh rt gn.

62 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


Qu trnh xy dng th rt gn ca mt th cho c th c
tin hnh bng thut ton. Ta dng ma trn lin k xc nh cc nh
lin thng v sau dng quan h tng ng xc nh cc thnh phn.
iu quan trng ca qu trnh ny l th rt gn ca th c cho l
duy nht (theo ngha t nhin).
Khng c cnh ni cc nh ca th rt gn v cc l do sau:
1. Cnh ni hai nh ch khng phi hai tp nh.
2. Hai tp nh thnh phn l c lp theo ngha l khng c cnh trong
th ban u nt mt nh ca thnh phn ny vi mt nh ca
thnh phn kia (v nu c th chng phi b kt hp trong mt thnh
phn!).
Cc thnh phn l c lp nn chng c th c kim th tch bit
nhau.
3.6.1.7

Ch s chu trnh

Mt thuc tnh khc na ca th m c nh hng n vic kim th l


phc tp chu trnh.
nh ngha 3.25. Ch s chu trnh ca th G c nh ngha l V (G) =
e n + p, trong :
e l s cnh ca G,
n l s nh ca G, v
p l s cc thnh phn ca G.
V (G) l s cc min khc nhau trong th. Mt cng thc ca vic kim
th cu trc gi thit khi nim ca cc ng i c s trong chng trnh,
m t tt c cc ng i khc c th c dn ra, v ch ra rng ch s
chu trnh ca th chng trnh chnh l s cc ng i c s ny.
Ch s chu trnh trong th v d ca ta l V (G) = 5 7 + 2 = 0. Khi
ta dng phc tp chu trnh trong kim th, ta thng c trong tay cc
th lin thng mnh. Chnh iu to ra phc tp chu trnh ln.

3.6. L THUYT TH

3.6.2

63

th c hng

Cc th c hng l mt trng hp c bit ca th c nh ngha


trc y. i vi cc th loi ny, ta i hi cc cnh c mt hng no
. Thay cho cc cp khng c sp, ta s dng cc cp c sp vi , vj
biu din cnh c hng t nh vi n nh vj .
nh ngha 3.26. Mt th c hng (hay digraph) D = (V, E) gm mt
tp hu hn cc nh V = {v1 , v2 , . . . , vm } v mt tp E = {e1 , e2 , . . . , en }
cc cnh, trong mi cnh ek = vi , vj l mt cp c sp cc nh
vi , v j V .
Cnh c hng ek = vi , vj c nh khi hnh (hay nh u) l vi v c
nh kt thc (hay nh cui) l vj . Rt nhiu khi nim trong phn mm
c m t bi cnh c hng nh: hnh vi tun t, ngn ng lp trnh lnh,
cc s kin c sp theo th t thi gian, cp nh ngha/tham chiu, thng
ip, li gi hm hay th tc. Vy ti sao ta vn cn n th nguyn thy
v hng hng? S khc nhau gia hai loi th ny cng tng t nh
s khc nhau gia cc ngn ng lp trnh lnh v cc ngn ng lp trnh m
t. Trong cc ngn ng lp trnh lnh (nh PORTRAN, COBOL, PASCAL,
C), th t tun t ca m ngun xc nh th t thi gian tin hnh ca
m ch. Tnh trng l khc hn i vi cc ngn ng lp trnh m t (nh
PROLOG). Trong loi m t, cc nh pht trin phn mm thng dng m
hnh thc th/quan h (E/R). Trong mt m hnh E/R, ta dng cc nh
biu din thc th, v dng cc cnh biu din quan h. Khi ta c
mt th v hng.
Khi kim th mt chng trnh vit trong ngn ng m t, ta ch cn
dng n cc th v hng. Tuy nhin ta li phi dng cc th c
hng khi kim th cc chng trnh vit trong ngn ng lp trnh th tc
(lnh).
Cc nh ngha sau y l song song vi cc nh ngha i vi th
nguyn thy. Ta s dng v d trong hnh 3.6 minh ha cho cc nh ngha
ny.
Tp cc nh v tp cc cnh cng ging nh trong hnh 3.5, ch khc l
cc cnh c c hng nh sau: e1 = v1 , v2 , e2 = v1 , v4 , e3 = v3 , v4 , e4 =
v2 , v5 , e5 = v4 , v6 .

64 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


e1
v1

v2
e4

e2
e3
v3

v4

v5

e5

v6

v7

Hnh 3.6: Mt th c hng.

3.6.2.1

Bc vo v bc ra

V mi nh trong th c hng c th l nh u ca mt s cnh, v


cng li c th l nh cui ca mt s cnh, khi nim bc trong th
nguyn thy c lm mn nh sau:
nh ngha 3.27. (Bc vo v bc ra trong th c hng.)
Bc vo ca mt nh v trong th c hng G l s cc cnh khc
nhau trong G c nh kt thc l v. Bc vo ca v c k hiu l
indeg(v).
Bc ra ca mt nh v trong th c hng G l s cc cnh khc
nhau trong G c nh u l v. Bc ra ca v c k hiu l outdeg(v).
i vi th trong hnh 3.6, bc vo v bc ra ca cc nh nh sau:
indeg(v1 )
indeg(v2 )
indeg(v3 )
indeg(v4 )
indeg(v5 )
indeg(v6 )
indeg(v7 )

=0
=1
=0
=2
=1
=1
=0

outdeg(v1 )
outdeg(v2 )
outdeg(v3 )
outdeg(v4 )
outdeg(v5 )
outdeg(v6 )
outdeg(v7 )

=2
=1
=1
=1
=0
=0
=0

3.6. L THUYT TH

65

T nh ngha, nu coi mt th c hng l mt th v hng hng


sau khi b qua hng ca cc cnh th mi nh c bc nh c nh ngha
cho th nguyn thy. R rng: deg(v) = indeg(v) + outdeg(v).

3.6.2.2

Loi ca nh

Trong th c hng, ta c hai loi c bit ca cc nh l nh vo


(ngun) v nh ra (ch) c nh ngha nh sau:
nh ngha 3.28. nh ngun l nh c bc vo bng 0. nh ch l nh
c bc ra bng 0. nh khng phi l ch v khng phi l ngun c gi
l nh trung chuyn.
Cc nh ngun v ch to thnh ngoi bin ca th. Trong phn tch
c cu trc, th c hng biu din s ng cnh c cc nh ngun v
nh ch tng ng vi cc thc th bn ngoi.
Trong v d trn, cc nh v1 , v3 v v7 l cc nh ngun, cn cc nh
v5 , v6 v v7 l cc nh ch. Cc nh trung chuyn l v2 v v4 . Cc nh va
l ngun va l ch l cc nh c lp.

3.6.2.3

Ma trn lin k ca th c hng

Vic a vo hng thay i nh ngha ca ma trn lin k v ma trn ti.


V ma trn ti t c dng, y ta ch a vo nh ngha ca ma trn
lin k.
nh ngha 3.29. Ma trn lin k ca mt th c hng D = (V, E) vi
m nh l ma trn m m A = (aij ), trong aij = 1 nu v ch nu c cnh
(c hng) t nh i n nh j. Tri li aij = 0.
Khc vi th nguyn thy, ma trn lin k ca mt th c hng
khng nht thit l i xng. Trong ma trn lin k, tng ca mt hng l
bc ra ca nh tng ng vi hng , cn tng ca mt ct l bc vo ca
nh tng ng vi ct . Ma trn lin k ca th trong hnh 3.6 l:

66 CHNG 3. C S TON HC RI RC CHO VIC KIM TH

v1
v2
v3
v4
v5
v6
v7

v1
0
0
0
0
0
0
0

v2
1
0
0
0
0
0
0

v3
0
0
0
1
0
0
0

v4
1
0
1
0
0
0
0

v5
0
1
0
0
0
0
0

v6
0
0
0
1
0
0
0

v7
0
0
0
0
0
0
0

Ta c th dng th c hng biu din mi quan h h hng trong


gia nh. Cng nh i vi trng hp th nguyn thy, cc trong ly
tha ca ma trn lin k ch s tn ti ca ng i c hng gia cc nh.
3.6.2.4

ng i v ta ng i

Hng cho php lm chnh xc hn ngha ca ng i ni cc nh. Nh


hng ta c th biu din ng i mt chiu, trong khi th v hng ch
c th biu din ng i hai chiu.
nh ngha 3.30. ng i c hng l mt dy cc cnh sao cho bt k
hai cnh lin tip ei v ej trong dy u tha mn tnh cht l nh cui ca
cnh trc l nh u ca cnh sau. nh u ca cnh u tin trong dy
cng c gi l nh u ca ng i, v nh kt thc ca cnh cui cng
trong dy cng c gi l nh cui ca ng i. Chu trnh l mt ng
i sao cho nh u v nh cui ca ng i l nh nhau.
Ta ng i c hng l mt dy cc cnh sao cho bt k hai cnh lin
tip trong dy u c mt nh chung, trong c t nht mt cp cnh lin
tip c chung nh u hoc chung nh cui.
Cc ng i c hng i khi c gi l cc xch hoc cc dy chuyn.
Trong v d trn y v th c hng:
c ng i t v1 n v6 ,
c ta ng i gia v1 v v3 ,

3.6. L THUYT TH

67

c ta ng i gia v2 v v4 ,
c ta ng i gia v5 v v6 .
3.6.2.5

Ma trn t c

Tnh t c mt nh cho trc t mt nh khc cho trc bng mt


ng i c hng ng vai tr quan trng trong nhiu ng dng ca th.
Tnh t c ny c biu din thng qua ma trn t c.
nh ngha 3.31. Ma trn t c ca th c hng G = (V, E) vi m
nh l ma trn m m R = (rij ), trong rij = 1 nu c ng i t nh
vi n nh vj ca G, tri li rij = 0.
Ma trn t c ca th c hng G = (V, E) c th c tnh t
ma trn lin k A ca G nh sau:
R = I + A + A2 + . . . + R k ,
trong k l di ca ng i di nht khng cha trong n mt chu
trnh no, v I k hiu cho ma trn n v. Ma trn t c ca th c
hng trong hnh 3.6 l:

v1
v2
v3
v4
v5
v6
v7

v1
0
0
0
0
0
0
0

v2
1
0
0
0
0
0
0

v3
0
0
0
1
0
0
0

v4
1
0
1
0
0
0
0

v5
1
1
0
0
0
0
0

v6
1
0
1
1
0
0
0

v7
0
0
0
0
0
0
0

Ma trn t c cho bit cc nh v2 , v4 , v5 c th t c t nh v1 ,


nh v5 c th t c t v2 , vn vn.

68 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


3.6.2.6

Tnh N -lin thng

Tnh lin thng trong th nguyn thy c m rng cho th nh


hng nh sau.
nh ngha 3.32. Hai nh vi v vj trong mt th c hng G l:
0-lin thng nu khng c ng i t vi n vj ,
1-lin thng nu khng c ng i t vi n vj nhng li c mt ta
ng i t vi n vj ,
2-lin thng nu c ng i t vi n vj ,
3-lin thng nu c ng i t vi n vj v c ng i t vj n vi .
Khng c bc lin thng cao hn 3.
e1
v1

v2
e4

e2
e3
v3

v4
e6

v5

e5

v6

v7

Hnh 3.7: th c hng vi chu trnh.


Trong hnh 3.7, ta c:
v1 v v7 l 0-lin thng,
v2 v v6 l 1-lin thng,
v1 v v6 l 2-lin thng, v
v3 v v6 l 3-lin thng.

3.6. L THUYT TH
3.6.2.7

69

Thnh phn lin thng mnh

T nh ngha ca tnh n-lin thng trn y, ta c quan h 1-lin thng v


quan h 3-lin thng l quan h tng ng. Tnh 1-lin thng cng c
gi l lin thng yu v sinh ra thnh phn lin thng yu. Tnh 3-lin thng
c c th th v cho cc th nh hng. Cc lp tng ng ca quan
h 3-lin thng s c gi l cc thnh phn lin thng mnh.
nh ngha 3.33. Thnh phn lin thng mnh ca mt th c hng
l tp hp cc i cc nh 3-lin thng ca th .
Trong v d hnh 3.7, {v3 , v4 , v6 } v {v7 } l cc thnh phn lin thng
mnh, {v2 } v {v1 } cng l cc thnh phn lin thng mnh.
Cc thnh phn lin thng mnh cho php ta n gin ha th bng
cch co mi trong chng thnh mt nh. th nhn c khng c chu
trnh na v c gi l th c ng ca th ban u. Cc th c
hng khng c chu trnh thng c gi l mt DAG (Directed Acyclic
Graph). Cc th c ng u l cc DAG. Hnh 3.8 l th c ng ca
th trong hnh 3.7.
e1
v1

v2
e4

e2

s1

v5

v7

Hnh 3.8: th c ng ca th trong hnh 3.7.


Trong kim th cu trc, ngi ta ch ra rng cc th ca chng
trnh c th c s rt ln cc ng i v v th vic kim th vt cn l
khng th. Nguyn nhn ca vic s hu s rt ln cc ng i l cc chu

70 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


trnh trong th. Vi vic n gin ha bng th c ng, ta c th trnh
c cc chu trnh v n gin ha vic kim th.

3.6.3

Cc loi th dng cho kim th

Ta kt thc chng ny bng vic a vo vi loi th c bit m c


dng rng ri trong kim th. l cc th chng trnh, cc th my
hu hn trng thi v cc mng Petri. Cc th loi ny l cc cng c tt
nht m t hnh vi mc h thng mc d chng cng c dng m
t cc mc kim th thp hn (kim th tch hp v kim th n v).
nh ngha 3.34. Cho mt chng trnh vit trong ngn ng th tc (tc
l ngn ng lnh). th chng trnh ca chng trnh ny l mt th
nh hng, trong cc nh l cc lnh ca chng trnh, v cc cnh biu
din dng iu khin (c cnh i t nh i n nh j nu lnh tng ng
ca nh j c th c tin hnh ngay sau lnh tng ng vi nh i).
nh ngha trn y cng c ci tin chi tit ha cc lnh theo cch
l cc nh ca th chng trnh l ton b mt lnh hoc cc phn ca
mt lnh, v cc cnh th vn biu din dng iu khin: c cnh i t nh
i n nh j nu lnh hoc phn lnh tng ng ca nh j c th c tin
hnh ngay sau lnh hoc phn lnh tng ng vi nh i.
Nh th chng trnh m ta c th m t chnh xc cc kha cnh kim
th ca chng trnh. Cc cu trc ca lp trnh c cu trc (tun t, r
nhnh v lp) cng c cc biu din th rt sng sa nh c cho trong
hnh 3.9.
Khi cc cu trc ny c dng trong mt chng trnh c cu trc, cc
th tng ng ca cu trc hoc c lng nhau hoc c ghp vi nhau.
Do cc tiu chun mt li vo v mt li ra ca cc cu trc, th chng
trnh ca chng trnh c cu trc c duy nht mt nh ngun v duy nht
mt nh ch. Chng trnh khng c cu trc, tc l chng trnh c lnh
GO TO s to ra cc th chng trnh rt phc tp v kh phn tch.
Khi mt chng trnh c tin hnh, dy tt c cc lnh ca mt tin hnh
to thnh mt ng i trong th chng trnh. Chu trnh v cc nh r
nhnh ng gp vo vic tng trng ca s ng i trong th chng
trnh v do tng nhu cu ca vic kim th.

3.6. L THUYT TH
sequence

71
case

ifthenelse

whiledo

repeatuntil

ifthen

Hnh 3.9: th ca cc cu trc ca lp trnh c cu trc.

Mt vn m th chng trnh gp phi l biu din cc lnh khng


tin hnh nh lnh m t d liu v cc ch gii th no. Cch n gin
nht l b qua cc lnh ny. Mt vn na l s phn bit cc ng i
c th v t p trong th v ng i khng kh thi. Vn ny s c
bn trong phn sau.

3.6.3.1

My hu hn trng thi

My hu hn trng thi l mt khi nim chun c t yu cu. Cc m


rng thi gian thc ca vic phn tch c cu trc cng s dng mt dng
ca my hu hn trng thi. Hu nh tt c cc dng ca phn tch nh
hng i tng u cn n my hu hn trng thi. Mt my trng thi

72 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


hu hn l mt th c hng trong trng thi l cc nh, cc chuyn
trng thi l cc cnh. Trng thi u l nh ngun. Hu ht my trng
thi c thm thng tin b sung cho cc cnh tng ng vi nguyn nhn v
kt qu hnh ng ca chuyn tng ng. Sau y l mt nh ngha hnh
thc ca my hu hn trng thi.
nh ngha 3.35. My hu hn trng thi (vit tt l FSM - Finite State
Machine) l mt th c hng (S, T, Ev, Act), trong S l tp hu hn
cc trng thi v l nh ca th, T l tp cc chuyn trng thi v l cc
cnh ca th, Ev v Act l cc tp cc s kin v hnh ng lin kt vi
cc cnh trong T .
Hnh 3.10 l mt my hu hn trng thi cho chc nng kim tra mt
khu ca my rt tin t ng n gin. My gm nm trng thi nh
trong hnh (Idle, Awaiting, ...) v tm php chuyn trng thi. Nhn ca cc
chuyn c lm theo quy c sau: numerator l s kin gy ra vic chuyn
trng thi, cn denumerator l hnh ng lin kt vi vic chuyn trng
thi (cnh). Cc s kin l bt buc phi c, cn cc hnh ng l ty chn.
Cc my hu hn trng thi l cc cch n gin biu din tnh trng
trong c nhiu s kin c th xy v s xut hin ca chng c cc h qu
khc nhau. Trong v d trn y, khch hng c ba c hi a vo mt
khu ng. Nu mt khu a vo ng ngay ln u tin, hnh ng kt
qu l hin th mn hnh 5 ( mi khch hng chn loi giao dch). Nu vo
mt khu khng ng, my chuyn n mt trng thi khc, mt trong cc
trng thi l ch cho ln vo mt khu ln hai. Lu rng cng cc s
kin v hnh ng xut hin trn cc chuyn t trng thi ch th mt khu
ln hai. y chnh l cch my hu hn trng thi nh lch s qu kh.
Cc my trng thi c th tin hnh c nhng cn c mt s quy c.
Trc ht l khi nim trng thi kch hot. Ti mi thi im, mt h thng
lun mt trng thi no . Khi h thng c m hnh bi mt my hu
hn trng thi, trng thi kch hot l trng thi m hin ti h thng ang
. Quy c khc na l cc my hu hn trng thi c th c trng thi u
tin, m chnh l trng thi m khi bt u h thng i vo. V d trng
thi nhn ri (Idle) l trng thi u ca v d trn, c ch vo bi mi
tn khng c nh u. V cc chuyn trng thi xy ra tc thi, ti mi
thi im ch c mt trng thi c kch hot. tin hnh mt my trng
thi, ta xut pht t trng thi u tin, v cung cp dy cc s kin gy ra
vic chuyn trng thi ca cc chuyn. Khi mt s kin xut hin, ci chuyn

3.6. L THUYT TH

73

Hnh 3.10: My hu hn trng thi cho mt phn ca my rt tin t ng


n gin.
tng ng s thay i trng thi c kch hot, sau , mt s kin mi
xut hin. Theo cch , dy cc s kin s chn mt ng i qua mt dy
cc trng thi v cc chuyn ca my.
3.6.3.2

Mng Petri

Mng Petri l ch ca lun n tin s ca nh vt l hc Carl Adam Petri


nm 1960. Ngy nay, mng Petri c chp nhn l mt m hnh cho cc
th thc v cc ng dng khc c lin quan n tnh tng tranh v vic x
l phn tn. Cc mng Petri l trng hp c bit ca th c hng c
tn l th lng phn c hng. Mt th lng phn c hng l mt
th c hng trong tp nh V c phn hoch thnh hai tp hp V1
v V2 sao cho mi cnh c nh u tp ny th phi c nh cui tp kia.
Trong mng Petri, mt trong hai tp nh, chng hn tp nh V1 c coi

74 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


l tp cc v tr, v tp nh cn li V2 c coi l tp cc chuyn. Thng
thng ta t tn tp cc v tr l P v tp cc chuyn l T . Cc v tr l
u vo v u ra ca cc chuyn. Quan h u vo v u ra l cc hm v
c k hiu l In v Out, nh trong nh ngha di y.
nh ngha 3.36. Mt mng Petri l mt th lng phn c hng
(P, T, In, Out), trong P v T l hai tp hu hn ri nhau ca cc nh,
v In v Out l tp cc cnh, In P T v Out T P .

p5

p1

p2

t3

t1

p3

p4

t2

Hnh 3.11: Mt mng Petri.


Hnh 3.11 minh ha mt mng Petri trong
P
T
In
Out

=
=
=
=

{p1, p2, p3, p4, p5}


{t1, t2, t3}
{p1, t1, p5, t1, p5, t3, p2, t3, p3, t2}
{t1, p3, t2, p4, t3, t4}

Mng Petri c th c tin hnh theo cch th v hn l my trng thi


hu hn. Mt mng Petri, c tin hnh, trc ht n cn c nh
du.
nh ngha 3.37. Mng Petri c nh du l b nm (P, T, In, Out, M ),
trong (P, T, In, Out) l mt mng Petri v M l mt tp cc nh x t
P vo tp cc s t nhin N.

3.6. L THUYT TH

75

Tp M cng c gi l tp nh du ca mng Petri (P, T, In, Out).


Khi cc phn t ca P c nh s t 1 n n (|P | = n), cc phn t ca
M s l cc b gm n phn t. Vi mng Petri trong hnh 3.11, cc phn t
ca M c dng n1, n2, n3, n4, n5, trong cc n l cc s nguyn lin kt
vi cc v tr tng ng. S lin kt vi mt v tr p c biu din bi s
cc du en trong v tr . Trong cc ng dng khc nhau, cc du s c
cc th hin khc nhau.
B nh du ca mng Petri trong hnh 3.12 l 1, 1, 0, 2, 0. Khi nim
nh du gip ta c th a vo hai khi nim c bn sau:
nh ngha 3.38. Cho mt mng Petri v mt nh du ca n. Mt chuyn
t trong mng Petri c gi l c kch hot nu c t nht mt du en
trong mi v tr vo ca n, tc l nu p, t In th trong p phi c t nht
mt du en.
p1

p2

p5

t3

t1

p4

p3

t2

Hnh 3.12: Mng Petri c nh du.


Mng trong hnh 3.12 khng c chuyn no c kch hot. Nu ta thm
mt du en vo v tr p3 th chuyn t2 s c kch hot.
nh ngha 3.39. Khi mt chuyn trong mng Petri c kch hot, n c
th chy. Khi mt chuyn t c kch hot chy, mt du s c kh i t
mi trong cc v tr vo ca t, v mt du s c t thm vo mi trong
cc v tr ra ca t, tc l cc v tr p sao cho t, p Out.
Hnh 3.13 minh ha vic chy ca t2 trong mng bn tri, v kt qu ca
vic chy l mng bn phi.

76 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


p1

p2

p5

t3

t1

p4

p3

p1

p2

p5

t3

t1

p4

p3

t2

t2

Hnh 3.13: Trc v sau khi chy mt chuyn.

Tp cc nh du ca mng trong hnh 3.13 gm hai b, b u trong


t2 c kch hot, cn b sau nhn c sau khi t2 chy:
M = {1, 1, 1, 2, 0, 1, 1, 0, 3, 0}.
Cc du c th c to ra v hy i khi chy cc chuyn c kch hot.
Trong mt s iu kin c bit, tng s cc du khng bao gi thay i.
Cc mng nh th c gi l cc mng bo th. Vic nh du cho php
ta tin hnh cc mng Petri nh l cc my trng thi hu hn. Thc ra th
my hu hn trng thi l cc trng hp c bit ca mng Petri. Gi s
ta c mt nh du khc cho mng trong hnh 3.11 trong cc v tr p1,
p2, v p5 l c nh du. Khi th c t1 v t3 u c kch hot. Nu
ta chn t1 chy th du en trong p5 s b kh v t3 s khng c kch
hot na. Tng t nu ta chn t3, ta s ha gii tnh b kch hot ca t1.
Cc chuyn t1 v t3 khi s c gi l trong tnh trng xung t tng
ng vi v tr p5. Mng Petri xung t biu din mt dng kh hay v s
tng tc ca cc chuyn m ta s bn n sau.

3.7

Bi tp

1. Biu din A B bng li.


2. Biu din (A B) (A B) bng li
3. L gii ti sao A B = (A B) (A B)

3.7. BI TP

77

4. ng thc A B = (A B) (B A) c ng khng, ti sao?


5. Quan h tham gia cng mt mn hc no c l quan h tng ng
trong lp khng? Ti sao. Khi no quan h l quan h tng ng?
6. Hy xut mt nh ngha v di ng i trong th.
7. Nhng chu trnh no s c to ra nu mt cnh c thm vo gia
cc nh v5 v v6 trong th hnh 3.11.
8. Hy chng minh rng quan h 3-lin thng l quan h tng ng
trn tp cc nh ca th c hng.
9. Tnh phc tp (ch s) chu trnh ca mi cu trc trong lp trnh
c cu trc trong hnh 3.9.
10. Cc th c hng nh hnh 3.14 thu c bng vic thm nh v
cnh vo th c hng hnh 3.7. Hy tnh phc tp chu trnh
ca mi trong cc th mi ny v gii thch cc thay i nh
hng n phc tp nh th no.
e1

e1
v1

v1

v2
e4

e2

e4

e2
e7
e9

e3

e3
v3

v2

v4
e6

v3

v5

e5

e7

v4
e6

v5

e5
e8

v6

v7

v6

e8
v8

v9

Hnh 3.14: Cc th cho bi tp 10.

11. Gi s ta xy dng mt th trong cc nh l ngi, v cnh


tng ng vi mt dng no ca mi tng tc x hi, chng hn

78 CHNG 3. C S TON HC RI RC CHO VIC KIM TH


ni vi hoc bn b vi. Tm cc khi nim trong l thuyt th
tng ng vi cc khi nim x hi nh tnh ph bin, hi, tu hnh.

Chng 4
Kho st c t v m ngun
Chng ny gii thiu cc k thut kho st c t v m ngun. M ngun
c pht trin da trn c t v v th vic kho st c t cn c tin
hnh trc khi pht trin m ngun trnh cc ri ro v cc li c th c
trong c t. V c t khng th tin hnh nn ch c th pht hin cc li
bng kho st. Tuy nhin, m ngun th c th tin hnh c, v c th
c kim th thng qua vic thc thi, vy c cn phi kho st m ngun
trc khng? Cu tr li l rt cn, v kho st gip ta pht hin cc li
sm, cc li v lgic, cc li v cu trc v gip xut cc ca kim th hiu
qu hn. Kho st m ngun v khng thc thi phn mm pht hin li
trong qu trnh pht trin phn mm cn c tn gi khc l kim th hp
trng tnh. y l mt k thut kim th b sung vo cc k thut kim
th khc m bo cht lng phn mm. Cn kho st c t c lit
vo phm tr kim th hp en tnh v vic ny thng c tin hnh khi
cha c m ngun.

4.1

Kho st c t

Nh ni chng 1, c t phn mm l mt ti liu m t cc chc


nng ca phn mm. Ti liu ny c to ra t nhiu ngun khc nhau
nh thng qua cc nghin cu v s dng, v th trng, ... Vic ti liu ny
c to ra th no v vit ra di dng no khng phi l mi quan tm
ca ngi kim th, min l n c c kt thnh mt ti liu m t sn
79

80

CHNG 4. KHO ST C T V M NGUN

phm pht trin v ngi kim th s tin hnh cc kho st trn ti liu
ny tm li. Cng c trng hp c t khng c vit ra. Trong trng
hp ny, n trong u ca ngi thit k v vit m, v ngi kim th
phi kho st cc ti liu ny bng vic phng vn h. Mc ny gii thiu
hai k thut kho st c t l duyt mc cao v duyt mc thp.

4.1.1

Tin hnh duyt c t mc cao

nh ngha mt sn phm phn mm l mt vic kh. c t thng lin


quan n nhiu th cha bit, vic xy dng c t ly v s u vo thay
i, kt hp chng vi nhau to nn mt ti liu m t sn phm mi.
Qu trnh ny l khoa hc khng chnh xc v rt d mc sai lm.
Bc th nht kim th c t khng phi i vo chi tit ngay tm
li m l xem xt n t mc cao. Hy kho st c t tm cc li c bn
ln, nhng li v b st trc . Vic xem xt c t lc ny l theo quan
im nghin cu nhiu hn l kim th. Ch khi hiu nhng ti sao v
lm th no ng sau c t, bn mi c th phn bin tt cc chi tit
trong n. Sau y l cc k thut tin hnh duyt c t mc cao.
4.1.1.1

Hy l khch hng ca sn phm

Khi nhn mt ti liu c t kim th, iu d nht ngi kim th cn


lm l hy gi nh mnh l khch hng ca sn phm. V th, trc ht cn
tm hiu ai s l khch hng ca sn phm. Hy ni chuyn vi nhng ngi
cho hng v ma-ket-ting cho sn phm tm hiu v ngi dng cui cng
ca sn phm. Nu sn phm l trung gian trong mt d n phn mm khc,
hy tm hiu ai s dng n v ni chuyn vi h.
iu quan trng l cn phi hiu khch hng ch i g sn phm ny.
Tha mn yu cu ngi dng l yu t cht lng quan trng nht. hiu
yu cu ngi dng khng nht thit phi l mt chuyn gia trong lnh vc
ng dng. Tuy nhin, hiu bit cht t v n s gip cho vic kim th tt
hn.
Khng c gi thit bt c ci g khi tm hiu v c t. Khi ta kho st
mt phn ca c t v c g khng hiu th khng c cho l n ng.
Ta s dng c t thit k cc ca kim th sau ny. V th, nu khng

4.1. KHO ST C T

81

hiu c c t th s khng thit k tt cc ca kim th. Xem xt c t


theo quan im ngi dng gip ta pht hin nhng li b st hoc sai vi
yu cu ca h. Mt iu cn lu l tnh an ninh v bo mt thng c
gi thit bi ngi dng. Khi gi nh l ngi dng, ngi kim th khng
c b qua yu cu ny.
4.1.1.2

Hy nghin cu cc chun v hng dn hin hnh

Trn th gii c nhiu nghin cu v cch con ngi s dng my tnh, v


hin nay c nhng chun c v phn cng ln phn mm v giao din vi
ngi s dng, tng tc ngi my,... V th, phn mm tt nht hy tun
theo cc chun quy nh ny. Cc chun ny c ci tin p ng tt
nht ngi dng. Sau y l mt vi chun v hng dn ta c th nghin
cu p dng trong c t phn mm:
Hp thc cc thut ng v quy c. Nu phn mm c lm
ring cho mt cng ty no hy s dng cc thut ng v quy c
ca h.
Yu cu cng nghip. Trong mi lnh ng dng nh y t, dc phm,
ti chnh, ..., u c cc chun ring v nghim ngt ca h m phn
mm phi tun th.
Chun quy nh bi chnh ph. Chnh ph c nhng quy dnh, c
bit trong lnh vc quc phng v qun l m phn mm phi tun
th.
Giao din ha vi ngi s dng (GUI). Cc phn mm chy
trong Windows hoc Macintosh phi tun th cc quy nh v giao
din ha ca cc h iu hnh ny.
Chun bo mt. Phn mm c th phi tha mn mt s quy nh
v bo mt m cn phi c chng nhn v cp php.
Ngi kim th cn nm c cc chun ny kim th xem phn mm
c tha mn hay khng, c g b b qua hay khng. Cc chun ny c coi
l mt phn ca c t khi thm nh phn mm.

82

CHNG 4. KHO ST C T V M NGUN

4.1.1.3

Hy xem xt v kim th cc phn mm tng t

Mt trong cc phng php hiu phn mm ca ta s nh th no l


nghin cu cc sn phm tng t. c th l sn phm cnh tranh hoc
sn phm no ging nh sn phm ta ang pht trin. Rt c th iu
c lm bi ngi qun l d n hoc chnh ngi vit c t cho sn
phm ta ang pht trin. Cc phn mm khng th ging ht nhau (l l do
ta xy dng sn phm tng t), nhng vic nghin cu cc sn phm
tng t ny gip ta xy dng cch tip cn kim th sn phm ca mnh.
Nhng im cn tm kim khi xem xt cc sn phm tng t bao gm:
Kch c. Cc c trng s nhiu hn hay t hn? Chng trnh s t
hay nhiu lnh hn, vic kim th c b nh hng bi kch c khng?
phc tp. Tng t nh kch c, phc tp s cao hn hay thp
hn, v iu nh hng th no n kim th?
Tnh kh kim th. Liu ta c ti nguyn, thi gian v trnh
kim th phn mm nh vy?
Cht lng v tin cy. Liu phn mm ny i din cho cht
lng ca phn mm ang xy dng, tin cy s cao hn hay thp
hn?
Tnh bo mt. Phn mm cnh tranh ny c tnh bo mt so vi sn
phm ta ang pht trin th no?
Ta s thu c nhiu kinh nghim kho st c t ca sn phm ca mnh
bng vic xem xt trn y.

4.1.2

Cc k thut kim th c t mc thp

Sau khi hon thnh vic kho st c t bc cao, ta hiu r hn v sn


phm ca mnh v nhng yu t bn ngoi nh hng n thit k. c
trang b nhng thng tin ny, ta s tip tc kho st c t mc thp v
chi tit. Mc ny s gii thch cc chi tit tin hnh vic ra sao.

4.1. KHO ST C T
4.1.2.1

83

Danh sch cc hng mc cn thm nh v cc thuc tnh


ca c t

Mt c t sn phm c xy dng tt cn c tm thuc tnh sau y:


y . Liu c t cn thiu ci g khng? chi tit cha?
Liu n bao gm mi iu cn thit khng ph thuc vo ti liu
khc?
Trng ch. Liu n cung cp li gii ng n cho bi ton, liu
n xc nh y cc mc tiu v khng c li.
Chnh xc, khng nhp nhng v r rng. M t c chnh xc
khng, c r rng v d hiu khng, liu cn c g l nhp nhng vi
ngha khng xc nh?
Tng thch. Cc c trng v chc nng c m t c b xung t
vi nhau khng?
Hp l. Cc khng nh c thc s cn thit m t c trng sn
phm khng? C g tha khng? C th truy ngc v yu cu ca
ngi dng khng?
Kh thi. Liu c t c th c ci t trong khun kh nhn lc,
cng c, ti nguyn, thi gian v kinh ph cho php hay khng?
Phi m lnh. Trong c t khng c dng cc cu lnh hoc thut
ng cho ngi lp trnh. Ngn ng dng trong c t phi l ph bin
vi ngi dng.
Kh kim th. Liu cc c trng c th kim th c? Liu
cung cp thng tin c th kim th v xy dng cc ca kim
th?
Hy duyt c t (vn bn, hnh v, ...) v xem n c cc thuc tnh nu
trn y cha.

84

CHNG 4. KHO ST C T V M NGUN

4.1.2.2

Danh sch cc hng mc cn thm nh v cc thut ng


ca c t

Bn cnh danh sch cc thuc tnh trn y l danh sch cc t hay c vn


cn tm trong c t khi phn bin. S xut hin ca cc t ny c th
tit l rng cc c trng c m t cha c suy ngh thu o v khng
gp cc thuc tnh trn y. Hy tm cc t ny trong c t v xem xt
cn thn xem c li khng.
Lun lun, mi mt, tt c, khng c, khng bao gi. Nhng
t nh vy m t s tuyt i v chc chn. Hy xt xem tnh trng
c ng nh vy khng, c trng hp no vi phm cc khng nh
hay khng.
Tt nhin, do , r rng l, hin nhin l. Cc t ny c dng
thuyt phc ngi khc chp nhn ci g . ng c ri vo cc
by .
No , i khi, thng thng, thng gp, hu ht. Cc t
ny l nhp nhng, khng c ngha r rng v khng th kim th,
chng hn bn phi kim th tnh i khi th no?
Vn vn, chng hn, nh vy. Cc t ny thng m t th m
khng th kim th c.
Tt, nhanh, r, hiu qu, n nh. Nhng t khng nh lng
nh vy s m t cc hng mc khng th kim th c nu khng
c lm chi tit ha sau ny.
X l, t chi, b qua, b kh. Nhng thut ng ny thng du
trong n nhng chc nng cn phi c t y .
Nu ... th (thiu tri li). Trng hp tri li c th b b qun.
Hy trnh cc khng nh nh vy.
Trn y l k thut kim th hp en tnh, tc l phn bin c t ca
sn phm, tm xem c t c li khng. Khi c t c hon thnh, m
ngun ca chng trnh c pht trin da trn c t. By gi ta s dng
k thut tng t phn bin m ngun.

4.2. KHO ST M NGUN

4.2

85

Kho st m ngun

Mc ny gii thiu cc k thut c s tin hnh kim chng thit k v


m ngun ca phn mm. Ni dung chnh ca mc ny bao gm vic phn
tch li ch ca cng vic, cc kiu kho st m ngun, mt s hng dn v
chun lp trnh, v cch chung kho st m ngun nhm tm li.

4.2.1

Kho st thit k v m ngun hay l vic kim


th hp trng tnh

Kim th tnh tc l vic kim th ch gm vic kho st m khng cn tin


hnh chng trnh, cn kim th hp trng l vic kim th c trong tay m
ngun ca chng trnh. V th kim th hp trng tnh chnh l vic kho
st thit k v m ngun ca chng trnh. Cng vic ny bao gm mt quy
trnh kho st mt cch cn thn v c phng php i vi thit k, kin
trc v m ngun ca phn mm tm li m khng cn thc thi phn
mm. Cng vic ny cn c tn khc na l phn tch cu trc.
L do hin nhin tin hnh vic kim th hp trng tnh l nhm pht
hin li sm, v c th pht hin nhng li m kh c th c pht hin
v nh v bng cc k thut kim th hp en ng. V th vic tp trung
nhn lc vo vic kho st thit k ca phn mm giai on sm ca qu
trnh pht trin s cho hiu qu cao v chi ph.
Mt li ch thit thc na ca vic tin hnh kim th hp trng tnh
l n cung cp cho cho ngi kim th hp en ng nhng thng tin quan
trng xc nh nhng c trng d b mc li tm cc ca kim th
thch hp v hiu qu.
Tuy nhin, vic kim th hp trng tnh khng phi lc no cng c
tin hnh. Nhiu ngi khng nhn thc y tm quan trng ca n v
cn hiu lm rng cng vic ny tiu tn thi gian, tn km v khng nng
sut. Tnh hiu qu ca vic lp trnh theo cp (lp trnh vin) ca phng
php pht trin phn mm Agile chng t hiu qu ca kim th hp
trng tnh. Ngy nay ngy cng nhiu cng ty pht trin phn mm p dng
k thut ny, v v th, c hi cho nhng ngi lm kim th hp trng tnh
ngy cng nhiu. Sau y l cc loi kim th hp trng tnh ph bin.

86

CHNG 4. KHO ST C T V M NGUN

4.2.2

Phn bin hnh thc

Phn bin hnh thc l quy trnh tin hnh kim th hp trng tnh. Quy
trnh ny c th c p dng nhiu mc khc nhau, t mt cuc hp
n gin gia hai lp trnh vin cho n cuc thanh tra chi tit v nghim
tc i vi thit k v m ngun. C bn hng mc c bn cho mt ln phn
bin hnh thc:
Xc nh vn . Mc ch ca phn bin l tm xem phn mm c
vn g khng, khng ch l nhng th b sai, m c nhng th cn
thiu. Tt c nhng ph phn ny l nhm vo thit k hoc m ngun
ang c kho st ch khng nhm vo ngi to ra chng. Ngi
tham gia khng c php nhm vo c nhn no.
Tun th cc quy tc. Cn xc nh mt tp cc quy tc tun th.
Nhng quy tc ny c th l: lng m ngun phn bin (thng
l vi trm dng lnh), thi gian dnh cho vic phn bin (vi gi),
nhng g cn c nhn xt, vn vn. iu ny l quan trng v ngi
tham gia s bit vai tr ca h l g, v h k vng ci g, nhm lm
cho vic phn bin trn tru hn.
Chun b. Mi ngi tham gia u phi chun b v ng gp vo
vic phn bin. Ty thuc vo kiu phn bin m mi ngi tham gia
c th c cc vai tr khc nhau. H cn bit nhim v v trch nhim
ca mnh v sn sng hon thnh tt chng trong vic phn bin. Hu
ht cc vn c pht hin l giai on chun b ch khng phi
giai on phn bin thc s.
Vit bo co. Nhm phn bin cn a ra mt bo co bng vn bn
tm tt kt qu ca vic phn bin v thng bo cho nhng ngi tham
gia phn cn li ca d n pht trin sn phm ny. Nhng ngi ny
cn bit kt qu ca bui hp: bao nhiu vn c pht hin, chng
c pht hin ch no, vn vn.
Vic phn bin hnh thc ch c hiu qu khi tun th mt quy trnh
c xc nh trc. Vic ny, khi c tin hnh thc s nghim tc s l
cch rt tt pht hin li.
Ngoi vic tm ra cc vn i vi thit k v m ngun, vic phn bin
hnh thc cn c vi kt qu gin tip na l:

4.2. KHO ST M NGUN

87

Truyn ti thng tin. Nhng thng tin khng gm trong bo co


hnh thc cng c truyn ti. V d, ngi kim th hp en ng
c th bit c vn ang nm ch no. Ngi lp trnh t kinh
nghim c th hc hi thm c t nhng ngi c kinh nghim.
Ngi qun l c th bit r hn v tin ca d n so vi k hoch.
Cht lng. Khi m m ca mt ngi lp trnh s b kim duyt
mt cch chi tit tng dng mt, ngi lp trnh s cn thn hn trong
vic vit chng trnh.
Tnh ng i. Khi vic phn bin c tin hnh mt cc thc s,
n s l ch ngi lp trnh v ngi kim th gp g v pht trin
lng knh trng ln nhau v k nng cng vic v hiu bit v cng vic
ca nhau cng nh tm quan trng ca h.
Li gii. Li gii cho cc vn c pht hin c th c tm thy
thng qua vic tho lun ngoi cuc hp.

4.2.3

Phn bin cho

Phn bin cho l cch phn bin d nht v t hnh thc nht. iu ny
cng ging nh loi tho lun ti cho bn bit phn ca ti v bn cho ti
bit phn ca bn. Phn bin cho thng c t chc gia lp trnh vin
thit k kin trc hoc vit m ngun v ngi lp trnh khc hoc ngi
kim th trong vai tr ngi phn bin. Nhm nh ny s kho st m ngun
cng nhau tm li hoc cc vn tn ti. m bo vic kho st l
hiu qu v khng tr thnh cuc tn gu, mi ngi cn m bo bn hng
mc nu trong phn bin hnh thc. V phn bin cho l t hnh thc hn,
nn bn hng mc ny thng c gim nh. Tuy nhin, chng vn gip
vic tho lun v m ngun v tm li hiu qu hn.

4.2.4

Thng qua

Thng qua l bc k tip hnh thc sau phn bin cho. Trong bui thng
qua, ngi lp trnh s trnh by hnh thc v m ngun ca mnh trc mt
nhm gm nm ngi gm nhng ngi lp trnh khc v ngi kim th
h thng qua. Nhng ngi ny nhn c mt bn sao ca m ngun

88

CHNG 4. KHO ST C T V M NGUN

ny h xem xt trc v chun b nhn xt, cu hi hoc thc mc cho


bui thng qua.
Ngi trnh by c m ngun theo tng dng hoc tng hm, gii thch
chng lm g v ti sao li c xy dng nh vy. Ngi nghe s hi khi c
iu g thc mc. So vi phn bin cho, s ngi thng qua s nhiu hn,
nn nhng ngi ny phi chun b trc cho vic phn bin v tun th cc
quy tc. iu quan trng l sau phn bin, ngi trnh by phi vit bo co
v cc vn c pht hin v k hoch khc phc.

4.2.5

Thanh tra

Thanh tra l loi hnh hnh thc nht ca vic kho st m ngun. Vic ny
c t chc cao v i hi ngi tham gia c o to. Thanh tra khc vi
phn bin cho v thng qua ch ngi trnh by m ngun, gi l ngi
trnh by hoc c gi, khng phi l ngi vit ra m ngun. iu ny i
hi ngi trnh by phi c v hiu c t liu cn trnh by v s cho
kin khch quan v cch th hin khc trong cuc hp thanh tra.
Nhng ngi tham gia khc c gi l cc thanh tra vin. Nhim v
ca mi thanh tra vin l phn bin m ngun t cc kha cnh v gc
khc nhau, chng hn ca ngi dng u cui, ngi kim th, hoc ngi
bo tr sn phm. iu ny gip vic a cc quan im khc nhau v sn
phm ra phn bin, v thng l xc nh c cc li khc nhau ca sn
phm. Cn c mt thanh tra vin duyt m t cui n u (theo kiu hi
quy) m bo m ngun c duyt y . Cng cn mt vi thanh tra
vin lm iu hnh vin v th k m bo cc quy tc c tun th v
bui hp thanh tra c tin hnh hiu qu.
Sau bui hp thanh tra, cc thanh tra vin c th cn gp nhau ln na
tho lun v cc li c pht hin v lm vic vi iu hnh vin
chun b bo co v xc nh iu cn lm khc phc li. Ngi lp trnh
sau s thay i m ngun a ra bn c sa li v iu hnh
vin s kim tra xem vic sa c lm thc s hay cha.
Ph thuc v phm vi, kch thc v tm quan trng ca phn mm m
cc bui thanh tra tip theo c nn t chc hay khng pht hin cc li
cn li.
Thanh tra chng t l mt k thut pht hin li hiu qu trong cc

4.2. KHO ST M NGUN

89

sn phm phn mm, c bit trong cc ti liu thit k v m ngun. K


thut ny ang tr thnh ph dng v cc cng ty v i ng pht trin sn
phm pht hin ra nhng li ch to ln m n mang li.

4.2.6

Cc chun v hng dn trong lp trnh

Trong vic phn bin hnh thc, cc thanh tra vin tm kim cc vn tn
ti v cc thiu st trong chng trnh. Chng l cc li kinh in chng hn
ci g b vit sai. Chng c pht hin bng cch phn tch m ngun.
Cng vic ny c tin hnh hiu qu hn bi nhng ngi lp trnh v
kim th giu kinh nghim.
Cn mt vn khc na trong lp trnh l chng trnh chy ng
nhng khng c vit theo cc chun v hng dn quy nh trc. Cc
chun khi c thit lp th cn phi c tun th. Cn cc hng dn
l nhng kinh nghim thc hnh c ngh l cch lm tin li hn cho
cng vic. Chun l nghim ngt, cn hng dn c th t nghim ngt hn.
C th c cc mu phn mm chy n nh nhng vn khng ng do
khng tha mn chun. C ba l do nn tun theo chun v hng dn:
tin cy. Thc t chng t rng chng trnh vit theo chun
v hng dn c tin cy v bo mt cao hn.
Tnh d hiu v d bo tr. Cc chng trnh vit theo chun v
hng dn d c, d hiu v d bo tr hn.
Tnh d chuyn i. Cc chng trnh vit theo chun v hng dn
d c chuyn i dch bi cc chng trnh dch khc nhau cho
cc thit b tnh ton vi cc h iu hnh khc nhau.
Cc d n khc nhau c th i hi cc chun khc nhau (ni b, quc
gia hoc quc t). iu quan trng l i ng d n phi c chun, c hng
dn cho lp trnh v phi c kim chng xem chng c c tun th
khng trong khi phn bin.
Sau y l vi v d v chun v hng dn trong lp trnh.
Hnh 4.1 gii thiu mt v d v chun lp trnh lin quan n vic s
dng cc lnh go to, if-then-else v while trong ngn ng C. S dng cc

90

CHNG 4. KHO ST C T V M NGUN

CH : 3.05 Hn ch v iu khin i
vi cc cu trc iu khin
CHUN
Khng c dng lnh go to (v do c
nhn lnh).
Dng chu trnh while thay cho do-while tr
khi lgic ca bi ton i hi tng minh l
phi tin hnh thn chu trnh t nht mt
ln khng ph thuc vo iu kin chu trnh.
Nu lnh if-then-else c th thay th continue th phi dng if-then-else.
THUYT MINH
Lnh go to b cm v d gy li v kh c,
kh theo di dng iu khin ca chng
trnh. Thut ton cn c trnh by theo
cch c cu trc.
Lnh do-while khng nn dng v chu trnh
cn c vit di dng thng nht l iu
kin chu trnh phi c kim tra trc khi
tin hnh thn chu trnh.
...

Hnh 4.1: Mt v d v chun lp trnh trong mt s ngn ng lp trnh.

4.2. KHO ST M NGUN

91

lnh ny khng cn thn d gy li v hu ht cc chun lp trnh u t


ra cc quy tc cho vic s dng cc lnh ny.
Chun thng c bn phn chnh nh sau:
Tiu m t ch m chun ni n.
Chun (hoc hng dn) m t chnh xc ci g cho php v ci g
khng cho php.
Thuyt minh nu l do ti sao phi c chun .
V d ch ra vi mu v vic s dng chun. Phn ny khng lun l
cn thit.
Cu hi t ra l cc chun s c ly t u. Chng hn khi xy dng
cc chun cho mt d n phn mm, c mt s ngun ta tham kho. Cc
chun quc t v cc chun ca M v ca quc gia sn c vi hu ht cc
ngn ng lp trnh v cng ngh thng tin. Mt s ngun l:
Vin tiu chun quc gia Hoa K (ANSI), www.ansi.org
Tp on cng ngh quc t (IEC), www.iec.org
T chc quc t v chun (ISO), www.iso.ch
y ban quc gia v chun trong cng ngh thng tin ca Hoa K
(NCITS), www.ncits.org
Cc t chc v hip hi chuyn mn cng cung cp cc ti liu hng dn
v thc hnh v lp trnh nh:
Hip hi my tnh M (ACM), www.acm.org
Vin k ngh in v in t (IEEE), www.ieee.org

4.2.7

Danh sch cc hng mc chung cho vic kho st


m ngun

Mc ny nu nhng vi vn cn tp trung tm ti khi kho st m ngun


ngoi vic i chiu vi cc chun v hng dn.

92

CHNG 4. KHO ST C T V M NGUN

Li tham chiu d liu: l cc li gy ra do vic dng cc bin, hng,


xu hoc bn ghi m cha c m t hoc khi to.
Liu c trong chng trnh vic tham chiu n bin cha khi to gi
tr?
Gi tr ca ch s mng hoc xu c l nguyn v c nm trong cn v
s chiu cho php?
Cc php tnh trn ch s mng c vt ra ngoi cn cho php?
La chn gia bin v hng c hp l?
C vi phm v kiu trong khi gn gi tr cho bin?
Gi tr tham chiu ca con tr c nm trong vng nh c phn phi?
Tng ng gia tham s hnh thc v thc s trong cc li gi hm v
chng trnh con.
Li m t d liu: Cc li ny gy bi vic m t khng y hoc do
vic dng bt cn cc bin v hng s.
Liu cc bin c c gn di, kiu, lp ng n? Chng hn dng
kiu xu thay cho kiu mng.
Liu cc bin c c khi to v khi to hp kiu khi m t?
Cc bin vi tn tng t nn trnh v d dng nhm.
C bin khng c tham chiu hoc tham chiu ch mt ln?
Phm vi ca m t bin c b vi phm?
Li tnh ton: l cc li v ton, gy ra kt qu tnh ton khng nh
mong i.
C hay khng vic tnh ton s hc vi cc kiu khc nhau?
Tnh ton vi cc bin cng kiu nhng khc di.

4.2. KHO ST M NGUN

93

Cc quy tc bin i kiu ca chng trnh dch c c hiu v dng


ng?
Gi tr ca biu thc v phi ca php gn vt ra ngoi min gi tr
ca bin v tri.
Li trn nh trong khi c lung gi tr ca biu thc, li chia cho
khng.
Li v sai s lm trn.
C nhm ln v th t c lng cc php ton trong biu thc.
Li so snh: Cc li v so snh v quyt nh chnh l cc vn hay gp
v iu kin bin. Chng l:
Quan h trong so snh c ng n, chng hn thay cho <.
nh hng ca sai s lm trn trong so snh.
Cc biu thc Boolean c c vit ng khng? Cc ton hng c
c dng ng kiu v ngha (kiu boolean v kiu nguyn)?
Li iu khin: l cc li gy ra, trc tip hay gin tip, do dng
khng ng cc cu trc iu khin nh lnh chu trnh v r nhnh.
Cc t kha m v ng nhm cc lnh c snh c vi nhau?
n th, chu trnh c kt thc nh mong mun?
C chu trnh an xen?
C nhnh chng trnh khng bao gi c tin hnh? Nu c th liu
c l hp l?
Liu cc nhnh ca lnh case c tng thch vi iu kin ca n.
Liu c chu trnh vi vic lp thn chu trnh khng mong i do ch s
vt cn.

94

CHNG 4. KHO ST C T V M NGUN

Li truyn tham s trong chng trnh con: l cc li v s khng


tng thch gia tham s thc s vi tham s hnh thc, li v truyn theo
tham chiu hay theo gi tr, vn vn.
Li v u vo v u ra: l cc li v c tp u vo, khun dng
khng tng thch khi vo d liu t bn phm, li c t thit b khng sn
sng cho trao i d liu, vn vn.
Cc li khc: l cc li cha c lit k trn y, chng hn li v
ngn ng, m k t (UNICODE or ASCII), li hin th, li v chuyn i
gia cc h iu hnh, li v tng thch vi phn cng khc nhau, vn vn.
Tm li, vic kho st pht hin li ngy cng chng t l mt k
thut kim th hiu qu nhng n i hi ngi kim th phi c chun
b v o to, v lm vic vi nng sut cao, v phi tun th cc quy tc
khi p dng k thut ny.

4.3

Bi tp

1. Liu ngi kim th c th tin hnh kim th hp trng trn c t?


2. Hy trch dn mt vi chun v hng dn ca Windows v Macintosh.
3. Khng nh sau y trong c t sai im no, ti sao: khi ngi
dng chn ty chn rt gn b nh, chng trnh s nn danh sch
cc a ch e-mail nh nht c th dng cch tip cn ma trn tha
Huffman.
4. Ci g lm cho ngi kim th bn khon trong c t sau y: phn
mm s cho php ti 100 triu kt ni ng thi, d rng thng thng
khng c qu mt triu ngi dng.
5. Hy lit k cc li ch ca vic kim th hp trng tnh.
6. Kim th hp trng tnh c th pht hin c cc vn tn ti ca m
ln nhng th cn thiu. Ni th ng hay sai?
7. Phn bin hnh thc gm nhng hng mc no?

4.3. BI TP

95

8. Ngoi vic l hnh thc hn, s khc nhau ln nht gia thanh tra v
cc loi phn bin khc l g?
9. Nu mt lp trnh vin c thng bo l c th dng tn bin vi 8 k
t vi k t u vit hoa (ch in). iu l chun hay hng dn?
10. Bn c nh p dng danh sch cc hng mc chung cho vic kho st
m ngun trong chng ny phn bin m trong d n phn mm
tng lai?
11. Li v bo mt gy ra bi vic trn b m thuc loi no trong danh
sch ni trn?

96

CHNG 4. KHO ST C T V M NGUN

Chng 5
Kim th hm
5.1

Tng quan

Kim th hm (functional testing) l cc hot ng kim tra chng trnh


da trn ti liu m t chc nng, yu cu phn mm, hay cn gi l c t
chc nng (functional specification). c t chc nng l ti liu m t yu
cu, hnh vi ca chng trnh mong mun. Ti liu ny l c s chng
ta tin hnh xy dng cc ca kim th, thut ng chuyn mn gi l thit
k kim th (test design) v ngi thc hin vic ny l ngi thit k kim
th. Thit k kim th l hot ng chnh trong kim th hm.
Cn nhn mnh rng kim th hm l vic thit k cc ca kim th hm
ca chng trnh ch da trn c t ca chng trnh m khng da trn
vic phn tch m ngun ca chng trnh. Kim th hm cn c gi vi
tn khc chnh xc hn l kim th da trn c t, hay kim th hp en,
hay kim th chc nng. Cn vic thit k kim th c da vo m ngun
ca chng trnh c gi l kim th cu trc, hay kim th hp trng.
Kim th hm l mt k thut c bn gip pht hin nhiu li m kim
th hp trng khng pht hin c. V d d thy nht l cc li do ci
t (implementation) khng y so vi c t. Nu phn mm thiu hn
mt chc nng th chng ta d nhn thy, nhng nu phn mm thiu mt
trng hp ca mt chc nng th vic ny khng d pht hin nu khng
kim tra k chng trnh so vi c t.
Ti liu c t dng thit k cc ca kim th c th n gin l m t
97

98

CHNG 5. KIM TH HM

v chc nng ca chng trnh vit bng ngn ng ca ngi s dng, nhng
thng l c cc ti liu phn tch, thit k cc mc chi tit hn vi cc
hnh v, bng biu, s lm r hnh vi ca chng trnh v chng m t
st hn cc tnh cht hm ca chng trnh m chng ta s da vo
thit k kim th. Chng ta gi chung cc ti liu ny l c t chc nng.
D nhn thy do ch da trn c t chc nng, kim th hm c u im
l c th thc hin c sm, trc khi ci t chng trnh. Thi im tt
chng ta bt u thit k kim th l khi ti liu c t n nh, nhng
cng c nhiu qui trnh phn mm hin i ang y vic ny ln sm hn,
ngay trong giai on xc nh yu cu lng ghp xc nh cc ca kim
th. Cc ca kim th ny thng c m t di dng cc v d, va c
tc dng gii thch, lm r ti liu c t, va c tc dng s dng lun lm
cc kch bn kim th, cc ca kim th [Bec02, Kar12].
Thng thng kt qu ca vic thit k kim th hm s a ra c t
ca kim th. Tng t nh khi nim c t chng trnh l m t chng
trnh mong mun, c t kim th m t cc ca kim th cn c to ra.
T mt c t ca kim th chng ta c th to ra nhiu ca kim th c th
tin hnh kim tra vi chng trnh. V d vi mt hm gii phng trnh
bc hai vi u vo l ba h s l a, b, c, c t ca kim th cho nghim kp
l vi mi a, b, c tha mn b2 = 4ac. T c t ny ta c th to ra cc ca
kim th c th, v d a = 1, b = 2, c = 1, v kt qu mong i l nghim
kp 1.
Bn cht ca cc c t ca kim th l mi c t ca kim th s xc
nh mt lp hnh vi ca chng trnh. Do vic thit k kim th hm l
vic phn tch c t cc hnh vi c th ca chng trnh thnh mt s lp
m mi lp ny s c hnh vi nht qun hay tng t. Vi v d hm gii
phng trnh bc hai trn chng ta c th chia c t thnh hnh vi phng
trnh cho nghim kp, hnh vi phng trnh cho kt qu v nghim, v.v.
Vic phn tch c t s gip chng ta xc nh v phn tch c cc
lp ny. Bn cnh vic phn tch cng thng gip chng ta xc nh
nhng im khng r rng, khng y ca c t. y l qu trnh phn
tch tng hp nhiu ngun thng tin, t c t, t kin thc, kinh nghim
ca ngi thit k kim th, do n mang tnh th cng v cng d mc
li. Nhiu chuyn gia v thit k kim th hm nhiu khi vn b st mt s
ca kim th quan trng.

5.1. TNG QUAN

99

gim thiu cc sai st ny, chng ta cn c phng php h thng


gip chia qu trnh thit k ny thnh cc bc c bn thc hin. T
mt s bc s c t ng ha gim cng sc, gim sai st, v tng
c cht lng cng vic. Thc t vic t ng hon ton cha thc hin
c v mt s bc c bn vn phi thc hin th cng. Do k nng v
kinh nghim ca ngi thit k kim th ng vai tr quyt nh n cht
lng ca b kim th.
hiu r hn cc cng vic trong thit k kim th hm, chng ta gi
s ang thit k kim th cho chng trnh P v gi s Y = P (X) trong
X l vec-t ca n bin u vo v Y l vec-t ca m bin u ra. Da trn
hiu bit ca chng ta v c t ca chng trnh P , vi mt vec-t u vo
X = (a1 , .., an ) vi ai l cc gi tr c th th chng ta tnh c mt vec-t
kt qu c th Y = (b1 , .., bm ). Kt qu Y ny l c gi l kt qu mong
i. Kt qu thc ca chng trnh P vi u vo X khi chy chng trnh
l P (X). Chng ta cn kim tra kt qu mong i ng bng kt qu thc
ca chng trnh, tc l Y v P (x) l mt hay khng. Nu ng th chng
trnh chy ng vi X. Nu chng trnh chy ng vi mi gi tr X
nh m t trong c t th chng ta kt lun chng trnh P c ci
t ng so vi c t.

5.1.1

S phc tp ca kim th hm

hiu s phc tp ca kim th hm chng ta xem mt chng trnh n


gin Y = roots(X) tnh nghim ca phng trnh bc hai v c thit
k nh on m 5.1. Theo hiu bit ca chng ta, u vo X l ba tham s
a, b, c, v kt qu tr v c gn cho hai bin root_one, root_two, tc l
Y l cp gi tr ny. Vi cch tr v kt qu nh on m ny th hm trong
m ngun khng nht thit tr v tham s nh hm ton hc. Hm roots
trong on m ny tr v void, tc l khng tr v g m kt qu c ly
t hai bin ton cc. Tng t nh vy, u vo a, b, c cng c th truyn
qua cc bin ton cc, nn chng ta cn cn thn khi xc nh X v Y .
on m 5.1: Chng trnh gii phng trnh bc hai
double root_one , root_two ; // two solutions
// Solving the equation : ax ^2 + bx + c = 0
void roots ( double a , double b , double c ){

100

CHNG 5. KIM TH HM
...

Vi nhng hiu bit v hm gii phng trnh bc hai nh vy chng ta


s thit k kim th nh th no? Kt qu cui cng cng chng ta phi
a ra cc b gi tr cho a, b, c v tnh bng tay kt qu mong i
cho hai nghim. Sau chng ta phi chy chng trnh vi cc b gi tr
ca a, b, c v so snh kt qu ca chng trnh vi kt qu mong i.
on m trn chng ta cho rng cc bin ny c kiu double. Nu gi s
n gin hn chng l cc bin kiu s nguyn 32-bit th chng ta c n
3
232 1028 gi tr hp l cho a, b, c. Nu gi s chng trnh chy vi tc
1.000.000.000.000 (1 t) ca kim th mi giy th chng ta vn cn n
hn 2.5 t nm mi chy xong (chnh xc l 2,510,588,971 nm, 32 ngy, v
20 gi).
Nh vy kim th theo kiu vt cn cho chng ta khng nh chc chn
hm c ci ng hay cha, nhng chng ta khng th tnh ton th
cng cc kt qu mong i c vi s lng nhiu nh vy, v vi ngay c
my tnh cng khng kh thi trn thc t thc hin khi lng tnh ton
ln nh vy.
Mt cch khc l chng ta kim th hm roots ny bng cch ly ngu
nhin cc b gi tr ca X. Phng php kim th ngu nhin ny s kh
c th to ra ca kim th tha mn b2 4ac = 0. Phn phi ca cc kh
nng c nghim, c nghim kp v khng c nghim khng nh nhau nn
kim th ngu nhin s kh pht hin nhng li cc trng hp c bit.
Do chng ta cn phng php tt hn c th p dng cho cc trng
hp tng qut.
Trc ht chng ta hy xem cc cng vic chnh ca thit k kim th
cho chng trnh Y = P (X):
Xc nh cc bin u vo, u ra v min gi tr ca tng bin. Tc
l chng ta phi xc nh X v Y gm c nhng bin no, v min
gi tr ca tng bin. Gi s X gm cc bin x1 , .., xn v Y gm cc
bin y1 , .., ym , chng ta phi xc nh tng Dom(xi ) v Dom(yj ) vi
i = 1..n, j = 1..m trong Dom(x) l tp cc gi tr x c th nhn.
Chn mt s b gi tr ca X lm ca kim th, v tnh (tay) kt
qu mong i tng ng cho tng b gi tr u vo. Vi mt b gi

5.1. TNG QUAN

101

tr u vo c th, v d X = (a1 , .., an ), chng ta phi tnh c


Y = (b1 , .., bm ) c th so snh vi kt qu ca chng trnh l
P (a1 , .., an ) t bit chng trnh ng nh mong i cha. Vic
tnh th cng ny c th khng tm thng vi nhng chng trnh
phc tp. Vic chn b gi tr u vo thng da trn hiu bit chng
ta v min d liu, v chng ta thng ly cc gi tr c bit v gi
tr bnh thng cho mi min ri kt hp chng vi nhau.
Sinh ca kim th da trn min u vo ca cc bin c hai c trng
chnh. Mt l s lng ca kim th c th c qu nhiu khi chng ta
phi to cc t hp ca cc gi tr c bit hoc i din ca cc bin.
Hai l vic tnh kt qu mong i thng l n gin v chng ta
hiu chc nng ca chng trnh hoc c th tnh xui kt qu theo
c t.
Ngc li, chng ta c th ly mt s b gi tr u ra mong i Y
trc, ri tnh ngc mt b gi tr u vo X xy dng cc ca kim
th. Khi ly b gi tr u ra mong i chng ta s thng chn gi tr
c bit ca min u ra, hoc chn cc b u ra da trn hiu bit
ca chng ta v chng trnh. Nh bi ton gii phng trnh bc hai
chng ta c th ly Y c nghim kp, c hai nghim tch bit, v.v.
Vic sinh ca kim th da trn min u ra c c trng ngc li so
vi trn. Thng thng cc hm c s u ra t hn v chng ta cng
khng thng phi ly t hp ca cc gi tr c bit ca u ra. Vic
tnh ngc li gi tr u vo s kh khn hn v chng ta phi ln
ngc li cc bc trong c t.
Do khng th kim th vt cn c nn chng ta cn xc nh mt s
ca kim th i din cho cc lp hnh vi ca chng trnh. Bi ton thit k
kim th tr thnh bi ton xc nh cc lp i din ca chng trnh, cc
lp ny c th l cc lp ca u vo, cc lp ca u ra, hay cc lp hnh
vi ca chng trnh da trn c t ca n.

5.1.2

Phng php h thng

Vic xc nh cc ca kim th t c t chc nng l qu trnh phn tch


xc nh v chia khng gian u vo/u ra/hnh vi ca chng trnh thnh
cc min con. Phng php h thng s chia qu trnh ny thnh cc bc

102

CHNG 5. KIM TH HM

c bn, t lm tng bc c d dng hn hoc t ng ha mt s


bc nu c th. Phng php h thng gip chng ta xc nh b ca kim
th cha ng thi trnh to ra nhiu ca kim th trng lp, khng
cn thit.
Hnh 5.1 m t cc bc chnh ca mt phng php h thng. Mt s
bc trong qui trnh ny c th phc tp, mt s bc kh n gin v mt
s bc c th b qua ty theo min ng dng v c t chng trnh cng
nh kinh nghim ca ngi thit k. Da trn qui trnh tng qut ny chng
ta c th a ra cc qui trnh c th bng vic c th ha cc bc trong qui
trnh. Chng ta s xem xt chi tit hn cc bc trong phng php ny.

Hnh 5.1: Cc bc chnh ca phng php h thng cho kim th hm.

5.1. TNG QUAN

103

Xc nh cc chc nng kim th c lp c: c t phn mm


trn thc t l ln v phc tp ngay c vi nhng h thng nh. Chng
thng c phn r thnh cc n v nh hn nh cc h thng con hay c
th hn l cc ca s dng (use case) hoc cc kch bn s dng (user stories).
Chng ta gi chung l cc chc nng. V d trang web tm kim ca Google
c th c tnh nng tm kim, hin th kt qu, hin th qung co, hay ng
k ngi s dng mi, v.v.. Tuy nhin ranh gii ca mt chc nng nhiu khi
khng r rng. V d chc nng tm kim ca Google Search c chc nng
tnh ton mt biu thc s hc nu vn bn tm kim l mt biu thc s
hc.
Khi thit k kim th chng ta tch cc chc nng cng chi tit, c th
cng tt v n va gip n gin vic thit k kim th v va cho php
chng ta xc nh li trong chng trnh d dng hn. Mi ca kim th ch
nn kim tra mt kch bn c th, chi tit ca mt chc nng ca h thng.
Tip vi mi chc nng chng ta s xc nh tt c cc u vo c nh
hng n vic thc hin chc nng v cc u ra c th b tc ng bi
chc nng . Cc u vo v u ra thng c m t tng minh trong
ti liu c t. Nhng cng c nhiu trng hp cc u vo v u ra ny
nm n trong ti liu c t m ngi thit k phi pht hin ra. V d nh
cc c t khng hnh thc m t chc nng ng k ti khon mi thng
ch nu cc trng d liu cn khai bo nhng khng ni g n chi tit kiu
d liu s lu thng tin h s ngi s dng. Hay mt v d khc kh rc ri
vi tn ting Vit khi chng ta ch c hai trng h v tn nhp vo. Mt
l thng thng chng ta khng ni ra c th chiu di ti a, ti thiu, hay
qui nh bng m k t ca cc trng ny. Hai l chng ta khng ni r
phn tn m s nm phn h hay phn tn, nn khi ngi s dng nhp
d liu s xy ra tnh trng mi ngi nhp mt kiu. Tn l Nguyn Vn
Hng th c ngi nhp phn h l Nguyn, phn tn l Vn Hng; c ngi
li nhp h l Nguyn Vn, tn l Hng; li c ngi ch nhp h l Nguyn,
tn l Hng, v ngh phn Vn l tn m khng hi th khng nhp.

Xc nh cc lp gi tr i din: Cc gi tr i din c th c xc
nh trc tip t c t phi hnh thc, nh ngn ng t nhin. Chng cng
c th c xc nh gin tip da trn mt m hnh c xy dng phc
v cho vic ny. Trong c hai trng hp ny mc tiu u l xc nh cc
gi tr ca mi u vo mt cch c lp, bng vic ly cc gi tr lit

104

CHNG 5. KIM TH HM

k tng minh trong c t, hoc thng qua mt m hnh ph hp. Chng


ta cha xt n t hp ca cc gi tr ny. L do l chng ta ang tch bi
ton xc nh cc lp gi tr ca mi u vo v bi ton t hp chng
to thnh cc ca kim th. Tc l chng ta ang tch mt bc phc tp
thnh cc bc n gin hn.
Vi cc c t khng hnh thc ngi thit k kim th phi da vo vic
lit k tng minh cc lp gi tr i din. Trong trng hp ny ngi thit
k kim th cn cn thn xt tt c cc trng hp c th v khai thc ti
a nhng thng tin c sn trong c t. Tng t, vi kt qu mong i u
ra, chng ta cng c th xc nh cc lp gi tr ca min u ra, cng nh
cc gi tr bin v cc gi tr c bit d c li.
V d khi xem xt cc thao tc trn mt danh sch khng rng chng ta
cn xt c trng hp danh sch rng (gi tr li) v danh sch c mt phn
t (gi tr bin chiu di danh sch) l cc trng hp c bit. bc ny
chng ta ch quan tm n tnh cht ca gi tr, ch cha cn c th gi tr
l g. Tc l chng ta quan tm n c t ca kim th ch cha phi ca
kim th c th. Vi v d danh sch mt phn t, chng ta cha cn quan
tm phn t ca danh sch ny c th l g, ch bit danh sch ch c mt
phn t.
lit k cc gi tr khng tng minh chng ta cn xy dng m hnh
hoc mt phn ca m hnh ca c t. V d chng ta c th dng vn
phm m t ngn ng v sinh cc t ca ngn ng ny lit k cc
gi tr cn xc nh. M hnh ny c th c sn trong c t nhng thng
thng ngi thit k kim th phi xy dng chng.
Trong hai cch trn, vic lit k trc tip c v n gin hn v t tn
km hn vic xy dng m hnh sinh ra cc gi tr. Tuy nhin v lu v
di cc m hnh s c gi tr hn, khi khi lng gi tr ln chng ta c th t
ng ha vic lit k, hay chng ta cng c th iu chnh s lng ca kim
th nhiu hay t cn bng vi cc rng buc kim th khc, nh chi ph,
thi gian. Cc m hnh cng c th c s dng li, sa i d dng hn
trong qu trnh pht trin h thng. Quyt nh cui cng nn dng cch
no vn ty thuc vo lnh vc ng dng, k nng ca ngi thit k kim
th, v cc cng c thch hp ang c.

5.1. TNG QUAN

105

Sinh cc c t ca kim th: c t kim th c to ra bng vic t


hp cc gi tr ca cc u vo ca chng trnh ang c kim th. Bc
trn chng ta xc nh cc gi tr i din th bc ny chng ta sinh
cc t hp ca chng bng tch -cc ca cc gi tr i din chn. Nu
bc trc chng ta to ra m hnh hnh thc th bc ny cc c t ca
kim th s l cc hnh vi c th hoc t hp ca cc tham s ca m hnh
v mt c t ca kim th c th c tha mn bi nhiu u vo c th.
Trong c hai cch ny vic to ra tt c cc t hp thng to ra s lng
qu ln cc ca kim th.
V d mt hm c nm u vo, mi u vo c su gi tr i din th
tch -cc s to ra 65 = 7, 776 c t ca kim th. S lng ny l qu
ln vi mt chc nng, ngay c khi c t ng ha v chy bng my tnh
hon ton. Thng thng, rt nhiu t hp l khng hp l hoc khng kh
thi. Chng ta s hc cc phng php gim s t hp ny nhng vn m
bo cht lng ca b kim th.
gim s ca kim th, chng ta cn loi b cc t hp gi tr khng hp
l bng vic a thm cc rng buc v cch t hp. V d hm N extDate
chng ta cn a rng buc trnh to ra cc gi tr khng hp l nh
ngy 31/11/2013. Hoc chng ta cng khng xt ht tt c cc tch -cc
m ch cn mi cp gi tr ca hai bin bt k u xut hin l . Qu trnh
ny c th khng phi mt bc lm l xong m c th cn iu chnh v
th mt s ln c kt qu l b ca kim th ph hp, va hn ch c
cc ca kim th v l khng cn thit, va tit kim c chi ph thc hin
kim th.

Sinh ca kim th v thc hin kim th: Qu trnh kim th hon


tt khi chng ta c th ha cc c t kim th thnh cc ca kim th c
th, ri tnh kt qu mong i ca tng ca kim th, v tin hnh kim tra
vi phn mm. Vic thc hin kim th cn c t ng ha ti a khi c
th, v mt h thng phn mm cn c kim th rt nhiu ln. Ngay c
khi sn phm hon tt, trong tng lai chng ta vn s cn thc hin kim
th nhiu ln na, khi phn mm tin ha, thay i theo nhng yu cu mi,
hay cc li c pht hin v phn mm cn phi sa.

106

5.1.3

CHNG 5. KIM TH HM

La chn phng php ph hp

Trong cc chng sau chng ta s thy mt s k thut kim th hm thch


hp cho cc loi c t chng trnh khc nhau. Vi mt c t c th c
mt s k thut ph hp xy dng cc ca kim th v mt s k thut
s rt kh p dng hoc kt qu s khng tha mn. Mt s k thut c th
cho kt qu nh nhau vi mt s c t. Mt s k thut li b sung cho
nhau nn cn kt hp chng. V d nh khi mi k thut li p dng tt cho
nhng kha cnh khc nhau ca cng mt c t, hoc cc giai on khc
nhau ca vic sinh ca kim th.
Vic la chn k thut to ra cc ca kim th ph thuc vo cc yu
t: tnh t nhin ca c t, dng ca c t, kinh nghim ca ngi thit
k kim th, cu trc ca t chc, cng c sn c, ngn sch v cc rng
buc v cht lng, chi ph thit k v ci t cc h thng h tr.

Tnh t nhin v dng ca c t: Cc k thut kim th khai thc


cc c im khc nhau ca c t. V d, khi bin u vo c mt s rng
buc th c th k thut kim th lp tng ng (Phn 5.3) s ph hp.
Nu c s chuyn dch trong cc trng thi ca h thng th phng php
kim th da trn my trng thi c th nn p dng. Hay khi cc u vo
thay i vi kch thc khng xc nh c th phng php dng ng php
c th ph hp.

Kinh nghim ca ngi thit k kim th: Kinh nghim ca ngi


kim th nhiu khi s nh hng n k thut kim th no c s dng.
V d mt ngi thit k kim th gii v bng quyt nh s thch k thut
khi mt k thut khc cng c th p dng c.

Cng c: Mt s k thut i hi s dng cc cng c m i khi phi


mua nn chi ph cng l mt yu t nh hng n vic la chn k thut
kim th. V d c t s dng UML v c cng c thng mi sinh ca kim
th da trn mt s biu UML th cng c ng vai tr quan trng nh
hng n phng php thc hin kim th, nu ngn sch cho kim th cho
php. Mt s n v lm phn mm chuyn nghip i khi phi xy dng
cc cng c ny phc v cho n v, hoc i khi cho tng d n c th.

5.1. TNG QUAN

107

Ngn sch v rng buc cht lng: Ngn sch v rng buc cht
lng c th dn n s la chn khc nhau v phng php kim th. V
d nu yu cu l nhanh, kim th t ng, nhng khng cn tin cy cao
th kim th ngu nhin l ph hp. Ngc li, yu cu tin cy phi rt
cao th chng ta phi s dng cc phng php tinh vi kim th mt cch
k lng nht c th. Khi chn mt phng php, iu quan trng l phi
nh gi tt c cc yu t v chi ph lin quan.
Chi ph nn tng kim th: Mi c t ca kim th s phi c c
th ha thnh mt ca kim th v c chy i chy li nhiu ln trong sut
vng i ca sn phm. Mi ln chy mt ca kim th bao gm vic phi
a u vo vo chng trnh, thc hin chng trnh, v so snh kt qu
u ra thc t vi u ra mong i. Nu chng ta t ng ha c tt c
cc cng vic ny th phng php t hp sinh ra tt c cc t hp c th
p dng. Tuy nhin nu mt s bc phi thc hin bng tay, hoc chng
ta phi vit m cho tng c t kim th ny th c l chng ta phi chn
phng php khc kh thi v mt thi gian v cng sc.
Tm li kim th hm cng ging nhiu hot ng k thut khc i
hi phi phn tch k lng cc u nhc im chn phng php cn
bng ph hp vi cc kh khn v cc vn khng lng ht c m phi
l ngi thit k c kinh nghim mi c cm gic tt c. Kim th hm
khng phi l vic tp chn mt phng php ti u m l mt lot cc
hot ng tm ra s t hp ca mt s m hnh v k thut to ra
mt tp cc ca kim th tha mn chi ph v rng buc cht lng t ra.
S cn bng ny cng c th m rng ra ngoi thit k kim th sang thit
k phn mm thun li cho vic kim th. Thit k phn mm thch hp
s khng ch gip qu trnh pht trin c tt hn m cn gip vic kim
th cng thun li gip tit kim chi ph tng th ca d n phn mm.

108

5.2

CHNG 5. KIM TH HM

Kim th gi tr bin

Kim th gi tr bin (boundary testing) l mt trong nhng k thut c


p dng ph bin nht trong kim th hm. Chng ta s coi mt chng
trnh l mt hm ton hc vi u vo ca chng trnh tng ng vi cc
tham s ca hm v u ra ca chng trnh l gi tr tr v ca hm. V
hm ton hc l nh x t min xc nh ca hm n min gi tr ca hm.
Chng ta s tp trung vo cc gi tr bin v cnh bin ca hai min u
vo v u ra ny ca hm xy dng cc ca kim th. Khi chng ta dng
bin u ra tc l chng ta cho cc kt qu mong i nm trn bin v
cnh bin u ra.

5.2.1

Gi tr bin

Gi s y = f (x1 , x2 ) vi x1 , x2 , y N l mt hm ton hc ca mt chng


trnh. Khi thng thng x1 v x2 c min xc nh th hin bng cc
bin. V d:
a x1 b v c x2 d
trong a, b, c, d l cc hng s no . Hnh 5.2 th hin min xc nh ca
hai bin ny.

Hnh 5.2: Min xc nh ca hm hai bin.


tng kim th gi tr bin xut pht t quan st nhiu li xy vi
cc gi tr bin ny, khi chng ta khng kim tra khong gi tr hp l ca

5.2. KIM TH GI TR BIN

109

d liu c nhp vo, hay do li lp trnh hoc c t lm cc biu thc


iu kin khng chnh xc. V d ng ra phi l du <= nhng ngi lp
trnh hoc c t li ch vit < hoc ngc li. Kim th vi cc gi tr bin
gip chng ta pht hin cc li ny. Trong nhiu trng hp cc bin ny l
n, khng c vit r ra trong yu cu nn lp trnh vin d mc li khng
kim tra cc gi tr u vo, hoc khng kim tra kt qu c hp l khng
trc khi tr v.
tng kh nng pht hin li, kim th gi tr bin thng ly nm ca
kim th cho mi bin l cc gi tr: cc i, cc tiu, cc gi tr cnh chng
trong min xc nh (gi l cn bin hoc cnh bin), v mt gi tr gia
min xc nh i din cho gi tr thng thng. Chng ta nh ch s cho
chng ln lt l max, min, min, max+ v nom. Hnh 5.3 minh ha cc
gi tr ny.

Hnh 5.3: Cc ca kim th phn tch gi tr bin cho mt hm hai bin.

Thng thng li chng trnh xy ra ngay khi c mt sai st trong phn


mm, ch khng cn kt hp ca nhiu sai st mi gy ra li. Khi cc ca
kim th theo phng php kim th gi tr bin c xy dng bng cch
ly mt b gi tr nom ca cc bin, ri ln lt thay mi gi tr ca tng
bin bng gi tr bin v cn bin to ra ca kim th mi. V d vi hm
f trn ta c b kim th sau, th hin trn Hnh 5.3.

110

CHNG 5. KIM TH HM

{(x1nom , x2nom ),
(x1min , x2nom ), (x1min+ , x2nom ),
(x1max , x2nom ), (x1max , x2nom ),
(x1nom , x2min ), (x1nom , x2min+ ),
(x1nom , x2max ), (x1nom , x2max )}
Tng qut ha kim th gi tr bin cho hm n bin s v mi bin c
cc gi tr bin v cn bin khc nhau ta c th d thy s c 1 + 4n ca kim
th v xut pht t mt ca kim th gm cc gi tr trung bnh ca cc bin,
ta thay n bng bn gi tr bin v cn bin: min, min+, max, v max.
Vi n bin s to thm 4n b kim th. Do tng s ca kim th l 1 + 4n.
Tuy nhin ty theo min xc nh ca bin m s lng ny thc t c th t
hn. V d bin nguyn thuc khong [1, 2] th khng c cn bin v khng
c gi tr gia.
Vi cch to b kim th gi tr bin ny, mi gi tr bin v cn bin
xut hin mt ln vi cc gi tr trung bnh ca cc bin cn li, ch khng
phi t hp cc b gi tr ca cc bin. T hp ca cc bin c gi l kim
th gi tr bin mnh s c tho lun trong phn tip theo.
Trong thc t, min xc nh ca cc bin khng ch l cc min s, nn
chng ta cn c cc vn dng thch hp xc nh cc gi tr bin tinh
t hn. V d trong chng trnh NextDate bin thng month c th l s
nguyn trong khong t 1 n 12. Nhng khng phi ngn ng lp trnh no
cng cho php khai bo min xc nh ca bin trong khong ny. Chng
ta cng c th dng kiu lit k (enumeration) khai bo cc thng bng
tn Januray, ..., December v chng ta vn c gi tr bin v cn bin.
Tuy nhin nh trong ngn ng lp trnh Java chng ta phi dng bin kiu
nguyn int v khng khai bo min gi tr cho chng c, th chng ta
s phi dng cc cn ca kiu lm bin. Trong Java, bin ca s nguyn l
Interger.MIN_VALUE v Interger.MAX_VALUE. Trong C, chng ta cng c cc
khong gi tr ny.
Vi bin kiu Boolean, cc gi tr ca min ch c TRUE v FALSE, chng
ta khng c cn bin v gi tr gia. Vi kiu xu k t, mng, hay danh
sch, tp hp (collection), chng ta c th da vo chiu di/kch thc
lm cc gi tr bin. Vi cc kiu cu trc d liu khc chng ta c th xy
dng cc gi tr bin v cn bin da theo cc thnh phn ca cu trc.

5.2. KIM TH GI TR BIN

111

u nhc im: Khi cc bin ca hm l c lp, khng c quan h rng


buc ln nhau, th kim th gi tr bin t ra hiu qu. Nhng khi chng c
quan h ph thuc no th phng php ny d to ra cc ca kim th
khng hp l, v cc gi tr cc i, cc tiu c th khng kt hp vi nhau
to thnh ca kim th hp l.
V d, khi x1 v x2 ca hm f trn c cc rng buc l x1 [1, 100],
x2 [1, 100] and x1 + x2 120 th mt bin t cc i s khng th kt
hp vi mt bin khc gi tr trung bnh. Nu chng ta xut pht t ca
kim th ca hai gi tr trung bnh (50, 50) th khi thay gi tr u bng gi
tr cc i s to ra ca kim th (100, 50). Ca kim th ny khng tha mn
quan h x1 + x2 120.
V d khc vi hm NextDate th bin ngy, thng v nm c rng buc.
Mt s thng c 31 ngy, mt s li c 30 ngy. Nm nhun li c rng buc
vi s ngy trong thng hai. Nu khng xt s ph thuc ny kim th gi
tr bin khng to ra c ca kim th ngy 28 thng 2 nm 2012, v 28
khng l bin v cn bin ca khong ngy t 1 n 31.
Kim th gi tr bin cng khng quan tm n tnh cht, c trng ca
hm, ng thi cng khng xt n ng ngha ca bin hay quan h gia cc
bin. N ch my mc ly cc gi tr bin, cn bin v trung bnh t hp
to ra cc ca kim th. Nn khi p dng chng ta cn xc nh s b cc
tnh cht trn ca hm c khng.
u im ca phng php ny l n gin v c th t ng ha vic
sinh cc ca kim th khi chng ta xc nh c cc bin ca cc bin.
Vi nhiu kiu d liu c bn c sn chng ta cng c th xy dng sn cc
bin ny s dng.

5.2.2

Mt s dng kim th gi tr bin

5.2.2.1

Kim th gi tr bin mnh

Kim th gi tr bin mnh l m rng ca kim th gi tr bin bng vic


b sung cc gi tr cn bin bn ngoi min xc nh. Ngoi 5 gi tr bin
nu phn trc chng ta ly thm cc gi tr cn bin ngoi min xc
nh l max+ v min nh trong Hnh 5.4. Cc ca kim th ny s gip
ta kim tra chng trnh vi d liu khng hp l, nm ngoi khong mong

112

CHNG 5. KIM TH HM

i. V d khi nhp ngy 32/1/2013 chng trnh cn c thng bo li thch


hp.
Cc ca kim th mnh ny gip chng ta kim tra xem chng trnh c
x l cc ngoi l hay kim tra bin u vo hay khng. Vi cc ngn ng
lp trnh khng kim tra kiu khi bin dch hay d liu c nhp vo bn
ngoi, do ngi s dng a vo hoc ly t h thng khc, vic ny l rt
cn thit. Rt nhiu lp trnh vin mi vo ngh thng xuyn khng kim
tra d liu u vo nn chng trnh ch chy vi d liu nhp ng nh
suy ngh ca ngi lp trnh. Hu qu ca vic ny khng ch n thun
l chng trnh b sai, m thng gy vi phm b nh, dn n tt chng
trnh (crash), v l mt trong nhng l hng an ninh d b khai thc.

Hnh 5.4: Cc ca kim th mnh cho hm hai bin.

5.2.2.2

Kim th gi tr bin t hp

trn chng ta ch to cc ca kim th vi gi tr bin v cn bin cho tng


bin. Nu chng ta m rng vi hai hoc vi tt c cc bin u c y
n gi tr bin v cn bin th chng ta s to ra c cc ca kim th gi
tr bin t hp. Tc l t b gi tr 5 phn t min, min+, nom, max v
max ca mi bin ta ly tch -Cc (Cartesian) ca chng to ra cc ca
kim th. Vi hai bin Hnh 5.5 minh ha cc ca kim th ny.

5.2. KIM TH GI TR BIN

113

Hnh 5.5: Cc ca kim th bin t hp ca hm hai bin.

C th thy cch t hp cc bin v cn bin ny s kim tra k hn


kim th gi tr bin thng thng. Tuy nhin s ca kim th theo cch ny
tng ln ng k, ln n 5n ca kim th so vi 4n + 1 ca theo kim th bin
thng thng.
Tng t nh kim th gi tr bin mnh, ta c th m rng kim th
bin t hp vi b 7 gi tr ca kim th gi tr bin mnh. Chng ta s kim
tra c k hn nhng cng mt nhiu cng sc hn, n 7n ca kim th.

5.2.2.3

Kim th cc gi tr c bit

Kim th cc gi tr c bit cng l mt phng php ph bin. y cng


l phng php trc quan nht v khng theo mt khun dng c th no.
Da trn hiu bit v bi ton v min ng dng kt hp vi kinh nghim
c nhn, ngi kim th a ra cc gi tr kim th. Do khng c hng
dn c th no cho phng php ny. Mc hiu qu ca phng php
ny ph thuc nhiu vo kh nng ca ngi kim th. Trn thc t cc n
v pht trin phn mm vn p dng phng php ny, v nhiu khi n gip
pht hin li nhanh, khng tn nhiu cng sc.
V d da trn hiu bit v s ngy ca cc thng trong mt nm chng
ta s kim th cc ngy 28 thng 2 v 29 thng 2 c nm nhun v nm
thng. S lng ca kim th s t hn nhiu so vi kim th gi tr bin v

114

CHNG 5. KIM TH HM

cng hiu qu trong vic kim tra li. y cng l tnh cht th cng ca
ngh kim th phn mm - kho tay v c kinh nghim s lm tt hn.

5.2.3

V d minh ha

5.2.3.1

Kim th gi tr bin cho Triangle

Chng ta xem vic p dng kim th gi tr bin vi bi ton Triangle. Bi


ton khng nu iu kin cho cnh ca tam gic ngoi iu kin l s nguyn.
Nhng chng ta bit cn di ca cnh tam gic l 1. V chng ta gi s
cn trn l 200. Bng 5.1 cha cc ca kim th cc gi tr bin.

Bng 5.1: Cc ca kim th cc gi tr bin


TT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

a
100
100
100
100
100
100
100
100
100
100
1
2
100
199
200

b
100
100
100
100
100
1
2
100
199
200
100
100
100
100
100

c
1
2
100
199
200
100
100
100
100
100
100
100
100
100
100

Kt qu mong i
Tam gic cn
Tam gic cn
Tam gic u
Tam gic cn
Khng phi tam gic
Tam gic cn
Tam gic cn
Tam gic u
Tam gic cn
Khng phi tam gic
Tam gic cn
Tam gic cn
Tam gic u
Tam gic cn
Khng phi tam gic

5.2. KIM TH GI TR BIN


5.2.3.2

115

Kim th gi tr bin cho NextDate

Nh chng ta thy trong Bng 5.2, phng php kt hp cc gi tr bin c


th to ra ngy khng hp l - tc l ngy khng c thc trn thc t, khng
thuc min xc nh ca hm NextDate. Hn na bng ny ng ra c n
125 ca kim th, nhng y chng ta ch lit k mt s gi tr.
Bng 5.2: Mt s ca kim th bin t hp hm NextDate
TT Thng
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
1
10
1
11
1
12
1
13
1
14
1
15
1
16
1
...

5.2.4

Ngy Nm
1
1812
1
1813
1
1912
1
2011
1
2012
2
1812
2
1813
2
1912
2
2011
2
2012
15
1812
15
1813
15
1912
15
2011
15
2012
30
1812

Kt qu mong i
2/1/1812
2/1/1813
2/1/1912
2/1/2011
2/1/2012
3/1/1812
3/1/1813
3/1/1912
3/1/2011
3/1/2012
16/1/1812
16/1/1813
16/1/1912
16/1/2011
16/1/2012
31/1/1812

Kinh nghim p dng

Kim th gi tr bin l phng php th nht trong cc phng php kim


th hm. Phng php ny nn p dng cho cc hm c cc bin u vo
c lp, khng ph thuc vo nhau. Khi chng ta c gi nh mt khim
khuyt trong chng trnh s gy ra li ngay th chng ta s dng kim th
bin thng thng. Tri li khi li thng xut hin khi c hn mt khim

116

CHNG 5. KIM TH HM

khuyt trong chng trnh th chng ta cn s dng kim th gi tr bin


mnh. Cc phng php ny u n gin, d dng t ng ha vic sinh
v chy cc ca kim th ny.
Phn ny chng ta ch yu tp trung vo bin ca bin u vo. Chng
ta c th m rng cho bin u ra, tc l kt qu ca hm, sao cho cc kt
qu ny c th nm bin, cn bin. Ngoi ra trong chng trnh my tnh
cn c cc bin cc b, hay cc bin ton cc khc. Chng ta c th vn
dng m rng cho cc bin ny c th pht hin thm cc li tinh vi khc
trong chng trnh.

5.3. KIM TH LP TNG NG

5.3
5.3.1

117

Kim th lp tng ng
Lp tng ng

tng ca kim th lp tng ng l ta chia min u vo thnh cc


phn sao cho cc gi tr trong mi phn c tc ng tng t vi chng
trnh. Khi chia c thnh cc min con nh vy, chng ta ch cn ly
mt gi tr bt k trong mi min con xy dng b kim th. Phng
php kim th lp tng ng ny cho ta cm gic kim th y h
thng ng thi cng khng c cc ca kim th trng lp. Chng ta cng c
th p dng lp tng ng cho min u ra.
Kim th lp tng ng l phng php chia min d liu kim th
thnh cc min con sao cho d liu trong mi min con c cng tnh cht i
vi chng trnh, c ngha l cc ca kim th ca mt min con s cng gy
li cho chng trnh, hay cng cho kt qu ng, hay cng cho kt qu sai
tng t nhau. Sau khi chia min d liu ca chng trnh thnh v min
con tng ng, chng ta ch cn chn mt phn t i din ca mi min
con ny lm b d liu kim th. Cc min con ny chnh l cc lp tng
ng.
V d trong bi ton Triangle ta ly mt lp tng ng l tt c cc
tam gic u. Khi ta chn mt ca kim th l (5, 5, 5) thc hin th
sau ta c th kt lun tng t v kt qu kim th cho cc ca kim th
khc cng lp nh (6, 6, 6) hay (100, 100, 100). Bn cht y l chng ta
cho rng chng trnh s thc hin cng cc lnh ging nhau vi cc ca kim
th cng mt lp tng ng, nn hnh vi ca chng trnh l tng t
nhau cng c li hay ra kt qu sai hay cng ra cc kt qu ng.
By gi vn chnh l lm sao xc nh c cc lp tng ng ca
min u vo. Vic ny c th thc hin bng cch phn tch m ngun ca
chng trnh. Nu khng phn tch c m ngun, chng ta c th da vo
hiu bit v chc nng ca chng trnh m suy ra cch ci t ca chng.
T chng ta c th suy ra cc lp tng ng theo kinh nghim v trc
gic ca mnh.
Kim th lp tng ng c chia thnh mt s loi. Chng ta s s
dng chng trnh minh ha sau gii thch cc loi kim th lp tng
ng d dng hn.

118

CHNG 5. KIM TH HM

Gi s chng trnh ca chng ta l mt hm ca ba bin a, b, c v khng


gian u vo l ba tp A, B, C. Gi s tip l chng ta xc nh c cc
min tng ng cho mi khng gian u vo:
A = A1 A2 A3
B = B1 B2 B3 B4
C = B1 C2
Chng ta k hiu phn t ca cc min tng ng trn bng ch thng
vi cng ch s trong cc phn sau. V d a1 A1 , b3 B3 v c2 C2 .

5.3.2

Phn loi kim th lp tng ng

5.3.2.1

Kim th lp tng ng yu

Kim th lp tng ng yu ch yu cu mi khng gian tng ng c


t nht mt phn t xut hin trong mt ca kim th no . Vi chng
trnh minh ha trn th phi c mt gi tr thuc A1 trong mt ca kim th
no . Tng t vi cc tp con khc. Ta c b kim th tha mn kim
th lp tng ng yu nh trong Bng 5.3.
Bng 5.3: Cc ca kim th lp tng ng cho Triangle
TT
1
2
3
4

a
a1
a2
a3
a1

b
b1
b2
b3
b4

c
c1
c2
c3
c2

B kim th trn s dng mt gi tr t mi lp tng ng. kim


tra chng ta ch cn n cc ct, v d ct a c xut hin c a1 , a2 , a3
ca ba min con ca A, nh vy l .
Chng ta c th lp qui tc t ng xy dng b kim th lp tng
ng yu ny d dng v cng c th d nhn thy l s ca kim th ti
thiu chnh l s lp tng ng ln nht ca cc min u vo, trong v
d ny l B.

5.3. KIM TH LP TNG NG


5.3.2.2

119

Kim th lp tng ng mnh

Kim th lp tng ng mnh s kt hp cc t hp c th ca cc min


tng ng. Vi v d trn ta s c 3 4 2 = 24 t hp tng ng vi 24
ca kim th nh bng 5.4.
Bng 5.4: Cc ca kim th lp tng ng mnh cho Triangle
TT a b c
1
a1 b1 c1
2
a1 b1 c2
3
a1 b2 c1
4
a1 b2 c2
5
a1 b3 c1
6
a1 b3 c2
7
a1 b4 c1
8
a1 b4 c2
9
a2 b1 c1
10 a2 b1 c2
11 a2 b2 c1
12 a2 b2 c2
13 a2 b3 c1
14 a2 b3 c2
15 a2 b4 c1
16 a2 b4 c2
17 a3 b1 c1
18 a3 b1 c2
19 a3 b2 c1
20 a3 b2 c2
21 a3 b3 c1
22 a3 b3 c2
23 a3 b4 c1
24 a3 b4 c2
Vic xc nh cc ca kim th bng trn tng t nh vic xy dng
bng gi tr chn l cho logic mnh nn cng d dng t ng ha c.
Tch -cc ny cho ta mt b kim th y , c tt c cc kh nng kt
hp ca cc min tng ng ca cc min u vo.
hai phn trn chng ta ch ch trng cc min tng ng ca bin

120

CHNG 5. KIM TH HM

u vo. Chng ta c th p dng cc phng php ny cho min u ra.


Vic ny thng kh hn v chng ta phi tnh ngc b gi tr kim th
min u vo chng to ra gi tr min u ra mong mun. Vi chng
trnh c nhiu bin u ra, chng ta cng c hai dng mnh v yu tng t
vi u vo.

5.3.2.3

Kim th lp tng ng n gin

Kim th lp tng ng n gin ch phn chia mt lp gm cc gi tr


hp l v cc min gi tr khng hp l. V d nu A l khong 1 n 200 cc
s nguyn th min hp l l cc gi tr t 1 n 200, min khng hp l gm
hai min. Min th nht l cc gi tr t 0 tr xung. Min cn li l cc gi
tr t 201 tr ln. ( n gin ta khng xt min cc gi tr khng phi l
s nguyn.) Sau khi c cc lp tng ng theo cch n gin ny chin
lc kim th c th p dng tng t kim th tng ng mnh v yu.
C hai vn vi kim th lp tng ng n gin. Th nht l thng
thng khi m t bi ton th ti liu khng ni r cc trng hp khi u
vo khng hp l th kt qu l g. Nu c ni th cng thng ch cp
n mt s trng hp bit m khng xt n mi kh nng c th. V
d chng ta vit chng trnh gii phng trnh bc hai vi ba h s nguyn
a, b, c c nhp vo t bn phm. Rt nhiu lp trnh vin s chuyn ngay
xu k t ngi s dng nhp vo thnh cc s v gn cho cc h s ny.
Nhng nu ngi s dng nhp mt xu ch th chng trnh khng kim
tra c thng bo ph hp cho ngi s dng. Khi thit k kim th chng
ta phi b sung mt lot cc trng hp m h thng phi a ra kt qu
b sung hoc cc thng bo li ph hp cho cc trng hp ny. Th hai l
mt s ngn ng lp trnh c h thng kim tra kiu mnh nh Java, C#
th khng th a gi tr sai kiu vo c nn chng ta khng cn cc ca
kim th cho gi tr sai kiu, nhng vn cn kim tra d liu do ngi s
dng nhp vo, v ch kim tra d liu khng hp l cng kiu. Tuy nhin
trong cc ngn ng lp trnh script nh Javascript, PHP, Python, khng c
kim tra kiu mnh nn cc li loi ny kh ph bin do ta cn xt k
vic chia min u vo thnh cc lp tng ng.

5.3. KIM TH LP TNG NG

5.3.3

V d minh ha

5.3.3.1

Kim th lp tng ng cho Triangle

121

Chng ta p dng kim th lp tng ng cho bi ton tam gic, nhng


chng ta p dng lp tng ng cho u ra thay v u vo. u ra
chng ta thy chng trnh c th in ra bn kh nng: Khng phi tam gic,
Tam gic thng, Tam gic cn, Tam gic u. D trn cc lp u ra ny
ta c th xc nh b kim th nh sau:
Bng 5.5: Cc ca kim th lp tng ng cho Triangle
TT
1
2
3
4

a
5
2
3
4

b
5
2
4
1

c
5
3
5
2

Kt qu mong i
Tam gic u
Tam gic cn
Tam gic khng cn
Khng l tam gic

Nu chng ta kim th lp ng ng vi min u vo, chng ta c


mt b kim th phong ph hn. Vi 3 s t nhin a, b, c c th hai trong
chng hoc c ba bng nhau hoc tt c khc nhau. Chng ta c 5 lp tng
ng u vo nh sau:
D1 = {a, b, c | a = b = c}
D2 = {a, b, c | a = b, a = c}
D3 = {a, b, c | a = c, a = b}
D4 = {a, b, c | b = c, a = b}
D5 = {a, b, c | a = b, a = c, b = c}
Nu chng ta da trn hiu bit v tam gic ta l tng hai cnh phi ln
hn cnh cn li ta c th phn tip thnh cc lp tng ng mn hn. V
d < 1, 4, 1 > thuc D3 nhng khng l tam gic.
D6 = {a, b, c | a > b + c}
D7 = {a, b, c | b > a + c}

122

CHNG 5. KIM TH HM
D8 = {a, b, c | c > a + b}

T y chng ta c th p dng tip kim th tng ng mnh tm


ra cc ca kim th. v d ny chng ta khng p dng kim th lp tng
ng n gin v chia thnh min gi tr cc s dng v khng dng s
khng kim th c cc tnh cht ca tam gic.
5.3.3.2

Kim th lp tng ng cho NextDate

Hm NextDate minh ha rt r tnh th cng ca vic xc nh quan h


tng ng. Qua y ta cng thy r khc bit gia cc loi kim th lp
tng ng: n gin, yu v mnh. NextDate l mt hm gm 3 bin,
ngy, thng v nm, v chng c cc khong xc nh nh sau:
1 <= day <= 31
1 <= month <= 12
1812 <= year <= 2012
Theo loi kim th lp tng ng n gin, cc lp tng ng hp
l l:
D1 = {day | 1 <= day <= 31}
M 1 = {month | 1 <= month <= 12}
Y 1 = {year | 1812 <= year <= 2012}
Cc lp tng ng khng hp l l:
D2 = {day | day < 1}
D3 = {day | day > 31}
M 2 = {month | month < 1}
M 3 = {month | month > 12}
Y 2 = {year | year < 1812}
Y 3 = {year | year > 2012}
Da trn cc lp tng ng ny ta c th c b kim th nh Bng 5.6
(cc gi tr hp l c ly gi tr gia khong).

5.3. KIM TH LP TNG NG

123

Bng 5.6: Cc ca kim th bin t hp hm NextDate


TT Thng
1
6
2
-1
3
13
4
6
5
6
6
6
7
6

5.3.3.3

Ngy Nm Kt qu mong i
15
1912 16/6/1912
15
1912 ngy khng hp l
15
1912 ngy khng hp l
-1
1912 ngy khng hp l
32
1912 ngy khng hp l
15
1811 ngy khng hp l
15
2013 ngy khng hp l

Kim th tng ng yu cho NextDate

Cc ca kim th lp tng ng yu ca hm NextDate c lit k trong


Bng 5.7. Chng ta c th thy phng php ny thc s yu v n ch a
ra c mt vi ca kim th khng m bo tin cy cho chng trnh.

Bng 5.7: Cc ca kim th bin t hp hm NextDate


TT Thng
1
6
2
7
3
2
4
6

5.3.3.4

Ngy Nm
14
1900
29
1912
30
1913
31
1900

Kt qu mong i
15/6/1900
30/7/1912
Khng hp l
Khng hp l

Kim th tng ng mnh cho NextDate

S dng cc lp tng ng nh trn, chng ta c cc ca kim th lp tng


ng mnh bng di. Chng ta vn cha c mt b kim th tt nht
v thiu ca kim th ngy 28 thng Hai, nhng 36 ca kim th lp tng
ng mnh ny tt hn rt nhiu so vi phng php trc.

124

CHNG 5. KIM TH HM

Bng 5.8: Mt phn ca kim th lp tng ng mnh cho NextDate


TT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

5.3.4

Thng
6
6
6
6
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7

Ngy Nm
14
1900
14
1912
14
1913
29
1900
29
1912
29
1913
30
1900
30
1912
30
1913
31
1900
31
1912
31
1913
14
1900
14
1912
14
1913
29
1900
29
1912
29
1913
30
1900
30
1912

Kt qu mong i
15/6/1900
15/6/1912
15/6/1913
30/6/1900
30/6/1912
30/6/1913
1/7/1900
1/7/1912
1/7/1913
Khng hp l
Khng hp l
Khng hp l
15/7/1900
15/7/1912
15/7/1913
30/7/1900
30/7/1912
30/7/1913
31/7/1900
31/7/1912

Kinh nghim p dng

T cc v d trn chng ta c mt s quan st v nh hng s dng kim


th lp tng ng.
Kim th lp tng ng n gin km kim th lp tng ng yu
km kim th lp tng ng mnh.
S dng kim th tng ng n gin khi ngn ng khng c kim
tra kiu mnh.
Nu cn kim tra ngoi l chng ta nn m rng kim th lp tng
ng vi cc lp gi tr ngoi min xc nh.

5.3. KIM TH LP TNG NG

125

Kim th lp tng ng ph hp vi d liu u vo c min gi tr


l khong v hu hn.
Kim th lp tng ng kt hp vi kim th gi tr bin s tt hn.
Nn dng kim th lp tng ng vi cc chng trnh phc tp.
Nn dng kim th lp tng ng mnh khi cc bin l c lp. Khi
cc bin ph thuc nhau th d to ra cc ca kim th v l.
Cn mt s ln th tm xc nh cc lp tng ng ng, nh
trong v d NextDate. Trong trng hp khc, l quan h tng
ng r rng v t nhin. Khi cc lp tng ng khng hin nhin
v d thy th ta c th p dng chin thut th v on xc nh
dn.

126

5.4

CHNG 5. KIM TH HM

Kim th bng bng quyt nh

K thut kim th lp tng ng v kim th gi tr bin thch hp cho


cc hm c cc bin u vo khng c quan h rng buc vi nhau. K thut
kim th da trn bng quyt nh chng ta xem xt trong chng ny s
ph hp cho cc hm c cc hnh vi khc nhau da trn tnh cht ca b
gi tr ca u vo.
Kim th da trn bng quyt nh l phng php chnh xc nht trong
cc k thut kim th chc nng. Bng quyt nh l phng php hiu qu
m t cc s kin, hnh vi s xy ra khi mt s iu kin tha mn.

5.4.1

Bng quyt nh

Cu trc bng quyt nh chia thnh bn phn chnh nh trong Hnh 5.9:
Cc biu thc iu kin C1, C2, C3.
Gi tr iu kin T, F, .
Cc hnh ng A1, A2, A3, A4.
Gi tr hnh ng, c (xy ra) hay khng, X l c.
Khi lp bng quyt nh ta thng tm cc iu kin c th xy ra, xt
cc t hp ca chng m t chng ta s xc nh c cc ca kim th
tng ng cho cc iu kin c tha mn. Cc hnh ng xy ra chnh l
kt qu mong i ca ca kim th .
Bng quyt nh vi cc gi tr iu kin ch l T, F, v c gi l
bng quyt nh lgic. Chng ta c th m rng cc gi tr ny bng cc tp
gi tr khc, v d 1, 2, 3, 4, khi chng ta c bng quyt nh tng qut.
Bng 5.10 l mt v d n gin v mt bng quyt nh khc phc s
c my in. Khi my in c s c, chng ta s xem xt tnh trng da trn cc
iu kin trong bng l ng hay sai, t xc nh c ct duy nht c
cc iu kin tha mn, v thc hin cc hnh ng khc phc s c tng
ng.

5.4. KIM TH BNG BNG QUYT NH

127

Bng 5.9: V d bng quyt nh

iu kin

Hnh ng

C1
C2
C3
A1
A2
A3
A4

1 2
T T
T T
T F
X X
X
X

Qui
3
T
F
-

tc
4
F
T
X
X

5
F
F
T

6
F
F
F

X
X

Bng 5.10: Bng quyt nh khc phc s c my in


iu kin

My in khng in
n nhp nhy
Khng nhn ra my in
Hnh ng Kim tra dy ngun
Kim tra cp my in
Kim tra phn mm in
Kim tra mc in
Kim tra kt giy

Y
Y
Y
X
X
X

Y Y
Y N
N Y
X
X
X
X
X

Y
N
N

N
Y
Y

N
Y
N

N
N
Y

N
N
N

X
X
X X
X

Ch l y th t cc iu kin v th t thc hin hnh ng khng


quan trng, nn chng ta c th i v tr cc hng. Vi cc hnh ng cng
vy, tuy nhin ty trng hp chng ta c th lm mn hn bng vic nh
s th t hnh ng xy ra thay cho du X ch ra hnh ng no cn
lm trc. Vi bng quyt nh tng qut, cc gi tr ca iu kin khng
ch nhn gi tr ng (T) hoc sai (F), khi ta cn tng s ct bao ht
cc t hp c th ca cc iu kin.
K thut thc hin: xc nh cc ca kim th da trn bng quyt
nh, ta dch cc iu kin thnh cc u vo v cc hnh ng thnh cc
u ra. i khi cc iu kin s xc nh cc lp tng ng ca u vo
v cc hnh ng tng ng vi cc m-un x l chc nng ang kim th.

128

CHNG 5. KIM TH HM

Bng 5.11: Bng quyt nh cho Triangle


iu kin
c1: a<b+c?
c2: b<a+c?
c3: c<a+b?
c4: a = b?
c5: a = c?
c6: b = c?
S lut
a1: Khng l tam gic
a2: Tam gic lch
a3: Tam gic cn
a4: Tam gic u
a5: Khng hp l

1 2 3
F T T
- F T
- F
32 16 8
X X X

4
T
T
T
T
T
T
1

5
T
T
T
T
T
F
1

6
T
T
T
T
F
T
1

7
T
T
T
T
F
F
1

8
T
T
T
F
T
T
1

9
T
T
T
F
T
F
1

10
T
T
T
F
F
T
1

11
T
T
T
F
F
F
1
X

X
X
X

Do mi ct tng ng vi mt ca kim th. V tt c cc ct bao ph


ton b cc t hp u vo nn chng ta c mt b kim th y .
Trn thc t khng phi t hp u vo no cng l hp l, do khi s
dng bng quyt nh ngi ta thng b sung thm mt gi tr c bit
nh du cc iu kin khng th cng xy ra ny. Cc gi tr (khng
quan tm) c th hiu l lun sai, khng hp l. Nu cc iu kin ch l T v
F ta c 2n ct qui tc. Mi gi tr s i din cho hai ct. d kim tra
khng st ct no ta c th thm hng m S lut nh trong Bng 5.11
v khi tng hng ny bng 2n ta bit s ct qui tc .

5.4.2

V d minh ha

Kim th bng bng quyt nh cho Triangle: S dng bng quyt


nh Bng 5.11, ta c 11 ca kim th: 3 trng hp khng hp l, 3 trng
hp khng phi l tam gic, 1 trng hp tam gic u, 1 trng hp tam
gic thng v 3 trng hp tam gic cn. Bng 5.12 l kt qu chi tit v
cc ca kim th ny. Nu ta thm iu kin kim tra bt ng thc tam gic
ta s c thm 3 ca kim th na (trng hp mt cnh c di bng tng
hai cnh cn li).

5.4. KIM TH BNG BNG QUYT NH

129

Bng 5.12: Ca kim th bng bng quyt nh cho Triangle


TT
1
2
3
4
5
6
7
8
9
10
11

a b
4 1
1 4
1 2
5 5
? ?
? ?
2 2
? ?
2 3
3 2
3 4

c
2
2
4
5
?
?
3
?
2
2
5

Kt qu mong i
Khng phi tam gic
Khng phi tam gic
Khng phi tam gic
Tam gic u
Khng kh thi
Khng kh thi
Tam gic cn
Khng kh thi
Tam gic cn
Tam gic cn
Tam gic thng

Kim th bng bng quyt nh cho NextDate: C nhiu cch xc


nh cc iu kin. V d chng ta s c t ngy v thng trong nm v
quy i v dng ca mt nm nhun hay mt nm thng thng ging nh
trong ln th u tin, do nm 1900 s khng c g c bit. Cc min
tng ng by gi nh sau:
M1 = { thng | thng c 30 ngy }
M2 = { thng | thng c 31 ngy, tr thng 12 }
M3 = { thng | thng 12 }
M4 = { thng | thng 2 }
Ngy
D1 = {ngy | 1 ngy 27 }
D2 = {ngy | ngy = 28 }
D3 = {ngy | ngy = 29 }
D4 = {ngy | ngy = 30 }

130

CHNG 5. KIM TH HM

D5 = {ngy | ngy = 31 }
Nm
Y1 = {nm | nm nhun }
Y2 = {nm | nm thng thng }
Tch -Cc s to ra 40 b gi tr. Bng quyt nh c lp nh
Hnh 5.13. C 22 quy tc, so vi 36 trong th ln hai. Chng ta c mt bng
quyt nh vi 22 quy tc. Nm quy tc u tin cho thng c 30 ngy. Hai
b tip theo (6-10 v 11-15) cho thng c 31 ngy, vi cc thng khc Thng
Mi Hai v vi Thng Mi Hai.

5.4.3

Kinh nghim p dng

So vi cc k thut kim th khc, kim th bng bng quyt nh tt hn


vi mt s bi ton (nh NextDate) nhng cng km hn vi mt s bi
ton (nh Commission). Nhng bi ton ph hp vi bng quyt nh khi
chng trnh c nhiu lnh r nhnh (nh Triangle) v cc bin u vo c
quan h vi nhau (nh NextDate).
1. Nn dng k thut bng quyt nh cho cc ng dng c mt trong
cc tnh cht sau:
Chng trnh c nhiu lnh r nhnh nhiu khi If-Then-Else
Cc bin u vo c quan h vi nhau
C cc tnh ton gia cc bin u vo
C quan h nhn qu gia u vo v u ra
C phc tp cao Cyclomatic cao
2. Bng quyt nh khng d p dng cho cc bi ton ln (vi n iu
kin c 2n quy tc). Nn dng dng m rng v s dng i s n
gin ha bng.
3. C th cn mt s ln th v rt kinh nghim dn dn lp c
bng ti u.

5.4. KIM TH BNG BNG QUYT NH

Bng 5.13: Ca kim th bng bng quyt nh cho NextDate


TT Thng
1
4
2
4
3
4
4
4
5
4
6
1
7
1
8
1
9
1
10
1
11
12
12
12
13
12
14
12
15
12
16
2
17
2
18
2
19
2
20
2
21
2
22
2

Ngy Nm
15
1993
28
1993
29
1993
30
1993
31
1993
15
1993
28
1993
29
1993
30
1993
31
1993
15
1993
28
1993
29
1993
30
1993
31
1993
15
1993
28
1992
28
1993
29
1992
29
1993
30
1993
31
1993

Kt qu mong i
16/4/1993
29/4/1993
30/4/1993
1/5/1993
Khng hp l
16/1/1993
29/1/1993
30/1/1993
31/1/1993
1/2/1993
16/12/1993
29/12/1993
30/12/1993
31/12/1993
1/1/1994
16/2/1993
29/2/1992
1/3/1993
1/3/1992
Khng kh thi
Khng kh thi
Khng kh thi

131

132

5.5

CHNG 5. KIM TH HM

Kim th t hp

Thng thng li phn mm do mt iu kin no lm pht sinh, khng


lin quan g n cc iu kin khc. V d khi nhp ngy sinh ca mt hc
sinh lp bn l 19/8/2013 vo danh sch lp nm hc 2013-2014 th thng
bo li cn xut hin v hc sinh ny cha c mt tui. Tuy nhin cng
c nhng li phn mm ch xut hin do kt hp ca mt s iu kin.
kim tra k mt phn mm chng ta phi kim tra tt c cc t hp ca cc
iu kin c th. Nhng thng thng s t hp ca tt c cc iu kin ny
s bng n rt nhanh v s rt tn cng kim tra tt c chng. V d gi
s hm y = f (x1 , x2 ) vi x1 v x2 ch nhn gi tr nguyn t 1 n 5. Chng
ta c 5 5 = 25 t hp phi kim th l (1, 1), (1, 2), .., (5, 5).
Tng qut ha vi hm Y = P (X) trong X = (x1 , .., xn ) v n
gin ta gi s vi mi bin xi , 1 i n ch c ki gi tr ng ch . Nu
tnh tt c cc t hp ca cc gi tr ng ch ny chng ta c k1 .. kn
ca kim th.
Bng cch khng ly ht tt c cc t hp c th m chng ta ch yu
cu mi t hp ca n bin bt k u xut hin trong mt ca kim th no
th chng ta c th gim ng k s ca kim th so vi tt c cc t hp
c th. Kt qu nghin cu thc t cho thy t hp i mt c kh nng
pht hin khong 80% li. Kim th t hp bn n su bin c th pht
hin c 100% li [KWG04]. Chng ta s xem xt mt dng ph bin nht
vi n = 2 gi l kim th i mt.

5.5.1

Kim th i mt

Kim th i mt (pairwise testing) l mt trng hp c bit ca kim th


tt c cc t hp. Kim th i mt ch yu cu mi cp gi tr ca (xi , xj ),
1 i = j n xut hin trong mt ca kim th no . Mt ca kim th
thng c nhiu cp gi tr ny vi cc i, j khc nhau nn d thy s lng
ca kim th s gim ng k so vi t hp tt c cc ca kim th.
Chng ta xem mt v d. Gi s chng ta c hm y = g(x1 , x2 , x3 ) v
x1 {T rue, F alse}, x2 {0, 5}, v x3 {a, b}. T hp tt c cc b gi tr
c th s to ra 32 ca kim th. Vi kim th i mt, mi cp gi tr ca
hai bin bt k cn xut hin trong t nht mt ca kim th. Bng 5.14 l

5.5. KIM TH T HP

133

Bng 5.14: Cc ca kim th i mt cho hm g


TT
TC1
TC2
TC3
TC4

x1
T rue
T rue
F alse
F alse

x2
0
5
0
5

x3
a
b
b
a

Bng 5.15: Mng trc giao L4 (23 )


TT
1
2
3
4

1
1
1
2
2

2
1
2
1
2

3
1
2
2
1

b kim th i mt, tuy ch c bn ca kim th, nhng chng cha tt c


cc cp gi tr c th ca cc bin.

5.5.2

Ma trn trc giao

Maldl [Rob85] l ngi u tin xut s dng ma trn trc giao thit
k cc ca kim th cp i. Nhiu chin lc kim th i mt cng c
trnh by trong cc nghin cu [GOA05], c th v ng ch l thut ton
da trn mng trc giao [Shr89] v thut ton IPO [TL02].
Chng ta hay xem xt mng hai chiu trong Bng 5.15. Bng ny c hai
tnh cht th v. Tt c cc cp (1,1), (1,2), (2,1), and (2,2) u xut hin
trong hai ct bt k. Tuy nhin khng phi tt c cc t hp ca 1 v 2 u
c trong bng. V d (2, 2, 2) l t hp hp l nhng n khng nm trong
bng. Ch bn trong tm t hp nm trong bng. Trong bng ch c 4 t hp
trn tng s 8 t hp c th. y l mt v d v ma trn trc giao L4 (23 ).
Ch s 4 l s hng ca mng, 3 l s ct ca mng, v 2 l s gi tr ln
nht mt phn t ca mng c th nhn.
Xem li v d ca hm g trn chng ta thy bng ny l mt th hin

134

CHNG 5. KIM TH HM

ca bng trc giao tng qut L4 (23 ) trong Bng 5.15. Cc gi tr 1, 2 trong
Bng 5.15 a thay bng cc gi tr tng ng ca bin ca hm g. V d 1
tng ng vi True, 2 tng ng vi False. Chng ta c th kim tra l mi
cp gi tr bt k ca hai bin bt k u xut hin trong t nht mt ca
kim th trong Bng 5.14.

5.5.3

Kinh nghim p dng

n y chng ta hiu v khi nim ma trn trc giao v ng dng ca


n trong vic sinh cc ca kim th cp i. Sau y l mt qui trnh thc
hin vic ng dng ma trn trc giao sinh cc ca kim th theo phng
php kim th cp i.
Bc 1. Xc nh tt c cc bin u vo, v chng s tng ng vi
cc ct ca ma trn trc giao.
Bc 2. Xc nh s lng gi tr ca mi bin c th nhn xc
nh c s lng ln nht v cc gi tr ca ma trn s nm trong
khong ny.
Bc 3. Tm ma trn trc giao thch hp vi s lng hng nh nht
vi hai s ct v gi tr ca cc phn t ma trn xc nh Bc 1
v Bc 2.
Bc 4. nh x cc bin vi cc ct ca ma trn v gi tr ca bin
vi cc phn t ca ma trn.
Bc 5. Kim tra cn phn t no trong ma trn cha c nh x
khng. Chn cc gi tr hp l ty cho nhng phn t ny.
Bc 6. Chuyn cc hng ca ma trn thnh cc ca kim th.
Bc 3 chng ta c mt bi ton t ra l lm th no tm c ma
trn trc giao thch hp. C rt nhiu thut ton v cng c sinh cc ma
trn trc giao theo cc tham s chng ta c Bc 1 v Bc 2 1 . Ngoi
ra cng c nhiu ma trn trc giao c tnh sn, chng ta ch cn chn v
p dng.
1

http://www.pairwise.org/tools.asp

5.6. BI TP

5.6

135

Bi tp

1. p dng kim th gi tr bin cho cc chng trnh v d Chng 2.


2. Vit chng trnh tnh nghim ca phng trnh bc hai ax2 + bx + c.
Hy p dng cc k thut kim th ca chng ny xy dng b
d liu kim th cho chng trnh.
3. Cho hm z = f (x, y) l mt hm ci t. Hy gi s cc kiu d liu
c bn cho x, y trong mt ngn ng lp trnh no v vit chng
trnh sinh cc ca kim th n v bng phng php kim th gi
tr bin.
4. Hy p dng cc k thut kim th lp tng ng cho chng trnh
gii phng trnh bc hai.
5. Mt hm kim tra d liu hp l ca h s hc sinh gm cc trng
H Tn, Ngy Sinh, Email v Gii tnh (Nam, N). Hay ci t hm
ny v p dng kim th lp tng ng vit cc kim th n v
bng Java/JUnit (hoc ngn ng/cng c tng ng khc).
6. B sung tam gic vung vo bi ton Triangle, hy xy dng bng
quyt nh. Ch c trng hp tam gic vung cn c cnh l s
nguyn.
7. Hy th thm hai cch phn chia lp tng ng cho bi ton NextDate.
8. Xy dng bng quyt nh cho PreviousDate, hm ngc ca bi ton
NextDate.
9. Xy dng bng quyt nh cho bi ton gii phng trnh bc hai.

136

CHNG 5. KIM TH HM

Chng 6
Kim th dng iu khin
Trong chng ny, chng ta s tm hiu chi tit v phng php kim th
dng d liu (control flow testing) nhm pht hin cc li tim n bn trong
chng trnh/n v chng trnh cn kim th. Cc li ny thng kh pht
hin bi cc k thut kim th hm hay kim th chc nng c trnh by
trong chng 5. p dng phng php ny, chng ta cn phn tch m
ngun v xy dng cc ca kim th ng vi cc dng iu khin ca chng
trnh/n v chng trnh. Cc o hay tiu ch kim th cho phng php
ny cng s c gii thiu.

6.1

Kim th hp trng

Kim th hp trng s dng cc chin lc c th v s dng m ngun ca


chng trnh/n v phn mm cn kim th nhm kim tra xem chng
trnh/n v phn mm c thc hin ng so vi thit k v c t hay khng.
Trong khi cc phng php kim th hp en hay kim th hm/chc nng
ch cho php pht hin cc li/khim khuyt c th quan st c, kim
th hp trng cho php pht hin cc li/khim khuyt tim n bn trong
chng trnh/n v phn mm. Cc li ny thng kh pht hin bi cc
phng php kim th hp en. Kim th hp en v kim th hp trng
khng th thay th cho nhau m chng cn c s dng kt hp vi nhau
trong mt quy trnh kim th thng nht nhm m bo cht lng phn
mm. Tuy nhin, p dng cc phng php kim th hp trng, ngi
137

138

CHNG 6. KIM TH DNG IU KHIN

kim th khng ch cn hiu r gii thut m cn cn c cc k nng v kin


thc tt v ngn ng lp trnh c dng pht trin phn mm, nhm
hiu r m ngun ca chng trnh/n v phn mm cn kim th. Do vy,
vic p dng cc phng php kim th hp trng thng tn thi gian v
cng sc nht l khi chng trnh/n v phn mm c kch thc ln. V
l do ny, cc phng php kim th hp trng ch yu c s dng cho
kim th n v [D.95].
Hai phng php c s dng trong kim th hp trng l kim th
dng iu khin (control flow testing) v kim th dng d liu (data flow
testing). Phng php kim th dng iu khin tp trung kim th tnh
ng n ca cc gii thut s dng trong cc chng trnh/n v phn
mm. Phng php kim th dng d liu tp trung kim th tnh ng n
ca vic s dng cc bin d liu s dng trong chng trnh/n v phn
mm. Trong chng ny, chng ta s tm hiu chi tit v phng php kim
th dng iu khin. Phng php kim th dng d liu s c gii thiu
trong chng 7.

6.2

th dng iu khin

Phng php kim th dng iu khin da trn khi nim th dng


iu khin (control flow graph). th ny c xy dng t m ngun ca
chng trnh/n v chng trnh. th dng iu khin l mt th c
hng gm cc nh tng ng vi cc cu lnh/nhm cu lnh v cc cnh
l cc dng iu khin gia cc cu lnh/nhm cu lnh. Nu i v j l cc
nh ca th dng iu khin th tn ti mt cnh t i n j nu lnh
tng ng vi j c th c thc hin ngay sau lnh tng ng vi i.
Xy dng mt th dng iu khin t mt chng trnh/n v chng
trnh kh n gin. Hnh 6.1 m t cc thnh phn c bn ca th dng
iu khin bao gm im bt u ca n v chng trnh, khi x l cha
cc cu lnh khai bo hoc tnh ton, im quyt nh ng vi cc cu lnh
iu kin trong cc khi lnh r nhnh hoc lp, im ni ng vi cc cu
lnh ngay sau cc lnh r nhnh, v im kt thc ng vi im kt thc
ca n v chng trnh. Cc cu trc iu khin ph bin ca chng trnh
c m t trong Hnh 6.2. Chng ta s s dng cc thnh phn c bn v
cc cu trc ph bin ny d dng xy dng th dng iu khin cho

6.3. CC O KIM TH

139

Hnh 6.1: Cc thnh phn c bn ca th chng trnh.

Hnh 6.2: Cc cu trc iu khin ph bin ca chng trnh.

mi n v chng trnh vit bng mi ngn ng lp trnh.


Chng ta th xem cch dng th dng iu khin cho n v chng
trnh c m ngun bng ngn ng C nh Hnh 6.3. Chng ta nh s cc
dng lnh ca n v chng trnh v ly s ny lm nh ca th. im
xut pht ca n v chng trnh ng vi cu lnh khai bo hm foo. nh
1 ng vi cu lnh khai bo bin e. Cc nh 2 v 3 ng vi cu lnh if.
nh 4 ng vi cu lnh khai bo bin x trong khi cc nh 5 v 6 ng vi
cu lnh if. nh 7,8 i din cho hai cu lnh 7 v 8. Trong trng hp
ny, chng ta khng tch ring thnh hai nh v y l hai cu lnh tun
t nn chng ta ghp chng thnh mt nh nhm ti thiu s nh ca
th dng iu khin.

6.3

Cc o kim th

Kim th hm (kim th hp en) c hn ch l chng ta khng bit c tha


hay thiu cc ca kim th hay khng so vi chng trnh ci t v thiu
tha mc no. o kim th l mt cng c gip ta o mc bao
ph chng trnh ca mt tp ca kim th cho trc. Mc bao ph ca

140

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.3: M ngun ca hm foo v th dng iu khin ca n.


Bng 6.1: Cc ca kim th cho o C1 ca hm foo
ID
tc1
tc2

Inputs
0, 1, 2, 3
1, 1, 2, 3

EO
0
1

RO Note

mt b kim th (tp cc ca kim th) c o bng t l cc thnh phn


thc s c kim th so vi tng th sau khi thc hin cc ca kim th.
Thnh phn lin quan c th l cu lnh, im quyt nh, iu kin con,
ng thi hnh hay l s kt hp ca chng. bao ph cng ln th tin
cy ca b kim th cng cao. o ny gip chng ta kim sot v qun
l qu trnh kim th tt hn. Mc tiu ca chng ta l kim th vi s ca
kim th ti thiu nhng t c bao ph ti a. C rt nhiu o
kim th ang c s dng hin nay, di y l ba o kim th ang
c s dng ph bin nht trong thc t [Lee03].
o kim th cp 1 (C1 ): mi cu lnh c thc hin t nht mt ln
sau khi chy cc ca kim th (test cases). V d, vi hm foo c m ngun
nh trong Hnh 6.3, ta ch cn hai ca kim th nh Bng 6.1 l t 100%
ph cho o C1 vi EO (expected output) l gi tr u ra mong i v
RO (real output) l gi tr u ra thc t (gi tr ny s c in khi thc
hin ca kim th).

6.3. CC O KIM TH

141

Bng 6.2: Cc trng hp cn kim th ca o C2 vi hm foo


im quyt nh
2
5

iu kin tng ng
a==0
(a == b) || (c == d)

ng
tc1
tc2

Sai
tc2
?

Bng 6.3: Cc ca kim th cho o C2 ca hm foo


ID
tc1
tc2
tc3

Inputs
0, 1, 2, 3
1, 1, 2, 3
1, 2, 1, 2

EO
0
1
Li chia cho 0

RO Note

o kim th cp 2 (C2 ): cc im quyt nh trong th dng iu


khin ca n v kim th u c thc hin t nht mt ln c hai nhnh
ng v sai. V d, Bng 6.2 m t cc trng hp cn kim th t c
100% ph ca o C2 ng vi hm foo c m t trong Hnh 6.3.
Nh vy, vi hai ca kim th trong o kim th cp 1 (tc1 v tc2), ta
ch kim th c 3/4 = 75% ng vi o kim th cp 2. Chng ta cn mt
ca kim th na ng vi trng hp sai ca iu kin (a == b) || (c == d)
nhm t c 100% ph ca o C2 . Bng 6.3 m t cc ca kim th
cho mc ch ny.
o kim th cp 3 (C3 ): Vi cc iu kin phc tp (cha nhiu iu
kin con c bn), vic ch quan tm n gi tr ng sai l khng kim
tra tnh ng n ca chng trnh ng vi iu kin phc tp ny. V d,
nu mt iu kin phc tp gm hai iu kin con c bn, chng ta c bn
trng hp cn kim th ch khng phi hai trng hp ng sai nh o
C2 . Vi cc n v chng trnh c yu cu cao v tnh ng n, vic tun
th o C3 l ht sc cn thit. iu kin m bo o ny l cc
iu kin con thuc cc iu kin phc tp tng ng vi cc im quyt
nh trong th dng iu khin ca n v cn kim th u c thc
hin t nht mt ln c hai nhnh ng v sai. V d, Bng 6.4 m t cc
trng hp cn kim th t c 100% ph ca o C3 ng vi

142

CHNG 6. KIM TH DNG IU KHIN

Bng 6.4: Cc trng hp cn kim th ca o C3 vi hm foo


im quyt nh
2
5
5

iu kin tng ng
a==0
(a == b)
(c == d)

ng
tc1
tc2
?

Sai
tc2
tc3
tc2

Bng 6.5: Cc ca kim th cho o C3 ca hm foo


ID
tc1
tc2
tc3
tc4

Inputs
0, 1, 2, 3
1, 1, 2, 3
1, 2, 1, 2
1, 2, 1, 1

EO
0
1
Li chia cho 0
1

RO Note

hm foo c m t trong Hnh 6.3.


Nh vy, vi ba ca kim th trong o kim th cp 2 (tc1, tc2 v tc3),
ta ch kim th c 7/8 = 87,5% ng vi o kim th cp 3. Chng ta
cn mt ca kim th na ng vi trng hp sai ca iu kin con c bn
(c == d) nhm t c 100% ph ca o C3 . Bng 6.5 m t cc ca
kim th cho mc ch ny.

6.4

Kim th da trn o

Kim th da trn o l phng php chy m ngun sao cho bao ph


mt o no . Hnh 6.4 m t quy trnh kim th da trn o cho
cc n v chng trnh. Vi mi n v chng trnh, th dng iu khin
ng vi cc o C1 v C2 l ging nhau trong khi chng khc vi th
dng iu khin ng vi o C3 . Vi mi n v chng trnh v mi o
kim th, chng ta tin hnh xy dng th dng iu khin tng ng.
Cc ng i ca chng trnh (xut pht t im bt u, i qua cc nh
ca th v kt thc im cui) c xc nh sao cho khi chng c
thc hin th o kim th tng ng c tha mn. Da trn tng

6.4. KIM TH DA TRN O

143

Hnh 6.4: Quy trnh kim th n v chng trnh da trn o.

Hnh 6.5: M ngun ca hm foo v th dng iu khin ca n.


ca T. J. McCabe [McC76, WM96], s ng i chng trnh ng vi th
dng iu khin ca n c tnh bng mt trong cc phng php sau:
S cnh s nh + 2
S nh quyt nh + 1
Sau khi c c cc ng i ca n v chng trnh cn kim th, vi
mi ng i, chng ta s sinh mt ca kim th tng ng. Cui cng, cc
ca kim th c thc hin trn n v chng trnh nhm pht hin cc li.

6.4.1

Kim th cho o C1

Xt li hm foo c m ngun nh Hnh 6.5. Chng ta xy dng th dng


iu khin ng vi ph C1 cho hm ny nh Hnh 6.5. t c 100%

144

CHNG 6. KIM TH DNG IU KHIN

Bng 6.6: Cc ca kim th cho o C1 ca hm foo


ID
tc1
tc2

Test Path
1; 2; 4; 5; 6; 7,8
1; 2; 3

Inputs
2, 2, 3, 5
0, 3, 2, 7

EO
1
0

RO Note

ph ca o C1 , ta ch cn hai ng i nh sau m bo c tt
c cc cu lnh ca hm foo c kim th t nht mt ln. kim tra vic
m bo o C1 , chng ta cn kim tra tt c cc lnh/khi lnh (1-8) u
c xut hin t nht mt ln trong cc ng i ny. R rng, hai ng
i ny tha mn iu kin trn nn chng ta t c 100% ph C1 .
1. 1; 2; 4; 5; 6; 7,8
2. 1; 2; 3
Vi ng i 1; 2; 4; 5; 6; 7,8, ta s sinh mt ca kim th n c
thc thi khi thc hin ca kim th ny. tng ca vic sinh ca kim th
ny l tm mt b gi tr u vo cho a, b, c v d sao cho iu kin ng vi
im quyt nh 2 (a == 0) l sai v iu kin ng vi im quyt nh 5
((a == b) || (c == d)) l ng. Gi tr u ra mong i (EO) ca ca kim
th ny l 1. Tng t, ta s sinh ca kim th ng vi ng i 1; 2; 3 vi
u ra mong i l 0. Chng ta s tm mt b u vo sao cho iu kin
(a == 0) l ng. Bng 6.6 l mt v d v hai ca kim th c sinh ra
bng tng trn.

6.4.2

Kim th cho o C2

Nh chng ta bit, vi mi n v chng trnh, th dng iu khin


ng vi cc o C1 v C2 l ging nhau. V vy, th dng iu khin ng
vi o C1 ca hm foo c m t Hnh 6.5 cng l th dng iu
khin ca hm ny ng vi o C2 . Tuy nhin, c 100% ph ca
o C2 chng ta cn ti thiu ba ng i. Ti sao chng ta bit c iu
ny? Nh trnh by mc 6.4, chng ta c hai cch tnh c con s
ny. V d, th dng iu khin ca hm foo c hai im quyt nh l 2
v 5 nn chng ta cn 2 + 1 = 3 ng i t c 100% ph ca

6.4. KIM TH DA TRN O

145

Bng 6.7: Cc ca kim th cho o C2 ca hm foo


ID
tc1
tc2
tc3

Test Path
1; 2; 4; 5; 6; 7,8
1; 2; 3
1; 2; 4; 5; 7,8

Inputs
2, 2, 3, 5
0, 3, 2, 7
2,3,4,5

EO
1
0
li chia cho 0

RO Note

o C2 . Cc ng i cn thit c lit k nh sau. R rng vi ba ng i


ny, c hai nhnh ng v sai ca hai im quyt 2 v 5 u c kim tra.
1. 1; 2; 4; 5; 6; 7,8
2. 1; 2; 3
3. 1; 2; 4; 5; 7,8
sinh cc ca kim th ng vi cc ng i trn, chng ta ch cn
quan tm n ng i (3) v vic sinh cc ca kim th cho cc ng i
(1) v (2) c trnh by mc kim th cho o C1 (mc 6.4.1). Vi
ng i (3), ta ch cn chn mt b u vo sao cho iu kin ng vi
im quyt nh 2 (a == 0) l sai v iu kin ng vi im quyt nh 5
((a == b) || (c == d)) cng l sai. Gi tr u ra mong i ca ng i
ny l li chia cho 0. Bng 6.7 l mt v d v ba ca kim th c sinh ra
bng tng trn ng vi cc ng i (1), (2), v (3).
o C1 m bo cc cu lnh c ving thm t nht mt ln khi
thc hin tt c cc ca kim th c sinh ra ng vi o ny. y l
o kh tt v vic m bo o ny trong thc t cng kh tn km. Tuy
nhin, qua v d trn, chng ta thy rng nu ch s dng o C1 vi hai
ca kim th nh trong bng 6.6, li chia cho khng s khng c pht hin.
Ch khi kim tra c hai nhnh ng sai ca tt c cc im quyt nh (cc
lnh iu khin) th li ny mi c pht hin nh ca kim th tc3 trong
bng 6.7.

6.4.3

Kim th cho o C3

Nh trnh by mc 6.3, ng vi mi n v chng trnh, th dng


iu khin ng vi o C3 khc vi th dng iu khin ng vi cc

146

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.6: Hm foo v th dng iu khin ca n ng vi o C3 .


o C1 v C2 . V d, th dng iu khin ca hm foo ng vi o
C3 c xy dng nh Hnh 6.6. Vi cu lnh iu kin 5, v y l iu
kin phc tp nn ta phi tch thnh hai iu kin con c bn l (a == b)
v (c == d) ng vi hai im quyt nh 5c1 v 5c2 trong th dng iu
khin. T cu lnh 4, nu iu kin con (a == b) ng, ta khng cn kim
tra iu kin con cn li (v iu kin phc tp l hoc ca hai iu kin
con c bn) v thc hin cu lnh 6. Nu iu kin con (a == b) l sai, ta
cn tin hnh kim tra iu kin con c bn cn li (c == d). Nu iu kin
ny ng, ta tin hnh cu lnh 6. Ngc li, chng ta thc hin cc cu
lnh 7 v 8. Trong th ny, chng ta gp hai lnh 7 v 8 trong mt nh
(nh (7,8)) v y l hai cu lnh tun t. Mc ch ca vic ny l nhm
ti thiu s nh ca th dng iu khin. Mt th c s nh cng nh
th chng ta cng d dng trong vic sinh cc ng i ca chng trnh v
trnh cc sai st trong qu trnh ny.
th dng iu khin ca hm foo ng vi o C3 nh Hnh 6.6 c
ba im quyt nh l 2, 5c1 v 5c2 nn chng ta cn 3 + 1 = 4 ng i
c 100% ph ca o C3 . Cc ng i cn thit c lit k nh
sau:
1. 1; 2; 4; 5c1; 6; 7,8
2. 1; 2; 4; 5c1; 5c2; 6; 7,8

6.4. KIM TH DA TRN O

147

Bng 6.8: Cc ca kim th cho o C3 ca hm foo


ID
tc1
tc2
tc3
tc4

Test Path
1; 2; 4; 5c1; 6; 7,8
1; 2; 4; 5c1; 5c2; 6; 7,8
1; 2; 4; 5c1; 5c2; 7,8
1; 2; 3

Inputs
0, 2, 3, 5
2, 2, 2, 7
2,3,4,5
2,3,4,4

EO
0
1
li chia cho 0
1

RO Note

3. 1; 2; 4; 5c1; 5c2; 7,8


4. 1; 2; 3
Tng t nh cc phng php kim th o C1 v C2 , chng ta d
dng sinh cc ca kim th tng ng cho cc ng i chng trnh nh
m t trn. Bng 6.8 l mt v d v cc ca kim th cho hm foo ng vi
o C3 .

6.4.4

Kim th vng lp

Cho d chng ta tin hnh kim th cc n v chng trnh vi o C3


( o vi yu cu cao nht), phng php kim th dng iu khin khng
th kim th cc vng lp xut hin trong cc n v chng trnh. L do
l cc ng i sinh ra t th dng iu khin khng cha cc vng lp.
Trong thc t, li hay xy ra cc vng lp. V l do ny, chng ta cn sinh
thm cc ca kim th cho cc vng lp nhm gim t l li ca cc n v
chng trnh. Vi mi n v chng trnh c vng lp, chng ta cn quan
tm n ba trng hp sau:
Lnh lp n gin: n v chng trnh ch cha ng mt vng lp
(thn ca vng lp khng cha cc vng lp khc).
Lnh lp lin k: n v chng trnh ch cha cc lnh lp k tip
nhau.
Lnh lp lng nhau: n v chng trnh ch cha cc vng lp cha
cc lnh lp khc.

148

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.7: Hm average v th dng iu khin ca n ng vi o C3 .


kim th cc n v chng trnh ch c lnh lp n gin, ta xt hm
average vi m ngun th dng iu khin tng ng vi o C3 nh
Hnh 6.7.
th dng iu khin ca hm average ng vi o C3 nh Hnh 6.7
c nm im quyt nh l 2, 3, 5, 6 v 9 nn chng ta cn 5 + 1 = 6 ng
i c 100% ph ca o C3 . Cc ng i cn thit c lit k
nh sau:
1. 1; 2; 9; 10
2. 1; 2; 9; 11
3. 1; 2; 3; 9; 10
4. 1; 2; 3; 4; 5; 8; 2; 9; 11
5. 1; 2; 3; 4; 5; 6; 8; 2; 9; 11
6. 1; 2; 3; 4; 5; 6; 7; 8; 2; 9; 10

6.4. KIM TH DA TRN O

149

Bng 6.9: Cc ca kim th cho o C3 ca hm average


ID
tc1
tc2
tc3
tc4
tc5
tc6

Test Path
1; 2; 9; 10
1; 2; 9; 11
1; 2; 3; 9; 10
1; 2; 3; 4; 5; 8; 2; 9; 11
1; 2; 3; 4; 5; 6; 8; 2; 9; 11
1; 2; 3; 4; 5; 6; 7; 8; 2; 9; 10

Inputs

EO

[-999, ...], 1, 2

-999

RO Note
tc6
tc6

[0,-999], 1, 2
[3,-999], 1, 2
[1,-999], 1, 2

-999
-999
1

Vi mi ng i, chng ta s sinh mt ca kim th tng ng. Bng 6.9


m t cc ca kim th cho hm average ng vi o C3 . Vi mi ca
kim th, b d liu u vo (inputs) gm ba thnh phn: double value[],
double min, v double max. Vi ng i 1; 2; 9; 10, chng ta khng th tm
c b d liu u vo ng i ny c thc thi. Thc vy, iu kin
thc thi ng i ny l value[0] = -999 (tc l iu kin 2 l sai) v
iu kin 9 ng (tc l vcnt > 0). iu ny khng bao gi xy ra v nu
value[0] = -999 th vcnt = 0. Tng t, chng ta cng khng th sinh b
kim th vi ng i 1; 2; 3; 9; 10. Trong cc trng hp ny, chng ta
khng cn sinh cc ca kim th cho nhng ng i ny. Chng s c
kim th bi cc ng i khc (V d: ng i 1; 2; 3; 4; 5; 6; 7; 8; 2; 9;
10 cha cc nh ca cc ng dn trn).
Vi cc ng i trn, vng lp while ca hm average ch c thc hin
ti a mt ln lp nn chng ta rt kh pht hin cc li tim n (c th
c) bn trong vng lp ny. Cc li ny c th xy ra khi vng lp ny c
thc hin nhiu ln lp. V d trn ch ra nhng hn ch ca phng php
kim th dng iu khin khi p dng cho cc chng trnh/n v chng
trnh c cha vng lp. gii quyt vn ny, chng ta cn sinh thm
by ca kim th ng vi by trng hp sau:
1. Vng lp thc hin 0 ln
2. Vng lp thc hin 1 ln
3. Vng lp thc hin 2 ln

150

CHNG 6. KIM TH DNG IU KHIN

Bng 6.10: Cc ca kim th cho cho kim th vng lp while ca hm average


ID
tcl0
tcl1
tcl2
tclk
tcl(n-1)
tcln
tcl(n+1)

S ln lp
0
1
2
5
99
100

Inputs
[-999, ...], 1, 2
[1,-999], 1, 2
[1,2,-999], 1, 2
[1,2,3,4,5,-999], 1, 10
[1,2,...,99,-999], 1, 100
[1,2,...,100], 1, 2

EO RO Note
-999
1
1.5
3
50
50.5

4. Vng lp thc hin k ln, 2 < k < n - 1, vi n l s ln lp ti a ca


vng lp
5. Vng lp thc hin n - 1 ln
6. Vng lp thc hin n ln
7. Vng lp thc hin n + 1 ln
Ch rng trong mt s trng hp chng ta c th khng xc nh
c s ln lp ti a ca cc vng lp. Trong trng hp ny, chng ta ch
cn sinh bn ca kim th u tin. Tng t, trong mt s cc trng hp
khc, chng ta khng th sinh ca kim th vng lp thc hin n + 1 ln
(trng hp th 7). Khi , chng ta ch cn sinh su ca kim th cn li
(cc trng hp t 16). V d, vi vng lp while trong hm average nh
Hnh 6.7, vng lp ny ch thc hin lp ti a 100 ln nn chng ta khng
th sinh ca kim th n thc hin n + 1 = 101 ln. Kt qu l chng ta
ch cn sinh su ca kim th u tin nh trong Bng 6.10 nhm kim th
vng lp ny.
Vi cc chng trnh/n v chng trnh c cc vng lp lin k, chng
ta tin hnh kim th tun t t trn xung. Mi vng lp c kim th
bng by ca kim th nh vng lp n gin (nh m t trn). Trong
trng hp cc vng lp lng nhau, chng ta tin hnh kim th tun t cc
vng lp theo th t t trong ra ngoi (mi vng lp cng dng by ca kim
th nh m t trn).

6.5. TNG KT

6.5

151

Tng kt

Kim th dng iu khin l mt trong nhng phng php kim th quan


trng nht ca chin lc kim th hp trng cho cc chng trnh/n v
chng trnh. Phng php ny cho php pht hin ra cc li (c th c)
tim n bn trong chng trnh/n v chng trnh bng cch kim th cc
ng i ca n tng ng vi cc dng iu khin c th c. p dng
phng php ny, chng ta cn xc nh o kim th (cn kim th vi
o no?). Tip theo, th dng iu khin ca chng trnh/n v chng
trnh ng vi o kim th s c to ra. Da vo th ny, chng ta
s sinh ra cc ng i c lp. S ng i c lp ny l cc trng hp
ti thiu nht m bo 100% bao ph ng vi o yu cu. Vi mi
ng i, chng ta s sinh ra mt ca kim th sao cho khi n c dng
kim th th ng i ny c thc thi. Vic sinh cc u vo cho cc ca
kim th ny l mt bi ton th v. Chng ta s chn mt b u vo sao
cho tha mn cc im quyt nh c trong ng i tng ng. Gi tr u
ra mong mun ng vi mi b u vo ca mi ca kim th cng s c
tnh ton. y l bi ton kh v thng ch c cc chuyn gia phn tch
chng trnh mi c th tr li chnh xc gi tr ny. Cui cng, cc ca kim
th c chy nhm pht hin ra cc li ca chng trnh/n v chng
trnh cn kim th. Khi mt li c pht hin bi mt ca kim th no ,
n s c thng bo ti lp trnh vin tng ng. Lp trnh vin s tin
hnh sa li (pht hin v tr ca li cu lnh no v sa n). Trong trng
hp ny, chng ta khng ch thc hin li ca kim th pht hin ra li ny
m phi thc hin li tt c cc ca kim th ca n v chng trnh. L do
chng ta phi thc hin cng vic ny l v khi sa li ny c th gy ra mt
s li khc.
Vic p dng phng php kim th dng iu khin l kh v tn km
hn cc phng php kim th hp en (phn hoch tng ng, phn tch
gi tr bin, bng quyt nh, ...). p dng k thut ny, chng ta cn i
ng nhn lc v kim th c kin thc v k nng tt. Hn na, chng ta
cn mt s u t ln v cc ngun lc khc (ti chnh, thi gian, ...) mi
c th thc hin tt phng php ny. y l mt yu cu kh v khng
nhiu cng ty phn mm p ng c. Kim th dng iu khin t ng
ha hn s l mt gii php tt nhm gip cho cc cng ty gii quyt nhng
kh khn ny. Hin nay, c nhiu cng c h tr mt phn hoc hon
ton cc bc trong phng php ny. Mt mn trng lp trnh mi ni

152

CHNG 6. KIM TH DNG IU KHIN

m cc cng c lp trnh trc quan c tch hp vi cng c kim th t


ng nhm gii quyt nhng kh khn nu trn. Eclipse1 l mt v d in
hnh v xu hng ny. Trong c phin bn hin nay ca m trng ny
c tch hp cng c kim th t ng c tn l JUnit2 . Cng c kim th
ny cha h tr vic sinh cc ca kim th t ng nhng n cho php chng
ta vit cc kch bn kim th c lp vi m ngun v thc thi chng mt
cch t ng trn mt mi trng thng nht.

6.6

Bi tp

1. Ti sao chng ta cn thc hin kim th hp trng?


2. Phn bit kim th hp trng v kim th hp en.
3. Ti sao kim th hp trng thng c chi ph v kh cao hn kim
th hp en?
4. Th no l th dng iu khin ca mt chng trnh/n v chng
trnh?
5. Trnh by cc o kim th cho kim th dng iu khin.
6. Chng minh rng o C2 m bo o C1 .
7. Chng minh rng o C3 m bo o C2 .
8. Trnh by cc bc nhm kim th mt n v chng trnh theo
phng php kim th dng iu khin vi mt o kim th cho
trc.
9. Cho hm c vit bng ngn ng C nh Hnh 6.8.
Hy xy dng th dng iu khin cho hm Grade ng vi
o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .

6.6. BI TP

153

Hnh 6.8: M ngun ca hm Grade.


10. Cho hm c vit bng ngn ng C nh Hnh 6.9.
Hy xy dng th dng iu khin cho hm BinSearch ng vi
o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy sinh cc ca kim th kim th vng lp while.
11. Cho hm c vit bng ngn ng C nh Hnh 6.10.
Hy xy dng th dng iu khin cho hm LaSoNguyenTo ng
vi o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy sinh cc ca kim th kim th vng lp do ... while.
1
2

www.eclipse.org
http://junit.org/

154

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.9: M ngun ca hm BinSearch.


12. Cho hm c vit bng ngn ng C nh Hnh 6.11.
Hy xy dng th dng iu khin cho hm UCLN ng vi o
C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy sinh cc ca kim th kim th vng lp while.
13. Cho hm c vit bng ngn ng C nh Hnh 6.12.

Hnh 6.10: M ngun ca hm LaSoNguyenTo.

6.6. BI TP

155

Hnh 6.11: M ngun ca hm UCLN.

Hnh 6.12: M ngun ca hm Sum.


Hy xy dng th dng iu khin cho hm sum ng vi o
C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy sinh cc ca kim th kim th vng lp for.
14. Cho hm c vit bng ngn ng C nh Hnh 6.13.
Hy xy dng th dng iu khin cho hm Power ng vi
o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy sinh cc ca kim th kim th vng lp for.

156

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.13: M ngun ca hm Power.

Hnh 6.14: M ngun ca hm LaNamNhuan.


15. Cho hm c vit bng ngn ng C nh Hnh 6.14.
Hy xy dng th dng iu khin cho hm LaNamNhuan ng vi
o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy xy dng th dng iu khin cho hm LaNamNhuan ng vi
o C3 .
Hy sinh cc ng i v cc ca kim th vi o C3 .
16. Cho hm c vit bng ngn ng C nh Hnh 6.15.
Hy xy dng th dng iu khin cho hm SoKyTu ng vi
o C1 v C2 .
Hy sinh cc ng i v cc ca kim th vi o C1 .
Hy sinh cc ng i v cc ca kim th vi o C2 .
Hy xy dng th dng iu khin cho hm LaNamNhuan ng vi
o C3

6.6. BI TP

157

Hnh 6.15: M ngun ca hm SoKyTu.


Hy sinh cc ng i v cc ca kim th vi o C3 .
Hy sinh cc ca kim th kim th vng lp for.
17. Cho hm c vit bng ngn ng C nh Hnh 6.16.
Hy sinh cc ca kim th kim th cc vng lp k tip nhau
ca hm NoiMang.
18. Cho hm c vit bng C++ nh Hnh 6.17.
Hy sinh cc ca kim th kim th cc vng lp lng nhau ca
hm SelectionSort.

158

CHNG 6. KIM TH DNG IU KHIN

Hnh 6.16: M ngun ca hm NoiMang.

Hnh 6.17: M ngun ca hm SelectionSort.

Chng 7
Kim th dng d liu
Nh trnh by trong chng 6, kim th dng iu khin (control flow
testing) v kim th dng d liu (data flow testing) c xem l hai phng
php ch yu trong chin lc kim th hp trng nhm pht hin cc li
tim tng bn trong cc chng trnh/n v chng trnh. Phng php
kim th dng iu khin cho php sinh ra cc ca kim th tng ng vi
cc ng i (dng iu khin) ca chng trnh. Tuy nhin, ch p dng
phng php ny l cha pht hin tt c cc li tim n bn trong
chng trnh. Trong thc t, cc li thng hay xut hin ti cc bin c
s dng trong chng trnh/n v chng trnh. Kim th dng d liu cho
php ta pht hin nhng li ny. Bng cch p dng c hai phng php ny,
chng ta kh t tin v cht lng ca sn phm phn mm. Trong chng
ny, chng ta s tm hiu phng php kim th dng d liu v phng
php kim th da trn lt ct nhm sinh ra cc ca kim th phc v mc
ch trn.

159

160

7.1

7.1.1

CHNG 7. KIM TH DNG D LIU

Kim th da trn gn v s dng gi tr


bin
tng

Mi chng trnh/n v chng trnh l chui cc hot ng gm nhn cc


gi tr u vo, thc hin cc tnh ton, gn gi tr mi cho cc bin (cc
bin cc b v ton cc) v cui cng l tr li kt qu u ra nh mong
mun. Khi mt bin c khai bo v gn gi tr, n phi c s dng
u trong chng trnh. V d, khi khai bo mt bin int tem = 0, chng
ta hy vng bin tem s c s dng cc cu lnh tip theo trong n v
chng trnh. Vic s dng bin ny c th trong cc cu lnh tnh ton hoc
trong cc biu thc iu kin. Nu bin ny khng c s dng cc cu
lnh tip theo th vic khai bo bin ny l khng cn thit. Hn na, cho
d bin ny c c s dng th tnh ng n ca chng trnh cha chc
m bo v li c th xy ra trong qu trnh tnh ton hoc trong cc
biu thc iu kin. gii quyt vn ny, phng php kim th dng
d liu xem n v chng trnh gm cc ng i tng ng vi cc dng
d liu (tng t nh dng iu khin c trnh by trong chng 6) ni
m cc bin c khai bo, c gn gi tr, c s dng tnh ton v
tr li kt qu mong mun ca n v chng trnh ng vi ng i ny.
Vi mi ng i, chng ta s sinh mt ca kim th kim tra tnh ng
n ca n. Qu trnh kim th dng d liu c chia thnh hai pha ring
bit: kim th dng d liu tnh (static data flow testing) v kim th dng
d liu ng (dynamic data flow testing). Vi kim th dng d liu tnh,
chng ta p dng cc phng php phn tch m ngun m khng cn chy
chng trnh/n v chng trnh nhm pht hin cc vn v khai bo,
khi to gi tr cho cc bin v s dng chng. Chi tit v vn ny s
c trnh by trong mc 7.1.2. Vi kim th dng d liu ng, chng ta
s chy cc ca kim th nhm pht hin cc li tim n m kim th tnh
khng pht hin c.

7.1.2

Cc vn ph bin v dng d liu

Trong qu trnh lp trnh, cc lp trnh vin c th vit cc cu lnh bt


thng hoc khng tun theo chun lp trnh. Chng ta gi nhng bt

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

161

thng lin quan n vic khai bo, khi to gi tr cho cc bin v s dng
chng l cc vn v dng d liu ca n v chng trnh. V d, mt lp
trnh vin c th s dng mt bin m khng khi to gi tr sau khi khai
bo n (int x; if(x == 100){ ...}).
Cc vn ph bin v dng d liu c th c pht hin bng phng
php kim th dng d liu tnh. Theo Fosdick v Osterweil [DJ76], cc vn
ny c chia thnh ba loi nh sau:
Gn gi tr ri gn tip gi tr (Loi 1): V d, Hnh 7.1 cha hai
cu lnh tun t x = f1(y); x = f2(z); vi f1 v f2 l cc hm
nh ngha trc v y, z ln lt l cc tham s u vo ca cc hm
ny. Chng ta c th xem xt hai cu lnh tun t ny vi cc tnh
hung sau:
Khi cu lnh th hai c thc hin, gi tr ca bin x c gn
v cu lnh u khng c ngha.
Lp trnh vin c th c nhm ln cu lnh u. Cu lnh ny
c th l gn gi tr cho mt bin khc nh l w = f1(y).
C th c nhm ln cu lnh th hai. Lp trnh vin nh gn
gi tr cho mt bin khc nh l w = f2(z).
Mt hoc mt s cu lnh gia hai cu lnh ny b thiu. V d
nh cu lnh w = f3(x).
Ch c lp trnh vin v mt s thnh vin khc trong d n mi c
th tr li mt cch chnh xc vn trn thuc trng hp no trong
bn tnh hung trn. Mc d vy, nhng vn tng t nh v d
ny l kh ph bin v chng ta cn phn tch m ngun pht hin
ra chng.
Cha gn gi tr nhng c s dng (Loi 2): V d, Hnh 7.2
cha ba cu lnh tun t vi y l mt bin c khai bo v gn
gi tr (y = f(x1);). Trong trng hp ny, bin z cha c gn gi
tr khi to nhng c s dng trong cu lnh tnh gi tr ca
bin x (x = y + z). Chng ta cng c th l gii vn ny theo cc
tnh hung sau:
Lp trnh vin c th b qun lnh gn gi tr cho bin z trc
cu lnh tnh ton gi tr cho bin x. V d, z = f2(x2), vi f2 l

162

CHNG 7. KIM TH DNG D LIU

Hnh 7.1: Tun t cc cu lnh c vn thuc loi 1.

Hnh 7.2: Tun t cc cu lnh c vn thuc loi 2.


mt hm c nh ngha v x2 l mt bin c khai bo
v gn gi tr.
C th c s nhm ln gia bin z vi mt bin c khai bo
v gn gi tr. V d, x = y + x2.
c khai bo v gn gi tr nhng khng c s dng
(Loi 3): Nu mt bin c khai bo v gn gi tr nhng khng
h c s dng (trong cc cu lnh tnh ton hoc trong cc biu thc
iu kin), chng ta cn xem xt cn thn vn ny. Tng t nh
cc trng hp trn, cc tnh hung sau c th c s dng l gii
cho vn ny:
C s nhm ln gia bin ny v mt s bin khc c s dng
trong chng trnh. Trong thit k, bin ny c s dng nhng
n b thay th (do nhm ln) bi mt bin khc.
Bin ny thc s khng c s dng trong chng trnh. Lc
u lp trnh vin nh s dng n nh l mt bin tm thi hoc

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

163

bin trung gian nhng sau li khng cn dng. Lp trnh vin


ny qun xa cc cu lnh khai bo v gn gi tr cho bin ny.
Huang [C.79] gii thiu mt phng php xc nh nhng bt
thng trong vic s dng cc bin d liu bng cch s dng s chuyn
trng thi ng vi mi bin d liu ca chng trnh. Cc thnh phn ca
s chuyn trng ca mt chng trnh ng vi mi bin gm:
Cc trng thi, gm:
U : bin cha c gn gi tr
D: bin c gn gi tr nhng cha c s dng
R: bin c s dng
A: trng thi li
Cc hnh ng, gm:
d: bin c gn gi tr
r: bin c s dng
u: bin cha c gn gi tr hoc c khai bo li v cha c
gn gi tr
Hnh 7.3 m t s chuyn trng thi ca mt bin trong mt chng
trnh/n v chng trnh. Ban u, bin ny c khai bo v cha c
gn gi tr nn trng thi ca chng trnh l U . Ti trng thi ny, nu bin
ny c s dng (hnh ng r) th chng trnh c vn v trng thi
ca chng trnh l A. Ngc li, trng thi U vn c gi nguyn nu cc
cu lnh tip theo vn cha cha lnh gn gi tr cho bin ny (hnh ng
u). Cho n khi gp cu lnh gn gi tr cho bin ny (hnh ng d), trng
thi ca chng trnh c chuyn thnh D. Nu bin ny c s dng
cc cu lnh tip theo (hnh ng r) th trng thi ca chng trnh chuyn
thnh R. Ngc li, nu cc cu lnh tip theo li gn li gi tr cho bin
(hnh ng d) hoc khai bo li bin ny v khng gn gi tr cho n (hnh
ng u) th xy ra vn v trng thi ca chng trnh l A. Ti trng
thi ny, mi hnh ng (d, u v r) xy ra u khng thay i trng thi ca
chng trnh. Ti trng thi R, nu bin ny vn tip tc c s dng
cc lnh tip theo (hnh ng r) th trng thi ca chng trnh vn khng

164

CHNG 7. KIM TH DNG D LIU

Hnh 7.3: S chuyn trng thi ca mt bin.


thay i. Ngc li, nu xut hin cu lnh gn li gi tr cho bin (hnh
ng d) th trng thi ca chng trnh quay v D. Trong trng hp xut
hin cu lnh khai bo li bin ny v khng gn gi tr cho n (hnh ng
u) th chng trnh c chuyn t trng thi R sang trng thi U .
Nh vy, cc vn vi dng d liu thuc loi 1 ng vi trng hp
dd xy ra trong s chuyn trng thi. Cc vn thuc loi 2 ng vi
trng hp ur v loi 3 ng vi trng hp du. pht hin cc vn ny,
chng ta s tin hnh xy dng s chuyn trng thi ng vi mi bin nh
Hnh 7.3. Nu trng thi A xut hin th chng trnh c vn v dng d
liu. Trong trng hp ny, chng ta cn kim tra li m ngun, tm nguyn
nhn ca tnh hung ny v sa li. Tuy nhin, cho d trng thi li (trng
thi A) khng xut hin trong qu trnh phn tch chng trnh, chng ta
vn khng m bo c rng chng trnh khng cn li. Cc li c th
xy ra trong qu trnh gn/gn li gi tr cho cc bin v trong qu trnh s
dng chng (trong cc cu lnh tnh ton, trong cc biu thc iu kin, ...).
pht hin nhng li ny, chng ta cn phng php kim th dng d
liu ng. Phng php ny s c trnh by chi tit cc mc tip theo.

7.1.3

Tng quan v kim th dng d liu ng

Kim th dng d liu tnh khng m bo pht hin tt c cc li lin quan


n vic khi to, gn gi tr mi v s dng cc bin (trong cc cu lnh
tnh ton v cc biu thc iu kin nh trong cc lnh r nhnh v lp).
N c xem nh mt bc tin x l m ngun trc khi p dng phng

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

165

php kim th dng d liu ng. Chng ta hy vng cc li cn li (khng


c pht hin bi kim th dng d liu tnh) s c pht hin bi phng
php ny.
Cc bin xut hin trong mt chng trnh theo mt s trng hp nh:
khi to, gn gi tr mi, tnh ton, v dng lm iu khin trong cc biu
thc iu kin ca cc lnh r nhnh v lp. C hai l do chnh khin chng
ta phi tin hnh kim th dng d liu ca chng trnh:
Chng ta cn chc chn rng mt bin phi c gn ng gi tr, tc
l chng ta phi xc nh c mt ng i ca bin t mt im bt
u ni n c nh ngha n im m bin c s dng. Mi
khi cha c cc ca kim th kim tra ng i ny, chng ta khng
th t tin khng nh l bin ny c gn gi tr ng [SJ85].
Ngay c khi gn ng gi tr cho bin th cc gi tr c sinh ra cha
chc chnh xc do tnh ton hoc cc biu thc iu kin sai (bin
c s dng sai).
p dng phng php kim th dng d liu ng, chng ta phi xc
nh cc ng dn chng trnh c mt im u vo v mt im u ra
sao cho n bao ph vic gn gi tr v s dng mi bin ca chng trnh/n
v chng trnh cn kim th. C th, chng ta cn thc hin cc bc sau:
Xy dng th dng d liu ca chng trnh/n v chng trnh
Chn mt hoc mt s tiu ch kim th dng d liu
Xc nh cc ng dn chng trnh ph hp vi tiu ch kim th
chn
Ly ra cc biu thc iu kin t tp cc ng i, thc hin gii cc
biu thc iu kin c c cc gi tr u vo cho cc ca kim th
tng ng vi cc ng i ny v tnh ton gi tr u ra mong i
ca mi ca kim th
Thc hin cc ca kim th xc nh cc li (c th c) ca chng
trnh.
Sa cc li (nu c) v thc hin li tt c cc ca kim th trong trng
hp bc trn pht hin ra li.

166

CHNG 7. KIM TH DNG D LIU

Nh vy, cc bc trong quy trnh kim th dng d liu ng cng tng


t nh cc bc trong quy trnh kim th dng iu khin trong chng 6.
Tuy nhin, th dng iu khin hon ton khc vi th dng d liu.
Hn na, cc tiu ch kim th ( o kim th) ng vi hai k thut ny
cng khc nhau. Kt qu l, cc ng i v phng php chn chng t
th cng khc nhau. Cc vn ny s c trnh by chi tit cc mc tip
theo.

7.1.4

th dng d liu

Trong mc ny, chng ta s tm hiu v th dng d liu v cch xy dng


n t n v chng trnh. Trong thc t, chng ta c th s dng cc tin
ch ca cc chng trnh dch xy dng th ny mt cch t ng.
th dng d liu ca mt chng trnh/n v chng trnh s dng cc khi
nim lin quan n vic nh ngha v s dng cc bin.
nh ngha 7.1. (nh ngha ca mt bin.) Mt cu lnh thc hin vic
gn gi tr cho mt bin c gi l cu lnh nh ngha ca bin (k hiu
l def ). V d, trong hm VarTypes vit bng ngn ng C nh Hnh 7.4, cu
lnh i = x (dng 3) l mt v d v vic nh ngha ca bin i.
nh ngha 7.2. (Cha nh ngha mt bin.) Mt cu lnh khai bo mt
bin nhng cha thc hin vic gn gi tr c gi l undef vi bin .
V d, trong hm VarTypes vit bng ngn ng C nh Hnh 7.4, cu lnh
iptr = malloc(sizeof(int)); (dng 4) l mt v d v vic cha nh ngha
bin iptr. Cu lnh tip theo (*iptr = i + x; (dng 5)) l mt nh ngha
ca bin ny. Tuy nhin, cu lnh dng 9 li nh ngha li bin iptr v v
vy cu lnh ny l mt v d khc v vic cha nh ngha bin ny.
nh ngha 7.3. (Bin c s dng.) Mt cu lnh s dng mt bin (
tnh ton hoc kim tra cc iu kin) c gi l use ca bin .
nh ngha 7.4. (Bin c s dng tnh ton.) Mt cu lnh s dng
mt bin tnh ton gi tr ca mt bin khc c gi l c-use vi bin .
V d, trong hm VarTypes nh Hnh 7.4, cu lnh *iptr = i + x; (dng 5)
l c-use ng vi bin i v bin x.
nh ngha 7.5. (Bin c s dng kim tra cc iu kin.) Mt cu
lnh s dng mt bin trong cc biu thc iu kin (cu lnh r nhnh, lp,

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

167

Hnh 7.4: V d v nh ngha v s dng cc bin.


...) c gi l p-use vi bin . V d, trong hm VarTypes nh Hnh 7.4,
cu lnh if (*iptr > y) ... (dng 6) l p-use ng vi bin iptr v bin y.
nh ngha 7.6. ( th dng d liu.) th dng d liu ca mt chng
trnh/n v chng trnh l mt th c hng G = <N, E>, vi:
N l tp cc nh tng ng vi cc cu lnh def hoc c-use ca cc
bin c s dng trong n v chng trnh. th G c hai nh c
bit l nh bt u (tng ng vi lnh def ca cc bin tham s) v
nh kt thc n v chng trnh.
E l tp cc cnh tng ng vi cc cu lnh p-use ca cc bin.
Chng ta s tm hiu cch xy dng th dng d liu ca mt n v
chng trnh thng qua v d v hm ReturnAverage bng ngn ng C trong
Hnh 7.5. th dng d liu ca hm ny c trnh by Hnh 7.6. Trong
th ny, nh bt u (nh 1) th hin vic nh ngha (def ) cc bin tham
s value[], AS, MIN, MAX. nh 2 tng ng vi vic nh ngha cc bin cc
b i, ti, tv, sum. Tip n, chng ta s dng nh NULL (nh 3) vi mc
ch y l im bt u ca vng lp while. Ch rng nh NULL khng
thc hin bt c tnh ton hay nh ngha cho bin no c. nh ny cng
s l im kt thc ca vng lp ny sau khi biu thc iu kin ca vng
lp l sai. Cu lnh ti++; c biu din bng nh 4. Cnh (3, 4) biu din

168

CHNG 7. KIM TH DNG D LIU

Hnh 7.5: M ngun ca hm ReturnAverage bng ngn ng C.

biu thc iu kin ca vng lp (((ti < AS) && (value[i] != -999))).
ngha ca cnh ny l nu biu thc ny ng th chuyn t nh 3 sang thc
hin nh 4. Cc cu lnh tv++; v sum = sum + value[i]; c biu din bi
nh 5. chuyn t nh 4 sang nh 5 (cnh (4, 5)), iu kin tng ng vi
cnh ny phi ng (((value[i] >= MIN) && (value[i] <= MAX)) l ng).
Tip theo, nh 6 biu din cu lnh i++;. Trong trng hp biu thc sau l
sai ((value[i] >= MIN) && (value[i] <= MAX)), th s chuyn t nh 4
sang nh 6 (cnh (4, 6)). T nh 5, th s chuyn n nh 6 (cnh (5,
6)) v khng c biu thc iu kin ca cnh ny. Vng lp while s kt thc
khi iu kin ((ti < AS) && (value[i] != -999)) l sai. Khi , th s
chuyn t nh 3 sang nh 7 (cnh (3, 7)). nh 7 l nh NULL tng ng vi
cu lnh if (tv > 0). nh 8 l biu din ca cu lnh av = (double) -999;
trong khi cu lnh av = (double)sum/tv; c biu din bng nh 9. T
nh 7, nu iu kin tv > 0 l ng th th chuyn sang nh 9 (cnh (7,
9)). Ngc li, th chuyn t nh 7 sang nh 8 (cnh (7, 8)). Cui cng,
nh 10 c s dng biu din cu lnh return(av);. T cc nh 8 v

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

169

Hnh 7.6: th dng d liu ca hm ReturnAverage trong Hnh 7.5.


9, th chuyn n nh 10 v khng c biu thc iu kin cho cc cnh
(8, 10) v (9, 10).

7.1.5

Cc khi nim v dng d liu

Sau khi xy dng th dng d liu ca n v chng trnh, chng ta cn


xc nh cc ng i ca n v chng trnh ca mi bin d liu ng vi
cc o kim th (s c trnh by trong mc 7.1.6). Trong mi ng
dn ny, bin d liu c nh ngha ti mt nh no v c s dng
ti cc cu lnh tip theo ng vi cc nh hoc cc cnh ca ng i ny.
Trong mc ny, chng ta s tm hiu mt s khi nim c bn v dng d
liu. Cc khi nim ny s c s dng phc v mc ch trn.
nh ngha 7.7. (Global c-use.) Gi s bin x c s dng tnh ton
(c-use) ti nh i ca th dng d liu. Vic s dng bin x ti nh i
c gi l Global c-use nu x c nh ngha cc nh trc .
V d 7.8. Trong th dng d liu ca hm ReturnAverage c m t

170

CHNG 7. KIM TH DNG D LIU

Bng 7.1: def () v c-use() ca cc nh trong Hnh 7.6


nh i
1
2
3
4
5
6
7
8
9
10

def (i)
{value, AS, MIN, MAX}
{i, ti, tv, sum}
{}
{ti}
{tv, sum}
{i}
{}
{av}
{av}
{}

c-use(i)
{}
{}
{}
{ti}
{tv, i, sum, value}
{i}
{}
{}
{sum, tv}
{av}

Hnh 7.5, vic s dng bin tv ti nh 9 l Global c-use v bin ny


c nh ngha ti cc nh 2 v 5.
nh ngha 7.9. (Def -clear path.) Gi s bin x c nh ngha (def )
ti nh i v c s dng ti nh j. Mt ng i t i n j k hiu l (i
- n1 - ... - nm - j) vi m 0 c gi l Def -clear path ng vi bin x nu
bin ny khng c nh ngha ti cc nh t n1 n nm .
V d 7.10. Trong th dng d liu ca hm ReturnAverage c m t
Hnh 7.6, ng i (2 - 3 - 4 - 5) l mt Def -clear path ng vi bin tv
v bin ny c nh ngha ti nh 2, c s dng ti nh 5, v khng
c nh ngha ti cc nh 3 v 4. Tng t, ng i (2 - 3 - 4 - 6 - 3 - 4
- 6 - 3 - 4 - 5) cng l mt Def -clear path ng vi bin tv.
nh ngha 7.11. (Global def .) Mt nh i c gi l Global def ca bin
x nu nh ny nh ngha bin x (def ) v c mt Def -clear path ca x t
nh i ti nh cha mt Global c-use hoc cnh cha mt p-use ca bin
ny.
Bng 7.1 lit k tt c cc Global def v Global cuse xut hin trong
th dng d liu Hnh 7.6. Trong bng ny, def (i) c s dng ch
tp cc bin c Global def ti nh i. Tng t, cuse(i) ch tp cc bin
c Global cuse ti nh i. Tt c cc iu kin ng vi cc cnh v cc

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

171

Bng 7.2: Cc iu kin v p-use() ca cc cnh trong Hnh 7.6


(i, j)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(4, 6)
(5, 6)
(6, 3)
(3, 7)
(7, 8)
(7, 9)
(8, 10)
(9, 10)

iu kin ti cnh (i, j)


p-use(i, j)
True
{}
True
{}
(ti<AS)&&(value[i] != -999)
{i,ti,AS,value}
(value[i]>=MIN)&&(value[i]<= MAX)
{i,MIN,MAX,value}
((value[i]>=MIN)&&(value[i]<=MAX)) {i,MIN,MAX,value}
True
{}
True
{}
((ti<AS) && (value[i] != -999))
{i, ti, AS, value}
(tv > 0)
{tv}
(tv > 0)
{tv}
True
{}
True
{}

puse xut hin trong th dng d liu Hnh 7.6 cng c lit k trong
Bng 7.2, vi puse(i, j) l tp cc bin c puse ti cnh (i, j).
nh ngha 7.12. (Simple path.) Mt ng i trong th dng d liu
c gi l mt Simple path nu cc nh ch xut hin ng mt ln tr
nh u v nh cui.
V d 7.13. Trong th dng d liu ca hm ReturnAverage c m t
Hnh 7.6, cc ng i (2 - 3 - 4 - 5) v (3 - 4 - 6 - 3) l cc Simple paths.
nh ngha 7.14. (Loop-f ree path.) Mt ng i trong th dng d
liu c gi l mt Loop-f ree path nu cc nh ch xut hin ng mt
ln.
nh ngha 7.15. (Complete-path.) Mt ng i c gi l mt Completepath nu n c im bt u v im kt thc chnh l im bt u v im
kt thc ca th dng d liu.
nh ngha 7.16. (Du-path.) Mt ng i (n1 - n2 - ... - nj - nk ) c gi
l mt Du-path (definition-use path) ng vi bin x nu nh n1 l Global
def ca bin x v:

172

CHNG 7. KIM TH DNG D LIU

nh nk c mt Global c-use vi bin x v (n1 - n2 - ... - nj - nk ) l mt


Def -clear simple path vi bin x, hoc
cnh (nj , nk ) c p-use vi bin x v (n1 - n2 - ... - nj ) l Def -clear
loop-f ree path vi bin ny.
V d 7.17. Trong th dng d liu ca hm ReturnAverage (Hnh 7.6),
ng i (2 - 3 - 4 - 5) l mt Du-path ng vi bin tv v nh 2 l Global
def ca bin tv, nh 5 c Global c-use vi bin ny v (2 - 3 - 4 - 5) l mt
Def -clear simple path vi bin tv. Mt v d khc, ng i (2 - 3 - 7 - 9)
cng l mt Du-path ng vi bin tv v nh 2 l Global def ca bin ny,
cnh (7, 9) c p-use vi bin tv v (2 - 3 - 7) l mt Def -clear loop-f ree
path vi tv.

7.1.6

Cc o cho kim th dng d liu

Nh trnh by mc 7.1.3, cc o hay cc tiu ch kim th dng d


liu l u vo cng vi th dng d liu nhm xc nh cc ng i cho
mc ch kim th tng ng. Trong mc ny, chng ta s tm hiu cc
o ph bin ang c s dng trong kim th dng d liu. Trc ht ta c
ba o n gin l All-def s, All-c-uses, v All-p-uses tng ng vi tt
c cc ng i, ng i qua tt c cc nh, v ng i qua tt c cc
cnh. Cc o tip theo s gi s ta xc nh c cc nh xc nh
v s dng v cc Du-path cho tng bin. Cc nh ngha sau cng gi s T
l mt tp hp cc (on) ng trong th dng d liu G = <N, E> v
V l tp cc bin c s dng trong n v chng trnh.
All-def s: Mi mt bin x V v mi nh i N , gi s x c mt Global
def ti i, chn mt Complete-path cha mt Def -clear path t nh i ti
nh j sao cho ti j c cha mt Global c-use ca x, hoc cnh (j, k) cha
mt p-use ca bin x. iu ny c ngha l i vi mi mt nh ngha (def )
ca x ti mt nh ta cn t nht mt ng i xut pht t nh ti mt
nh khc s dng bin x sao cho ng i ny cha mt Def -clear path
ca bin v thuc v mt Complete-path no .
V d 7.18. Bin tv c hai Global def ti cc nh 2 v 5 (Hnh 7.6, Bng 7.1
v Bng 7.2). Trc ht, ta quan tm n Global def ti nh 2. Chng ta

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

173

thy rng c mt Global c-use ca bin tv ti nh 5 v tn ti mt Def -clear


path (2 - 3 - 4 - 5) t nh 2 ti nh 5. Ta cng c c mt Complete-path
(1 2 3 4 5 6 3 7 9 10) cha ng i ny. Do vy ta kt lun
(2 - 3 - 4 - 5) tha mn o All-def s. Tng t, ng i (2 - 3 - 7 - 8)
ca bin tv cng tha mn o All-def s do c mt Global def ti nh 2,
c mt p-use ti cnh (7, 8), c mt Def -clear path l (2 - 3 - 7 - 8) t
nh 2 ti cnh (7, 8) v n thuc v mt Complete-path (1 - 2 - 3 - 7 - 8 10). Quan tm n Global def ti nh 5 v c mt Global c-use ti nh 9,
(5 - 6 - 3 - 7 - 9) l mt Def -clear path v tn ti mt Complete-path l (1
- 2 - 3 - 4 - 5 - 6 - 3 - 7 - 9 - 10) cha ng i ny. V vy (5 - 6 - 3 - 7 9) cng tha mn o All-def s. qu trnh kim th dng d liu tha
mn o All-def s, chng ta cn tin hnh mt cch tng t vi cc bin
cn li.
All-c-uses: Vi mi mt bin x v mi nh i sao cho i l Global def vi
bin x, chn cc Complete-path bao gm cc Def -clear path t nh i ti
tt c cc nh j sao cho j l Global c-use ca x. iu ny c ngha l c mi
nh ngha (def ) ca x ta tm tt c cc ng i xut pht t def ca x ti
tt c cc c-use ca bin x sao cho cc ng i ny c cha mt Def -clear
path ca x v thuc v mt Complete-path no .
V d 7.19. Ta s tm tt c cc ng i tha mn o All-c-uses ng
vi bin ti (Hnh 7.6, Bng 7.1, v Bng 7.2). Chng ta tm thy hai Global
def ca bin ny ti cc nh 2 v 4. Vi nh 2, c mt Global c-use ca bin
ti ti nh 4. Tuy nhin, vi Global def ca bin ny ti nh 4, ta khng
tm thy Global c-use no ca bin ti. T nh 2, ta c mt Def -clear path
ti nh 4 l (2 - 3 - 4). Chng ta c th tm thy bn Complete-path t
th dng d liu (Hnh 7.6) cha ng i ny nh sau:
(1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 8 - 10),
(1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 9 - 10),
(1 - 2 - 3 - 4 - 6 - 3 - 7 - 8 - 10), v
(1 - 2 - 3 - 4 - 6 - 3 - 7 - 9 - 10).
Chng ta c th chn mt hoc mt s trong bn ng i trn m
bo o ny ng vi bin ti. qu trnh kim th dng d liu tha mn

174

CHNG 7. KIM TH DNG D LIU

o All-c-uses, chng ta cn tin hnh mt cch tng t vi cc bin cn


li (i, tv, v sum).

All-p-uses: Vi mi mt bin x v mi nh i sao cho i l Global def vi


bin x, chn cc Complete-path bao gm cc Def -clear path t nh i ti
tt c cc cnh (j, k) sao cho c mt p-use ca x ti cnh ny. iu ny c
ngha l c mi nh ngha (def ) ca x ta tm tt c cc ng i xut pht
t def ca x ti tt c cc p-use ca bin sao cho cc ng i ny c
cha mt Def -clear path ca x v thuc v mt Complete-path no .
V d 7.20. Ta s tm tt c cc ng i tha mn o All-p-uses ng
vi bin tv (Hnh 7.6, Bng 7.1, v Bng 7.2). Bin tv c hai Global def ti
cc nh 2 v 5. Ti nh 2, ta c hai p-use ca bin ny ti cc cnh (7, 8)
v (7, 9). D thy (2 - 3 - 7 - 8) l mt Def -clear path ca tv t nh 2 n
cnh (7, 8) v (2 - 3 - 7 - 9) l mt Def -clear path ca tv t nh 2 n
cnh (7, 9). Tng t, (5 - 6 - 3 - 7 - 8) l mt Def -clear path ca tv t
nh 5 n cnh (7, 8) v (5 - 6 - 3 - 7 - 9) l mt Def -clear path ca tv t
nh 5 n cnh (7, 9). Chng ta c th tm thy bn Complete-path t
th dng d liu (Hnh 7.6) cha cc ng i ny nh sau:
(1 - 2 - 3 - 7 - 8 - 10),
(1 - 2 - 3 - 7 - 9 - 10),
(1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 8 - 10), v
(1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 9 - 10).
All-p-uses/Some-c-uses: o ny tng t nh o All-p-uses ngoi
tr trng hp khi c mt ngha (def ) ca bin x m khng c mt p-use
ca bin ny. Trong trng hp ny, ta s dng o Some-c-uses c
nh ngha nh sau.
nh ngha 7.21. (Some-c-uses.) Vi mi mt bin x v mi nh i sao cho
i l Global def vi bin x, chn cc Complete-path bao gm cc Def -clear
path t nh i ti mt s nh j sao cho j l Global c-use ca x.

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

175

V d 7.22. Ta s tm tt c cc ng i tha mn o All-p-uses/Somec-uses ng vi bin i (Hnh 7.6, Bng 7.1, v Bng 7.2). Bin i c hai Global
def ti cc nh 2 v nh 6. D thy rng khng c p-use ca bin ny
(Hnh 7.6). V vy, ta quan tm n o Some-c-uses ca bin i. Ti
nh 2, c mt Global c-use ca i ti nh 6 v c mt Def -clear path (2
- 3 - 4 - 5 - 6). V vy, tha mn o All-p-uses/Some-c-uses vi bin
ny, ta chn Complete-path (1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 9 - 10) cha ng
i trn.
All-c-uses/Some-p-uses: o ny tng t nh o All-c-uses ngoi
tr trng hp khi c mt ngha (def ) ca bin x m khng c mt Global
c-use ca bin ny. Trong trng hp ny, ta s dng o Some-p-uses
c nh ngha nh sau.
nh ngha 7.23. (Some-p-uses.) Vi mi mt bin x v mi nh i sao cho
i l Global def vi bin x, chn cc Complete-path bao gm cc Def -clear
path t nh i ti mt s cnh (j, k) sao cho c mt p-use ca x ti cnh
ny.
V d 7.24. Ta s tm tt c cc ng i tha mn o All-c-uses/Somep-uses ng vi bin AS (Hnh 7.6, Bng 7.1, v Bng 7.2). Bin AS ch c mt
Global def ti nh 1. D thy rng khng c Global c-use ca bin ny
(Hnh 7.6). V vy, ta quan tm n o Some-p-uses ca bin AS. T
nh 1, c cc p-use ca AS ti cc cnh (3, 7) v (3, 4) v c cc Def -clear
path tng ng vi hai cnh ny l (1 - 2 - 3 - 7) v (1 - 2 - 3 - 4). C rt
nhiu Complete-path cha hai ng i ny. V d (1 - 2 - 3 - 4 - 5 - 6 - 3 7 - 9 - 10).
All-uses: o ny bao gm cc ng i c sinh ra t cc o Allp-uses v All-c-uses (nh nh ngha trn). iu ny c ngha l vi
mi vic s dng (c-use hoc p-use) ca mt bin th c mt ng i t
nh ngha (def ) ca bin ti cc s dng ca n.
All-du-paths: Vi mi mt bin x v mi nh i sao cho i l Global def
vi bin x, chn cc Complete-path cha cc tt c cc Du-path t nh i
ti:

176

CHNG 7. KIM TH DNG D LIU

tt c cc nh j sao cho c mt Global c-use ca bin x ti j, v


tt c cc cnh (j, k) sao cho c mt p-use ca bin x ti (j, k).
So snh cc o ca kim th dng d liu: Sau khi tm hiu cc
o v kim th dng d liu, chng ta cn so snh mi quan h gia chng
tr li cu hi chng ta nn chn o no cho kim th dng d liu?.
Vi mi cp o trn, chng c th so snh vi nhau hoc khng. Rapps
v Weyuker [SJ85] nh ngha mi quan h bao gm gia hai o nh
sau.
nh ngha 7.25. (Mi quan h bao gm.) Cho hai o c1 v c2 , ta ni
c1 bao gm c2 nu mi ng i y (Complete-paths) sinh ra t th
dng d liu tha mn c1 th cng tha mn c2 .
nh ngha 7.26. (Mi quan h bao gm cht.) Cho hai o c1 v c2 , ta
ni c1 bao gm cht c2 , k hiu l c1 c2 , nu c1 bao gm c2 v tn ti
mt s ng i y sinh ra t th dng d liu tha mn c2 nhng
khng tha mn c1 .
D thy mi quan h bao gm cht () c tnh bc cu. Hn na, vi
hai o c1 v c2 , c th c1 khng bao gm cht c2 v c2 cng khng bao
gm cht c1 . Trong trng hp ny ta ni hai o ny l khng so snh
c. Frankl v Weyuker [GJ88] tng kt cc mi quan h gia cc o
cho kim th dng d liu trong Hnh 7.7. Vi cc o nh trnh by
trn, All-du-paths l o tt nht. o ny bao gm cht o All-uses.
Tng t, o All-uses bao gm cht hai o All-p-uses/Some-c-uses v
All-c-uses/Some-p-uses trong khi chng bao gm cht o All-def s. Hn
na, o All-p-uses/Some-c-uses bao gm cht o All-p-uses trong khi
o All-c-uses/Some-p-uses bao gm cht o All-c-uses. Tuy nhin,
chng ta khng th tm thy mi quan h bao gm cht gia hai o
All-c-uses v All-p-uses.

7.1.7

Sinh cc ca kim th

tin hnh phng php kim th dng d liu, trc ht chng ta phi
sinh th dng d liu ca n v chng trnh. Vi o kim th C,

7.1. KIM TH DA TRN GN V S DNG GI TR BIN

177

Hnh 7.7: Mi quan h gia cc o cho kim th dng d liu.


chng ta s xc nh tt c cc ng i y (Complete-paths) tha mn
o ny. Tuy nhin, khng phi ng i no cng c th tm c mt
b d liu u vo n c thc thi khi chy n v chng trnh. Nu
tn ti mt b d liu u vo nh vy th ng i tng ng c gi l
ng i thc thi c. Nh vy, bi ton cn li hin nay l lm th no
sinh c b u vo cho tng ng i y trn. B u vo ny cng
vi gi tr u ra mong i s l ca kim th cho ng i ny. tr li
cu hi ny, ta xt v d sau.
V d 7.27. Xt ng i y (1 - 2 - 3 - 4 - 5 - 6 - 3 - 7 - 9) t th
dng d liu trong Hnh 7.6. T ng i ny, ta s xc nh cc biu thc
thuc cc p-uses nm trn cc cnh ca n. C th, ta c cc biu thc sau:
1. ((ti<AS) && (value[i]!=-999)) (thuc cnh (3, 4)),
2. ((value[i] >= MIN) && (value[i] <= MAX)) (thuc cnh (4, 5)),
3. ((ti<AS) && (value[i] != -999)) (thuc cnh (3, 7)), v
4. tv > 0 (thuc cnh (7, 9))

178

CHNG 7. KIM TH DNG D LIU

Chng ta s sinh ra cc gi tr u vo v kim tra cc gi tr sao cho


tha mn ht cc iu kin trn. Ch , cc gi tr u vo y l cc tham
s ca hm ReturnAverage (Hnh 7.5), gi tr ca bin i iu kin (3) ln
hn 1 so vi gi tr n ti cc biu thc (1) v (2), v gi tr ca bin ti
cc iu kin (2) v (3) ln hn 1 so vi gi tr n ti biu thc (1). V d,
b u vo ([1, -999], 2, 1, 2) tha mn tt c cc iu kin trn.
la chn cc b u vo ng vi cc ng i y tha mn mt
o cho trc, chng ta phi m bo rng cc ng i ny l thc thi
c. Gi s PC l tp cc ng i y ca n v chng trnh ng vi
o C. o ny ch c ch khi tn ti t nht mt ng i thuc PC sao
cho n thc thi c. Trong trng hp ny, chng ta gi C l o dng
d liu thc thi c, k hiu l (C). V d, (All-c-uses) c s dng
ch tt c cc ng i y tha mn o All-c-uses sao cho chng
thc thi c. C th, (All-c-uses) c nh ngha nh sau.
nh ngha 7.28. ((All-c-uses).) Vi mi mt bin x v mi nh i sao
cho i l Global def vi bin x, chn cc ng i y thc thi c bao
gm cc Def -clear path t nh i ti tt c cc nh j sao cho j l Global
c-use ca x.
Tng t, chng ta c th nh ngha (All-paths), (All-du-paths),
(All-uses), (All-p-uses), (All-p-uses/Some-c-uses), (All-c-uses/Somep-uses), (All-def s), (All-branches), v (All-statements). Mi quan h
bao gm cht gia tng cp ny c Frankl v Weyuker [GJ88] tng
kt trong hnh 7.8.

7.2

Kim th da trn lt ct

Kim th dng d liu nh trnh by trn l mt phng php tt nhm


pht hin cc li tim tng bn trong cc n v chng trnh. Tuy nhin,
vi cc n v chng trnh c kch thc ln, phng php ny kh kh p
dng. Trong thc t, p dng phng php ny, chng ta khng cn phn
tch tt c cc cu lnh thuc n v chng trnh. Vi mi bin, ch c mt
tp con cc cu lnh c lin quan (khai bo, gn gi tr v s dng) n bin
ny. Phng php kim th chng trnh da trn lt ct c xem l mt
gii php nhm gii quyt vn ny.

7.2. KIM TH DA TRN LT CT

179

Hnh 7.8: Mi quan h bao gm cht gia cc o dng d liu thc thi
c.

7.2.1

tng v kim th da trn lt ct

Cc lt ct chng trnh tng c nhng bc thng trm trong ngnh


cng ngh phn mm k t u nhng nm 1980. Chng c xut bi
Weiser [Mar81, Mar84], c dng nh l mt phng php tip cn bo
tr phn mm, v gn y nht chng c s dng nh l mt cch kt
dnh cc chc nng. Mt phn s linh hot ny l do tnh t nhin cng
nh mc ch r rng ca lt ct chng trnh. Thng thng, mt lt ct
chng trnh l mt phn chng trnh c nh hng ti gi tr ca bin ti
mt v tr trong chng trnh. Khi nim lt ct c th hnh dung nh lch
s M hoc lch s chu u hoc lch s Nga. Cc lch s ny tc ng ln
nhau tng t nh cc lt ct chng trnh tc ng ln nhau.
Chng ta s bt u bng vic pht trin th no l mt lt ct chng
trnh. Gi s ta c mt chng trnh k hiu l P , th ca chng trnh l
G(P ), v tp cc bin ca chng trnh l V . Sau y chng ta s tm hiu
chi tit v n.
nh ngha 7.29. (Lt ct.) Cho mt chng trnh P v V l tp cc bin
trong chng trnh ny. Mt lt ct trn V ti cu lnh th n, k hiu S(V, n),
l tp tt cc lnh trong P c gp phn lm thay i gi tr ca tp bin

180

CHNG 7. KIM TH DNG D LIU

Hnh 7.9: Hm tnh tng cc s chn nh hn n.


trong V .
Tuy nhin, nh ngha trn cn kh chung chung nn rt kh xc nh
S(V, n). nh ngha sau gip chng ta gii quyt vn ny.
nh ngha 7.30. (Lt ct chng trnh.) Cho mt chng trnh P vi
th chng trnh G(P ) (trong cc cu lnh v cc on cu lnh c
nh s) v mt tp cc bin V trong P , lt ct trn tp bin V ti on
cu lnh th n, k hiu l S(V, n), l tp cc s nt ca tt c cc cu lnh
v on cu lnh trong P trc thi im n nh hng n cc gi tr
ca cc bin trong V ti on m lnh th n [Jor13].
Trong nh ngha trn, thut ng cc on cu lnh c ngha l mt cu
lnh c th l mt cu lnh phc do vy ta c th tch cc cu lnh ny thnh
tng cu lnh ring bit. V d, cu lnh phc int intMin=0, intMax=100; s
c tch thnh hai cu lnh n int intMin=0; v int intMax=100;. Khi
nim trc thi im n nh hng khng c ngha l th t cc cu lnh
m l thi im trc khi cu lnh c thc hin. V d, trong hm tnh
tng cc s chn nh hn n nh hnh 7.9, cu lnh i++; ng sau nhng li
nh hng trc tip n cu lnh result += i;.
tng ca cc lt ct l tch mt chng trnh thnh cc thnh
phn mi mt thnh phn c mt s ngha nht nh. Cc phn nh hng

7.2. KIM TH DA TRN LT CT

181

ti gi tr ca cc bin c gii thiu trong mc 7.1.5 bng vic s dng


cc nh ngha v s dng ca tng bin (Def , C-use, P -use), nhng chng
ta cn phi tinh chnh li mt s hnh thc s dng bin. C th l mi quan
h s dng (U se) ca bin gn lin vi nm hnh thc s dng nh sau.
P -use: Bin c s dng trong cc cu lnh r nhnh. V d, if(x>0){...}
C-use: Bin c s dng trong cc cu lnh tnh ton. V d, x = x + y;
O-use: Bin c s dng cho cc cu lnh hin th hoc tr v kt
qu. V d, return x; hoc printf("%d",x);
L-use: Bin c s dng nh mt con tr tr n cc a ch hoc ch
s ca mng. V d, int x =100, *ptr; ptr = &x;
I-use: Bin c s dng nh cc bin m (trong cc vng lp). V
d, i++;
Chng ta cng c hai dng xc nh gi tr cho cc bin nh sau:
I-def : xc nh t u vo (t bn phm, truyn tham s, ...)
A-def : xc nh t php gn
Gi s lt ct S(V, n) l mt lt ct trn mt bin, y tp V ch cha
mt bin v duy nht. Nu nt n cha mt nh ngha ca v th ta thm n
vo lt ct S(V, n). Ngc li, nu nt n cha mt s dng ca bin v V
th n khng c thm vo lt ct S(V, n). Nhng nt cha P -use v C-use
ca cc bin khc (khng phi bin v trong tp V ) m nh hng trc tip
hoc gin tip ti gi tr ca bin v th c thm vo tp V . i vi lt ct
S(V, n), nhng nh ngha v s dng ca cc bin sau c thm vo lt
ct S(V, n).
Tt c cc I-def v A-def ca bin v
Tt c cc C-use v P -use ca bin v sao cho nu loi b n s lm
thay i gi tr ca v

182

CHNG 7. KIM TH DNG D LIU

Tt c cc P -use v C-use ca cc bin khc (khng phi bin v) sao


cho nu loi b n th s lm thay i gi tr ca bin v
Loi b khi lt ct cc I-use, L-use v O-use ca bin v
Loi b ton b cc cu lnh khng c thc thi nh cc cu lnh
khai bo bin
Kim tra cc hng s, nu hng s nh hng n bin v th ta thm
hng s vo lt ct

7.2.2

V d p dng

Quay tr li vi v d v hm ReturnAverage 7.5 trong mc 7.1.4, p


dng k thut kim th da trn lt ct, chng ta phn mnh hm ny nh
hnh 7.10. Tip n, chng ta xy dng th ca hm sau khi phn mnh
nh hnh 7.11. Sau , chng ta cng s nh ngha li cc nh ngha (Def )
v s dng (U se) ca cc bin trong cc bng 7.3 v 7.4. V cui cng, cc
lt ct trn tng bin ca hm s c tnh ton.
Ch , ta nhn thy bin i, ti v tv l cc bin c s dng trong vng
lp. Tuy nhin, chng l cc bin cc b nn khng th xp cc s dng
ca cc bin ny l I-use. Tip theo, chng ta s xt cc lt ct ca hm
ReturnAverage trn tng bin trong tp V = {value, AS, M IN, M AX, i, ti, tv, sum, av}.
Ta nhn thy rng, value, AS, M IN v M AX l cc bin ch c I-def v gi
tr ca chng khng b nh hng khi thc hin chng trnh. C th, bin
value c mt I-def ti nh 0, c hai P -use ti cc nh 6 v 8 v c mt
C-use ti nh 10. V vy, cc lt ct ca cc bin ny nh sau:
S1 : S(value, 0) = {0} (do ch c duy nht mt I-def ca bin value
ti nh 0 nn 0 c thm vo S1 )
S2 : S(value, 6) = {0} (t nh 0 n nh 6 ch c mt I-def ca bin
value ti nh 0 nh hng n gi tr ca bin value ti nh 6 nn 0
c thm vo S2 )
S3 : S(value, 8) = {0} (t nh 0 n nh 8 ch c mt I-def ca bin
value ti nh 0 nn 0 c thm vo S3 . Vi P -use ca bin value
ti nh 6 khng nh hng n gi tr ca bin ny ti nh 8 nn 6
khng c thm vo S3 )

7.2. KIM TH DA TRN LT CT

183

Hnh 7.10: M ngun hm ReturnAverage sau khi phn mnh.


S4 : S(value, 10) = {0} (t nh 0 n nh 10, bin value c mt
I-def ti nh 0 v hai P -use ti cc nh 6 v 8. Do hai P -use ny
khng lm nh hng n gi tr ca bin nn chng khng c thm
vo S4 .)
Tng t, bin AS c mt I-def ti nh 0 v c mt P -use ti nh 6.
V vy, cc lt ct ca cc bin ny nh sau:
S5 : S(AS, 0) = {0} (do ch c duy nht mt I-def ca bin AS ti
nh 0 nn 0 c thm vo S5 )
S6 : S(AS, 6) = {0} (t nh 0 n nh 6 ch c duy nht mt I-def
ca bin AS ti nh 0 nn ta thm 0 vo S6 )
C mt I-def ca bin M IN ti nh 0 v c mt P -use ti nh 8. V
vy, cc lt ct ca cc bin ny nh sau:

184

CHNG 7. KIM TH DNG D LIU

Hnh 7.11: Hm ReturnAverage sau khi phn mnh v th ca n.


S7 : S(M IN, 0) = {0}
S8 : S(M IN, 8) = {0}
Tng t nh vi bin M IN , bin M AX cng c mt I-def ti nh 0
v c mt P -use ti nh 8. Cc lt ct ca bin ny nh sau:
S9 : S(M AX, 0) = {0}
S10 : S(M AX, 8) = {0}
Ch , vi cc lt ct S2 , S3 , S4 , S6 , S8 v S10 , mi lt ct tn ti mt
Def -clear-path. Thng i vi cc lt ct tn ti mt Def -clear-path th
cc li tim n t xut hin.
i vi bin i, c hai A-def ca bin ny ti cc nh 1 v 11, ba L-use
ti cc nh 6, 8, 10 v mt C-use ti nh 11. V vy, cc lt ct ca cc
bin ny nh sau:

7.2. KIM TH DA TRN LT CT

185

Bng 7.3: I-def , A-def v Const ca cc nh trong Hnh 7.11


nh i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

I-def (i)
{value, AS, MIN, MAX}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}

A-def (i)
{}
{i}
{ti}
{tv}
{sum}
{}
{}
{ti}
{}
{tv}
{sum}
{i}
{}
{av}
{av}
{}

Const(i)
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}

S11 : S(i, 1) = {1} (bin i c duy nht mt A-def ti nh 1 nn 1 c


thm vo S11 )
S12 : S(i, 6) = {1, 6, 7, 11} (bin i c hai A-def ti cc nh 1 v 11 nn
chng c thm vo S12 . Xt cc P -use v C-use ca cc bin khc
nh hng n gi tr ca bin i ti nh 6, theo bng 7.4 ta c cc
P -use ca cc bin ti, value, AS ti nh ny c nh hng n gi tr
ca bin i nn 6 c thm vo S12 . Ngoi ra, c mt C-use ca bin
ti ti nh 7 cng nh hng n gi tr ca i ti nh 6 nn 7 cng
c thm vo lt ct ny.)
S13 : S(i, 8) = {1, 6, 7, 11} (tng t nh S12 )
S14 : S(i, 10) = {1, 6, 7, 11} (tng t nh S12 )
S15 : S(i, 11) = {1, 6, 7, 11} (tng t nh S12 )

186

CHNG 7. KIM TH DNG D LIU

Bng 7.4: C-def , L-def , I-def , O-def v P -def ca cc nh trong Hnh 7.11
nh i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

C-def (i)
L-def (i)
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{ti}
{}
{}
{}
{tv}
{}
{sum,value}
{}
{i}
{}
{}
{}
{sum,tv}
{}
{}
{}
{}
{}

I-def (i)
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}

O-def (i)
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{av}

P -def (i)
{}
{}
{}
{}
{}
{}
{ti,AS,value}
{}
{value,MIN,MAX}
{}
{}
{}
{tv}
{}
{}
{}

i vi bin ti, c hai A-def ti cc nh 2 v 7, mt P -use ti nh 6 v


mt C-use ti nh 7. Cc lt ct ca cc bin ny nh sau:
S16 : S(ti, 2) = {2}
S17 : S(ti, 6) = {2, 6, 7, 11} (c hai A-def ti cc nh 2 v 7 nh hng
n gi tr ca bin ny ti nh 6 nn chng c thm vo lt ct
ny. Thm na, cc P -use ca cc bin value, AS ti nh 6 v C-use
ca bin i ti nh 11 cng nh hng n gi tr ca bin ti ti nh 6
nn cc nh 6 v 11 cng c thm vo lt ct.)
S18 : S(ti, 7) = {2, 6, 7, 11} (tng t nh S17 )
Tng t vi bin tv, c hai A-def ti cc nh 3 v 9, hai C-use ti cc
nh 9, 13 v c mt P -use ti nh 12. V vy, cc lt ct ca cc bin ny
nh sau:

7.2. KIM TH DA TRN LT CT

187

S19 : S(tv, 3) = {3}


S20 : S(tv, 9) = {3, 6, 7, 8, 9, 11} (c hai A-def ti cc nh 3 v 9 nn
chng c thm vo lt ct. Xt cc P -use v C-use ca cc bin
khc c nh hng n gi tr ca bin tv ti nh 9. Ti nh 6 c cc
P -use ca cc bin value, ti, AS cng nh hng n gi tr ca bin
tv ti nh 9 nn nh 6 c thm vo lt ct. Tng t, ti nh 7
c mt C-use ca tv nh hng n gi tr ca chnh n nn nh 7
cng c thm vo S20 . Tip theo, ti nh 8, cc P -use ca cc bin
value, M IN, M AX cng nh hng n gi tr bin ny nn nh 8
cng c thm vo lt ct. Cui cng, ti nh 11 c mt C-use ca
bin i nh hng n gi tr ca bin tv ti nh 9 nn nh 11 c
thm vo S20 .)
S21 : S(tv, 12) = {3, 6, 7, 8, 9, 11} (tng t nh S20 )
S22 : S(tv, 13) = {3, 6, 7, 8, 9, 11} (tng t nh S20 )
Bin sum c hai A-def ti cc nh 4 v 10 v c hai C-use ti cc nh 10
v 13. Do , cc lt ct ca bin ny nh sau:
S23 : S(sum, 4) = {4}
S24 : S(sum, 10) = {4, 6, 8, 9, 10, 11}
S25 : S(sum, 13) = {4, 6, 7, 8, 9, 10, 11}
Tng t, bin av c khai bo ti nh 5, c hai A-def ti cc nh 13,
14 v mt O-use ti nh 15. Cc lt ct ca bin ny nh sau:
S26 : S(av, 5) = {}
S27 : S(av, 13) = {6, 8, 9, 10, 11, 12}
S28 : S(av, 14) = {14}
S29 : S(av, 15) = {6, 8, 9, 10, 11, 12, 13, 14}

188

CHNG 7. KIM TH DNG D LIU

Ta nhn thy rng lt ct S29 ca bin av b nh hng bi hai A-def


ca chnh bin ny ti cc nh 14 v 15 tng ng vi cc lt ct S28 v
S27 . Do vy, ta c th vit S29 = S28 S27 . Ta cng lm tng t i vi cc
bin cn li c mt cch vit khc v cc lt ct. Hn na, ta c th rt
ra cc nhn xt quan trng sau lin quan n cc lt ct.
Cc li tim n c th xut hin cc lt ct cha nhiu hn mt
A-def .
Cc lt ct c th l hp ca cc lt ct khc.
Cc lt ct ca cng mt bin ti cc nh khc nhau c th trng
nhau.
trnh s trng lp cng nh loi b cc lt ct khng cn thit, chng
ta cn xy dng mi quan h gia cc lt ct cho ton b chng trnh. Cc
mi quan h ny s to nn mt mng c gi l l mng tinh th ca cc
lt ct vi nh ngha nh sau.
nh ngha 7.31. Mng tinh th ca cc lt ct ng vi mt chng trnh/n v chng trnh l mt th khng tun hon c hng, trong mi
nh cha mt lt ct sao cho cc nh tng ng vi cc v tr trong m
ngun. Mi quan h gia cc lt ct c xc nh bi cc Def -clear-path
ca cc bin.
V d, ta nhn thy rng c hai Def -clear-path <13,15> v <14,15>
ca bin av tng ng vi cc cnh. Cc cnh ny ch ra lt ct S27 v S28
l tp con ca lt ct S29 . Hnh 7.12 cho thy mt phn mng tinh th ca
cc lt ct trong hm ReturnAverage c m t hnh 7.11.
Sau khi c c mng tinh th, cng vic cui cng ca chng ta l to
cc chng trnh c th bin dch c tng ng vi cc lt ct cn thit
v kim th chng.

7.2.3

Mt s lu vi kim th da trn lt ct

p dng mt cch hiu qu phng php kim th da trn lt ct, chng


ta cn ch n cc vn sau:

7.2. KIM TH DA TRN LT CT

189

Hnh 7.12: Mng tinh th ca hm ReturnAverage c m t hnh 7.11.


Khng bao gi to mt lt ct S(V, n) i vi mt bin v V ni m
bin ny khng xut hin trong cu lnh/on cu lnh th n.
Lun to mt lt ct trn tng bin mt, tp V trong lt ct S(V, n) c
th cha nhiu hn mt bin. V d, S(V, 10) vi V = sume, value, i.
Do vy, ta phi xy dng cc lt ct trn tng bin y bao gm cc
lt ct: S(sum, 10), S(value, 10) v S(10, i).
To ct lt ct cho ton b cc nh cha A-def . Khi mt bin c
tnh ton bng cc cu lnh gn, mt lt ct trn bin s bao gm
tt c cc Du-paths ca cc bin s dng trong vic tnh ton. Lt
ct S(10, sum) trong v d mc 7.2.2 l mt v d r rng nht cho
trng hp ny.
To cc lt ct cho cc nh cha P -use. Khi mt bin c s dng
trong cc cu lnh iu khin, lt ct ca n cho bit lm th no mt
bin iu khin nhn gi tr. iu ny tht s hu ch cho vic kim
tra cc im quyt nh trong chng trnh.
Cc lt ct trn cc nh cha cc iu kin khng s dng n cc
bin (v d: while(1){...}) th khng cn quan tm.
Chng ta c th to ra mt chng trnh c th bin dch c t cc
lt ct. Cha c mt nh ngha no ca lt ct yu cu tp cc cu
lnh phi bin dch nhng nu chng ta lm iu . C th, chng
ta s to mt chng trnh con t cc cu lnh ca lt ct . V d,

190

CHNG 7. KIM TH DNG D LIU

Hnh 7.13: Chng trnh con ng vi lt ct S12 t hm ReturnAverage c


m t hnh 7.11.

Hnh 7.14: Chng trnh con (c th bin dch c) ng vi chng trnh


con ca lt ct S12 .

chng trnh con ng vi lt ct S12 = {1, 6, 7, 11} cha cc cu lnh


nh hnh 7.13. Tuy nhin, chng trnh con ny khng th bin dch
c do li c php (bin ti cha c khai bo v cha tr v kt qu
kiu double). V vy, chng ta s sa chng trnh con ny c c
mt chng trnh con c th bin dch c nh hnh 7.14. Khi ,
chng ta c th kim th chng trnh con ng vi lt ct ny. Tng
t, chng ta cng kim th cc lt ct khc, hoc kt hp chng thnh
mt khi chng trnh hon chnh.

7.3. TNG KT

7.3

191

Tng kt

Phng php kim th dng d liu cho php chng ta pht hin cc li tim
n bn trong chng trnh lin quan n vic s dng cc bin. Cc li ny
thng kh pht hin bi cc phng php khc. p dng phng php
ny, chng ta cn xy dng th dng d liu cho chng trnh cn kim
th. ng vi mi o kim th, chng ta s xy dng tp cc ng i y
(Complete-paths) sinh cc ca kim th tng ng. Chng ta nn s
dng kim th dng d liu khi chng trnh c nhiu tnh ton. Khi chng
trnh c nhiu lnh r nhnh v bin ca biu thc iu kin ny cng c
tnh ton (p-use) th cng nn s dng kim th dng d liu. C nhiu cng
c ca cc nhm nghin cu h tr xc nh cc khi nim kim th dng
d liu ny v mt s cng c c thng mi ha. Khi bn gp mt s
m-un kh kim th, nn s dng mt s gi sau:
Cc lt ct khng tng ng vi cc ca kim th, v nhiu lnh khng
nm trong lt ct nhng nm trn ng i ca chng trnh. Khi
c th cch kt hp cc lt ct, tc l da trn lt ct cu trc li
m-un thun tin cho vic kim th.
Phn b tng i ca cc lt ct gip vic chun on chng trnh.
Phn b tng i ca mt tp B so vi tp A l tp cc phn t
thuc A m khng nm trong B, k hiu l A B.
Tn ti mt quan h nhiu-nhiu gia cc lt ct v cc dd-paths: cc
lnh trong mt lt ct c th nm trong mt s dd-paths v cc lnh
trong mt dd-paths c th nm trong mt s lt ct.
Tuy nhin, so vi phng php kim th dng iu khin, phng php
kim th dng d liu kh p dng hn v c kh hn. Hn na, phng
php ny thng kh phc tp khi p dng vi cc n v chng trnh c
kch thc ln. Phng php kim th da trn lt ct ang c xem l
mt gii php ha hn nhm gii quyt vn ny. Trong phng php kim
th da trn lt ct, chng ta khng cn phn tch tt c cc cu lnh thuc
n v chng trnh. Vi mi bin, chng ta ch quan tm n mt tp con
cc cu lnh c lin quan (khai bo, gn gi tr v s dng) n bin ny.

192

CHNG 7. KIM TH DNG D LIU

Hnh 7.15: M ngun C ca hm calFactorial.

7.4

Bi tp

1. So snh phng php kim th dng iu khin v phng php kim


th dng d liu. Liu chng c thay th ln nhau c khng?
2. Th no l kim th dng d liu tnh? Th no l kim th dng d
liu ng? Trnh by mi quan h gia chng.
3. M t ba loi vn ph bin v dng d liu. Vi mi loi vn ,
hy ly v d minh ha.
4. Trnh by phng php xc nh cc vn v dng d liu s dng s
chuyn trng thi. Hy p dng phng php ny cho mt chng
trnh/n v chng trnh c th.
5. Ti sao kim th dng d liu tnh vn khng m bo c rng
chng trnh khng cn li lin quan n dng d liu ca chng
trnh?
6. Trnh by cc bc trong quy trnh kim th dng d liu ng.
7. Cho hm calFactorial vit bng ngn ng C nh Hnh 7.15.
Hy lit k cc cu lnh ng vi cc khi nim def , cuse, v
puse ng vi cc bin c s dng trong hm ny.
Hy v th dng d liu ca hm ny.

7.4. BI TP

193

Hnh 7.16: Mt v d v th dng d liu.

Hnh 7.17: Mt v d v th dng d liu v vic s dng cc bin.


8. Hy chng minh rng chng ta khng th tm thy mi quan h bao
gm cht gia hai o All-c-uses v All-p-uses (hay ni cch khc,
hai o ny khng so snh c).
9. Cho th dng d liu nh hnh 7.16.
Hy xc nh tt c cc Complete-path t th ny.
Cc ng i (0 - 1 - 2 - 3), (1 - 2 - 3 - 2 - 4), (3 - 2 - 4), (2 - 3 2) v (0 - 1 - 4) c phi l cc simple-paths khng? Gii thch.
Cc ng i (2 - 3 - 2), (2 - 3) v (3 - 2 - 4) c phi l cc
loop-f ree-paths khng? Gii thch.
10. Cho th dng d liu nh hnh 7.17.
Hy xc nh tt c cc Def -clear-path ca cc bin x v y.
Hy xc nh tt c cc du-paths ca cc bin x v y.

194

CHNG 7. KIM TH DNG D LIU

Hnh 7.18: on lnh bng ngn ng C++.


Da vo cc chun ca kim th dng d liu hy xc nh tt c
cc All-p-uses/Some-c-uses v All-c-uses/Some-p-uses.
Biu thc ca cc p-use(x, y) ti cnh (1,3) v (4,5) ln lt l
x + y = 4 v x2 + y 2 > 17. ng i (0 - 1 - 3 - 4 - 5 - 6) c thc
thi c khng? Gii thch.
Ti sao ti nh 3 bin x c nh ngha v s dng nhng khng
tn ti mi quan h def-use?
11. Ti sao khi xy dng xong cc lt ct ngi ta li phi xy dng mng
tinh th cho cc lt ct ny. Mi quan h cc lt ct c th hin
thng qua mi quan h no?
12. Cho on lnh nh hnh 7.18.
Bin i trong vng lp f or c nh hng n gi tr ca bin
intV alue khng? Ti sao?
Hy xc nh cc cc cu lnh nh hng n gi tr ca bin
intV alue ti cc cu lnh 6 v 8.
13. Cho m ngun ca hm returnSumArray nh hnh 7.19.
Hy xy dng hm phn mnh ca hm ny.
Xy dng th dng d liu v xc nh cc nh ngha (def )
v s dng (use) ca tt c cc bin trong chng trnh trn.

7.4. BI TP

195

Hnh 7.19: M ngun ca hm returnSumArray.


p dng cc quy tc v xy dng lt ct to ra tt c cc lt
ct ca tt c cc bin trong chng trnh trn.

196

CHNG 7. KIM TH DNG D LIU

Chng 8
Kim th da trn m hnh
Chng ny gii thiu mt s phng php v cng c cho kim th da
trn m hnh nhm tng tnh hiu qu v chnh xc ca cc hot ng
kim th. Kim th da trn m hnh c th s dng vi nhiu mc ch
khc nhau trong vic t ng ha cc hot ng kim th. Chng ti gii
thiu phng php ny nhm kim tra tnh ng n ca vic lp trnh so
vi thit k . Cc phng php v cng c h tr kim th da trn m hnh
c vai tr ht sc quan trng trong vic nng cao cht lng ca cc sn
phm v tng tnh cnh tranh cho cc cng ty phn mm.

8.1

Khi nim v kim th da trn m hnh

C nhiu khi nim khc nhau v kim th da trn m hnh. Tu trung li,
chng ta c th hiu kim th da trn m hnh l mt phng php kim
th ni m cc ca kim th c sinh ra t m hnh c t hnh vi ca h
thng ang c kim th. M hnh ny c biu din bng my hu hn
trng thi, tmat, c t i s, biu trng thi bng UML, ...
Qu trnh kim th da trn m hnh c bt u bng vic xc nh
yu cu ca h thng t xy dng m hnh da vo cc yu cu v chc
nng ca h thng. Vic xy dng m hnh cn phi da trn cc yu t d
liu u vo v u ra. M hnh ny c s dng sinh u vo cho cc
ca kim th. Tip n, chng ta s sinh gi tr u ra mong mun ng vi
mi b u vo. Khi kt thc bc ny, chng ta c cc ca kim th. Cc
197

198

CHNG 8. KIM TH DA TRN M HNH

kch bn kim th s c thit k v thc thi nhm pht hin cc li/khim


khuyt ca sn phm bng cch so snh u ra thc t vi u ra mong i
tng ng ca ca kim th. T cc kt qu kim th, chng ta s quyt nh
hnh ng tip theo nh sa i m hnh hoc dng kim th.
Hnh 8.1 m t cc bc ca quy trnh kim th da trn m hnh.
Sinh m hnh da trn cc yu cu v chc nng ca h thng.
Sinh cc ca kim th (b u vo v gi tr u ra mong i cho mi
ca kim th).
Chy cc kch bn kim th pht hin cc li/khim khuyt ca sn
phm.
So snh kt qu u ra thc t vi kt qu u ra d kin.
Quyt nh hnh ng tip theo (sa i m hnh, to thm ca kim
th, dng kim th, nh gi cht lng ca phn mm).

8.2

Cc phng php c t m hnh

p dng phng php kim th da trn m hnh, chng ta cn xy


dng m hnh c t chnh xc hnh vi ca h thng cn kim th. M
hnh ny c c t bng mt trong cc phng php hnh thc nh: my
hu hn trng thi, biu trng thi, my trng thi UML, chui Markov,
vn phm, bng quyt nh, ... Trong mc ny, chng ta s tm hiu mt s
phng php hnh thc ph bin c s dng c t m hnh ca cc
h thng.

8.2.1

My hu hn trng thi

My hu hn trng thi (Finite State Machine - FSM) c bit n nh l


phng php c t ph bin nht cho thit k v kim th phn mm ni
ring v cc h thng ni chung. FSM rt hiu qu trong vic c t hnh vi
da trn vic chuyn trng thi ca cc h thng. Mt cch hnh thc, FSM
c nh ngha nh sau.

8.2. CC PHNG PHP C T M HNH

199

Hnh 8.1: Quy trnh kim th da trn m hnh [KJ02].


nh ngha 8.1. My trng thi hu hn l mt b bn (S, Act, T, q0 ),
trong S l tp hu hn cc trng thi, T l tp cc chuyn trng thi,
Act l cc tp cc s kin (cn c tn khc l bng k hiu) v q0 l trng
thi khi to.
Hnh 8.2 m t mt v d v mt my hu hn trng thi c t hnh vi
ca mt h thng chuyn cng tc n [KJ02]. Trong hnh ny, off l trng
thi khi u ca h thng. trng thi ny, n ang b tt. Vi u vo l
turn on, h thng s chuyn n trng thi normal vi n c sng bnh
thng. Ti trng thi ny, chng ta c th tt n (ng vi u vo turn off
v h thng s chuyn v trng thi off ), tng sng ca n (ng vi u
vo increase intensity v h thng s chuyn v trng thi bright) v gim
sng ca n (ng vi u vo decrease intensity v h thng s chuyn
v trng thi dim). Ti cc trng thi dim v bright, chng ta c th tt n,
tng v gim sng tng ng. Bng 8.1 l mt dng c t khc ca my
hu hn trng thi trn di dng bng chuyn. Chng ta s dng cu trc
d liu ny lm u vo cho cc cng c kim th t ng.

200

CHNG 8. KIM TH DA TRN M HNH

Hnh 8.2: Mt v d v my hu hn trng thi.


Bng 8.1: Bng chuyn ca my hu hn trng thi trong hnh 8.2

off
dim
normal
bright

8.2.2

off

dim

turn off
turn off
turn off

decr. intensity

normal
turn on
incr. intensity

bright

incr. intensity
decr. intensity

tmat n nh hu hn trng thi

Tng t nh FSM, tmat n nh hu hn trng thi (Deterministic


Finite state Automaton - DFA) cng rt hiu qu trong vic c t hnh vi
da trn vic chuyn trng thi ca cc h thng. Mt cch hnh thc, DFA
c nh ngha nh sau.
nh ngha 8.2. tmat n nh hu hn trng thi l mt b nm
(S, Act, T, q0 , F ), trong : S, T , Act v q0 c nh ngha nh trong nh
ngha ca FSM, v F S l tp cc trng thi kt thc.
Mt v d minh ha v vic p dng DFA cho c t hnh vi ca h
thng trong kim th da trn m hnh s c gii thiu trong mc 8.6.

8.2. CC PHNG PHP C T M HNH

201

Hnh 8.3: Mt v d v biu trng thi [BBH05].

8.2.3

Biu trng thi

Hnh 8.3 m t v d v mt biu trng thi c t hnh vi ca mt my


nghe nhc. Trong biu ny, trng thi CD_Insert gm hai trng thi con
(Include/Select Track v Include/Mode). Hai trng thi ny hot ng ng
thi. Khi chn mt CD vo my nghe nhc, chng ta c th chn bi ht
v xem thng tin ca n hoc chng ta c th chn bi ht v nghe. C hai
ch ny c thc hin ti cng mt thi im. Mt cch khc, chng ta
c th ni CD_Insert l mt trng thi ghp ni vi tnh ng thi. y
chnh l s khc bit chnh ca biu trng thi so vi my hu hn trng
thi. Bi cch biu din ny, biu trng thi c th c t h thng vi t
trng thi hn v v vy n gim phc tp cho qu trnh c t v kim
th/kim chng sau ny.

8.2.4

My trng thi UML

Cc phng php c t hnh thc nh my hu hn trng thi, biu


trng thi, ... gip ta c t cc h thng mt cch chnh xc vi ngha
duy nht (v chng s dng cc cng c ton hc). Tuy nhin, cc phng
php ny thng kh c p dng trong cng nghip v chng i hi cc
chuyn gia v c t hnh thc. My trng thi UML c xem l gii php
tt gii quyt vn ny. N c th c s dng c t hnh vi ng
(chuyn trng thi) ca cc lp i tng, cc ca s dng (use cases), cc h
thng con v thm ch l ton b h thng. Tuy nhin, my trng thi UML
thng c s dng cho cc lp i tng. Theo [AJ00], biu cng tc

202

CHNG 8. KIM TH DA TRN M HNH

Hnh 8.4: Mt v d v my trng thi UML.


c t bng UML l mt m hnh quan trng trong vic kim th h thng
bi m hnh ny c t chnh xc hnh vi (tng tc gia cc i tng)
ca h thng cn kim th. Trong UML, mt trng thi ng vi mt iu
kin quan trng ca mt i tng. Trng thi ny c quyt nh bi cc
gi tr hin thi ca i tng, cc mi quan h vi cc i tng khc v
cc hnh ng (phng thc) m i tng ny thc hin. Mt php chuyn
trng thi l mi quan h gia hai trng thi. Mt php chuyn trng thi
trong UML bao gm mt s kin c kch hot, iu kin v hnh ng
tng ng. Cc s kin c kch hot ca cc php chuyn trng thi c
th l mt trong cc s kin sau:

Mt li gi ng vi mt phng thc
Mt tn hiu nhn c t cc trng thi khc trong my trng thi
Mt s thay i gi tr ca mt thuc tnh no ca mt i tng
Ht thi gian (timeout)

Hnh 8.4 l v d v mt my trng thi UML c t hnh vi ca h thng


qun l bn hng.

8.3. SINH CC CA KIM TH T M HNH

8.2.5

203

Cc phng php c t khc

Ngoi nhng phng php c t trn, c rt nhiu phng php c t khc


c xut. Mt s phng php c t ph bin nh: mng Petri (xem
mc ch3:PetriNet), chui Markov, vn phm, bng quyt nh/cy quyt
nh, ngn ng rng buc i tng (OCL), cc ngn ng c t i s (Z,
OBJ, ...), ... Ph thuc vo phng php v cng c kim th, chng ta s
la chn phng php c t h thng tng ng.

8.3

Sinh cc ca kim th t m hnh

Khi chng ta xy dng c m hnh c t chnh xc hnh vi ca h


thng, mt trong nhng cng vic kh khn cn li l lm th no sinh
c cc ca kim th t m hnh ny. Cc ca kim th cng vi gi tr u
ra mong mun s c s dng kim tra vic ci t h thng c ng vi
c t (bng m hnh) hay khng. Trong mt s trng hp, cc ca kim th
c sinh ra bng vic gii tt c cc h phng trnh ng vi mi ng i
trong m hnh [Bor95]. Vi m hnh c c t bng FSM, chng ta c th
duyt ngu nhin trn FSM thng qua cc trng thi v cc chuyn trng
thi gia chng [AW93, SvBGF+ 91]. Mt ng i t trng thi khi to
n mt trng thi kt thc tng ng vi mt ca kim th chng ta mun
to ra. Trong hnh 8.5, mt ng i off, normal, dim, off (phn bi m)
tng ng chui hnh ng turn on, decrease intensity, turn off s l mt ca
kim th t FSM ny. m bo tt c cc ng i c th trong FSM
phi c kim th, chng ta c th p dng cc thut ton duyt FSM theo
chiu rng hoc theo chiu su (nh duyt cc th) nhm lit k tt c
cc ng i. V d, hnh 8.6 m t qu trnh sinh cc ng i t my hu
hn trng thi trong hnh 8.5. Trong hnh ny, cc ng i bi m chnh
l cc ng i chng ta cn to ra nhm kim th h thng. Chng ta bt
u t trng thi off. Trng thi ny ch c mt php chuyn trng thi n
trng thi normal nn chng ta ch c mt ng i off, normal. C ba php
chuyn trng thi t trng thinormal nn chng ta c ba ng i c
sinh ra l off, normal, dim, off, normal, off v off, normal, bright. Do trng
thi off c duyt nn off, normal, off l mt ng i cn tm. Chng
ta tip tc x l vi hai ng i cn li mt cch tng t.
Vi mi ng i, chng ta s sinh cc u vo cho ca kim th tng

204

CHNG 8. KIM TH DA TRN M HNH

ng. Chng ta c th chn ngu nhin hoc s dng cc thut ton gii cc
h phng trnh ng vi cc iu kin t dy cc trng thi ca ng i
ny. B u vo c c m bo iu kin ng i tng ng s c thc
thi khi chy chng trnh. Tuy nhin, trong mt s trng hp v d nh
kim th tng tc giao din ngi dng, chng ta khng cn sinh cc gi
tr u vo cho mi ng i. Chi tit v cc trng hp ny c th tham
kho trong v d minh ha c trnh by trong mc 8.6.

Hnh 8.5: Mt v d v ng i trong my hu hn trng thi.

Hnh 8.6: Sinh cc ng i t my hu hn trng thi.

8.4. SINH U RA MONG MUN CHO CC CA KIM TH

8.4

205

Sinh u ra mong mun cho cc ca kim


th

c c mt ca kim th hon chnh, chng ta cn tnh c gi tr u


ra mong i so snh vi gi tr thc khi chy chng trnh ng vi b
u vo tng ng. Hin ti, vic tnh gi tr u ra mong mun c thc
hin th cng da vo tri thc ca ngi kim th i vi h thng. Vic
t ng tnh gi tr u ra mong mun ang l mt bi ton kh v cha
c gii php tha ng. Hin ti, c rt nhiu phng php hng n gii
quyt bi ton ny nh phng php hc my [MMA04, MMA02], phng
php thng k [MG04], metamorphic [PZKH06]. Tuy nhin, chi ph p
dng cc phng php ny l rt ln v i hi tri thc ca cc chuyn gia
v cc lnh vc ny. Mt gii php khc nhm hin thc ha bi ton ny
l dng hai ci t tng ng tc l lp trnh hai h thng vi hai ngn
ng khc nhau hoc vi hai nhm khc nhau. Vi gii php ny, mt ci t
dng tnh kt qu thc v h thng cn li dng tnh gi tr mong i.

8.5

Thc hin cc ca kim th

Sau khi c tp cc ca kim th, chng ta s s dng chng nhm pht


hin cc li lp trnh. t c mc ch ny, chng ta s tin hnh ci
t h thng da trn m hnh c c t. M hnh ny c xem nh
mt thit k chun ca h thng. Khi ci t xong chng trnh, chng
ta s tin hnh thc thi cc ca kim th. Chng ta c th thc hin cng
vic ny mt cch th cng, vit cc kch bn thc thi hoc s dng cc
cng c h tr sn c. Kt qu ca vic kim th s c phn tch nhm
xc nh cc bc tip theo. Mt trong nhng tnh hung c th xy ra l
thit k c th sai v chng ta cn quay li bc xy dng m hnh chnh
sa li n. Trong trng hp ny, chng ta phi thc hin li tt cc cc
bc ca phng php kim th da trn m hnh. Tnh hung thng gp
l kt qu kim th cho chng ta bit cc li lp trnh. Trong trng hp
ny, chng ta tin hnh sa li m ngun v thc hin li tt c cc ca kim
th.

206

8.6

CHNG 8. KIM TH DA TRN M HNH

V d minh ha

Trong mc ny, chng ta s p dng phng php kim th da trn m


hnh nhm kim th tnh ng n ca vic ci t trang Web ng nhp
cho h thng ng k mn hc so vi thit k ca n. Trong v d ny, chng
ta ch quan tm n thit k tng tc mn hnh ca h thng. Thit k ny
s c c t bng DFA. Cc k thut c t h thng bng DFA, sinh cc
ca kim th t DFA v thc hin cc ca kim th pht hin cc li ci
t s c trnh by chi tit trong v d ny.

8.6.1

c t h thng

Gi s chng ta cn mt trang Web ng nhp h thng ng k mn hc


cho ba loi ngi dng: qun tr h thng, nhn vin phng o to v sinh
vin. ng nhp, mi ngi dng phi nhp tn ng nhp v mt khu
ri nhn nt Submit ng nhp.

Hnh 8.7: c t DFA cho trang ng nhp ca H thng ng k mn hc.


Hnh 8.7 l c t bng DFA tng ng vi thit k tng tc mn hnh
ca trang Web ny. Ban u, trng thi khi to ca trang Web l S_index
ng vi trng thi ca h thng chun b ng nhp. trng thi ny, nu
ngi dng nhn nt Submit ng vi hnh ng c_submit th h thng
chuyn n trng thi error_log (li ng nhp). y cng l mt trng thi
kt thc ca h thng. Ti trng thi ny, nu ngi dng s dng nt Go
back ca trnh duyt (ng vi hnh ng c_back ), h thng s quay li trng
thi khi to. Ngc li, nu ngi dng g tn ng nhp (ng vi hnh
ng t_usrname) th h thng chuyn t trng thi S_index sang trng thi

8.6. V D MINH HA

207

username ( nhp tn ng nhp). Ti trng thi ny, nu ngi dng xa


tn ng nhp (ng vi hnh ng del_usrname), h thng s quay v trng
thi S_index. Nu ngi dng nhp mt khu ti trng thi S_index ng vi
hnh ng t_passwd th trng thi mi ca h thng s l password ( nhp
mt khu). Nu ngi dng xa mt khu ti trng thi ny (ng vi hnh
ng del_passwd ) th h thng s quay v trng thi khi to. Ti trng thi
username, nu ngi dng tip tc nhp mt khu th h thng s chuyn
n trng thi mi c tn l usr+pass ( nhp xong tn ng nhp v mt
khu). Ti trng thi mi ny, nu mt khu b xa th h thng s tr li
trng thi trc . Tng t, nu ngi dng nhp tn ng nhp ti trng
thi password, h thng s chuyn n trng thi usr+pass. Ti trng thi
ny, nu tn ng nhp b xa, h thng s quay li trng thi password. Ti
trng thi usr+pass, cng mt hnh ng c_submit nhng ph thuc vo
iu kin v loi ngi dng m h thng s chuyn ti mt trong ba trng
thi mi. Ba trng thi ny cng l ba trng thi kt thc ca h thng.
Nu ngi dng l qun tr h thng (ng vi iu kin [usrname:Admin]),
trng thi mi ca h thng s l Admin_main. Tng t, nu ngi dng
l nhn vin phng o to (ng vi iu kin [usrname:PDT]), trng thi
mi ca h thng s l PDT_main. Cui cng, nu ngi dng l sinh vin
(ng vi iu kin [usrname:Admin]) th h thng s chuyn n trng thi
Stu_main.

Hnh 8.8: Biu din DFA cho trang ng nhp bng Excel.

Chng ta c th biu din c t h thng (hnh 8.7) di dng bng


chuyn bng tp Excel nh trong hnh 8.8. Tp Excel ny s c cung cp
lm u vo cho cc cng c h tr kim th da trn m hnh.

208

8.6.2

CHNG 8. KIM TH DA TRN M HNH

Sinh cc ca kim th

Mi ca kim th l mt ng i t trng thi ban u n mt trng thi


kt thc ca h thng. Mi ca kim th phi c t nht mt php chuyn
trng thi. Trong v d ny, chng ti biu din cc ca kim th theo dng
nh v d sau. V d, S_index*t_usrname=username*c_submit=error_log
l mt ca kim th. Bt u t trng thi khi to S_index, ng vi hnh
ng t_usrname, trng thi mi ca h thng l username. Tip n, ng vi
hnh ng c_submit, h thng s chuyn n trng thi kt thc l error_log.
Vn cn li ca chng ta l lm th no sinh ra cc ca kim th c
kh nng pht hin ti a cc li lp trnh. Trc ht, chng ta cn xc nh
tiu ch ca phng php sinh cc ca kim th t c t h thng. C mt
s tiu ch ph bin nh tt c cc trng thi phi xut hin t nht mt ln
trong tt c cc ca kim th, tt c cc php chuyn trng thi phi xut
hin t nht mt ln trong tt c cc ca kim th, ... Trong v d ny, chng
ta s s dng tiu ch th hai.
sinh cc ca kim th p ng tiu ch ny, chng ta xut pht t
trng thi khi to. T trng thi ny, ng vi cc trng thi tip theo ca
n sao cho php chuyn trng thi ny cha c duyt, chng ta s sinh ra
cc phn ca cc ca kim th. Vi mi phn ny ng vi mi trng thi mi,
chng ta tin hnh tng t nh trn. Trong trng hp tt c cc php
chuyn trng thi t trng thi ang xt c ving thm, nu trng thi
ny khng l trng thi kt thc th ta s chn ngu nhin mt dy cc php
chuyn trng thi tip theo ti mt trng thi kt thc. Khi ta gp trng
thi kt thc th thut ton s tr li mt ca kim th tng ng. Thut
ton s kt thc khi tt c cc php chuyn trng thi ca h thng c
ving thm. Vi tng ny, chng ta s sinh ra c by ca kim th ng
vi c t DFA nh trong hnh 8.7.
S_index*c_submit=error_log
S_index*t_usrname=username*c_submit=error_log
S_index*t_usrname=username*t_passwd=usr+pass*
c_submit=Admin_main
S_index*t_usrname=username*t_passwd=usr+pass*
c_submit=PDT_main

8.6. V D MINH HA

209

S_index*t_usrname=username*t_passwd=usr+pass*
c_submit=Stu_main
S_index*t_passwd=password*t_usrname=usr+pass*
del_passwd=username*c_submit=error_log
S_index*t_usrname=username*t_passwd=usr+pass*
del_usrname=password*c_submit=error_log*c_back=
S_index*c_submit=error_log

8.6.3

Thc hin cc ca kim th

Sau khi chng ta ci t trang Web ng nhp h thng ng k mn


hc nh m t, cc ca kim th trn s c s dng nhm kim tra xem
vic ci t c tun th c t nh hnh 8.7 hay khng. thc hin mc
tiu ny, chng ta c th s dng cc Web Driver. Trong v d ny, chng
ta s s dng Selenium1 . Khi cung cp cc ca kim th cho Selenium cng
vi tn min (hoc url) ca trang Web cn kim th, Selenium s thc thi h
thng v ly cc thng tin v cc phn t ca trang Web tng ng vi mi
trng thi ca h thng. Vi mi ca kim th, bt u t trng thi khi to,
ng vi tng s kin ca h thng nh: click (c_submit, c_back ), addtext
(t_usrname, t_passwd ), deltext (del_usrname, del_passwd ), Selenium s
xc nh trng thi tip theo ca h thng. Nu trng thi ny khng trng
vi trng thi tip theo nh trong ca kim th, cng c ny s thng bo c
li. Nu thc hin ht cc s kin ca ca kim th v khng pht hin ra li,
ca kim th l tha mn.
V d trn ch cho php kim th ring bit tng trang Web. y l mt
v d n gin nhng rt hiu qu trong vic pht hin cc li lp trnh.
iu c bit ca phng php ny l chng ta khng cn quan tm n
ngn ng lp trnh m chng ta s dng ci t trang Web v Selenium
ch tng tc vi cc trnh duyt khi thc hin vic kim th h thng.
kim th mt Website gm nhiu trang Web tng tc vi nhau,
chng ta cng tin hnh tng t nh v d trn. Khi chng ta c c c
t ca tng trang Web, c t ca h thng s thu c bng cch ghp ni
tt c cc c t ng vi cc trang Web. Khi c c c t ca h thng,
1

www.seleniumhq.org

210

CHNG 8. KIM TH DA TRN M HNH

cc bc cn li s c tin hnh nh trn mt trang Web. Chng ti


pht trin cc cng c h tr phng php kim th da trn m hnh cho
cc ng dng Web nh v d trn. Cc cng c ny cng ti liu hng dn
s dng v cc v d p dng c cung cp ti2 . Chng ti cng cung
cp m ngun ca cng c ny nhm cho php cc sinh vin c th m rng
cng c ny phc v cc mc ch hc tp v nghin cu.

8.7

Thun li v kh khn ca kim th da


trn m hnh

Trong qu trnh pht trin phn mm, cc kim th vin thng thc hin
cng vic ca mnh bng cc phng php truyn thng (th cng) nn thi
gian v chi ph dnh cho cc hot ng ny thng rt cao. Kim th da
trn m hnh ha hn s l mt gii php hiu qu nhm gp phn gii quyt
vn ny. C th, kim th da trn m hnh c cc u im sau:
Gim chi ph v thi gian: Do qu trnh kim th hu ht c thc
hin t ng nn tnh hiu qu ca phng php ny rt cao trong khi
thi gian c gim mt cch ti thiu.
bao ph tt hn: Nu m hnh ca h thng c xy dng tt
th qu trnh kim th da trn m hnh sinh ra nhiu ca kim th v
pht hin nhiu li. Kim th m hnh cng cho php gim cc li ch
quan do ngi kim th sinh ra trong qu trnh kim th sn phm.
y ti liu: M hnh h thng, cc ng i, cc ca kim th,
... l cc ti liu quan trng trong qu trnh pht trin phn mm ni
chung v qu trnh kim th phn mm ni ring. Cc ti liu ny cng
gip cho cc kim th vin hiu hn v cc ca kim th v cc kch
bn kim th.
Kh nng s dng li cao: Mi khi phn mm b tin ha, chng
ta d dng sinh thm cc ca kim th v kim th li mt cch nhanh
chng v hiu qu.
2

http://uet.vnu.edu.vn/hungpn/MBT4WebApps/

8.7. THUN LI V KH KHN CA KIM TH DA TRN M HNH211


Hiu hn v h thng: Kim th da trn m hnh gip ngi pht
trin hiu hn v h thng cn kim th thng quan vic xy dng v
phn tch m hnh h thng.
Sm pht hin li v s khng r rng trong c im k thut v thit
k v vy s tng thi gian gii quyt vn trong kim th.
T ng to v kim tra nhm trnh cc ca kim th trng nhau hoc
khng hu hiu.
Kim th da trn m hnh c kh nng nh gi cht lng phn
mm.
Tuy nhin, kim th da trn m hnh khng d c p dng trong thc
t v mt s kh khn sau:
Kh xy dng m hnh chnh xc: Kim th da trn m hnh cn
c m hnh c t chnh xc hnh vi ca h thng. Trong thc t, vic
xy dng m hnh l rt kh, tn km v tim n nhiu li.
Yu cu cao v kim th vin: Do phi xy dng m hnh ca h
thng v vy ngi kim th phn mm phi yu cu l nhng ngi c
kh nng phn tch v thit k h thng. Hn na, ngi kim th cn
c kin thc tt v cc phng php hnh thc v c t hnh thc, c
hiu bit chi tit v chnh xc v h thng.
To gi tr u ra mong i cho cc ca kim th l mt trong nhng
vn kh khn nht ca kim th da trn m hnh.
Kh khn trng vic s dng cc ca kim th c to ra t
m hnh: Lp trnh vin tin hnh ci t h thng mt cch c lp
nn khi ci t xong thng kh thc thi cc ca kim th c to
ra t m hnh v rt nhiu l do khc nhau. Thng thng, h phi
tin hnh nghin cu m hnh v c t li cc ca kim th mi s
dng c chng. Hn na, m hnh h thng thng tru tng v
tng qut hn ci t ca n. Vn ny l mt trong nhng l do
chnh ca hn ch ny.

212

8.8

CHNG 8. KIM TH DA TRN M HNH

Mt s cng c kim th da trn m


hnh

Hin ti, c rt nhiu cng c h tr phng php kim th da trn m


hnh ni ring v kim th t ng ni chung. Trong mc ny, chng ta s
tm hiu mt s cng c kim th in hnh. Ngoi cc cng c h tr kim
th da trn m hnh, mt s cng c h tr kim th t ng da trn m
ngun cng c gii thiu nhm cung cp mt ci nhn tng quan v cc
cng c kim th t ng.

8.8.1

AGEDIS

AGEDIS [AK04a, AK04b] l mt cng c kim th da trn m hnh. Cng


c ny l sn phm ca d n AGEDIS c ti tr bi y ban Chu u.
AGEDIS cho php c t m hnh, to cc ca kim th, thc hin cc ca
kim th v cc chc nng khc. Ba loi thng tin u vo ca cng c ny
nhm c t h thng cn kim th gm:
M hnh hnh vi ca h thng
Cc nh hng v vic thc hin cc ca kim th nhm m t quy
trnh kim th cho h thng
Cc nh hng cho vic sinh cc ca kim th nhm m t cc chin
lc cho mc tiu ny
Hnh vi ca h thng cn kim th v cc nh hng v vic thc hin cc
ca kim th c c t bng cc biu UML (biu lp, biu trng
thi v biu i tng). Cc nh hng cho vic sinh cc ca kim th
c c t bng XML.
AGEDIS c s dng cho nhiu d n trong thc t. N c nh
gi l mt cng c tt cho kim th da trn m hnh.

8.8. MT S CNG C KIM TH DA TRN M HNH

8.8.2

213

Spec Explorer

Spec Explorer l mt cng c kim th da trn m hnh c pht trin


bi Microsoft. N c tch hp trong Visual Studio nhm to m hnh t
chng trnh, phn tch thm d m hnh bng cng c biu trc quan
thng qua vic hin th cc trng thi ca chng trnh, kim tra tnh ng
n ca m hnh, sinh ra cc ca kim th t m hnh v thc hin chng.

Hnh 8.9: Kin trc ca Spec Explorer.


Hnh 8.9 m t cc lung lm vic ca Spec Explorer. Trong kin trc
ny, m hnh ca h thng c bin dch thnh m hnh c c t bng
Assembly. Cc m Assembly ny v cc cu hnh trong tp Config.Cord c
a vo b thm d. Cng vic ca b thm d l hin th biu trng
thi hoc h thng chuyn tip, t h thng chuyn tip c th to ra cc
tp XML cha cc thng tin v cc kim th hoc c th t ng sinh ra m

214

CHNG 8. KIM TH DA TRN M HNH

ca cc ca kim th. Spec Explorer c nh gi l mt cng c mnh v


c s dng trong rt nhiu d n ca Microsoft.

8.8.3

Conformiq Qtronic

Conformiq Qtronic3 l mt cng c kim th da trn m hnh cho php


kim th t ng cc h thng nhng v cc h thng giao dch in t. Cc
chc nng chnh ca phng php kim th da trn m hnh u c h
tr bi cng c ny. M hnh trong cng c ny c c t bng biu
trng thi UML v h tr cc ngn ng ph bin nh C/C++, C# v Java.
Khi mt biu trng thi UML c t hnh vi ca h thng cn kim th
c cung cp, cng c ny tin hnh phn tch v sinh ra tp cc ca kim
th. iu c bit cng c ny l n c th sinh cc ca kim th t cc
hnh vi khng n nh. thc hin cc ca kim th, ngi kim th cn
nh ngha cc kch bn cho php chuyn i cc ca kim th thnh nh
dng c th thc hin trn h thng cn kim th.

8.8.4

JCrasher

JCrasher l mt cng c kim th t ng mnh m cho ngn ng Java.


Cng c ny kim tra d liu ca cc chng trnh Java v sinh ra cc on
m to ra cc i tng c kiu khc nhau kim th cc phng thc
public vi d liu ngu nhin. JCrasher c gng pht hin li bng cch lm
chng trnh lng nghe cc ngoi l c sinh ra khi cc chng trnh Java
c thc thi. Mc d cc phng php kim th ngu nhin cn nhiu hn
ch nh tnh bao ph ca cc ca kim th khng cao, ..., li th ca phng
php ny l hon ton t ng qu trnh kim th.
So vi cc cng c khc, JCrasher c nhiu c trng mi nh sau:
Phn tch cc phng thc mt cch t ng, xc nh kch thc ca
cc tham s ca phng thc cn kim th v la chn t hp cc
tham s kim th ngu nhin
C mt c s tri thc quyt nh mt ngoi l c nn c xem l
li hay khng
3

http://www.conformiq.com/qtronic.php

8.8. MT S CNG C KIM TH DA TRN M HNH

215

Cho php khi phc tt c cc trng thi ca qu trnh kim th trc


mt cc hiu qu
Sinh ra cc ca kim th c th thc hin bi cng c JUnit.
JCrasher c th c tch hp vo Eclipse nh l mt plug-in ca mi
trng lp trnh ny.

8.8.5

Selenium

Selenium4 l mt phn mm m ngun m, c pht trin bi Jason Huggins, sau c tip tc bi nhm ThoughtWorks vo nm 2004. Phin
bn hon chnh mi nht l 1.0.1 c pht hnh vo 10/06/2009. y l
mt cng c h tr kim th t ng cho cc ng dng Web. Selenium h
tr kim th trn hu ht cc trnh duyt ph bin hin nay nh Firefox, Internet Explorer, Safari, .. cng nh cc h iu hnh ch yu nh Windows,
Linux, Mac,... Selenium cng h tr mt s ln cc ngn ng lp trnh Web
ph bin hin nay nh C#, Java, Perl, PHP, Python, Ruby,... Cng c ny
c th kt hp thm vi mt s cng c khc nh Bromien v JUnit nhng
vi ngi dng thng thng ch cn chy t ng m khng cn ci thm
cc cng c b tr. Selenium ang c cng ng s dng nh gi l mt
trong nhng cng c tt nht cho kim th t ng cc ng dng Web.

8.8.6

SoapUI

SoapUI5 l mt phn mm thng mi cung cp mt gii php kim th


chc nng hon chnh v a nn tng. SoapUI cng cung cp bn min ph
vi cc tnh nng gii hn. Cng c ny c s dng ch yu cho kim th
chc nng cc dch v Web. SoapUI c giao din ha d s dng gip
ngi dng d dng to ra cc kch bn kim th cng nh thc hin vic
kim th chc nng, kim th hi quy mt cch t ng v cc k nhanh
chng. Ngoi cc tnh nng c cung cp sn, chng ta c th s dng ngn
ng/th vin Groovy/Javascript lp trnh thm cc tnh hung kim th
i vi cc chc nng kh. u vo ca cng c ny l a ch ca dch v
4
5

www.seleniumhq.org
http://www.soapui.org

216

CHNG 8. KIM TH DA TRN M HNH

Web cn kim th (di dng URL hoc IP) v u ra l bo co kim th.


Chng ta cng c th ty bin nh dng ca bo co ny theo nhu cu ca
ngi kim th.

8.8.7

W3af

W3af (Web Application Attack and Audit Framework6 ) l mt cng c h


tr kim th bo mt cho cc ng dng Web bng cch cung cp mi trng
thch hp kim sot v tn cng cc ng dng ny. u vo ca cng c
ny l a ch ca ng dng Web cn kim th v cu hnh cho chin lc
kim th ng dng ny. u ra ca n l mt bo co v cc l hng bo
mt tim n cn khc phc ca ng dng.

8.9

Tng kt

Kim th da trn m hnh ni ring v kim th t ng ni chung ang


c xem nh l cc gii php hiu qu nhm gim chi ph v tng hiu qu
cho cc hot ng kim th v m bo cht lng ca cc sn phm phn
mm. p dng cc phng php kim th da trn m hnh, chng ta
cn xy dng m hnh c t chnh xc hnh vi ca h thng cn kim th.
Ty vo yu cu kim th v c trng ca h thng, chng ta s la chn
phng php c t ph hp. Xy dng m hnh l mt trong nhng cng
vic kh khn nht trong kim th da trn m hnh v trong thc t hot
ng ny thng tim n nhiu li. m bo tnh chnh xc ca cc m
hnh ny, chng ta c th p dng cc phng php kim chng m hnh
(model checking) v chng minh nh l (theorem proving). Mt khi c
c m hnh, chng ta s xy dng cc ng i t trng thi khi to n
cc trng thi kt thc ca h thng. ng vi mi ng i, chng ta s xy
dng mt ca kim th. Cc ca kim th ny s c s dng pht hin
nhng li lp trnh. Trong thc t, c rt nhiu cng c h tr kim th da
trn m hnh v kim th t ng. Cc cng c ny gp phn khng nh
trong vic nng cao cht lng cho cc sn phm v tng tnh hiu qu trong
cc hot ng kim th.
6

http://w3af.org

8.10. BI TP

8.10

217

Bi tp

1. Trnh by mc ch ca kim th da trn m hnh?


2. Ti sao kim th da trn m hnh c vai tr quan trng trong vic
nng cao tnh hiu qu v gim chi ph cho cc hot ng kim th?
3. Hy phn tch cc u im ca kim th da trn m hnh.
4. Hy phn tch nhng nhc im ca kim th da trn m hnh.
5. Da trn nhng kin thc v kim th da trn m hnh, hy trnh by
cc bc nhm t ng ha phng php kim th dng iu khin
( c gii thiu trong chng 6).
6. Da trn nhng kin thc v kim th da trn m hnh, hy trnh
by cc bc nhm t ng ha phng php kim th dng d liu
( c gii thiu trong chng 7).
7. M t cc bc nhm p dng phng php kim th da trn m
hnh.
8. Cho my hu hn trng thi m t trong hnh 8.10.
Hy m t bng li hnh vi ca h thng c c t trong my
hu hn trng thi ny.
Xy dng bng chuyn cho FSM ny.
Hy lit k tt c cc ng i ca h thng.
Sinh cc ca kim th ng vi cc ng i.
9. Cho my hu hn trng thi m t trong hnh 8.11.
Hy m t bng li hnh vi ca h thng c c t trong my
hu hn trng thi ny.
Xy dng bng chuyn cho FSM ny.
Hy lit k tt c cc ng i ca h thng.
Sinh cc ca kim th ng vi cc ng i.
10. Hy ly cc v d ng vi cc phng php c t m hnh (biu
trng thi, my trng thi UML).

218

CHNG 8. KIM TH DA TRN M HNH

Hnh 8.10: My hu hn trng thi cho mt phn ca my ATM n gin.

Hnh 8.11: My hu hn trng thi ca my in thoi.

Chng 9
Kim th t ng v cng c
h tr
Kim th ang c xem l gii php ch yu nhm m bo cht lng
cho cc sn phm phn mm. Tuy nhin, cc hot ng kim th hin nay
ch yu c thc hin mt cch th cng v tiu tn khong 30-50% ti
nguyn (thi gian, nhn lc v chi ph) ca qu trnh pht trin sn phm
phn mm. Hn na, phc tp ca cc phn mm ngy cng tng v
trong mi trng cnh tranh nh hin nay i hi cc cng ty phn mm
phi p dng cc phng php v cng c nhm t ng ha cc hot ng
kim th. Chng ny gii thiu v kim th t ng v cc cng c h tr
nhm gii quyt vn ny.

9.1

Tng quan v kim th t ng

Mt thc t ng bun hin nay l cht lng ca hu ht cc sn phm


phn mm rt thp. Hng nm, chng ta phi chu thit hi nhiu t la
do cc li phn mm gy ra [oST02a, G.95]. Theo thng k ca NIST cng
b nm 2002 [oST02b], cht lng phn mm thp gy thit hi cho kinh
t M 60 t la mi nm v tiu tn 22 t la cho vic pht pht trin
cc cng c nhm pht hin cc li v kim th t ng. C hai l do chnh
dn n tnh trng ny. Th nht, hu ht cc cng c hin nay u tp
trung vo vic thc thi t ng cc ca kim th (auto-test execution) trong
219

220

CHNG 9. KIM TH T NG V CNG C H TR

khi vn ct li ca kim th l cc phng php v k thut sinh cc ca


kim th vn cn thiu. Th hai, cc cng c hin nay cha h tr mt cch
hiu qu cho kim th hi quy (regression testing). Mt khi phn mm b
tin ha/thay i, chng ta cn kim th li sn phm. Lm th no s
dng li cc ca kim th c v sinh ra cc ca kim th mi mt cch hiu
qu ang l mt vn m v cha c gii php tha ng. Hn na, mt
trong nhng vn kh nht ca kim th t ng l vic sinh cc gi
tr u ra mong i tng ng vi cc u vo ca cc ca kim th. y l
mt bi ton kh v cha c gii php hiu qu nhm gii quyt vn ny.
Gii php ch yu gii quyt cc vn trn l xut cc phng
php v cng c h tr ti a cc hot ng trong quy trnh kim th
phn mm. Trong quy trnh kim th, chng ta cn mt s cng c ng vi
cc pha v cc mc tiu kim th khc nhau. V d, t ng ha chin
lc kim th hp en, phng php kim th da trn m hnh (modelbased testing) ang c bit n nh l mt gii php tin cy v hiu
qu [MRA04, KJ02, BFM04]. Vi kim th hp trng, ng vi mi phng
php khc nhau chng ta cng c rt nhiu cng c h tr. Ngoi ra, mt
s cng c h tr kim th cc tnh cht phi chc nng nh an ton, bo
mt, hiu nng v kh nng chu ti, ... cng c pht trin v s dng
rng ri.
Kim th t ng l qu trnh thc hin mt cch t ng cc bc trong
mt kch bn kim th. Kim th t ng bng mt cng c nhm rt ngn
thi gian kim th. Mc ch ca kim th t ng l gim thiu thi gian,
cng sc v kinh ph, tng tin cy, tng tnh hiu qu v gim s nhm
chn cho ngi kim th trong qu trnh kim th sn phm phn mm.
Kim th t ng s c s dng khi d n khng ti nguyn (thi gian,
nhn lc v chi ph), phi thc hin kim th hi quy khi sn phm c
sa i hoc nng cp v cn kim th li cc tnh nng thc hin tt
trc , kim tra kh nng vn hnh ca sn phm trong cc mi trng
c bit (o tc x l trung bnh ng vi mi yu cu, xc nh kh nng
chu ti ti a, xc nh cu hnh ti thiu thc thi h thng, kim tra
cc c ch an ninh v an ton, ...).

9.2. KIN TRC CA MT B CNG C KIM TH T NG 221

9.2

Kin trc ca mt b cng c kim th


t ng

Trong thc t, c rt nhiu b cng c h tr kim th t ng c pht


trin nhm gp phn gii quyt cc vn kh khn ca quy trnh kim th.
Hnh 9.1 m t kin trc chung nht ca mt b kim th t ng [Som10].
Trong kin trc ny, cc cng c kim th c tch hp trong mt quy trnh
thng nht nhm h tr y cc hot ng kim th trong quy trnh kim
th cc sn phm phn mm.

Hnh 9.1: Kin trc chung ca mt b kim th t ng.


Cc cng c c bn trong kin trc ny bao gm:
Qun l kim th: cng c ny cho php qun l vic thc hin/thc
thi cc ca kim th. N gim st vic thc hin tng ca kim th ng
vi b gi tr u vo, gi tr u ra mong mun v gi tr u ra thc
t. JUnit l mt v d in hnh v cng c ny.

222

CHNG 9. KIM TH T NG V CNG C H TR

Sinh cc ca kim th: y l mt trong nhng cng c quan trng


nht ca cc b kim th t ng. Ty thuc vo cc k thut kim
th c p dng, cng c ny s sinh ra tp cc ca kim th (cha
gm gi tr u ra mong mun) cho chng trnh/n v chng trnh
cn kim th. Cc ca kim th c sinh ra ch cha gi tr u vo
thc hin n. Cc gi tr ny c th c la chn trong c s d
liu hoc c sinh mt cch ngu nhin.
Sinh gi tr u ra mong mun: Cc ca kim th c sinh ra bi
cng c trn ch cha cc gi tr u vo. Cng c ny cho php sinh
ra gi tr u ra mong mun ng vi mi b d liu u vo ca mi
ca kim th. Gi tr u ra mong mun ny s c so snh vi gi tr
u ra thc t khi thc hin ca kim th ny nhm pht hin ra cc
li/khim khuyt ca sn phm.
So snh kt qu kim th: Cng c ny so snh gi tr u ra thc
t v gi tr u ra mong mun ca mi ca kim th khi n c thc
hin trn chng trnh/n v chng trnh cn kim th.
To bo co kim th: Mt trong nhng u im ca cc b cng
c kim th t ng l n c c ch sinh bo co kim th mt cch
chnh xc v nht qun. Da vo kt qu ca cng c so snh kt qu
kim th, cng c ny s t ng sinh ra bo co kt qu kim th
theo nh dng mong mun ca n v pht trin.
Phn tch ng: Cng c ny cung cp mt c ch nhm kim tra
vic thc hin ca cc cu lnh ca chng trnh cn kim th nhm
pht hin ra cc li v pht hin cc cu lnh/on lnh khng c
thc hin bi mt tp cc ca kim th cho trc. Cng c ny cng
rt hiu qu trong vic nh gi tnh hiu qu ca mt b kim th
cho trc.
B m phng: C nhiu loi mnh m phng c cung cp trong
cc b kim th t ng. Mc ch ca cc cng c ny l m phng
qu trnh thc hin ca chng trnh cn kim th. V d, cc cng c
m phng giao din ngi dng cho php thc hin t ng cc tng
tc gia ngi dng v sn phm. Selenium1 l mt v d v mt cng
c m phng giao din ngi dng cho cc ng dng Web.
1

www.seleniumhq.org

9.3. MT S CNG C KIM TH T NG

223

Trong thc t, cc b cng c kim th t ng c th c thm mt s


cng c khc nh cho php c t cc tnh cht ca h thng cn kim th,
vn vn. Mt s b cng c ch h tr mt s cng c trong cc cng c
lit k trn.

9.3

Mt s cng c kim th t ng

9.3.1

CFT4CUnit

Nhm cung cp mt cng c kim th t ng cc n v chng trnh (cc


hm) vit bng ngn ng C phc v cc sinh vin trong vic nghin cu v
hc tp, chng ti pht trin mt cng c c tn CFT4CUnit (Control
Flow Testing for C Unit). Cng c ny t ng ha cc bc trong quy trnh
kim th dng iu khin nh gii thiu trong chng6. u vo ca cng
c ny l cc hm/n v chng trnh vit bng ngn ng C v o cn
kim th (nh gii thiu trong mc 6.3 ca chng 6). Cng c s xy
dng th dng d liu ng vi o ny, hin th th lung iu khin
mt cch trc quan v sinh ra cc ca kim th tng ng. Cc ca kim th
c sinh ra s c xut ra mt tp nhm gip cho kim th vin thm gia
tr u ra mong mun vo mi ca kim th. Khi kim th vin lm vic vi
mi ca kim th, cng c cho php lm ni bt dng iu khin ca n v
chng trnh ng vi ca kim th ny nhm tr gip trong vic sinh gi tr
u ra mong mun mt cch chnh xc. Cui cng, cng c cho php thc
hin cc ca kim th v to ra bo co kim th.

Hnh 9.2: Hm IsTrangle lm u vo cho cng c CFT4CUnit.

224

CHNG 9. KIM TH T NG V CNG C H TR

Hnh 9.2 l m ngun ca hm IsTrangle bng ngn ng C. Hm ny


s c cung cp lm u vo cho cng c CFT4CUnit. th dng iu
khin v cc ca kim th ca Hm IsTrangle sinh bi cng c CFT4CUnit
nh giao din trong hnh 9.3. Cng c ny cng ti liu hng dn s dng
v cc v d p dng c cung cp ti2 . Chng ti cng cung cp m
ngun ca cng c ny nhm cho php cc sinh vin c th m rng cng c
ny phc v cc mc ch hc tp v nghin cu.

Hnh 9.3: th dng iu khin v cc ca kim th ca Hm IsTrangle


sinh bi cng c CFT4CUnit.

9.3.2

JDFT

Vi mc tiu nh cng c CFT4CUnit, chng ti pht trin cng c c


tn JDFT (Data Flow Testing for Java Programs) nhm t ng ha phng
php kim th dng d liu nh gii thiu trong chng 7. u vo ca
cng c ny l cc tp .java tng ng vi m ngun ca mt lp i tng.
Cng c cho php chn tp u vo nh giao din trong hnh 9.4.
2

http://uet.vnu.edu.vn/hungpn/CFT4CUnit/

9.3. MT S CNG C KIM TH T NG

225

Hnh 9.4: Giao din cho php chn tp m ngun .java cn kim th.

Sau khi chn tp u vo, JDFT s t ng xy dng th dng d liu


v hin th n cng m ngun tng ng nh giao din trong hnh 9.5.
Cui cng, cng c s sinh cc ca kim th cng u ra mong mun ng
vi tng ca kim th c sinh ra. Cc ca kim th ny s c lu li di
mt tp Excel nhm s dng li trong tng lai. JDFT s phn tch v sinh
bo co kim th nh hnh 9.6.
Cng c ny cng ti liu hng dn s dng v cc v d p dng c
cung cp ti3 . Chng ti cng cung cp m ngun ca cng c ny nhm
cho php cc sinh vin c th m rng cng c ny phc v cc mc ch
hc tp v nghin cu.

http://uet.vnu.edu.vn/hungpn/JDFT/

226

CHNG 9. KIM TH T NG V CNG C H TR

Hnh 9.5: Giao din hin th m ngun v th dng iu khin.

9.3.3

JUnit

Cng c kim th cho cc n v chng trnh vit bng Java, JUnit4 , cung
cp mt c s h tng chun cho vic thit lp cc b kim th. Mt khi b
kim th c thit lp, n c th t ng chy mi khi m thay i. JUnit
khuyn khch cc nh pht trin vit cc kch bn kim th, chn cc m
kim th vo m ngun Java v thc hin chng pht hin cc li bn
trong n v chng trnh. Khc vi cc cng c khc, JUnit khng h tr
c ch sinh cc ca kim th. Hin nay, JUnit c tch hp trong Eclipse
v h tr rt c lc cho qu trnh kim th.

http://junit.org/

9.3. MT S CNG C KIM TH T NG

227

Hnh 9.6: Bo co kim th c sinh bi cng c JDFT.

9.3.4

QuickTest Professional

Quick Test Professional5 l phn mm kim sot vic kim th t ng cc


chc nng ca cc sn phm phn mm cn kim th. Sn phm ny bao
gm mt tp cc m-un c th tng tc vi nhau nhm qun l ton b
quy trnh kim th phn mm. Quick Test Professional l mt cng c h
tr kim th hm (kim th chc nng) v cho php tin hnh kim th hi
quy mt cch t ng.

http://www.automation-consultants.com

228

9.3.5

CHNG 9. KIM TH T NG V CNG C H TR

Apache JMeter

Apache JMeter6 c dng kim th kh nng chu ti v kim th hiu


nng cho cc ng dng Web v mt s ng dng khc. Cng c ny h tr
kim th hiu nng ca cc m ngun c vit bng cc ngn ng khc
nhau nh PHP, Java, ASP.NET, . . . Apache JMeter m phng kh nng
chu ti ca cc my ch trn my s dng kim th h thng. Cng c
ny h tr giao din ha gip phn tch tt hiu sut khi kim th ng
thi nhiu ca kim th. Ngoi ra, Apache JMeter cn h tr thm nhiu tin
ch khc. Cc tin ch ny c cung cp ti 7 .

9.3.6

Load Runner

Load Runner8 gi lp mt mi trng o gm nhiu ngi dng thc hin


cc giao dch cng mt lc nhm gim st cc thng s x l ca phn mm
cn kim th. Kt qu thng k s c lu li v cho php kim th vin
thc hin phn tch nhm kim th kh nng chu ti v cc yu cu phi
chc nng khc ca sn phm.
Trong qu trnh kim th, Load Runner t ng to ra cc kch bn kim
th lu li cc thao tc ngi dng tng tc ln phn mm. Mi kch
bn ny cn c xem l hot ng ca mt ngi dng o m Load Runner
gi lp. Ngoi ra, cng c ny cn cho php t chc, iu chnh, qun l v
gim st hot ng kim tra kh nng chu ti.

9.4

Tng kt

Kim th t ng ang c quan tm nh l mt gii php hiu qu v


duy nht nhm ci thin tnh chnh xc v hiu qu cng nh gim kinh ph
v rt ngn thi gian trong qu trnh kim th cc sn phm phn mm.
c nhiu cng c c pht trin h tr cc mc ch trn. Ty thuc
vo yu cu kim th ca tng sn phm, cc cng ty s la chn cc cng
c ph hp. Tuy nhin, rt kh tm c mt b cng c p ng tt c
6

http://jmeter.apache.org/
http://jmeter-plugins.org
8
http://www.hp.com/LoadRunner/
7

9.5. BI TP

229

cc yu cu kim th. Trong nhiu trng hp, cc cng ty cn ch ng m


rng v pht trin thm cc cng c phc v cc mc ch c th.

9.5

Bi tp

1. Trnh by khi nim kim th t ng.


2. Li ch ca kim th t ng? Khi no chng ta p dng kim th t
ng?
3. Nhng kh khn khi p dng kim th t ng?
4. M t kin trc ca b cng c kim th t ng. Ly v d minh ha
ng vi mi cng c trong kin trc ny.
5. S dng mt trong cc cng c kim th t ng ( gii thiu trong
chng ny hoc cc cng c khc) kim th cho mt h thng n
gin.

230

CHNG 9. KIM TH T NG V CNG C H TR

Chng 10
Kim th tch hp
10.1

Gii thiu

Cc chng trc ch yu tp trung vo cc k thut kim th cc hm n


l, cn gi l kim th n v. Chng ny s tp trung vo vic kim th
khi ghp ni cc hm hay tng qut hn l cc m-un c kim th
n v. Kim th mc ny gi l kim th tch hp. Kim th tch hp
gip kim tra s tng thch gia cc m-un. Kim th h thng v kim
th chp thun chng sau s kim tra ton b h thng so vi c t v
yu cu ca ngi s dng.
Mt m-un phn mm hay cn gi l mt thnh phn l mt phn t
tng i c lp trong mt h thng. Cc m-un thng c giao din r
rng giao tip vi cc m-un khc. Khi nim m-un mang tnh tng
i. M-un c th l n gin l mt hm, mt th tc, mt lp, hay mt
tp cc phn t c bn ny kt hp vi nhau cung cp mt dch v tch
hp mi. Mt h thng l mt tp cc m-un kt ni vi nhau theo mt
cch nht nh thc hin mt mc ch t ra. Mt h thng con l
mt phn ca h thng gm cc m-un cha hon ton tch hp ht vi cc
m-un khc.
Trong cc d n ln c hng chc hoc hng trm ngi lp trnh, h
thng thng c chia thnh cc m-un nhiu nhm cng pht trin.
Cc m-un thng c kim th c lp v kim th mc ny gi l
kim th n v. Ngi lp trnh thng chu trch nhim thc hin kim
231

232

CHNG 10. KIM TH TCH HP

th n v. Cc k thut kim th hm v hp trng ch yu kim th


mc ny. Sau khi cc n v c kim th xong, vic tip theo l ghp
cc n v ny li to thnh h thng. Vic ghp ny khng h n gin
v lc ny cc li mc giao din gia cc m-un c th xy ra. Vic kim
tra li trong qu trnh ghp ny l kim th tch hp v kim th h thng.
Kim th tch hp thng phi c thc hin trc v lm trong ni b i
pht trin. Khi kim th tch hp n nh, kim th h thng mi c
tin hnh m bo h thng hot ng mi trng tht. Ba l do quan
trng chng ta cn kim th tch hp l:
Cc m-un c th do cc nhm khc nhau lm. D c thng nht
vi nhau t trc v giao din ca cc m-un, vic hiu sai, nhm ln,
v ch quan nhiu khi vn xy ra trn thc t. Phn sau chng ta s
xem nhng nguyn nhn c th gy ra li giao din ny.
Cc m-un thng c kim th vi cc hm gi trc khi tch hp,
hoc l vi hm gi (stub), hoc hm gi gi (driver). Cc hm gi ch
tr v gi tr kt qu vi mt s tham s nh trc, m phng mt vi
trng hp ca hm tht. Cc hm gi gi li gi nhiu m-un khc
theo cc ng i khc nhau nn nu hm gi gi ny khng c kim
th ht tt c cc ng i th kh c th khng nh vic thay hm
gi gi bng hm tht chc chn khng sinh ra li.
Mt s m-un bn cht l phc tp nn d c li hn. Chng ta cn
xc nh m-un gy ra li nhiu nht.
Kim th tch hp hon tt khi ton b cc m-un c tch hp y
vi nhau, cc li pht hin c sa cha. Sau kim th h thng mi
c tin hnh.

10.2

Cc loi giao din v li giao din

M-un ha l mt nguyn l quan trng trong thit k phn mm v cc


m-un tng tc vi nhau qua cc giao din thc hin cc yu cu chc
nng ca h thng. Mt giao din gia hai m-un cho php mt m-un
truy cp dch v cung cp bi m-un kia. Giao din c c ch chuyn iu

10.2. CC LOI GIAO DIN V LI GIAO DIN

233

khin v d liu gia cc m-un. Ba loi giao din chnh chng ta thng
gp l:
Giao din gi hm/th tc (procedure call): mt hm trong mt
m-un gi mt hm trong mt m-un khc. Pha gi s chuyn iu
khin cho m-un c gi. Pha gi cng c th chuyn d liu cho
hm c gi. Ngc li hm c gi cng c th chuyn d liu tr
v cho hm gi khi n tr iu khin v cho hm gi.
Giao din b nh dng chung (shared memory): mt khi b
nh c chia s gia hai m-un. Khi b nh ny c th do mt
trong hai m-un cp pht, hoc cng c th do mt m-un th ba
cp pht. Mt m-un s ghi d liu ln khi b nh v m-un kia
c d liu t khi b nh.
Giao din truyn thng ip (message passing): mt m-un to
mt thng ip v gi thng ip cho mt m-un khc. Dng ny
rt ph bin trong cc h thng khch-ch hay cc h thng trn nn
web, dch v web.
Li giao din l li gn vi cc cu trc tn ti bn ngoi mi trng ca
m-un nhng c m-un s dng [BP84]. Mt s li giao din ny
c phn loi nh sau [PE85]:
1. Khng chc nng: li ny do mt m-un gi thit sai v m-un
kia. M-un cung cp dch v khng hot ng nh m-un s dng
mong i - c tnh hoc ngoi mun ca ngi lp trnh m-un cung
cp dch v.
2. Thay i tnh nng: mt m-un c sa i nhng cc m-un s
dng n khng c iu chnh theo nn chc nng ca h thng b
nh hng.
3. S dng giao din khng ng: mt m-un s dng khng ng
giao din ca m-un c gi. Vi giao din hm vic s dng sai ny
c th do truyn tham s khng ng th t.
4. Hiu giao din khng y : mt m-un khi thit k gi thit mt
s iu kin ca tham s u vo, nhng pha gi li khng n

234

CHNG 10. KIM TH TCH HP


gi thit ny nn truyn cc tham s nm ngoi gi thit. V d
hm tm kim nh phn gi s u vo l mt mng c sp, nhng
pha gi khng sp xp mng ny trc khi gi th li xy ra thuc
kiu ny.

5. Khng x l li tr v: mt m-un c gi c th tr v mt m
li nhng m-un gi li khng kim tra li, coi n l kt qu. Hoc
m-un c gi b sung thm m li tr v nhng m-un gi cha
kp bit/sa.
6. Hiu ng ph vi tham s hoc ti nguyn: mt m-un c th s dng
ti nguyn khng m t trong giao din. V d mt m-un s dng
file tm tn l "temp", nhng khi tch hp mt m-un khc cng s
dng file tm vi tn ny s gy li xung t. Hay v d hm strdup
trong ngn ng C cp pht b nh mi v tr v con tr n xu mi.
Nu bn gi khng gii phng b nh th li d b nh s xy ra.
7. Cc vn phi chc nng: Cc yu cu phi chc nng nh tc ch
c nu ra khi chng c th gy vn . Cc yu cu ny ngay c khi
khng nu ra th chng ta vn ngm nh l chng phi chy khng
qu chm. Khi tch hp cc vn v ny mi thng pht sinh.

10.3

Tch hp da trn cu trc m-un

Mt chng trnh trong ngn ng C hay Java thng c hm main, hm ny


s gi cc hm khc trong thn ca n. Cc hm khc ny li gi tip cc
hm khc na. Rng hn l mt h thng c nhiu m-un th theo cu trc
phn cp ny chng to thnh mt cu trc hnh cy nh trong Hnh 10.1.
S lp trong nhiu ngn ng hng i tng s c cu trc ny.
Khi c cc n v l nh ca cy chng ta c th lp dn chng vi
nhau v kim th tch hp trong qu trnh lp. Th t lp cc m-un vo
cy s dn n cc chin lc kim th tng ng. C bn cch ghp thng
dng l t trn xung (top down), di ln (bottom up), song song ca c
trn xung v di ln gi l bnh kp (sandwitch), v mt cch n gin
khc l ch kim th sau khi ghp ht tt c cc m-un (bigbang). Nhc
im ca kim th theo kiu bigbang l khi c li th chng ta kh v mt
cng hn tm li nm u. Nu chng ta ghp dn dn v kim th

10.3. TCH HP DA TRN CU TRC M-UN

235

Hnh 10.1: Cu trc phn cp m-un.

lun th khi c li xut hin, chng ta tp trung vo cc m-un va ghp


vi nhau s d xc nh li hn. Ch y chng ta gi s cc m-un
c kim th n v xong, nn kim th tch hp c th coi l kim th
giao din gia cc m-un.

10.3.1

Tch hp t trn xung

Tch hp t trn xung l tch hp t hm chnh (main) - gc ca cy. Cc


hm c gi trong hm main trc khi tch hp l cc hm gi (stub). Cc
hm gi ny l cc hm m phng hm c gi v s c b i khi tch
hp vi hm tht. V d hm main gi hm f(x) v g(y) th khi kim th
n v hm main chng ta s dng hm f() v g() l cc hm gi. Hm gi
s nhn tham s v tr v kt qu nh hm tht nhng n khng c ci
t nh hm tht m tr v lun gi tr kt qu ng vi cc mt s tham
s bit trc - tng ng vi ca kim th s c truyn cho f(x) v g(y).
Khi c cc hm gi ny th chng ta c th kim th hm main mt cch c
lp, khng ph thuc vo hm tht. Lc ny chng ta c th p dng cc k
thut hc v kim th n v kim th hm main.
Khi chng ta kim th xong hm main, chng ta s thay dn cc hm
gi bng cc hm tht. By gi cng c nhiu cch lm. Mt l chng ta thay
ton b cc hm gi bng hm tht ri kim th li hm main. Hai l chng
ta thay dn dn tng hm mt v kim th. Vi cch th hai ny chng ta
phi chy kim th tch hp hm main nhiu ln hn.

236

CHNG 10. KIM TH TCH HP

Trn thc t ngi lp trnh s phi b ra kh nhiu cng sc vit cc


hm gi. Do phn vic vit cc hm gi ny cng cn coi nh m ngun
thng thng, v chng ta cng cn qun l chng tt c th chuyn gia
m gi v m tht - do m gi v m tht khng cng tn ti ng thi
c.
Vi v d Hnh 10.1 tch hp t trn xung c th thc hin vi cc
bc nh sau:
1. Tch hp A vi B. Lc ny chng ta s s dng hai m-un gi l C
v D. Tng tc gia hai A v B lc ny c th vn b hn ch bi
cc m-un C v D l m-un gi, ch chy c vi mt s gi tr
thit k trc. Mt s ca kim th ch tc ng n m-un A v
B th c th c thc hin thm. Nh rng trc A c kim th
n v c lp th phi s dng cc m-un gi l B, C, v D.
2. Tch hp thm D. Tc l vi A, B tch hp xong chng ta b sung
thm m-un D. H thng con s gm A, B v D. Chng ta cn kim
th gia A v D, sau chng ta phi kim th li gia A v B, v by
gi h thng con c thm D, cc tng tc gia A v B kim th
trc c th b nh hng bi D.
3. Tch hp thm C. Lc ny h thng con gm A, B, C, D. Tng t
nh bc trc.
4. Tch hp thm E. Tng t bc trc.
5. Tch hp thm F. Tng t bc trc.
6. Tch hp thm G. Tng t bc trc.

10.3.2

Tch hp t di ln

Tch hp t di ln ngc vi tch hp t trn xung. Khi kim th chng


ta khng cn cc hm gi, nhng chng ta cn cc hm gi gi (driver). Hm
gi gi ny m phng hm mc trn m trn s gi hm chng ta ang
kim th. Vi v d trn chng ta phi m phng hm main gi cc hm
f v g vi cc tham s ph hp, v x l kt qu tr v nh hm main tht.
So vi cc hm gi, cc hm gi gi ny thng t hn v s lng (v cu

10.3. TCH HP DA TRN CU TRC M-UN

237

Hnh 10.2: Tch hp t di ln m-un E, F v G.

trc cy lun c s cnh con, l xe ra), tuy nhin vic gi lp cc hm gi


gi ny li thng phc tp hn.
Vi v d Hnh 10.1, chng ta phi thit k hm gi gi tch hp ba
m-un E, F, G nh trong Hnh 10.2. Ch l mc d E, F v G khng c
tng tc trc tip, gi tr tr v ca mt m-un c th c truyn cho
m-un khc, do chng c th c tng tc gin tip. Hm gi gi phi
c xy dng n gin nhng cn phn nh ng hnh vi ca m-un tht
l C.
bc tip theo, chng ta s tch hp cc m-un B, C, D vi E, F v
G nh m t trong Hnh 10.3. y chng ta thay C vo nhng h thng
khng thc hin c t hm C, nn chng ta phi s dng hm gi m
phng m-un A. Khi chng ta cn tch hp thm cc m-un B, D
hm gi gi c th hot ng v kim tra c m-un C.

10.3.3

Tch hp bnh kp

Tch hp bnh kp l t hp ca rch hp t trn xung v t di ln. C


th hnh dung cch tch hp ny l tch hp bigbang vi cc cy con. u
im l chng ta s phi vit t cc hm gi v cc hm gi gi hn, nhng
nhc im l chng ta s kh truy tm li.

238

CHNG 10. KIM TH TCH HP

Hnh 10.3: Tch hp t di ln m-un B, C, D vi E, F v G.

10.4

Tch hp da trn th gi hm

Mt trong nhng nhc im ca tch hp da trn cu trc m-un hay


cn gi l th chng trnh (program graph) l n ch da trn cy phn
r cu trc. th gi hm (call graph)l th c hng v chng ta c
hai chin lc tch hp l tch hp i mt (pairwise) v tch hp lng ging
(neighborhood).

10.4.1

Tch hp i mt

Tch hp i mt nhm mc ch gim cng sc phi lm cc hm gi v


hm gi gi. Chng ta s dng lun cc hm tht thay cho hm gi. Mi
nghe th chng ta c cm gic kiu tch hp ny ging kiu bigbang, nhng
y mi ln ghp chng ta ch ghp mt cp n v trn th gi hm.
Ni cch khc mi ln tch hp chng ta ch ghp hai nh ca mt cnh ca
th. S ln tch hp nh vy cng khng thay i so vi tch hp t trn
xung hay t di ln, tuy nhin chng ta gim c ng k cc hm gi
v hm gi gi.

10.5. BI TP

10.4.2

239

Tch hp lng ging

Lng ging ca mt nh N ca th l tp hp cc nh c cnh ni vi


N . Vi th c hng th lng ging l cc nh c cnh i trc tip n N
v cc nh c cnh i trc tip ra t N . D thy cc nh lng ging chnh
l cc hm gi v hm goi gi chng ta cn phi xy dng.
Chng ta c th tnh s lng lng ging ca mt th. Mi nh bn
trong th c mt lng ging, v thm mt lng ging nu c mt nh
l ni trc tip vi nh gc. (nh bn trong ca th l nh c t nht
cnh i n v mt cnh i ra, hay ni cch khc s bc vo v s bc ra
ca chng ln hn 0.)
Tch hp lng ging gip gim ng k s ln tch hp ng thi cng
gip gim s lng v cng sc vit cc hm gi v hm gi gi. Tch hp
lng ging gn ging vi tch hp bnh kp. Khc bit chnh l chng da
trn cc th khc nhau. Nhc im chung ca chng l khi c li chng
ta kh khoanh vng chnh xc c, tng t nh tch hp bigbang phm
vi nh.

10.5

Bi tp

1. Hy p dng cc k thut tch hp cho h thng SATM trnh by


Chng 2?
2. Hy p dng cc k thut tch hp cho h thng SATM trnh by
Chng 2?
3. Tho lun u v nhc im ca tch hp t trn xung v t di ln.
4. Hy a ra cc v d minh ha v cc loi li giao din.
5. Hy tm thm v m t ba loi li giao din ngoi nhng loi nu
trong chng v cho v d minh ha.
6. Tho lun u nhc im ca tch hp da trn cu trc m-un v
da trn th gi hm.
7. Phng php tch hp no gip khoanh vng li d nht? V sao?

240

CHNG 10. KIM TH TCH HP

8. Phng php tch hp no gip gim hm gi gi nht?

Chng 11
Kim th h thng, chp nhn
v hi quy
11.1

Tng quan

Chng ta bit chng trnh phn mm phi chy trn mi trng phn
cng v trong iu kin mi trng ph hp. V d mi trng c th cn
kt ni mng, hay c sng 3G, hay ngoi tri GPS c th hot ng, hay
cn kt ni vi cc h thng lin quan khc. Chng ny chng ta s xem
xt kim th mt h thng phn mm hon chnh, sau khi lp ghp tt
c cc m-un hay cc thnh phn ca h thng li. Ngoi nhng yu cu
v mt chc nng tng th, chng ta s gii thiu mt s khi nim kim tra
cht lng ca h thng, v nhng vn kim th h thng khi h thng
thay i, tin ha.
Ging nh mt chic xe p hay mt chic my tnh c lp rp t
nhiu b phn khc nhau, mt h thng phn mm l s kt hp ca cc
m-un phn mm, cc th vin lin quan, v hot ng trn mt nn tng
phn cng, phn mm xc nh. Cc b phn ca mt chic xe p hay cc
linh kin my tnh thng c lm v kim tra ring bit, nhng khi lp
chng li cha chc chng ta c mt chic xe p chy tt hay mt my tnh
nh mong mun. C th chic xe p vn chy nhng rt hay b tut xch
hoc mt cch v hnh hn l n lm ngi p xe nhanh b mi lng. Mt
my tnh c CPU vi tc x l cao nhng b nh RAM t hoc tc
241

242 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY

Bng 11.1: Kim th h thng, kim th chp nhn, v kim th hi quy


Kim th h thng
Kim tra so vi c
t yu cu

Kim th chp nhn


Kim tra so vi mong
mun ca ngi dng

Kim th hi quy
Kim tra li cc ca
kim th thnh
cng trc
Do i pht trin Do i pht trin v Do i pht trin
thc hin
ngi dng cng thc thc hin
hin
Kim tra sn phm Khng nh tnh Gip nhng thay i
t yu cu k thut ng n v y khng mong mun
cha
ca sn phm
khng xy ra

cng chm s lm chic my vn hot ng nhng ch v ch chy c


nhng ng dng nh, i hi t b nh.
Kim th h thng c chia thnh hai giai on chnh: Kim th h
thng v kim th chp nhn. i pht trin chu trch nhim thc hin
kim th h thng v h i chiu h thng vi ti liu c t ca ca h
thng. Do ch i chiu vi ti liu c t nn y l cng vic kim chng
(verification). Kim th chp nhn l hot ng thm nh (validation) v
do ngi s dng, khch hng kim tra. H xem h thng phn mm c p
ng ng nh mong mun ca h khng, khng cn ti liu c t. Chng
ta cn kim th chp nhn v c t c th c khim khuyt hoc ngi
khch hng v ngi pht trin cng c mt ti liu nhng hiu khng hon
ton nh nhau.
Khi kim th h thng pht hin vn hoc khi h thng c chc nng
c b sung hoc sa i th chng ta u mong mun ch cn kim th
li nhng phn b thay i, b nh hng. Hot ng kim th li ny gi l
kim th hi quy. Cc k thut trong kim th hi quy gip chng ta xc
nh cc ca kim th cn thc hin li ch kim tra h thng nhng phn
c lin quan, thay v phi thc hin li ton b hai cng vic ny. Bng 11.1
so snh cc khi nim kim th h thng, kim th chp nhn v kim th
hi quy.

11.2. KIM TH H THNG

11.2

243

Kim th h thng

Kim th chc nng h thng: c trng c bn ca kim th h thng


l chng ta da trn c t hnh vi quan st c, khng ph thuc vo chi
tit thit k v ci t. Kim th h thng thnh cng c ngha chng ta coi
sn phm hon thin, khng cn li v c th a vo s dng. Trn thc
t ngi ta a ra mt tiu chun v sn phm c th cn mt s li nh,
khng nghim trng th t tiu chun v c th coi kim th h thng
l thnh cng.
Kim th h thng c th s dng li mt s ca kim th mc thp hn
hoc mc n v. Tuy nhin kim th h thng thng c mt b kim th
ring v chng ta nn pht trin b kim th ny trc v dng n kim
th cc ca kim th n v nu c th.
Cc ca kim th mc h thng nn c thit k c lp vi thit k v
ci t ca phn mm. Vic ny nhm trnh cc li trong thit k b lp
li trong thit k kim th. Tuy nhin vic thit k kim th h thng hon
ton c lp ny c th li khng gip pht hin cc vn vi thit k khi
ngi thit k bit nhng u nhc im ca thit k . Do trn thc
t chng ta cn cn i s dng mt mc thng tin thit k, ci t
thit k ca kim th. Mc ny l bao nhiu ph thuc rt nhiu vo tnh
cht ca tng d n v kinh nghim ca ngi thit k kim th.
Mt kha cnh khc na vi kim th h thng l vic t chc thc hin.
Chng ta mt i va pht trin va thc hin kim th h thng hay
hai i c lp thc hin hai vic ring bit? Khi thc hin c lp th
khi lng cng vic tng ln v i thc hin phi c li ti liu v hiu
h thng mi c th thc hin kim th. Nhng s khch quan ny thng
gip pht hin nhiu vn trong h thng v kt qu cho php kim th
chp nhn d dng vt qua hn. Nu i pht trin thc hin kim th h
thng th yu t ch quan s gip vic kim th tp trung vo mt s im
yu ca h thng, tuy nhin i s b nh hng bi nhng thng tin bit
v thit k v ci t ca h thng nn thiu tnh khch quan trong thit k
v thc hin kim th. gim s nh hng ch quan ny, trong cc d n
pht trin theo quy trnh linh hot [Mar03] ngi ta pht trin cc ca kim
th h thng ngay t u, trong qu trnh thu thp yu cu v trong qu
trnh xy dng h thng cng b sung cc ca kim th h thng ngay khi c
th.

244 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


Vi kim th h thng chng ta cng cn mt khi nim v mc k
ca b kim th so vi c t. Vic ny c th thc hin bng cch to t
nht mt ca kim th cho mi tnh nng hay hnh vi ca h thng. Hn na,
vic ny nn c xc nh ngay t lc thu thp yu cu, v cc ca kim
th ny s lm r c t ca h thng, gip qu trnh thit k v lp trnh
c th i chiu ngay vi vic thit k kim th ny. y cng l t tng
ca quy trnh pht trin da trn hnh vi (Behaviour Driven Development
- BDD) [Kar12] hay pht trin da trn kim th (Acceptance Test Driven
Development ATDD) [GG12]. Cc ca kim th ny c vit di dng
ngn ng t nhin, gn vi ngn ng ca ngi a ra yu cu. Cc cc kim
th ny cng tr thnh thc o v tin ca da n, khi cc tnh nng
c ci t th thc hin cc ca kim th s thnh cng dn, n khi khng
cn ca kim th no tht bi c ngha h thng p ng ng v cc
yu cu t ra. Lu l cc ca kim th ny vn c th lin tc c b
sung, chnh sa trong qu trnh pht trin nu cn, khi c vn trong ci
t hoc vn ngay trong yu cu c m t di cc ca kim th.

Kim th cht lng h thng: Cc tnh cht cht lng ca h thng


nh tc , hiu nng, tin cy cng l cc tnh cht quan trng cn v
nhiu khi ch c th kim th c vi h thng hon chnh m kh c th
suy ra t tnh cht ca cc thnh phn ca h thng. Cc tnh cht ny c
nhn mnh trong kim th h thng.
Nhiu tnh cht ca h thng cng kh c th ch ra chnh xc c, v
nhng tnh cht ny i khi cn ph thuc vo mi trng ph hp mi th
hin v c th pht hin ra. V d mt ng dng qun l c s d liu sau
mt hai nm s dng s bn ghi tng ln th s chm ch mi d nhn thy
khi ngi dng lun phi ch khi thc hin thao tc thm mi hoc truy vn
c s d liu. c bit vn an ninh, an ton rt kh c th lng trc v
m bo khng cn nguy c an ninh bo mt no trong h thng. Mt v d
khc na l tnh d bo tr h thng. Khi h thng mi xy dng xong th
i pht trin u cn nh v thuc yu cu cng nh thit k v m ngun.
Tuy nhin sau mt thi gian khi h chuyn sang d n khc hoc c ngi
mi tham gia vo d n th tnh d bo tr ca d n khng cn c nh
gi nh lc trc na, mc d ti liu v m ngun khng thay i.
Kim th cc tnh cht ca ton h thng cng cn m phng mi trng
thc hin kim th kh tn km. Vic xy dng cc mi trng tnh hung

11.2. KIM TH H THNG

245

ging tht i hi rt nhiu cng sc thit lp. V d tnh im tng


kt hc k cho mt lp hc, chng ta phi nhp d liu im y cc
u im, v m phng y cc im cao thp c th xem vic xt ln
lp c ng khng, cc bo co tng hp c ng khng, vic lm trn im
c ng quy nh v ging vi tnh tay khng. Khi lng cng vic l rt
nhiu, c sc ngi v sc my.
C rt nhiu kha cnh cht lng ca mt h thng phn mm. Tuy
nhin tng bi ton c th chng ta s u tin v chn mt s cht lng
quan trng ca h thng kim th. V d cc phn mm ngn hng trc
tuyn th an ninh an ton l s mt, tip l tnh sn sng cao. Phn sau
s lit k v gii thch mt s loi kim th cht lng ph bin v sau
s i su gii thch k hn v kim th tnh d dng, v kim th giao din
ngi dng, v kim th hiu nng.
K im th ci t (basic) m bo h thng c th ci t c, cu
hnh c, v a vo trng thi s dng c.
K im th tnh nng (functionality) m bo h thng c kim
th y theo cc yu cu v chc nng ca h thng.
K im th sc mnh (robustness) xc nh kh nng h thng hi phc
li t u vo li hoc cc s c trc trc khc.
K im th tng thch (interoperability) kim tra xem h thng c th
hot ng vi cc sn phm khc hay khng.
K im th hiu nng (performance) o cc c trng v hiu nng ca
h thng nh thng lng v thi gian tr li ca h thng di cc
iu kin khc nhau.
K im th kh nng m rng (scalibility) xc nh cc gii hn m rng
v thu hp h thng nh s ngi s dng tng ln, lng d liu tng
ln.
K im th p lc (stress) a h thng vo iu kin p lc n khi h
thng c vn , v t xc nh cc vn xy ra.
K im th ti (load) nhm kim tra h thng c n nh khi chy vi
cng sut ti a trong mt thi gian di.

246 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


K im th tin cy (reliability) o kh nng h thng vn tip tc hot
ng trong mt thi gian di m khng pht sinh cc s c.
K im th hi quy (regression) kim tra xem h thng cn n nh
khng qua cc giai on chnh sa, ci tin.
K im th ti liu (document) m bo cc ti liu hng dn s dng
l chnh xc v dng c.
K im th quy nh m bo h thng tun th cc quy nh, chun
mc ca vng, min, t nc ni sn phm c trin khai.

11.2.1

Kim th tnh d dng

Tnh d s dng (usability) l mt trong nhng yu t quan trng nht quyt


nh kh nng thnh cng ca sn phm. Tnh d s dng bao gm mt lot
tnh cht nh d hc, gip ngi s dng hon thnh cng vic d dng, hiu
qu hn, v d chu khi s dng phn mm. Mt s php o c th c th
s dng o cc tnh cht trn. V d s thao tc hon thnh mt vic.
S li ngi s dng mc phi trong qu trnh thao tc, v cui cng nhng
quan trng nht l cm nhn ca ngi s dng v phn mm.
Mt s kha cnh cht lng khc cng lin quan n tnh d s dng
nh tin cy, hiu nng, an ninh an ton, v.v. V d phn mm Google
Docs cc chc nng son tho v bng tnh kh c bn v dng, nhng
i hi kt ni Internet nhanh nn ngi s dng Vit Nam thng t dng
v n chm, bt tin. Tuy nhin vn cht lng nhiu khi do cm nhn
ca ngi s dng. Phn mm Windows hay h iu hnh iOS trc y c
nhiu vn an ninh, l hng bo mt nhng rt nhiu ngi dng, v giao
din v d s dng chim c cm tnh ca ngi dng.
Qu trnh xc minh v thm nh tnh d s dng bao gm cc bc
chnh sau y [Rub94]:
Kim tra c t vi danh sch kim tra tnh d s dng. Vic ny
gip c cc phn hi sm v tnh d s dng ca sn phm.
Kim th bn mu phc tho vi ngi dng cui xem m
hnh t duy (kim th thm d), cc phng n thay th (kim th so

11.2. KIM TH H THNG

247

snh), v khng nh s ph hp ca sn phm. Bn mu ny khng


nht thit phi hot ng y , ch l hnh nh hoc cao hn l c
giao din tng tc c nhng cha thc s hot ng v chc nng
bn di.
Kim th cc bn pht hnh ln dn vi c cc chuyn gia v
tnh d s dng v vi ngi dng cui theo di qu trnh s dng
ca h v suy ra cc vn v tnh d s dng ca sn phm.
Kim th h thng v chp nhn gm c kim th v iu tra da
trn chuyn gia v ngi dng tht, so snh vi cc sn phm cnh
tranh, ng thi phn tch v kim tra t ng cc vn khc nh
tnh tng thch trnh duyt, hay cc cng c d lin kt cht trong
ng dng web, cc cng c kim tra chnh t, v.v.
Kim th vi ngi dng l kim th vi mt s i din ca ngi dng
tht sau ny ca sn phm. Vic ny c bit quan trng khng nh sn
phm l dng c tt cha. Vic ny c th tin hnh sm ngay khi c
giao din phc tho ca phn mm, v mi khi c chnh sa, ci tin v giao
din. Suy cho cng s chp nhn ca ngi s dng cui cng vn l yu t
quyt nh, nhiu khi vt qua c cc kin chuyn gia v chun mc trn
l thuyt.
Mc ch ca kim th thm d l iu tra cc m hnh t duy ca
ngi dng cui. Chng ta tin hnh bng vic hi ngi dng v cch h s
tng tc vi h thng. Thc t cho thy nhiu sn phm thnh cng u c
giao din v cch s dng rt n gin. Kim th thm d thng c thc
hin sm t lc thit k, c bit l khi thit k sn phm cho mt nhm i
tng mi.
Mc ch ca kim th so snh l xem xt cc la chn khc. Chng
ta s quan st quan st phn ng ca ngi s dng vi cc mu tng tc
khc nhau. i khi chng ta cung cp cho ngi s dng nhiu cch thc
lm cng mt vic, v c ngi ph hp v mun cch tng tc ny, nhng
c ngi li thch v chn cch s dng khc, v kin thc v kinh nghim
ca h l khc nhau.
Mc ch ca kim th xc nhn l nh gi tng hp tnh d s dng
ca sn phm. Chng ta cn xc nh nhng kh khn v tr ngi m ngi
dng gp phi trong khi tng tc vi h thng, cng nh cc c trng qua

248 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


o c nh nh t l li v thi gian hon thnh mt vic.
Thit k kim th tnh d dng gm vic chn i din ngi dng thch
hp v t chc cc phin hng dn c th trin khai vic dng th ng
thi cho php quan st hoc ghi li cc din bin phn tch nh gi tnh
d s dng. Cch tip cn ph bin thng chia qu trnh ny thnh ba giai
on: chun b, thc hin v phn tch. giai on chun b, ngi thit k
kim th xc nh mc tiu ca mi phin, v xc nh cc mc s kim th,
chn i din ngi s dng ph hp, v lp k hoch cho cc hot ng
cn thit khc. Trong qu trnh thc hin, ngi s dng c theo di cc
hnh ng s dng h thng, trong mi trng c kim sot. Giai on phn
tch s nh gi kt qu, xc nh nhng thay i cn c cho giao din phn
mm, v lp k hoch kim th li nu cn thit.
Mi giai on phi c thc hin mt cch cn thn m bo s
thnh cng ca phin kim th. Thi gian ca ngi s dng l rt qu gi
v hn ch. Mi phin kim th chng ta tp trung vo mt s mc tiu.
Mc tiu ny khng c qu hp trnh lng ph ngun lc nhng cng
khng c qu rng trnh vic ti nguyn b ri rc v kt qu kh chnh
xc. Mi phin nn tp trung vo mt s giao din v tng tc c th thay
v nh gi ton b phn mm mt lc.
Khi kim th chp nhn, ngi dng cn thc hin nhim v mt cch
c lp m khng c s gip hoc nh hng t cc i pht trin v
kim th. Cc hnh ng ca ngi s dng c ghi li, cc bnh lun ca
h cng c ghi chp v cui cng n tng ca h c hi sau trong phn
hi p. Hot ng gim st c th rt n gin, chng hn nh ghi li hnh
trnh ca chut cng cc ln nhp chut v cc phm c g. Phc tp hn
chng ta c th ghi thm thi gian, theo di mt v hnh ng ca ngi s
dng qua camera.
Mt kha cnh quan trng ca kh nng s dng c l kh nng tip
cn (accessibility) n sn phm ca tt c ngi dng [Kru05], gm c
nhng ngi khuyt tt. Kim th tip cn l yu cu theo lut trong mt
s lnh vc ng dng. V d, cng giao tip ca chnh ph in t bt buc
phi cho nhng ngi khuyt tt cng s dng c. Ti liu hng dn tip
cn ni dung cc trang web (WCAG)1 do World Wide Web a ra ang tr
thnh mt tiu chun quan trng.
1

http://www.w3.org/TR/WAI-WEBCONTENT

11.2. KIM TH H THNG

249

Hng dn kh nng tip cn ni dung Web (WCAG)


Cung cp cc la chn thay th tng ng vi ni dung m thanh
v hnh nh m cn bn vn truyn t c mc ch v chc nng
ca n.
m bo rng vn bn v ha l d hiu khi nhn m khng c mu
sc.
nh du ti liu vi cc yu t cu trc ph hp, kim sot trnh by
bng trang thay v trnh by bng cc thuc tnh.
S dng cch nh du bng pht m hoc gii thch vn bn c
vit tt hoc c vit bng ting nc ngoi.
m bo rng cc bng c nh du cn thit c bin i
theo cc truy cp vo trnh duyt khc nhau bi cc i l s dng
khc nhau
m bo rng cc trang c th truy cp ngay c khi cc cng ngh mi
hn khng c h tr hoc b tt.
m bo rng chuyn ng, nhp nhy, di chuyn, hoc t ng cp
nht cc i tng hoc cc trang c th c tm dng hoc dng li.
m bo rng giao din ngi dng, bao gm cc yu t giao din
ngi dng nhng, sau cc nguyn tc thit k truy cp: truy cp thit
b mt cch c lp vi chc nng, kh nng hot ng ca bn phm,
selfvoicing, v vv.
S dng tnh nng cho php kch hot cc yu t trang thng qua mt
lot cc thit b u vo.
S dng tm thi kh nng tip cn cng ngh gip vic v cc
trnh duyt c hn s hot ng mt cch chnh xc.
Trng hp cc cng ngh bn ngoi ca chi tit k thut W3C c
s dng (v d, Flash), cung cp cc phin bn thay th m bo
kh nng truy cp chun cho cc i l ngi dng v c cng ngh
tr gip (v d, mn hnh ngi c).

250 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


Cung cp bi cnh v nh hng thng tin gip ngi dng hiu
cc trang hoc cc yu t phc tp.
Cung cp c ch chuyn hng r rng v nht qun tng kh nng
rng mt ngi s tm thy nhng g h ang tm kim mt trang
web.
m bo rng cc ti liu c r rng v n gin v th m n d
hiu hn.

11.2.2

Kim th giao din ngi dng

Kim th giao din ngi dng l mt phn ca kim th tnh d dng.


Tuy nhin y chng ta tp trung vo phn giao din ha ca chng
trnh. Phn ln cc ng dng ngy nay u c giao din ngi dng ha
(Graphical User Interface - GUI). Kim th GUI gip kim tra giao din ca
ng dng vi ngi s dng. Cc kim tra ny xem xt tt c cc thnh
phn giao din nh biu tng, trnh n (menu), hp thoi, thanh cun,
cc nt iu khin, cc danh sch la chn, v cc dng ch hng dn, cc
hp thng bo, v.v. Rt nhiu vic kim tra ny khng lm t ng c,
nh cc hng dn trc tuyn, cc thng bo li, cc hng dn tng bc.
Bn cnh cc chc nng pha sau giao din cng cn c kim tra, v d
d liu nhp vo c c lu tr, x l nh mong mun khng, cc bo co
kt xut ra c chnh xc khng, v.v.
Vi xu th ng dng trn nn Web ph bin nh hin nay th cc giao
din web ny cn phi c tnh tng thch, chy tt v nht qun trn cc
trnh duyt ph bin. Tng t, khi ng dng trn cc nn tng di ng phi
chy trn nhiu h iu hnh khc nhau, v nhiu kch thc mn hnh, cu
hnh phn cng khc nhau, vic kim tra tnh tng thch ca giao din tr
nn khng n gin.

11.2.3

Kim th hiu nng

11.2.3.1

Khi nim

C nhiu nh ngha v kim th hiu nng [MFB+ 07, Mol09]. Theo [MFB+ 07],
kim th hiu nng l kim th xc nh thi gian phn hi (repsonsiveness),

11.2. KIM TH H THNG

251

thng lng (throughput), mc tin cy (reliability) hoc kh nng m rng


(scalability) ca h thng theo khi lng cng vic (workload).
Kim th nghim hiu nng tm cu tr li cho cc cu hi nh: h thng
c th phc v ti a bao nhiu ngi s dng ng thi, trong khong thi
gian bao lu, khi chy vi s ngi ti a nh vy th thi gian phn hi v
thng lng l bao nhiu, s dng bao nhiu phn trm CPU, bao nhiu b
nh ca my ch, v.v.? Kim th hiu nng v c bn gip chng ta khng
nh phn mm chy nhanh cha, c chm qu n mc lm ngi s
dng khng th dng c hay khng. Ngoi ra chng ta cn kim th hiu
nng nhm mt s mc ch khc sau:
So snh hiu nng hin ti ca h thng vi hiu nng ca h thng
khc ang lm hi lng ngi s dng.
Khng nh hiu nng ca h thng ng theo yu cu ca khch
hng.
Phn tch hnh vi ca h thng cc mc ti khc nhau, gip ta nh
gi hiu nng ca h thng mt cch ton din hn.
Xc nh nguyn nhn nh hng n hiu nng ca h thng v cc
im tc nghn, nt c chai.
Xc nh cu hnh ca thit b cn mua sm cho h thng thc t, p
ng c hiu nng mong mun.
Khng nh cc gii php tt hn so vi cc gii php hin ti v mt
hiu nng.
11.2.3.2

Kim th hiu nng lin quan

Khi thc hin kim th hiu nng cho mt ng dng chng ta c th thc
hin mt hoc mt vi loi kiu kim th hiu nng lin quan ty theo c
th v yu cu ca ng dng t ra. Di y s gii thiu mt vi kiu kim
th hay c s dng trong kim th hiu nng.
Kim th c s (baseline test): Kim th c s nh gi hiu nng vi
mt ngi s dng. Kim th c s c thc hin kim tra tnh ng

252 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


ca kch bn kim th c pht trin cho kim th hiu nng. Kch bn
kim th c th c to ra vi thi gian ngh (think time) trong thc t v
nhng ci t khc ging s dng thc t. Thng tin v thi gian phn hi,
cc s liu s dng ti nguyn my ch c thu thp v lu li tnh ton
hiu nng ca h thng iu kin ti khc nhau.

Kim th chun (benchmark test): Kim th chun o hiu nng


ca ng dng trong iu kin ti thp, thng ch khong 15-20% mc ti
d kin. Kim th chun cn c mc ch kim tra tnh ng n ca kch
bn kim th v tnh sn sng ca h thng trc khi chuyn sang iu kin
ti cao. N gip chng ta nhn ra cc thnh phn khc nhau ca h thng
kt hp vi nhau theo thit k c p ng mc dch v cung cp.
Thi gian phn hi ca h thng v s liu v mc s dng ti nguyn
my ch s gip chng ta phn tch h thng c th ng vng vi kim th
ti ngi s dng cao. Cc s liu thu thp trong kim th chun s c
xem nh l kt qu hiu nng tt nht ca h thng. Chng ta c th nh
gi s gim st hiu nng ca h thng bng cch so snh vi hiu nng h
thng trong kim th chun.

Kim th ti (load test): Kim th ti o hiu nng h thng vi iu


kin ti cao, nhiu ngi s dng ng thi nh trong thc t. N gip ta
kim tra ti d kin c t c hay khng vi iu kin thit b, mi trng
c. Ngoi ra kim th ti gip nh gi hiu nng h thng trong nhng
iu kin ti khc nhau nh trong iu kin ti bnh thng v ti cao im.
V d khi cao im th ngi dng phi ch lu hn, tuy nhin thi gian ch
l bao nhiu, c chp nhn c khng, hay c gy ra nhng li g khng,
nh t chi dch v (DoS).
V d mt ng dng web cho php ti a 1000 ngi dng ng thi.
Chng ta gi lp cho h thng chy ng mc 1000 ngi s dng lin tc
trong hai ngy. Hay chng ta cho ban u l 800 ngi dng ng thi, ri
mi pht tng thm hai ngi na, n khi t 1000 ngi v ti ny
tip trong hai ngy. Sau chng ta xem cc bo co s dng CPU, RAM,
thi gian phn hi ca h thng, thng lng.

11.3. KIM TH CHP NHN

253

Kim th qu ti (stress test): Kim th qu ti kim tra h thng


trong iu kin ti bt hp l xc nh im ngot (breakpoint) ca h
thng. Kim th ny c coi l kim th tiu cc v h thng phi chu mt
ti qu thc t yu cu. Chng ta cn kim th ny bit tc hi c th
xy ra nu h thng phi chu qu ti. Nu kt qu tch cc, chng ta c th
dnh ti nguyn ca my mc cho vic khc hoc sn sng m rng thm
trong tng lai.
V d mt ng dng web c th p ng ti a l 1000 ngi s dng
ng thi. Chng ta cho m phng cho 1000 ngi s dng ng thi ri tng
thm 100 ngi ng thi quan st kt qu xem 100 ngi b sung ny b
t chi hay khng, my ch c b khi ng li khng, hay c b treo khng,
v.v. T a ra kt lun tnh trng ca h thng khi b qu ti.

Kim th t bin (spike test): Kim th ny ging kim th qu ti


(stress test) nhng khc im h thng c t ti cc cao trong mt
thi gian gian ngn xem nhng thi im bt thng ny c gy ra s c
g khng.

Kim th bn (endurance test): Kim th bn nh gi hiu


nng ca h thng vi mc ti bnh thng nhng trong thi gian ko di.
Kim th ny gip pht hin nhng vn phi qua thi gian di mi bc
l nh d b nh, trn b m, ht a cng. Ngoi ra n cn gip nh gi
tnh sn sng (availability) ca h thng. Kim th bn thng chy vi
70%- 80% ca ti ti a.

11.3

Kim th chp nhn

Mc d c phn trng lp vi vi kim th h thng, mc ch chnh ca


kim th chp nhn l quyt nh xem sn phm c th a vo s dng
c cha. Quyt nh ny c th da vo cc s o ca sn phm hoc quy
trnh. Cc s o ca sn phm thng c suy ra t kt qu kim th thng
k. S o quy trnh thng da trn kinh nghim ca ngi nh gi so vi
sn phm trc . Cc s o ny nh gi mc tin cy ca phn mm
quyt nh trin khai cho ngi dng cui.

254 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


Cc s o v tin cy, sn sng, thi gian hng hc trung bnh l
cc s o mang tnh thng k v chng ta rt ra cc s o ny da trn kt
qu kim th ca mt s mu. Kim th thng k yu cu mt nh ngha
chnh xc l ta s o ci g v trong tp no. Nu h thng c x l cc giao
dch v mi giao dch c mt s thao tc vi th t l tht bi ca giao dch
khc hon ton t l tht bi ca thao tc. Hn na t l tht bi giao dch
cng khc nhau khi thc hin chng vo cng mt thi im hay ri rc u
trong mt ngy. Do chng ta cn da trn mt m hnh thng k xy
dng m hnh s dng v kt qu ca kim th thng k l tng i vi m
hnh .
M hnh thng k s dng, hay cn gi l h s vn hnh (operational
profiles), c th thu c t cc s o ca cc h thng tng t trc .
V d, chic in thoi cm tay ang c s dng nh th no s l m
hnh cho mt mu in thoi mi s c s dng. Tuy nhin vic s dng
m hnh kiu ny cng khng d cho kt qu chnh xc v trn thc t c rt
nhiu tham s khc nh hng n m hnh.
Mt vn khc ca kim th thng k, c bit vi tin cy ca phn
mm, l cn kim th rt k mi t c mc tin cy mong mun. V d
vi tin cy 99,9999, tc l trong mt triu ln mi c mt ln trc trc,
v gi s mi ln chy mt mt giy th trong mt nm h thng ch gy vn
31 ln. S khng d dng khng nh tin cy ny bng kim th,
v i khi l khng th thc hin nu trc trc ny gy thit hi ln, v d
nh tnh mng con ngi.
Mt cch tip cn khng hnh thc c s dng nhiu trn thc t l
kim th vi ngi s dng tht. Vi cch ny chng ta s chn mt nhm
ngi cho dng th sn phm pht hin cc vn v phn hi ca ngi
dng v h thng. Cc t kim th ny thng c gi l kim th al-pha
hay b-ta. Kim th al-pha thng thc hin bi i pht trin l chnh v
ngay ti n v pht trin. Kim th be-ta s do ngi s dng tht dng
th v nh gi ti my ca ngi s dng v ni lm vic, mi trng
tht.

11.4. KIM TH HI QUY

11.4

Kim th hi quy

11.4.1

Tng quan

255

Khi xy dng mt phin bn mi ca h thng (v d sau khi sa li, thay


i hoc thm chc nng, v.v.), chng ta c th v tnh gy ra cc li mi.
Nhiu khi thay i rt nh cng gy nhng vn ln ngoi sc tng tng
ca i pht trin. trnh nhng vic ng tic ny xy ra chng ta cn
kim th li phn mm m bo cc chc nng chy tt vn tip tc
chy tt.
Khi phin bn mi ca phn mm khng cn hot ng nh trc chng
ta ni l phin bn mi hi quy vi bn trc . Phin bn mi khng hi
quy tc l n vn gi c cc tnh nng l mt yu cu cht lng c bn.
Cc hot ng kim th tp trung vo vn hi quy c gi l kim th
hi quy. ng ra chng ta cn kim tra phin bn mi khng hi quy v
phin bn c, nhng thut ng kim th hi quy ph bin nn chng ta
dng thut ng ny.
Phng php n gin kim th hi quy l chy li tt c cc ca kim
th ca phin bn trc. Tuy nhin vic kim li ton b ny rt tn km
v khng tm thng. Cc ca kim th trc c th khng chy li c
vi phin bn mi ca phn mm m khng sa i g. Chy li ton b cc
ca kim th l rt tn km v nhiu phn trong l khng cn thit. Mt
b kim th cht lng tt phi c duy tr xuyn sut cc phin bn ca
h thng.
Thay i trong phin bn phn mm mi c th tc ng ti khun dng
ca u vo v u ra, v cc ca kim th c th cn cc thay i tng ng
chy c. Ngay c vic sa i mt cch n gin ca cu trc d liu,
chng hn nh vic b sung cc trng hay s thay i nh ca cc loi d
liu, c th lm cc ca kim th trc y khng chy c na. Hn na,
mt s ca kim th c th b li thi, khi cc tnh nng ca phn mm
thay i hoc b loi b khi phin bn mi.
Cc khung h tr dch c t kim th thnh ca kim th s gip
gim nh hng ca thay i nh dng ca u vo v u ra. Cc c t
ca kim th v cc mnh v kt qu mong i m phn nh tnh ng
ca ca kim th v trnh cc chi tit c th s gim mt phn ln cng sc

256 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


kim th khi c thay i nh.
Cc b kim th cht lng cao c th c duy tr qua cc phin bn
ca phn mm bng vic xc nh v loi b cc ca kim th li thi, v
bng vic pht hin v nh du thch hp cc ca kim th d tha. Ca kim
th i cng mt ng i trong chng trnh l d tha vi tiu chun kim
th cu trc, nhng ca kim th cng mt phn hoch li l d tha vi
kim th da trn lp tng ng. Vic d tha l do nhiu ngi cng lm
hoc do chng trnh b thay i gy ra. Cc ca kim th d tha khng nh
hng n tnh ng, sai, m ch nh hng n chi ph kim th. Chng
khng pht hin c li nhng lm tng chi ph kim th. Cc ca kim th
li thi cn phi loi b, v chng ta khng cn cn chng cn nhng ca kim
th d tha chng ta c th gi, v chng gip phn mm pht trin trong
tng lai m bo cht lng hn, tuy nhin nu chng gy ra chi ph kim
th ln qu mc cn thit th c th loi b.

11.4.2

K thut kim th hi quy

Ngay c khi chng ta c th xc nh v loi tr ca kim th li thi, s


lng cc kim th c thc hin li c th l ln. C th mt c ngy
thm ch c tun chy li tt c cc ca kim th vi cc sn phm ln.
Mt s ca kim th li khng t ng c th kim th hi quy cn ph
thuc vo ngun lc, hoc mt s kim th li i hi my mc t hay
in thoi di ng lc hu th khng d mua thc hin. Chi ph cho
vic thc hin li mt b kim th c th c gim bng cch chn mt
tp hp cc ca kim th c thc hin li, b qua cc ca kim th khng
lin quan hoc u tin thc hin mt tp con ca b kim th lin quan n
thay i.
Th t u tin ca cc ca kim th cng ko theo tn sut n c thc
hin. Do chng ta cn da trn c t hoc m ngun c th sp xp
cc ca kim th theo mt mc u tin. Ngoi ra c th da trn nhiu yu
t khc nh lch s li ca cc d n tng t, ca nhng ngi lp trnh,
tnh cht ca ngn ng lp trnh, v.v. gip th t u tin ny c th pht
hin ra cc li nhanh hn, gim chi ph kim th hi quy.
K thut la chn kim th hi quy thng da trn m ngun hoc c
t. K thut da trn m ngun chn ca kim th m s chy qua phn m
ngun thay i. K thut da trn c t s chn ca kim th thc hin

11.4. KIM TH HI QUY

257

nu n lin quan n phn c t b thay i. K thut da trn m ngun


c th d thc hin hn nh mt s cng c, v chng ta c th thc hin
c lp vi c t. Tri li, k thut da trn c t d m rng v d p
dng cho cc thay i lin quan n mt lot m-un. Tuy nhin k thut
da trn c t li kh t ng ha hn v i hi c t c qun l tt.
Trong cc k thut la chn da trn m ngun, k thut lung iu khin
da vo mt bn ghi ca cc phn t chng trnh (v d dng lnh) c
thc hin cho mi ca kim th, s dng k thut chn m (instrumentation).
Ln kim th sau s da trn cc phn t chng trnh b thay i
chn cc ca kim th s cn thc hin li. Vi k thut ny chng ta c th
s dng cc tiu chun kim th khc nhau, nh da trn lung iu khin
hay lung d liu.
Cc k thut hi quy th lung iu khin (CFG) da trn s khc
bit gia CFG ca phin bn phn mm mi v cc phin bn c. Chng ta
xem v d hm gii m CGI cgi_decode phin bn 1.0 trong on m 11.1
v phin bn mi 2.0 ca n on m 11.2.
Phin bn 2.0 thm m sa li dch dy %xy. Li ny c pht hin
phin bn 1.0 vi u vo kt thc xu li %x, lm cho phin bn 1.0 c
qu kch thc b m u vo v c th gy ra li trn b m u ra.
Phin bn 2.0 c mt nhnh mi nh x dy khng kt thc thnh du
hi.
on m 11.1: Hm gii m cgi phin bn 1.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# include " hex_values . h "


/* * Chuyen xau CGI sang ma ASCII .
* + thanh , \% xx thanh so HEX xx ,
* cac ky tu khac khong doi .
* Tra ve 0: thanh cong , so duong : dau vao loi
* 1 = ky tu HEX sai
*/
int cgi_decode ( char * encoded , char * decoded ) {
char * eptr = encoded ;
char * dptr = decoded ;
int ok =0;
while (* eptr ) {
char c ;
c = * eptr ;

258 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


15
if ( c == + ) {
16
* dptr = ;
17
} else if ( c == \% ) {
18
int digit_high = HEX [*(++ eptr )]; /* khong hop le */
19
int digit_low = HEX [*(++ eptr )];
20
if ( digit_high == -1 || digit low == -1) {
21
/* * dptr = ? ; */
22
ok = 1;
23
} else {
24
* dptr = 16* digit_high + digit_low ;
25
}
26
} else {
27
* dptr = * eptr ;
28
}
29
++ dptr ;
30
++ eptr ;
31
}
32
* dptr = \0 ; /* ket thuc xau */
33
return ok ;
34 }

on m 11.2: Hm gii m CGI phin bn 2.0


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# include " hex_values . h "


/* * Chuyen xau CGI sang ma ASCII .
* + thanh , \% xx thanh so HEX xx ,
* cac ky tu khac khong doi .
* Tra ve 0: thanh cong , so duong : dau vao loi
* 1 = ky tu HEX sai
*/
int cgi_decode ( char * encoded , char * decoded ) {
char * eptr = encoded ;
char * dptr = decoded ;
int ok =0;
while (* eptr ) {
char c ;
c = * eptr ;
if ( c == + ) {
* dptr = ;
} else if ( c == \% ) {
int digit_high = HEX [*(++ eptr )]; /* khong hop le */

11.4. KIM TH HI QUY

259

19
int digit_low = HEX [*(++ eptr )];
20
if ( digit_high == -1 || digit low == -1) {
21
/* * dptr = ? ; */
22
ok = 1;
23
} else {
24
* dptr = 16* digit_high + digit_low ;
25
}
26
} else {
27
* dptr = * eptr ;
28
}
29
++ dptr ;
30
++ eptr ;
31
}
32
* dptr = \0 ; /* ket thuc xau */
33
return ok ;
34 }

Tt c cc ca kim th cu trc c lit k trong Bng 11.2 v gi s


chng ta ghi li c cc ng i cho tng ca kim th.
Bng 11.2: ng i ca cc ca kim th
TT
1
2
3
4
5
6
7
8
9

Ca kim th
""
"test + case%dadequacy"
"adequate + test%0Dexecution%7U"
"%3D"
"%A"
"a+b"
"test"
"%0D+%4J"
"first + test%9Ktest%K9"

ng i
ABM
ABCDFL..BM
ABCDFL..BM
ABCDGHLBM
ABCDGILBM
ABCDFLBCELBCDFLBM
ABCDFLBCDFLB..BM
ABCELBCDGIL..BM
ABCDFL..BM

K thut kim th hi quy CFG so snh cc th lung iu khin ca


hai phin bn chng trnh xc nh tp cc ca kim th i qua nhng
phn b sa i ca chng trnh. Cc nh ca th c ch thch vi
cc lnh chng trnh, do so snh cc th c ch thch khng ch pht

260 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY


hin ra nh v cnh thiu m c cc nh thay i ch thch tng ng vi
nhng thay i lin quan nh trong cc lnh.
th CFG ca phin bn 2.0 c v trong Hnh 11.1. S khc nhau
gia phin bn 2.0 v 1.0 c t mu xm. Trong v d c c nh mi, cnh
mi, v ng i mi. Trong trng hp tng qut, mt s nh v cnh b
c th mt i hoc ch thch b thay i.
Tiu chun CFG ly tt c cc ca kim th c ng i i qua cc phn
b thay i trong th CFG, gm c cc thay i cu trc CFG v cc ch
thch cc nh. Trong v d ny chng ta s ly cc ca kim th i qua
nh D v tip tc n nh G v tt c cc ca kim th i n nh L, tc
l tt c cc ca kim th tr TC1. v d ny tiu chun ny khng hiu
qu gim kch thc tp cc ca kim th phi chy li, v cc lnh thay
i nh hng n gn ht cc ng.
Nu chng ta ch xem xt cc chnh sa nh X v Y th tiu chun ny
s hiu qu hn. Sa i ch nh hng n cc ng i i qua cnh gia
D v G nn tiu chun kim th hi quy CFG s ly cc ca kim th i qua
cc nh ny l TC2-5 v TC8-9. Trong trng hp ny kch thc b kim
th cn chy li gm 2/3 s ca trong b kim th gc.
Trong trng hp tng qut, tiu chun kim th hi quy CFG ch hiu
qu khi thay i nh hng mt tp con kh nh cc ng i ca chng
trnh gc. Tiu chun ny khng c ch g khi thay i nh hng n hu
ht cc ng i nh trong v d trn.
Cc k thut kim th hi quy lung d liu (DF) chn cc ca kim th
cho cc cp DU b thay i. Cc ca kim th c chn thc hin li l cc
ca kim th chy qua cc cp DU ca chng trnh gc m cc cp ny b
thay i hoc xa i trong phin bn mi. Cc ca kim th chy qua cc
lnh iu kin m mnh iu kin b thay i cng c chn v cc thay
i ny c th thay i cc cp DU.
Bng 11.3 m t cc nh ngha (D) v s dng (U) thm vo khi sa i
hm cgi_decode. Chng ta c th thy cc cp DU mi c to ra v mt
s b xa b.
Tri vi cc k thut da trn m ngun, k thut la chn kim th da
trn c t khng yu cn ghi li cc ng i m cc ca kim th i qua.
Ca kim th hi quy c th c xc nh t lin h gia cc ca kim th

11.4. KIM TH HI QUY

261

Hnh 11.1: Khc bit th lung iu khin ca cc phin bn hm gii m


CGI.

262 CHNG 11. KIM TH H THNG, CHP NHN V HI QUY

Bng 11.3: Thay i v nh ngha v s dng khi thay i hm cgi_decode


Bin nh ngha
*eptr
Eptr
Dptr Z
Dptr
Ok
YZ

S dng
X
X
W
ZW

v cc mc trong c t. V d vi cc ca kim th hm s dng k thut


lp tng ng, khi c t thay i th cc ca kim th ca cc lp ny
cng thay i theo v chng ta cn kim th li chng v xc nh li cc
ca kim th nu cn. Trong mt s trng hp khi chng ta c th sinh cc
ca kim th t ng, nh k thut kim th da trn bin th chng ta n
gin chy li vic sinh cc ca kim th khi c t thay i.

11.5

Bi tp

1. Khi no v ti sao phi chuyn vic kim th t i pht trin sang i


kim th c lp? Khi no khng nn s dng i kim th c lp?
2. Tm mt s tnh cht khng th kim chng bng kim th h thng,
v ch ra cch kim chng chng.
3. Vit phin bn mi ca cc chng trnh v d trong Chng 2 v p
dng k thut kim th hi quy lung d liu v lung iu khin
xc nh cc ca kim th cn chy li.
4. Vi k thut kim th s dng bng quyt nh th kim th hi quy
s chn cc ca kim th nh th no?

Ti liu tham kho


[ADP93]

Topper A., Ouellette D., and Jorgensen P., Structured methods:


Merging models, techniques, and case, McGraw-Hill, 1993.

[AJ83]

Clarke Lori A. and Richardson Debra J., The application of


error-sensitive testing strategies to debugging, SIGSOFT Softw.
Eng. Notes 8 (1983), no. 4, 4552.

[AJ84]

, A reply to fosters "comment on the application


of error-sensitive testing strategies to debugging", SIGSOFT
Softw. Eng. Notes 9 (1984), no. 1, 2428.

[AJ00]

Abdurazik Aynur and Offutt Jeff, Using uml collaboration diagrams for static checking and test generation, Proceedings of
the 3rd international conference on The unified modeling language: advancing the standard (Berlin, Heidelberg), UML00,
Springer-Verlag, 2000, pp. 383395.

[AK04a]

Hartman A. and Nagin K., The agedis tools for model based
testing, Proceedings of the 2004 ACM SIGSOFT international
symposium on Software testing and analysis (New York, NY,
USA), ISSTA 04, ACM, 2004, pp. 129132.

[AK04b]

, The agedis tools for model based testing, SIGSOFT


Softw. Eng. Notes 29 (2004), no. 4, 129132.

[AW93]

K. Agrawal and James A. Whittaker, Experiences in applying


statistical testing to a real-time, embedded software system, the
Pacific Northwest Software Quality Conference, 1993.
263

264

TI LIU THAM KHO

[BBH05]

F. Belli, C.J. Budnik, and A. Hollman, A holistic approach to


testing of interactive systems using statecharts, 2nd South-East
European Workshop on Formal Methods (SEEFM 05), Los Angeles, 2005, pp. 115.

[Bec02]

Beck, Test driven development: By example, Addison-Wesley


Longman Publishing Co., Inc., Boston, MA, USA, 2002.

[BFM04]

Legeard Bruno, Peureux Fabien, and Utting Mark, Controlling


test case explosion in test generation from b formal models:
Research articles, Softw. Test. Verif. Reliab. 14 (2004), no. 2,
81103.

[Bil88]

Hetzel Bill, The complete guide to software testing, 2nd ed.,


QED Information Sciences, Inc., Wellesley, MA, USA, 1988.

[BL75]

J. R. Brown and M. Lipov, Testing for software reliability, the


International Symposium on Reliable Software, Los Angeles,
1975, pp. 518527.

[Bor84]

Beizer Boris, Software system testing and quality assurance,


Van Nostrand Reinhold Co., New York, NY, USA, 1984.

[Bor95]

, Black-box testing: techniques for functional testing of


software and systems, John Wiley & Sons, Inc., New York, NY,
USA, 1995.

[BP84]

Victor R. Basili and Barry T. Perricone, Software errors and


complexity: An empirical investigation., Commun. ACM 27
(1984), no. 1, 4252.

[C.79]

Huang J. C., Detection of data flow anomaly through program


instrumentation, IEEE Trans. Softw. Eng. 5 (1979), no. 3, 226
236.

[D.95]

Adams D., The hitchhikers guide to the galaxy, San Val, 1995.

[Dav88]

Harel David, On visual formalisms, Commun. ACM 31 (1988),


no. 5, 514530.

TI LIU THAM KHO

265

[DJ76]

Fosdick Lloyd D. and Osterweil Leon J., Data flow analysis in


software reliability, ACM Comput. Surv. 8 (1976), no. 3, 305
330.

[fS91]

International Organization for Standardization, Data


elements and interchange formatsinformation interchangerepresentation of dates and times, International
standard iso 8601:1988, technical corrigendum 1, switzerland,
International Organization for Standardization, 1991.

[G.95]

Leveson Nancy G., Safeware: system safety and computers,


ACM, New York, NY, USA, 1995.

[GG12]

Markus Grtner and Markus Grtner, Atdd by example: A


practical guide to acceptance test-driven development, 1st ed.,
Addison-Wesley Professional, 2012.

[GJ88]

Frankl P. G. and Weyuker E. J., An applicable family of data


flow testing criteria, IEEE Trans. Softw. Eng. 14 (1988), no. 10,
14831498.

[GOA05]

Mats Grindal, Jeff Offutt, and Sten F. Andler, Combination


testing strategies: a survey, Softw. Test., Verif. Reliab. 15
(2005), no. 3, 167199.

[Gru73]

F. Gruenberger, Program testing: The historical perspective,


Program Test Methods, Prentice-Hall, 1973, pp. 1114.

[IEE93]

Computer Society IEEE, Ieee standard classification for software anomalies, Ieee standard 1044-1993, IEEE Computer Society, 1993.

[Ing61]

Stuart J. Inglis, Planets, stars, and galaxies, 4th ed., Wiley and
Sons, New York, NY, USA, 1961.

[Jor13]

Paul C. Jorgensen, Software testing: A craftmans approach, 4th


ed., CRC Press, Inc., Boca Raton, FL, USA, 2013.

[Kar12]

Michael Kart, Behavior-driven development: conference tutorial, J. Comput. Sci. Coll. 27 (2012), no. 4, 7575.

266

TI LIU THAM KHO

[KJ02]

El-Far I. K. and Whittaker J.A., Model-based software testing,


Encyclopedia of Software Engineering (2002), 825-837.

[Kru05]

Steve Krug, Dont make me think: A common sense approach to


the web (2nd edition), New Riders Publishing, Thousand Oaks,
CA, USA, 2005.

[KWG04]

D. Richard Kuhn, Dolores R. Wallace, and Albert M. Gallo,


Software fault interactions and implications for software testing, IEEE Trans. Software Eng. 30 (2004), no. 6, 418421.

[Lee03]

Copeland Lee, A practitioners guide to software test design,


Artech House, Inc., Norwood, MA, USA, 2003.

[Mal87]

Chellappa Mallika, Nontraversible paths in a program, IEEE


Trans. Softw. Eng. 13 (1987), no. 6, 751756.

[Mar81]

Weiser Mark, Program slicing, Proceedings of the 5th international conference on Software engineering (Piscataway, NJ,
USA), ICSE 81, IEEE Press, 1981, pp. 439449.

[Mar84]

, Program slicing, IEEE Trans. Softw. Eng. 10 (1984),


no. 4, 352357.

[Mar03]

Robert Cecil Martin, Agile software development: Principles,


patterns, and practices, Prentice Hall PTR, Upper Saddle
River, NJ, USA, 2003.

[McC76]

T.J. McCabe, A complexity measure, IEEE Transactions on


Software Engineering 2 (1976), no. 4, 308320.

[MFB+ 07]

J. Meier, Carlos Farre, Prashant Bansode, Scott Barber, and


Dennis Rea, Performance testing guidance for web applications:
patterns & practices, Microsoft Press, Redmond, WA, USA,
2007.

[MG04]

J. Mayer and R. Guderlei, Test oracles using statistical methods,


the First International Workshop on Software Quality, 2004,
pp. 179189.

[Mil91]

Edward F. Miller, Automated software testing: A technical perspective, American Programmer 4 (1991), no. 4, 3843.

TI LIU THAM KHO

267

[MMA02]

Vanmali M., Last M., and Kandel A., Using a neural network in
the software testing process, International Journal of Intelligent
Systems 17 (2002), no. 1, 4562.

[MMA04]

Last M., Friendman M., and Kandel A., Using data mining for
automated software testing, International Journal of Software
Engineering and Knowledge Engineering 14 (2004), no. 4, 369
393.

[Mol09]

Ian Molyneaux, The art of application performance testing:


Help for programmers and quality assurance, 1st ed., OReilly
Media, Inc., 2009.

[MRA04]

Blackburn M., Busser R., and Nauman A., Why model-based


test automation is different and what you should know to get
started, Proceedings of International Conference on Practical
Software Quality and Testing, PSQT04, 2004.

[Mye75]

Glenford J. Myers, The art of software testing, Wiley Interscience, New York, NY, USA, 1975.

[oST02a]

National Institute of Standards and Technology, The economic


impacts of inadequate infrastructure for software testing, Nist
planning report, National Institute of Standards and Technology, 2002.

[oST02b]

, Software errors cost u.s. economy $59.5 bullion annually, Nist news release, National Institute of Standards and
Technology, 2002.

[PE85]

D. E. Perry and W. M. Evangelist, An empirical study of


software interface faults, Proceedings of the Twentieth Annual
Hawaii International Conference on Systems Sciences, January
1987, Volume II, 1985, pp. 113126.

[Pos90]

Robert M. Poston, Automated software testing, Workshop Programming Environments (NJ, USA), Inc. Tinton Falls, 1990.

[Pos91]

, A complete toolkit for the software tester, American


Programmer 4 (1991), no. 4, 2837.

268

TI LIU THAM KHO

[PZKH06]

Hu Peifeng, Zhang Zhenyu, Chan W. K., and Tse T. H., An empirical comparison between direct and indirect test result checking approaches, Proceedings of the 3rd international workshop
on Software quality assurance (New York, NY, USA), SOQUA
06, ACM, 2006, pp. 613.

[Rob85]

Mandl Robert, Orthogonal latin squares: an application of experiment design to compiler testing, Commun. ACM 28 (1985),
no. 10, 10541058.

[Rub94]

Jeffrey Rubin, Handbook of usability testing: How to plan, design, and conduct effective tests, John Wiley & Sons, Inc., New
York, NY, USA, 1994.

[S.82]

Pressman Roger S., Software engineering: A practitioners approach, McGraw-Hill, Inc., New York, NY, USA, 1982.

[Shr89]

Phadke Madhav Shridhar, Quality engineering using robust design, Englewood Cliffs, N.J. Prentice Hall, 1989.

[SJ85]

Rapps Sandra and Weyuker Elaine J., Selecting software test


data using data flow information, IEEE Trans. Softw. Eng. 11
(1985), no. 4, 367375.

[Som10]

Ian Sommerville, Software engineering, 9 ed., Addison-Wesley,


2010.

[SvBGF+ 91] Fujiwara Susumu, von Bochmann Gregor, Khendek Ferhat,


Amalou Mokhtar, and Ghedamsi Abderrazak, Test selection
based on finite state models, IEEE Trans. Softw. Eng. 17 (1991),
no. 6, 591603.
[TL02]

Kuo-Chung Tai and Yu Lei, A test generation strategy for pairwise testing, IEEE Trans. Software Eng. 28 (2002), no. 1, 109
111.

[WM96]

Arthur H. Watson and Thomas J. McCabe, Structured testing:


A testing methodology using the cyclomatic complexity metric,
NIST Special Publication 500-235, National Institute of Standards and Technology, Computer Systems Laboratory, NIST,
Gaithersburg, MD 20899-0001, 1996.

S lc v cc tc gi
TS. ng Vn Hng2 tt nghip ngnh Ton hc tnh ton ti Khoa TonC, Trng i hc Tng hp H Ni (nay thuc Trng i hc Khoa hc
T nhin, i hc Quc gia H Ni) nm 1977, bo v thnh cng hc v
Tin s ngnh Khoa hc my tnh ti Vin Khoa hc My tnh v T ng
ha, Vin Hn lm Khoa hc Hungary thng 2 nm 1988. TS ng Vn
Hng khi u s nghip chuyn mn ca mnh l mt nghin cu vin ti
vin Cng ngh Thng tin, Vin Khoa hc v Cng ngh Vit Nam t nm
1978, v lm nghin cu vin ca Vin Quc t v K ngh Phn mm thuc
Trng i hc Lin hip quc t nm 1995 n nm 2007. T nm 2008 n
nay TS ng Vn Hng l ging vin cao cp ca Khoa Cng ngh Thng
tin, Trng i hc Cng ngh, i hc Quc gia H Ni.
TS. ng Vn Hng tham gia tch cc vo mt s hot ng khoa hc
nh ging dy ti mt s trng h quc t, tham gia cc tiu ban chng
trnh ca nhiu hi ngh quc t v lnh vc cng ngh thng tin, hiu nh
sch v tp ch quc t cho nh xut bn Springer. Lnh vc nghin cu m
ng Vn Hng quan tm bao gm cc phng php hnh thc, m hnh
ho, c t v kim chng phn mm, cc h tnh ton sng song v phn
tn, k thut pht trin phn mm da trn thnh phn. TS. ng Vn
Hng cng b hn 80 bi bo trong lnh vc chuyn mn ca mnh trong
cc tp ch v k yu ca cc hi ngh quc t v trong nc. TS. ng Vn
Hng tng l gio s mi ca i hc S phm Hoa ng, Thng Hi,
Trung quc, v hin nay l ph tng bin tp Chuyn san Cng ngh Thng
tin v Truyn thng ca i hc Quc gia H Ni.

http://uet.vnu.edu.vn/dvh/

269

270

TI LIU THAM KHO

TS. Trng Anh Hong3 tt nghip ngnh tin hc ti khoa Ton-C,


trng i hc Tng hp H Ni (nay thuc trng i hc Khoa hc T
nhin, i hc Quc gia H Ni) nm 1994, bo v thnh cng hc v Tin
s khoa hc ngnh Tin hc ti Trng i hc Bergen, Na Uy nm 2006.
Sau khi tt nghip i hc Trng Anh Hong tham gia nhiu d n
pht trin phn mm nhiu cng ty trong v ngoi nc v thu c nhiu
kinh nghim thc t cc d n ny. T nm 2008 n nay TS. Trng Anh
Hong l ging vin Khoa Cng ngh Thng tin, Trng i hc Cng ngh,
i hc Quc gia H Ni. Cc mn ging dy chnh ca TS. l Cng ngh
Phn mm v Kim th Phn mm. Mt s hng nghin cu chnh ca TS.
l h thng kiu, phn tch v kim chng chng trnh, v kim th t ng.
TS. Phm Ngc Hng4 tt nghip i hc ngnh Cng ngh Thng tin
ti Khoa Cng ngh (nay l Trng i hc Cng ngh), i hc Quc
gia H Ni (HQGHN) nm 2002, tt nghip Thc s chuyn ngnh Cng
ngh Phn mm ti Vin Khoa hc v Cng ngh tin tin Nht Bn nm
2006, bo v thnh cng hc v Tin s chuyn ngnh Cng ngh Phn mm
ti Vin Khoa hc v Cng ngh tin tin Nht Bn nm 2009. TS. Phm
Ngc Hng bt u s nghip nghin cu t nm 2002 ti Khoa Cng ngh,
HQGHN. T nm 2009 n nay, Tin s l ging vin ti Trng i hc
Cng ngh, HQGHN. Cc hng nghin cu quan tm ca TS. Phm Ngc
Hng gm cc phng php hnh thc, m hnh ho, c t v kim chng
phn mm, kim th t ng v tin ha phn mm.

3
4

http://uet.vnu.edu.vn/hoangta/
http://uet.vnu.edu.vn/hungpn/

You might also like