Tải bản đầy đủ (.pdf) (154 trang)

Kiểm thử phần mềm và xây dựng hệ thống hỗ trợ quản lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.27 MB, 154 trang )

i cám n
Li u tiên, chúng em xin chân thành cám n thy Lâm Quang V, thy
Phm Minh Tun ã tn tâm hng dn chúng em, giúp  chúng em hoàn thành 
tài này.
Chúng em cng xin cám n các thy cô, cán b ging viên trã nhit tình
óng góp nhng kinh nghim, ý kin quý báu cho chúng em.
Chúng em xin gi li cám n tt c các quý thy cô ã ging dy, cung cp
cho chúng em vn kin thc quý báu sut nhng nm hc va qua.
Chúng em cám n khoa Công ngh thông tin trng i hc Khoa hc T
nhiên ã to u kin cho chúng em thc hin  tài này.
Chúng tôi cng xin cám n các bn ã nhit tình giúp  khi chúng tôi
ng phi nhng khó khn, ng viên chúng tôi trong sut quá trình thc hin 
tài lun vn tt nghip này.
Mc dù chúng em ã c gng rt nhiu  hoàn thành tt lun vn, nhng
chc chn không tránh khi nhng thiu sót, chúng em rt mong c s cm thông
và tn tình giúp  ca quý thy cô.
Tp. H Chí Minh, 07/2004
Nhóm sinh viên thc hin
V Ngc Sen – Nguyn Th Quyên
i mu
Sau cuc khng hong trong ngành công ngh thông tin vào u nhng nm
2000, n nay, công ngh sn xut phn mm trên th gii và nht là  Vit Nam
ang tin nhng bc tin mnh m hn. Vt qua cuc khng hong này, ngoài
nhng kinh nghim trong kinh doanh, các công ty tin hc Vit Nam nhn thc c
rng quy trình sn xut phn mm ca chính công ty h cn c nâng cp vi mc
tiêu u tiên là nâng cao cht lng, tng tính chuyên nghip trong sn xut phn
mm. Và t ó tin trình kim th phn mm tr thành tin trình vô cùng quan
trng trong quy trình sn xut phn mm.
Trong mt quy trình sn xut phn mm, ngoài vic thành lp các chun
coding, phân công sp xp các công vic cho các thành viên trong t chc, qun lý
các tài liu nh các bn c t yêu cu, bn phân tích thit k chng trình, chng


trình ngun,… thì mt yu t cng rt quan trng là h tr qun lý tin trình kim
th bao gm h tr qun lý các trng hp kim th, các bn báo cáo kim th, các
li…
Chúng emã thc hin  tài “Tìm hiu v kim th phn mm và Xây dng
h thng h tr qun lý tin trình kim th” nhm hiu rõ tin trình kim th, các
loi kim th, cách kim th, vic qun lý kim th, nhng mc tiêu, thun li mà
tin trình này em li.
Lun vn ca chúng em c trình bày vi by chng chính, bao gm:
- Chng 1 Mu
- Chng 2 Tng quan v kim th phn mm
- Chng 3 Các loi kim th phn mm
- Chng 4 Các công c h tr
- Chng 5 Phát trin công c qun lý tin trình kim th
- Chng 6 Th nghim
- Chng 7 Tng kt và hng phát trin
- Ph lc
C LC
Chng 1 u 1
1.1 Tm quan trng ca vic qun lý tin trình kim th 1
1.2 Khái quát vai trò qun lý kim th 1
1.3 Mc tiêu  tài 2
Chng 2 ng quan v kim th phn mm 4
2.1 Kim th phn mm là gì? 4
2.2 Mc ích ca vic kim th phn mm 4
2.3 Các giai n kim th phn mm 5
2.3.1 Giai n 1: Phác ha môi trng ca phn mm 6
2.3.2 Giai n 2: Tìm các kch bn kim th. 9
2.3.3 Giai n 3: Thc thi và ánh giá kch bn kim th 11
2.3.4 Giai n 4: ánh giá tin trình kim th 12
2.4 Kim th trong các giai n phát trin phn mm 13

2.4.1 Kim th trong giai n c t yêu cu 14
2.4.2 Kim th trong giai n thit k 15
2.4.3 Kim th trong giai n lp trình 16
2.5 Ngi ki m th 16
2.6 Lung thông tin kim th 18
2.7 Phân bit các khái nim 19
2.7.1 Phân bit QC và Q A 19
2.7.2 Phân bit Error, Fault, Failure 20
2.8 Cht lng phn mm và vic m bo cht lng phn mm 22
2.8.1 Các nhân t cht lng ca phn mm 22
2.8.2 o cht lng phn mm 24
2.8.3 Vai trò ca vic qun lý cht lng phn mm 26
2.8.4 Ti sao cn qun lý cht lng ? 30
Chng 3 Các loi kim th phn mm 31
3.1 Kim th hp e n 31
3.2 Ki m t h hp trng 33
3.3 Nhng nét khác nhau c bn gia kim th hp en và hp trng 34
3.4 Kim th cho h thng thi gian thc 35
3.5 Các loi kim th hp en 36
3.5.1 Oracles testing 36
3.5.2 Domain testing 37
3.5.3 Function testing 39
3.5.4 Combination testing 40
3.5.5 Regression testing 47
3.5.6 Risk based testing 50
3.5.7 Senario testing 55
3.5.8 Specification based testing 58
3.5.9 User testing 62
3.5.10 Stress testing 63
3.5.11 Integration Testing 64

3.5.12 Acceptance Testing 64
3.5.13 Beta Testing 65
3.5.14 Exploratory testing 66
3.6 Các loi kim th hp trng 70
Unit testing 70
Chng 4 Các công c h tr 72
4.1 Công c h tr qun lý kim th 72
4.1.1 Nhn xét chung 72
4.1.2 TestLink 73
4.1.3 Qatraq 75
4.1.4 RTH 77
4.1.5 Mantis Bugtracking 77
4.2 Công c kim th phn mm tng 78
4.2.1 TestComplete 78
4.2.2 Winrunner 80
4.3 Công c kim th web tng 81
4.3.1 Gii thiu 81
4.3.2 Proxy Sniffer 82
4.3 .3 Công c We bserve r St res s 84
4.3.4 Apche Jmeter 85
4.3.5 Wapt 86
4.4 Công c kim th Unit [6] 88
4.4.1 PHP Unit Testing 88
4.4.2 Cunit testing [7] 98
4.4.3 JUnit Testing [8] 100
Chng 5 Phát trin công c qun lý kim th 108
5.1 Gii thiu công c RTH 108
5.2 Lý do chn công c RTH 114
5.3 Phát trin công c RTH 114
5.4 Mt v ài giao di n .117

Chng 6 Th nghim 118
6.1 Th nghim vi các loi test 118
6.1.1 Oracles 118
6.1.2 Domain testing 120
6.1.3 Function testing 121
6.1.4 Combination testing 123
6.1.5 Regressiont testing 125
6.1.6 Risk-based testing 128
6.1.7 Scenario testing 130
6.1.8 User testing 134
6.1.9 Stress testing 135
6.1.10 Exploratory testing 135
6.2 Th nghim công c RTH 140
6.2.1 To d án 140
6.2 .2 Thêm Requirem e nt v ào Pro jec t 140
6.2.3 Thêm mt release 141
6.2 .4 T hêm Build v ào Relea se 141
6.2 .5 T hêm Tes tSet v ào Build 141
6.2.6 T hêm Test vào T estSet 142
6.2.7 Thêm các bc cho Test 142
6.2.8 Cp nht kt qu test (To TestRun) 143
6.2.9 Thêm li Defects 143
6.3 Th nghim công c RTH kt hp vi WinRunner 144
Chng 7 ng kt và Hng phát trin 145
7.1 Tánh giá 145
7.1.1 Nhng kt qut c 145
7.1.2 Nhng mt còn hn ch 146
7.2 Hng phát trin ca chng trình 146
DANH SÁCH BNG
ng 2-1 Các trng hp kim th ph các nhánh và các câu lnh 6

ng 2-2 So sánh nh ngha ca QC và QA 19
ng 2-3 Nhng m khác nhau gia QC và QA 20
ng 2-4 Ví d so sánh error, fault, failure 20
ng 2-5 Các nhân t và o cht lng [1] 25
ng 3-1 Bng kt hp giá tr các bin 40
ng 3-2 Bng kt hp giá tr các bin vi cách tip cn th 1 41
ng 3-3 Bng kt hp giá tr các bin vi cách tip cn Kt hp y  41
ng 3-4 Bng kt hp giá tr các bin vi cách tip cn Kt hp tng ôi 42
CÔNG THC
Công thc 2-1 Công thc o cht lng phn mm [1] 23
DANH SÁCH HÌNH
H ình 2-1 Ng i l p trình 1 6
Hình 2-2 Ngi kimth 17
Hình 2-3 Kin thc cn có ca ngi kim th 17
Hình 2-4 Mô hình lung thông tin kim th [1] 18
Hình 2-5 Mô hình mô phng các bc QC c bn [9] 19
Hình 2-6 Mô hình mô phng các bc QA c bn [9] 19
Hình 2-7 Mô hình các nhân t cht lng ca McCall [1] 22
Hình 2-8 Mô hình các hot ng trong CM [10] 27
Hình 2-9 Tng quan v CM [10] 28
Hình 3-1 Kim th hp en [11] 31
Hình 3-2 Kim th hp trng [11] 33
Hình 3-3 Font trong Word và Word Pad 37
Hình 3-4 Chu trình kim th da trên ri ro 51
Hình 4-1 Mô hình use case ca công c qun lý kimth TestLink 73
Hình 4-2 Quá trình ghi li d liu – công c Proxy Sniffer 82
Hình 4-3 Qui trình thc thi load test – Công c Proxy Sniffer 83
H ình 4-4 Công c  W apt 8 6
Hình 4-5 Giao din  ha ngi dùng – JUnit testing 107
Hình 5-1 Giao din TreeView trc quan hn 117

Hình 5-2 Màn hình to Template Testcase 117
Hình 6-1 Th nghim thc t vi Oracles testing 119
Hình 6-2 Th nghim thc t vi Domain testing 121
Hình 6-3 Th nghim thc t 1 vi Function testing 122
Hình 6-4 Th nghim thc t vi Function testing 123
Hình 6-5 Th nghim thc t vi Combination testing 124
Hình 6-6 WinAmp phiên bn 2. 79 & phiên bn 5.03 125
Hình 6-7 Cp nht thông tin v bài hát trong Winamp. 126
Hình 6-8 Li trong Winamp v5.03 vi Regression testing 127
Hình 6-9 Th nghim thc t vi Risk-based testing 129
Hình 6-10 Th nghim thc t vi Scenario testing 130
Hình 6-11 Th nghim thc t vi User testing 134
Hình 6-12 Giao din ng dng Paint 136
Hình 6-13 Màn hình to d án ca RTH 140
Hình 6-14 Màn hình to yêu cu ca RTH 140
Hình 6-15 Màn hình to release ca RTH 141
Hình 6-16 Màn hình thêm build ca RTH 141
Hình 6-17 Màn hình thêm TestSet ca RTH 141
Hình 6-18 Màn hình thêm test ca RTH 142
Hình 6-19 Màn hình thêm tng bc test ca RTH 142
Hình 6-20 Màn hình thêm TestRun ca RTH 143
Hình 6-21 Màn hình thêm li Defect ca RTH 143
Hình 6-22 Giao din công c kim th phn mm tng WinRunner 144
Thut ng / T vit tt / Khái nim
APIs
Software Interfaces: Giao din phn mm.
BVA
Phân tích giá tr bin.
CSDL
 s d liu.

F
false: Là giá tr sai (0)
GUI
Graphics User Interface: Giao din  ha ngi
dùng.
QA
Quality Assurance: B phn bo m cht lng
Quality
Cht lng: Vic tha mãn mt sn phm theo úng
s mong i ca khách hàng, da vào nhng yêu cu
cho sn phm.
Software
Phn mm: Là nhng chng trình, nhng th tc
c gn lin vi các tài liu mô t và các d liu có
liên quan n tác v ca mt h thng máy tính.
SQS
Software Quality System: H thng cht lng phn
mm
T
true: Là giá trúng (1)
Chng 1 - Mu
Trang 1
Chng 1 u
1.1 Tm quan trng ca vic qun lý tin trình kim th
Tha mãn nhu cu ca ngi dùng là vic rt quan trng khi to ra sn phm.
Vì vy, m bo cht lng phn mm là mt phn không th thiu trong quá trình
sn xut phn mm. Và vn  qun lý cht lng c t ra.
n na, quan m hin i v vic m bo cht lng ngày càng phc tp
n, không còn gii hn  mc tiêu tha mãn yêu cu khách hàng. Mt sn phm
phn mm cht lng cao phi kt hp nhiu nhân t cht lng

1
(thuc tính cht
ng
2
). Có th chia các nhân t cht lng thành ba loi:
• Nhng nhân t có th tìm thy trong c t yêu cu, ví d nh tính linh
ng.
• Nhng nhân t mà phn mm có tháp ng, ví d nh tính hiu dng.
• Nhng nhân t mà ngi lp trình s chú trng nhng ngi dùng thì
không, ó là tính tái s dng.
 mt sn phm t c nhng nhân t cht lng này không phi là mt
vic d dàng. Vì vy, vic qun lý cht lng phn mm là mt công vic không th
thiu trong công ngh phn mm.
1.2 Khái quát vai trò qun lý kim th
Thu ban u ca ngành công nghip máy tính nói chung và công ngh phn
mm nói riêng, vic phát trin phn mm c xem là mt tin trình “vit và sa”
3
,
không h có mt k hoch nào trc tin trình này. Yêu cu ca ngi dùng còn 
phm vi nh nên bn thân ngi vit phn mm có th t nhc và t kim tra
 tha mãn yêu cu ngi dùng. Nhng hin nay quy mô phn mm rt ln, cn
nhiu ngi làm vic chung; do ó kim th phn mm tr thành tin trình quyt
nh s thành công ca d án.
1
Nhân t cht lng: quality factors
2
Thuc tính cht lng: quality attributes
3
Vit và sa: code and fix
Chng 1 - Mu

Trang 2
Nu ta t qun lý tin trình kim th thì không n gin chút nào. Vì vi s
ng trng hp kim th rt ln, ta cn:
• Qun lý nhng trng hp kim th nào ã c thc hin và nhng
trng hp kim th nào cha c thc hin.
• Còn phi qun lý kt qu kim th thy c kh nng áp ng yêu
cu ca phn mm. Kt qu này sc thay i và phi c cp nht
li sau mi phiên bn ca sn phm.
• Yêu cu ngi dùng s còn c thay i trong sut quá trình phát trin.
Do ó các trng hp kim th liên quan n nhng yêu cu này cng
c thay i theo. Mt s trng hp kim th sc to mi, mt s
sc cp nht li và c coi là phiên bn mi ca trng hp kim
thó.
Tt c nhng thông tin này u phi c ghi nhn li.
Do ó chúng ta có th nói rng mt d án mun thành công không th không có
mt chng trình qun lý tin trình kim th.
1.3 Mc tiêu  tài
Tìm hiu chi tit v tin trình kim th phn mm:
• nh ngha kim th
• Tm quan trng
• Mc ích, vai trò ca tin trình kim th
• Các giai on trong tin trình kim th
• Kim th trong các giai n phát trin phn mm
• Các chun trong kim th
• Tìm hiu rõ v các loi kim th và tin hành kim th thc ti vi
tng loi kim th.
Tìm hiu v mt s công c h tr qun lý tin trình kim th nh RTH,
TestLink, Qatraq,…
Chng 1 - Mu
Trang 3

Tìm hiu v mt s công c kim th tng:
+ Kim th phn mm tng: WinRunner
+ Kim th web tng: Proxy sniffer
và tin hành kim th thc t vi các công c này.
ng dng nhng kin thc ó  phát trin h thng h tr qun lý:
• Các yêu cu
• Tin trình kim th
• Ghi
4
li
• Cho phép to các trng hp kim th mu
5
• Gi Emai thông báo li cho nhà lp trình ngay khi có li xut hin
• Kt hp kim th tng: winrunner_ công c kim th tng phn
mm, proxy sniffer_ công c kim th tng web.
4
Ghi: report
5
Trng hp kim th mu: Template testcase
Chng 2 - Tng quan v kim th phn mm
Trang 4
Chng 2 Tng quan v kim th phn mm
2.1 Kim th phn mm là gì?
Kim th phn mm là mt phn ca tin trình phát trin phn mm. Nó là
tin trình ánh giá mt h thng hoc thành phn ca h thng bng tay hoc t
ng, nhm xác nh li s tho mãn các yêu cu phn mm.
Kim th là tin trình  thc thi các chng trình vi dnh tìm kim li. ây là
tin trình nng ng, sáng to và y th thách trí tu.
Các phát biu sai:
• Kim th là tin trình chng minh chng trình không b li.

• Kim th là tin trình xác minh, tin tng rng chng trình ã làm
c nhng gì ã c dnh.
Mt test thành công: là làm biu hin ra mt li.
Vic ngi dùng gi thông báo “phn mm có li” là iu mà các nhà phát
trin phn mm không mun. Khi ó, chc chn h s t hi: Làm th nào  gii
quyt nhng li này? Và s mt rt nhiu thi gian  kim tra cn thn hàng trm,
hàng ngàn bin, câu lnh. Vì vy cách hiu qu nht là làm th nào  phòng tránh
nhng li này?
2.2 Mc ích ca vic kim th phn mm
Theo Deutsch[1]:
“Phát trin h thng phn mm gm rt nhiu hot ng sn xut, và nguy
 có li là rt ln. Li có th xy ra ngay lúc khi u ca tin trình, hay trong
các giai on thit k và phát trin sau này
Kim th phn mm nhmm bo cht lng phn mm.
Theo Glen Myers[1]::
Kim th là tin trình thc thi chng trình  tìm ra li.
• Mt trng hp kim th là trng hp có xác xut cao  tìm ra li cha
biu hin.
• Kim th thành công khi phát hin li.
Chng 2 - Tng quan v kim th phn mm
Trang 5
Nhng mc ích trên ngc vi quan m thông thng là “kim th thành
công là kim th không tìm ra li nào”. Nu kim th không phát hin ra li thì ta
s ngh rng cu hình kim th này cha úng và li vn còn tim n trong phn
mm. Nu nhng li này c phát hin bi ngi dùng thì chi phí cho vic bo trì,
xác nh li có th gp rt nhiu ln chi phí tìm li trong quá trình phát trin. Vy
kim th thành công là kim th tìm ra li.
Chúng ta cn phi nh rng: “Kim th không th chng minh c vic
không có khim khuyt, nó ch có th chng minh rng khim khuyt phn mm hin
hu.”

2.3 Các giai n kim th phn mm
4 giai on trong quá trình kim th:
1. Phác ha môi trng ca phn mm: Tìm xem có khong bao nhiêu
trng hp cn kim th, là nhng trng hp nào.
2. Tìm kch bn kim th.
3. Thc thi và ánh giá kch bn kim th.
4. o lng s tin b ca phn mm sau khi ã c kim th.
 hiu rõ v 4 giai on này ta xét mt ví dn gin v cng trình có hai d
liu u vào sau:
Thi gian hin ti: 9:28:32
Ngày hin ti: 24 Aug 2006
Thi gian nhp: ……………
Ngày nhp: ………………
Ni dùng giao tip vi phn mm bng cách nhp các d liu u vào cn
thit, và phn mm s cung cp d liuu ra. Vi ví d này, ngi dùng cung cp
u vào { thi gian, ngày tháng, phím Tab, phím Alt-F4}, h iu hành s cp b
nh  chy chng trình hin th thi gian và ngày tháng hin hành.
Ngi kim th s kim tra tng d liuu vào, xem nó có hp l không,
b nh có   thc hin chng trình không, hay h thng khoá chc nng chính.
Nhng nhà kim th phi kim tra tt c trng hp có th xy ra. H suy ngh cách
ngi dùng làm phn mm biu hin li.
Chng 2 - Tng quan v kim th phn mm
Trang 6
Sau ây là on mã ngun cho chng trình trên:
2.3.1 Giai on 1: Phác ha môi trng ca phn mm
Bng di ây là bng lit kê các trng hp kim th ph các nhánh và các
câu lnh ca n mã lnh trên.
Possible
While Case1 If1 Case 2 If 2 Case 3 If 3
1 F - - - - - -

2 T T T - - - -
3 T T F - - - -
4 T F - T T - -
5 T F - T F - -
6 T F - F - T T
7 T F - F - T F
8 T F - F - F -
ng 2-1 Các trng hp kim th ph các nhánh và các câu lnh
Chng 2 - Tng quan v kim th phn mm
Trang 7
Nhìn vào bng trên, chúng ta cn kim th 8 trng hp. Vi mi câu lnh
ch có mt cách  nh giá kt qu True, có nhiu hn 2 cách  nh giá kt qu
False. Thc t, chúng ta s tìm c 2
x
-1 cách( x là s iu kin trong câu lnh).
2.3.1.1 Gii thiu chung
Ngoài vic kim th mã ngun ca phn mm, ta còn phi kim nhng giá tr
t môi trng liên quan vi phn mm.
Có bao nhiêu giá tr thi gian trong mt ngày?
Tr li: 24ting*60phút*60giây = 86400 giá tr nhp khác nhau. ó là nhng
giá tr hp l, còn giá tr không hp l (ví d: 29 gi) cng phic kim tra.
Sau ó, ta phi kim th:
• D liu hp l ca ngày, ví d ngày 20.
• D liu không hp l ca ngày, ví d ngày 32.
• S kt hp gia thi gian và ngày tháng. Ví d: ngày 20 tháng 2 nm
2006 là d liu hp l, còn ngày 31 tháng 2 nm 2006 là không hp l vì
tháng 2 ch có 30 ngày.
Trên thc t, ta không th kim ht mi giá tr, mà ch tìm nhng d liuu
vào tiêu biu, chúng s c dùng trong sut quá trình kim th. iu quan trng là
các d liu u vào có bao ph ht mi trng hp cn kim không.

Nhim v ca ngi kim th là xác nh s nh hng ca môi trng lên
phn mm. H phi tìm hiu giao din phn mm và lit kê d liu nhp i vi
mi giao din. ó là nhim v c bn ca nhà kim th và nó có th rt khó.
Có 4 giao din thông thng:
1. Giao din ngi dùng
6
: Bao gm các thao tác thông thng  con ngi
truyn t vi phn mm. Hay dùng nht là giao din  ha ngi dùng GUI
7
.
Nhng thit b nhp bao gm: chut, s kin bàn phím, Nhng nhà kim th s
tìm cách thao tác trên các thit b này nhm làm cho phn mm biu hin li.
6
Human Interface
7
Graphics User Interface
Chng 2 - Tng quan v kim th phn mm
Trang 8
2. Giao din phn mm, APIs
8
: phn mm s dng mt h iu hành, c s
d liu. Khó khn ca ngi kim th là phi kim tt c nhng gì mà dch v cung
cp, c nhng chc nng mà ngi dùng mong i và không mong i.Ví d: các
nhà phát trin phn mm mun h iu hành lu tp tin. H thng không chú ý
n các thông báo t h iu hành rng thit b lu tr ã y. Thm chí các thông
báo li cng cn phi c kim tra.
3. Giao din h thng tp tin tn ti bt c khi nào phn mm c hoc vit
d liu t bên ngoài. Nhng nhà phát trin phn mm phi vit rt nhiu on mã
kim tra li  phát hin ra li nu phn mm cha d liu và nh dng riêng.
4. Giao din giao tip: cho phép truy cp trc tipn nhng thit b vt lý

và yêu cu mt giao thc giao tip.  kim th nhng phn mm này, ngi kim
th làm cho các giao thc hp l và không hp lc thc hin. H to ra các
cách kt hp khác nhau ca nhng câu lnh và d liu, trong nh dng gói tin
chun.
K tip, ngi kim th phi ngh xem các thao tác nào ca ngi dùng nm
ngoài phm vi u khin ca phn mm. Ví d:
• Khi s dng h iu hành, ngi dùng xoá mt tp tin mà ngi dùng
khác ang m. Phn mm s x lý nh th nào trong trng hp này?
• Mt thit b khi ng li khi ang thc hin vic giao tip. Phn mm s
phn ng li nh th nào?
2.3.1.2 S cân nhc, suy xét
Khi gp giao din phc tp, ngi kim th có hai khó khn:
• H phi tìm cn thn nhng d liu u vào.
• Phi xác nh trình t nhp nh th nào.
Ngi kim th thng dùng k thut “chia ct giá tr biên”  tìm tng d
liu u vào ti các giá tr biên hoc xung quanh nhng giá tr biên. Ví d, vic
8
Software Interfaces
Chng 2 - Tng quan v kim th phn mm
Trang 9
kim th giá tr cc tiu, cc i hoc bng 0 trong yêu cu nhp mt s nguyên ca
phn mm. Nhng giá tr  gia các biên có vai trò nh nhau.
Mt vn  phc tp là vic chn nhng giá trng thi cho tin trình a
bin có kh nng nh hng ln nhau. Ngi kim th phi hiu tt cnh hng
ca các giá tr.
Vi phn mm yêu cu nhp chui, ngi kim th s nhp chui  kim.
H xem u vào vt lý và các s kin tru tng nh các ký t trong bng alphabet
ca mt ngôn ng chun và nh ngha mô hình ca ngôn ng ó. Mô hình là mt
s trình bày, mô t làm th nào d liu nhp và các s kin c phi hp  to
nhng t và nhng câu có cú pháp hp l. Mô hình giúp ngi kim th tp hp các

trng hp kim th có th có. Hu ht nhng mô hình thông thng là  th hoc
biu  trng thái. Nhng mô hình ph bin khác bao gm nhng biu thc và ng
pháp, nhng công c, t lý thuyt v ngôn ng.
2.3.2 Giai on 2: Tìm các kch bn kim th.
Vic phân chia nhng mô hình và giá tr s to ra vô s kch bn kim th.
Mi kch bn s có thi gian và chi phí cn thit. Ch chn mt s kch bn tiêu biu
 dùng trong k hoch phát trin phn mm. Vy cách chn la nào là tt nht? 17
có là s nguyên tt hn 34? Mt bao nhiêu thi gian  mt tên tp tin c tìm
thy trc khi nhn vào nút nhn Open?
Nhng câu hi này ã c nghiên cu và tr li. Câu tr li hay nht là nó
gn lin vi mc  bao ph ca mã ngun và min nhp. Nhng nhà kim th c
gng:
• Bao ph ht các câu lnh (thc thi mi dòng mã ngun ít nht mt ln).
ây là tiêu chun (phng pháp) kim thng i thc thi.
• Bao ph ht d liuu vào (áp dng mi s kin c a ra), là tiêu
chun kim th min nhp.
ây là nhng tiêu chun h kim ht mi mt ca phn mm.
Chng 2 - Tng quan v kim th phn mm
Trang 10
2.3.2.1 Tiêu chun
9
kim thng i
10
thc thi
Tiêu chun kim th d liu tp trung vào vic:ng i nào hoc min
nhp nào c thc thi, him khi c hai. Tiêu chun tìm kim ng i thc thi
thng tp trung vào nhng ng có các cu trúc u khin. Ví d:
• Tìm kim mt tp kim th mà mi câu lnh c thc thi ít nht 1 ln.
• Tìm kim tp kim th mà mi cu trúc nhánh c ánh giá vi giá tr
có th có ca nó.

Thc t, li khi u rt c quan tâm. Trong phng pháp này, mt s li
c c ý chèn vào trong mã ngun. Sau ó ngi kim th s thit k kch bn 
tìm nhng li này. Vic tìm kim các li c ý s giúp ngi kim th tìm ra nhng
li thc s.
2.3.2.2 Tiêu chun kim th min nhp
11
Tiêu chun kim tra min nhp t mc n gin n phc tp:
Tìm tp các trng hp kim th mà:
• Cha tt c d liuu vào vt lý.
• Mi u khin giao din (window, menu, button,…) u c thao tác.
• Có tính cht thng kê cho toàn b min nhp.
• Các ng i u c thc thi.
Các nhà nghiên cu v kim thã nghiên cu các thut toán  chn nhng
b kim thi din cho tt cng i có thc thc thi và tt c min nhp có
th có. Hu ht h cho rng: cn thn trng khi kt hp nhiu tiêu chun  kim
th và ánh giá cht lng sn phm. Ngi kim th nên có kin thc v tiêu
chun, v phng pháp mà h chn  tìm, to ra các trng hp kim th. H phi
hiu gii hn ca các tiêu chun này,  tránh trng hp có thông báo li nhng
không phi do phn mm b li, mà do các trng hp kim th không úng.
9
Tiêu chun: Phng pháp
10
ng i: Tng nhánh ca mã ngun
11
Min nhp: D liu u vào
Chng 2 - Tng quan v kim th phn mm
Trang 11
2.3.3 Giai on 3: Thc thi và ánh giá kch bn kim th
Thc thi kch bn kim th:  kt lun kt qu kim th là úng hay sai,
ni kim th chuyn nó thành hình thc có th thc thi c bng cách thc hin

li các thao tác ca ngi dùng da trên kch bn kim thó. Các nhà kim th c
gng t ng hoá kch bn kim th.
ánh giá kch bn kim th: lúc bt u thì d nhng rt khó  thc hin.
ánh giá phi da trên kt qu thc thi ca phn mm, kt qu thc thi kch bn
kim th, kt qu mong mun theo bn c t. Bn c t phi c m bo úng,
nu b lch là sai. Ngi kim th s so sánh kt qu thc thi và kt qu mong
mun xem có sai khác không. S so sánh này rt khó. V lý thuyt s so sánh ca
hai giá tr tu ý thì không th tìm ra li gii. Ví d: ng dng trình son tho: nu
xut ra “Tô sáng t sai li chính t”. Làm th nào chúng ta có th xác nh rng tt
c các trng hp sai li chính tã c dò tìm?
2.3.3.1 Kim th hi quy
12
Khi tin trình kim th kt thúc, các li ã c phát hin, thì các nhà phát
trin s to ra phiên bn mi ca phn mm. Vic kim th tin hành vi tt c các
phiên bn mi nht ca phn mm cho n khi xác nh c mt phiên bn thích
hp nht. Câu hi t ra: khi ta ã tin hành kim th phiên bn n-1, thì vi phiên
bn n, ta phi kim th nh th nào? Kim mi ht? Hay ch kim li nhng b
kim th c ca phiên bn n-1?
Mt vài trng hp sau khi sa cha li:
• Ch sa cha nhng vn ã c thông báo.
• Vic sa cha tht bi.
• Sa cha li nhng li làm ngng mt vài th khác mà trc ó ang làm
vic
• Không nhng li không c sa cha mà còn làm ngng tr mt vài th
khác na.
12
Kim th hi quy: Regression testing
Chng 2 - Tng quan v kim th phn mm
Trang 12
Vì nhng trng hp này rt có th xy ra, nên khi kim th phiên bn n, ta

phi thc thi li các b kim th t phiên bn n-1, ri mi tin hành các b kim th
mi. Phiên bn mi thng kèm theo các chc nng mi, nên kim th hi quy s
mt thi gian trong vic kim nhng n mã lp trình mi. Các kim th viên và
phát trin viên làm vic cùng nhau  làm gim ti a các b kim th và xác nh
nhng kim th hi quy c u tiên. Mt hn ch khác i vi kim th hi quy là
nhng kim th này có th làm thay i tiêu chun ca d liu lúc u.
2.3.3.2 Các mi quan tâm liên quan
13
Theo lý thuyt, ngi thit k s vit on mã và t kim tra. Nu nhon
mãc vit khó kim th thì nó nên c vit li  d kim hn. ng t, các
phng pháp kim th cng nên d thc hin, nu nó có th dùng trong kim th t
ng thì tt hn.
Khi thc thi và ánh giá các b kim th, nu có li thì ngi kim th nên
mô phng li các thao tác và nhng biu hin li. Bi vì các li c phát hin bi
ngi kim th nhng li c sa bi ngi phát trin. Vic này s ny sinh 2 vn
: mô phng li và tái thc thi kch bn kim th.
• Mô phng li: li xy ra nh th nào? Các biu hin ca nó.
• Tái thc thi kch bn: gm nhng thao tác nào? Trng thái ca hu
hành và phn mm, ví dng dng khách-ch.
2.3.4 Giai on 4: ánh giá tin trình kim th
14
Ta ánh giá tin trình kim th da trên o v kt qu kim th. o
này c tính bng vic m mt cái gì ó, ví d: m s ng d liu u vào mà
ta dùng  kim th, s ln gi thc thi ng dng, t l mã ngunã kim soát, m
s ln kt thúc ng dng thành công, s li tìm thy, …
 kim tra tính toàn vn cu trúc, ngi kim có th tr li các câu hi:
• Tôi ã kim tra nhng li lp trình ph bin cha?
• Tôi ã s dng toàn b mã ngun cha?
13
Các mi quan tâm liên quan: related concerns

14
ánh giá tin trình kim th phn mm: Measuring Testing Progress
Chng 2 - Tng quan v kim th phn mm
Trang 13
• Có phi tôi ch tp trung vào d liu bên trong  khi to và s dng?
• Tôi ã tìm ra tt c li khi u cha?
 kim tra tính toàn vn chc nng, ngi kim th nên tr li nhng câu sau:
• Tôi ã ngh ht các cách mà phn mm có th b li và chn nhng cách
kim tra  th hin nó cha?
• Có phi tôi ã áp dng tt c nhng d liu u vào?
• Có phi tôi ã hoàn tt vic kho sát không gian trng thái ca phn
mm?
• Có phi tôi ã chy ht tt c nhng phng án mà tôi ngh rng ngi
dùng có th s thc thi?
2.4 Kim th trong các giai n phát trin phn mm
Chu trình kim th:
1. Phân tích yêu cu: Quá trình kim th nên c bt u t giai on yêu
cu ca phn mm
2. Phân tích thit k: Trong sut giai n thit k, nhóm kim th nên làm
vic vi nhóm phát trin  hiu rõ cách thit k nhm kim th d dàng và sm
n.
3. Lên k hoch kim th.
4. Trình bày kim th: Th tc kim th, kch bn kim th, nhng trng
hp kim th, nhng tp lnh kim th s dng trong quá trình kim th phn
mm.
5. Tin hành kim th: Nhng nhà kim th tin hành thc thi các trng
hp kim th theo bn k hoch ã lp ra và thông báo tt c nhng li tìm c
cho nhóm phát trin.
6. Thông báo kt qu kim th: Khi quá trình kim th thành công, ngi
kim th thông báo kt qu nh các ng dng qun lý tin trình kim th, và tìm

cách thông báo chi tit v li.
Chng 2 - Tng quan v kim th phn mm
Trang 14
Không phi tt c li hoc khuyt m u phi c sa cha bi nhóm
phát trin phn mm. Mt s khuyt m có th do cu hình kim th cha phù
hp vi môi trng phn mm. Mt s li khác có th i  sa  phiên bn mi
ca phn mm, hoc nhng thiu sót có thc ngi dùng chp nhn. Nhóm phát
trin có th b qua nhng li mà h cho rng nó nh hng không áng kn
chng trình.
2.4.1 Kim th trong giai n c t yêu cu
15
2.4.1.1 Kim th yêu cu h thng
Mc ích ca kim th yêu cu h thng là:
1. m bo cu hình phn cng, hu hành phù hp vi phn mm cn
kim th.
2. Chc chn rng mi chc nng h thng phn mm u thc thi tt.
3. m bo các cu hình trong h thng phn mm u c nhn ra.
4. Kim chng s chính xác ca cu trúc h thng phn mm.
5. m bo rng s lung các yêu cu và nhng thuc tính ca yêu cu theo
úng lý thuyt.
6. m bo rng nhng yêu cu có th thc hin c.
2.4.1.2 Kim th yêu cu phn mm
Kim th yêu cu phn mm là kim tra chi tit các yêu cu tng ng vi
nhng module ca phn mm. Mc ích:
1. Xác nhn ã hoàn thành và c t chính xác các yu t sau:
• Nhng chc nng ca phn mm
• Nhp xut
• Trng thái và phng thc
• áp ng nhng yêu cu thi gian
• Giao din

15
Test in requirement
Chng 2 - Tng quan v kim th phn mm
Trang 15
2. m bo rng bn c t yêu cu áng tin cy, có th duy trì c, kh thi
và chính xác.
3. m bo kh nng làm úng các yêu cu  mc cao nht.
4. Xác nhn rng nhng yêu cu ã  cho vic thit k phn mm.
5. Xác nhn nhng yêu cu là thích hp và có th kim tra c.
2.4.2 Kim th trong giai on thit k
16
2.4.2.1 Kim th thit k kin trúc
Mc ích ca vic kim tra thit k kin trúc s là:
1. m bo vic thit k phù hp vi c t yêu cu.
2. m bo tt c các giao din c thit k mt cách úng n.
3. Xem li danh sách các môun và chc nng tng quát ca mi môun.
4. Phát hin các thit k không úng theo yêu cu, sau ó sa cha li theo
yêu cu.
5. Xác nhn cu trúc ca các thành phn ã phù hp vi c t yêu cu.
6. Xác nh các thành phn có th dùng li c.
7. m bo rng thit k bám sát vi c t yêu cu.
8. Xác nhn tính hp l ca các giao din nhp xut.
2.4.2.2 Kim tra thit k chi tit
Mc ích ca vic kim tra thit k chi tit:
1. m bo rng thit phù hp vi c t yêu cu.
2. Xác nhn tính hp l ca tt c thut toán logic, cu trúc d liu, và các
lnh c s dng trong phm vi mi moun.
3. Quyt nh vic thit k chi tit i vi mi môun c chp nhn hay
cn c thit k li?
4. m bo vic thit k bám sát vi bn c t yêu cu.

5. m bo rng tt c các thit ku tuân theo các qui nh và các chun
ã c  ra.
16
test in design
Chng 2 - Tng quan v kim th phn mm
Trang 16
2.4.3 Kim th trong giai n lp trình
17
Mc ích:
1. m bo rng mã ngun phù hp vi c t yêu cu ã c phê duyt.
2. Xác nhn mc chính xác và tính hoàn tt ca vic lp.
3. Xác nhn rng tt c các chi tit thit kã c lp trình.
4. m bo rng vic lp trình theo sát c t yêu cu.
5. m bo rng tt c nhng gì c lp trình u c mô t theo bn thit
k chi tit.
2.5 Ngi kim th
18
 chun b k hoch và thc hin kim th, ngi kim th phi tìm hiu v
phn mm, ngh ra nhng nghip v, d liu u vào và cách phi hp chúng. u
quan trng là phi có k thut gii và k hoch phù hp.
Ngi kim th không ch cn k nng phát trin phn mm tt mà còn phi
hiu rt k v các ngôn ng thông dng, nguyên lý  th và các thut toán. Ngoài
ra, h phi có kh nng nhy bén trong vic phát hin nhng li phc tp. Nói
chung, ngi lp trình cn có kin thc sâu v chuyên môn, còn ngi kim th
phi có kin thc rng.
Hình 2-1 Ngi lp trình
17
SOURCE CODE INSPECTION
18
tester

n phm
Chyên môn
Chng 2 - Tng quan v kim th phn mm
Trang 17
Hình 2-2 Ngi kimth
Hình 2-3 Kin thc cn có ca ngi kim th
n phm
Chuyên môn
Kin thc v
 thut
c t
n phm
Ah! n !
n 
Tin tc c
a ra
Thông tin v
n 
 giao tip
ánh giá
n 
Kin thc
 min
Kinh nghim
Chng 2 - Tng quan v kim th phn mm
Trang 18
2.6 Lung thông tin kim th
Hình 2-4 Mô hình lung thông tin kim th [1]
u vào c cung cp cho tin trình kim th:
• Cu hình phn mm gm: Bn c t yêu cu phn mm, bn c t thit

k và mã ngun ca chng trình.
• Cu hình kim th gm: K hoch và th tc kim th, công c kim th,
trng hp kim th và kt qu d kin.
Tt c các kt qu kim thu c ánh giá bng cách so sánh vi kt qu
d kin, nu có sai khác thì ó có th là li.
Các kt qu kim th s xác nh cht lng và  tin cy ca phn mm.

×