Bài giảng Công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình
Kiꢀm thꢁ (9)
Nguyꢀn Thanh Bình
Khoa Công nghꢁꢂThôngꢂtin
Trưꢃng ðꢄi hꢅc Bách khoa
ðꢄi hꢅc ðà Nꢆng
Nꢂi dung
ꢀ
ꢀ
ꢀ
ꢀ
Giꢃi thiꢄu vꢅ kiꢀm thꢁ
Kiꢀm thꢁ trong tiꢆn trình phát triꢀn
Kiꢀm thꢁ hꢂp ñen
Kiꢀm thꢁ hꢂp trꢇng
2
1
Kiꢀm thꢁ là gì ?
ꢀ
IEEE: Kiꢀm thꢁ là tiꢆn trình vꢈn hành
hꢄ thꢉng hoꢊc thành phꢋn dưꢃi
nhꢌng ñiꢅu kiꢄn xác ñꢍnh, quan sát
hoꢊc ghi nhꢈn kꢆt quꢎ vàꢏñưaꢏraꢏñánh
giá vꢅ hꢄ thꢉng hoꢊc thành phꢋn ñó
ꢀ
Myers: Kiꢀm thꢁ là tiꢆn trình thꢐc thi
chương trình vꢃi mꢑc ñích tìm thꢒy lꢓi
(The art of software testing)
3
Kiꢀm thꢁ là gì ?
ꢀ
Kiꢀm thꢁ ≠ Gꢔ rꢉi (debug)
ꢁ
Kiꢀm thꢁ
• nhꢕm phát hiꢄn lꢓi
ꢁ
Gꢔ rꢉi
• xác ñꢍnh bꢎn chꢒt lꢓi vàꢏñꢍnh vꢍ lꢓi trong
chương trình
• tiꢆn hành sꢁa lꢓi
4
2
Các khái niꢄm
ꢀ
Mꢂt sai sót (error) là mꢂt sꢐ nhꢋm lꢖn hay mꢂt sꢐ
hiꢀu sai trong quá trình phát triꢀn phꢋn mꢅm cꢗa
ngưꢘi phát triꢀn
ꢀ
ꢀ
Mꢂt lꢇi (fault, defect) xuꢒt hiꢄn trong phꢋn mꢅm
như là kꢆt quꢎ cꢗa mꢂt sai sót
Mꢂt hꢈng hóc (failure) là kꢆt quꢎ cꢗa mꢂt lꢓi xuꢒt
hiꢄn làm cho chương trình không hoꢙt ñꢂng ñưꢚc
hay hoꢙt ñꢂng nhưng cho kꢆt quꢎꢏkhôngꢏnhưꢏmongꢏ
ñꢚi
sai sót
lꢇi
hꢈng hóc
5
Các khái niꢄm
ꢀ
Dꢌ liꢄu thꢁ (test data)
ꢁ
dꢌ liꢄu vào cꢋn cung cꢒp cho phꢋn mꢅm
trong khi thꢐc thi
ꢀ
ꢀ
Kꢍch bꢎn kiꢀm thꢁ (test scenario)
các bưꢃc thꢐc hiꢄn khi khi kiꢀm thꢁ
Phán xét kiꢀm thꢁ (test oracle)
ꢁ
ꢁ
ñánh giá kꢆt quꢎ cꢗa kiꢀm thꢁ
• tꢐꢏñꢂng: chương trình
• thꢗꢏcông: con ngưꢘi
6
3
Các khái niꢄm
ꢀ
Kiꢀm thꢁ viên (tester)
ngưꢘi thꢐc hiꢄn kiꢀm thꢁ
Ca kiꢀm thꢁ (test case)
ꢁ
ꢀ
ꢁ
ꢁ
ꢁ
tꢈp dꢌ liꢄu thꢁ
ñiꢅu kiꢄn thꢐc thi
kꢆt quꢎꢏmongꢏñꢚi
7
Các khái niꢄm
8
4
Tiꢆn trình kiꢀm thꢁ
ꢀ
Kiꢀm thꢁꢏthưꢘng bao gꢛm các bưꢃc
ꢁ
thiꢆt kꢆ các ca kiꢀm thꢁ
ꢁ
bưꢃc tꢙo dꢌ liꢄu thꢁ
• kiꢀm thꢁ vꢃi tꢒt cꢎ các dꢌ liꢄu vào là cꢋn thiꢆt
•
không thꢀ kiꢀm thꢁ “vét cꢙn”
• chꢜn tꢈp các dꢌ liꢄu thꢁꢏñꢙi diꢄn tꢝ miꢅn dꢌ liꢄu vào
dꢐa trên các tiêu chuꢞn chꢜn dꢌ liꢄu thꢁ
•
ꢁ
ꢁ
bưꢃc thꢐc thi chương trình trên dꢌ liꢄu thꢁ
• cung cꢒp dꢌ liꢄu thꢁ
• thꢐc thi
• ghi nhꢈn kꢆt quꢎ
bưꢃc quan sát kꢆt quꢎ kiꢀm thꢁ
• thꢐc hiꢄn trong khi hoꢊc sau khi thꢐc thi
• so sánh kꢆt quꢎ nhꢈn ñưꢚc và kꢆt quꢎꢏmongꢏñꢚi
9
Tiꢆn trình kiꢀm thꢁ
10
5
Khóꢏkhănꢏcꢗa kiꢀm thꢁ
ꢀ
Liên quan ñꢆn tiꢆn trình phát triꢀn
ꢁ
gꢛm nhiꢅu giai ñoꢙn phát triꢀn
• cái ra cꢗa mꢂt giai ñoꢙn là cái vào cꢗa giai ñoꢙn khác
• mꢒt mát thông tin
ꢀ
ꢀ
Vꢅ mꢊt con ngưꢘi
ꢁ
thiꢆu ñào tꢙo
ꢁ
ít chú trꢜng vai trò kiꢀm thꢁ
Vꢅ mꢊt kꢟ thuꢈt
ꢁ
không tꢛn tꢙi thuꢈt toán tꢠng quát có thꢀ chꢡng minh
sꢐꢏñúng ñꢇn hoàn toàn cꢗa bꢒt kỳ mꢂt chương trình
nào
11
Tꢙi sao kiꢀm thꢁ
ꢀ
Hꢚp thꢡc hóa (validation)
ꢁ
chꢢ ra rꢕng sꢎn phꢞm ñáp ꢡng ñưꢚc yêu cꢀu ngưꢁi
sꢂ dꢃng
ꢀ
Xác minh (verification)
chꢢ ra rꢕng sꢎn phꢞm thꢣa mãn ñꢄc tꢅ yêu cꢀu
ꢁ
ꢀ
Phân biꢄt hꢚp thꢡc hóa và xác minh
ꢁ
“Verification: Are we building the product right ?”
“Validation: Are we building the right product ?”
ꢁ
12
6
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Các kꢟ thuꢈt kiꢀm thꢁ
ꢁ
kꢟ thuꢈt kiꢀm thꢁ tĩnh (static testing)
kꢟ thuꢈt kiꢀm thꢁꢏñꢂng (dynamic testing)
• kiꢀm thꢁ hꢂp ñen (black-box testing)
ꢁ
•
kꢟ thuꢈt kiꢀm thꢁ chꢡc năng (functional testing)
• kiꢀm thꢁ hꢂp trꢇng (white-box testing)
kꢟ thuꢈt kiꢀm thꢁ cꢒu trúc (structural testing)
•
ꢀ
Các hoꢙt ñꢂng kiꢀm thꢁ/chiꢆn lưꢚc kiꢀm thꢁ
ꢁ
ꢁ
ꢁ
ꢁ
kiꢀm thꢁꢏñơnꢏvꢍ (unit testing)
kiꢀm thꢁ tích hꢚp (integration testing)
kiꢀm thꢁ hꢚp thꢡc hóa (validation testing)
kiꢀm thꢁ hꢛi quy (regression testing)
13
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁꢏñơnꢏvꢍ (unit testing)
ꢁ
ꢁ
ꢁ
kiꢀm thꢁ mꢓi ñơn vꢍ phꢋn mꢅm (mô-ñun)
sꢁ dꢑng kꢟ thuꢈt kiꢀm thꢁ hꢂp ñen
dꢌ liꢄu thꢁꢏñươcꢏtꢙo ra dꢐa trên tài liꢄu thiꢆt
kꢆ
ꢁ
ꢁ
có thꢀ sꢁ dꢑng cꢎ kiꢀm thꢁ hꢂp trꢇng và
kiꢀm thꢁ tĩnh
• phꢋn mꢅm yêu cꢋu chꢒt lưꢚng cao
thưꢘng ñưꢚc thꢐc hiꢄn trên phꢋn cꢡng phát
triꢀn phꢋn mꢅm
14
7
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ tích hꢚp (integration testing)
ꢁ
ꢁ
ꢁ
sau khi ñã thꢐc hiꢄn kiꢀm thꢁꢏñơnꢏvꢍ
ghép nꢉi các ñơn vꢍ/thành phꢋn phꢋn mꢅm
kiꢀm thꢁ sꢐ ghép nꢉi, trao ñꢠi dꢌ liꢄu giꢌa
các ñơn vꢍ/thành phꢋn
ꢁ
ꢁ
sꢁ dꢑng kꢟ thuꢈt kiꢀm thꢁ hꢂp ñen
môt sꢉꢏtrưꢘng hꢚp, sꢁ dꢑng kꢟ thuꢈt kiꢀm
thꢁ hꢂp trꢇng
• chi phí cao, khóꢏkhăn
ꢁ
dꢌ liꢄu thꢁꢏñưꢚc tꢙo ra dꢐa trên thiꢆt kꢆ
tꢠng thꢀ
15
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ tích hꢚp (2)
ꢁ
cꢋn xây dꢐng thêm
• nút trám (stub): các thành phꢋn khác mô
phꢣng các thành phꢋn phꢋn mꢅm chưa
ñưꢚc tích hꢚp
• trình ñiꢆu khiꢇn (driver): các thành phꢋn
tꢙo ra các dꢌ liꢄu vào cho mꢂt vài các
thành phꢋn phꢋn mꢅm trong tꢈp hꢚp
ñang ñưꢚc kiꢀm thꢁ
16
8
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ tích hꢚp (3)
17
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ tích hꢚp (4)
chiꢆn lưꢚc tꢈ trên xuꢉng (top-down)
ꢁ
•
kiꢀm thꢁ tích hꢚp các thành phꢋn chính trưꢃc, sau ñó thêm
vào các thành phꢋn ñưꢚc gꢜi trꢐc tiꢆp bꢔi các thành phꢋn vꢝa
kiꢀm thꢁ
•
•
cho phép xác ñꢍnh sꢃm các lꢓi vꢅ kiꢆn trúc
các bꢂ dꢌ liꢄu thꢁ có thꢀꢏñưꢚc tái sꢁ dꢑng cho các bưꢃc tiꢆp
theo
•
tuy nhiên chiꢆn lưꢚc này ñòi hꢣi phꢎi xây dꢐng nhiꢅu nút trám
ꢁ
chiꢆn lưꢚc tꢈꢊdưꢋi lên (bottom-up)
•
kiꢀm thꢁ các thành phꢋn không gꢜi các thành phꢋn khác, sau
ñó thêm vào các thành phꢋn gꢜi các thành phꢋn vꢝa kiꢀm thꢁ
•
•
ít sꢁ dꢑng các nút trám
nhưng lꢙi xác ñꢍnh lꢓi trꢤꢏhơn
18
9
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ hꢚp thꢡc hóa (validation testing)
ꢁ
còn gꢜi là kiꢀm thꢁ hꢄ thꢉng (system
testing)
ꢁ
ꢁ
thꢐc hiꢄn sau khi kiꢀm thꢁ tích hꢚp kꢆt thúc
chꢡng minh phꢋn mꢅm thꢐc hiꢄn ñúng
mong ñꢚi cꢗa ngưꢘi sꢁ dꢑng
ꢁ
ꢁ
ꢁ
dꢐa vào yêu cꢋu ngưꢘi sꢁ dꢑng
chꢢ sꢁ dꢑng kꢟ thuꢈt kiꢀm thꢁ hꢂp ñen
nên thꢐc hiꢄn trong môi trưꢘng mà phꢋn
mꢅm sꢥꢏñưꢚc sꢁ dꢑng
19
Kiꢀm thꢁ trong tiꢆn trình
phát triꢀn
ꢀ
Kiꢀm thꢁ hꢛi quy (regression testing)
ꢁ
phꢋn mꢅm sau khi ñưa vào sꢁ dꢑng, có thꢀ
có các chꢢnh sꢁa
• có thꢀ phát sinh lꢓi mꢃi
ꢁ
ꢁ
cꢋn kiꢀm thꢁ lꢙi: kiꢀm thꢁ hꢛi quy
thưꢘng tái sꢁ dꢑng các bꢂ dꢌ liꢄu thꢁꢏñãꢏsꢁ
dꢑng trong các giai ñoꢙn trưꢃc
20
10
Kiꢀm thꢁ trong mô hình V
ðꢊc tꢎ yêu cꢋu
Kiꢀm thꢁ hꢚp thꢡc hóa
Thiꢆt kꢆ kiꢆn trúc
Kiꢀm thꢁ tích hꢚp
Thiꢆt kꢆ chi tiꢆt
Kiꢀm thꢁꢏñơnꢏvꢍ
Mã hóa
21
Các kꢟ thuꢈt kiꢀm thꢁ
ꢁ
ꢁ
kꢟ thuꢈt kiꢀm thꢁ tĩnh (static testing)
• không thꢉc thi chương trình
kꢟ thuꢈt kiꢀm thꢁꢏñꢂng (dynamic
testing)
• kiꢀm thꢁ hꢂp ñen (black-box testing)
• kꢟ thuꢈt kiꢀm thꢁ chꢡc năng (functional
testing)
• kiꢀm thꢁ hꢂp trꢇng (white-box testing)
• kꢟ thuꢈt kiꢀm thꢁ cꢒu trúc (structural testing)
22
11
Kiꢀm thꢁ tĩnh
ꢀ
ꢀ
ꢀ
ꢀ
Thanh tra mã nguꢛn (code inspection)
Chꢡng minh hình thꢡc
Thꢐc thi hình thꢡc (symbolic execution)
ðánh giáꢏñꢂ phꢡc tꢙp
ꢁ
McCabe
Nejmeh
ꢁ
23
Kiꢀm thꢁ hꢂp ñen
Inputs causing
anomalous
behaviour
Input test data
I
e
System
Outputs which reveal
the presence of
defects
Output test results
O
e
24
12
Kiꢀm thꢁ hꢂp ñen
ꢀ
Chꢢ cꢋn dꢐa vào ñꢊc tꢎꢏchươngꢏtrình
ꢁ
Xây dꢐng dꢌ liꢄu thꢁꢏtrưꢃc khi mã hóa/lꢈp
trình
ꢀ
Thưꢘng phát hiꢄn các lꢓi ñꢊc tꢎ yêu cꢋu,
thiꢆt kꢆ
ꢀ
ꢀ
Dꢤ dàng thꢐc hiꢄn
Chi phí thꢒp
25
Kiꢀm thꢁ hꢂp ñen
ꢀ
ꢀ
Kiꢀm thꢁ giá trꢍ biên (boundary value
analysis)
Kiꢀm thꢁ lꢃp tương ñương (equivalence
class testing)
ꢀ
ꢀ
ꢀ
Kiꢀm thꢁ ngꢖu nhiên (random testing)
ðꢛ thꢍ nhân-quꢎ (cause-efect graph)
Kiꢀm thꢁ cú pháp
26
13
Kiꢀm thꢁ giá trꢍ biên
ꢀ
Cơ sꢔ
lꢓi thưꢘng xuꢒt hiꢄn gꢋn các giá trꢍ biên cꢗa miꢅn dũ
liꢄu
ꢁ
ꢀ
Tꢈp trung phân tích các giá trꢍ biên cꢗa miꢅn dꢌ liꢄu
ñꢀ xây dꢐng dꢌ liꢄu kiꢀm thꢁ
ꢀ
Nguyên tꢇc: kiꢀm thꢁ các dꢌ liꢄu vào gꢛm
ꢁ
ꢁ
ꢁ
ꢁ
ꢁ
giá trꢍ nhꢣ nhꢒt
giá trꢍ gꢋn kꢅ lꢃn hơn giá trꢍ nhꢣ nhꢒt
giá trꢍ bình thưꢘng
giá trꢍ gꢋn kꢅ nhꢣꢏhơnꢏgiá trꢍ lꢃn nhꢒt
giá trꢍ lꢃn nhꢒt
27
Kiꢀm thꢁ giá trꢍ biên
28
14
Kiꢀm thꢁ giá trꢍ biên
ꢀ
Nguyên tꢇc chꢜn dꢌ liꢄu thꢁ
ꢁ
Nꢆu dꢌ liꢍu vào thuꢎc mꢎt khoꢅng, chꢜn
•
2 giá trꢍ biên
•
4 giá trꢍ = giá trꢍ biên ± sai sꢉ nhꢣ nhꢒt
ꢁ
ꢁ
ꢁ
Nꢆu giá trꢏ vào thuꢎc danh sách các giá trꢏ, chꢜn
•
phꢋn tꢁ thꢡ nhꢒt, phꢋn tꢁ thꢡ hai, phꢋn tꢁ kꢆ cuꢉi và phꢋn tꢁ
cuꢉi
Nꢆu dꢌ liꢄu vào là ñiꢆu kiꢍn ràng buꢎc sꢉ giá trꢏ, chꢜn
•
sꢉ giá trꢍ tꢉi thiꢀu, sꢉ giá trꢍ tꢉi ña và mꢂt sꢉ các sꢉ giá trꢍ
không hꢚp lꢄ
Tꢐ vꢈn dꢑng khꢎꢏnăngꢏvà thꢐc tꢆꢏñꢀ chꢜn các giá trꢍ biên
cꢋn kiꢀm thꢁ
29
Kiꢀm thꢁ giá trꢍ biên
ꢀ
Ví dꢑ (1)
ꢁ
Chương trình nhꢈn vào ba sꢉ thꢐc, kiꢀm tra ba sꢉ
thꢐc có làꢏñꢂ dài ba cꢙnh mꢂt tam giác. Nꢆu làꢏñꢂ dài
ba cꢙnh cꢗa mꢂt tam giác, thì kiꢀm tra xem ñó là tam
giác thưꢘng, cân,ꢏñꢅu cũng như kiꢀm tra ñó là tam
giác nhꢜn, vuông hay tù.
30
15
Kiꢀm thꢁ giá trꢍ biên
ꢀ
Ví dꢑ (2)
Dꢌ liꢄu thꢁ
ꢁ
1, 1, 2
0, 0, 0
Không là tam giác
Chꢢ mꢂt ñiꢀm
4, 0, 3
Mꢂt cꢙnh bꢕng không
Gꢋn là mꢂt tam giác
Tam giác rꢒt nhꢣ
Tam giác rꢒt lꢃn
Tam giác gꢋn ñꢅu
Tam giác gꢋn cân
Tam giác giác gꢋn vuông
Bꢉn giá trꢍ
1, 2, 3.00001
0.001, 0.001, 0.001
99999, 99999, 99999
3.00001, 3, 3
2.99999, 3, 4
3, 4, 5.00001
3, 4, 5, 6
3
Chꢢ mꢂt giá trꢍ
Dꢌ liꢄu vào rꢓng
Giá trꢍ âm
-3, -3, 5
31
Kiꢀm thꢁ lꢃp tương ñương
ꢀ
Ý tưꢔng
ꢁ
phân hoꢙch miꢅn
dꢌ liꢄu vào thành
các lꢃp các dꢌ
liꢄu có quan hꢄ
vꢃi nhau
ꢁ
mꢓi lꢃp dùng ñꢀ
kiꢀm thꢁ mꢂt
chꢡc năng, gꢜi là
lꢋp tương ñương
32
16
Kiꢀm thꢁ lꢃp tương ñương
ꢀ
Ba bưꢃc
ꢁ
ꢁ
ꢁ
ñꢉi vꢃi mꢓi dꢌ liꢄu vào, xác ñꢊnh các lꢋp
tương ñương tꢝ miꢅn dꢌ liꢄu vào
chꢅn dꢌ liꢁu ñꢄi diꢁn cho mꢓi lꢃp tương
ñương
kꢍt hꢎp các dꢌ liꢁu thꢁ bꢔi tích ðꢅ-các ñꢀ
tꢙi ra bꢂ dꢌ liꢄu kiꢀm thꢁ
33
Kiꢀm thꢁ lꢃp tương ñương
ꢀ
Nguyên tꢇc phân hoꢙch các lꢃp tương ñương
ꢁ
ꢁ
ꢁ
Nꢆu dꢌ liꢍu vào thuꢎc mꢎt khoꢅng, xây dꢐng
• 1 lꢃp các giá trꢍ lꢃn hơn
• 1 lꢃp các giá trꢍ nhꢣꢏhơn
• n lꢃp các giá trꢍ hꢚp lꢄ
Nꢆu dꢌ liꢍu là tꢐp hꢑp các giá trꢏ, xây dꢐng
• 1 lꢃp vꢃi tꢈp rꢓng
• 1 lꢃp quá nhiꢅu các giá trꢍ
• n lꢃp hꢚp lꢄ
Nꢆu dꢌ liꢄu vào là ñiꢆu kiꢍn ràng buꢎc, xây dꢐng
• 1 lꢃp vꢃi ràng buꢂc ñưꢚc thꢣa mãn
• 1 lꢃp vꢃi ràng buꢂc không ñưꢚc thꢣa mãn
34
17
Kiꢀm thꢁ lꢃp tương ñương
ꢀ
Ví dꢑ
Bài toán tam giác
ꢁ
Nhꢜn
6,5,3
6,1,6
4,4,4
Vuông
5,6,10
7,4,4
Tù
3,4,5
√2,2,√2
không thꢀ
Thưꢘng
Cân
ðꢅu
không thꢀ
Không là tam giác
-1,2,8
35
Bài tꢈp
ꢀ
Kiꢀm thꢁ giá trꢍ biên
Viꢆt mꢂt chương trình thꢉng kê phân tích mꢂt tꢄp
ꢁ
chꢡa tên vàꢏñiꢀm cꢗa sinh viên trong mꢂt năm hꢜc.
Tꢄp này chꢡa nhiꢅu nhꢒt 100 trưꢘng. Mꢓi trưꢘng
chꢡa tên cꢗa mꢓi sinh viên (20 ký tꢐ), giꢃi tính (1 ký
tꢐ) vàꢏñiꢀm cꢗa 5 môn hꢜc (tꢝꢏ0ꢏñꢆn 10). Mꢑc ñích
chương trình:
• tính diꢀm trung bình mꢓi sinh viên
• tính ñiꢀm trung bình chung (theo giꢃi tính et theo môn
hꢜc)
• tính sꢉ sinh viên lên lꢃp (ñiꢀm trung bình trên 5)
ꢁ
Xây dꢐng dꢌ liꢄu thꢁꢏchoꢏchươngꢏtrình trên bꢔi kiꢀm
thꢁ giá trꢍ biên
36
18
Bài tꢈp
ꢀ
Kiꢀm thꢁ lꢃp tương ñương
ꢁ
Viꢆt chương trình dꢍch, trong ñó có câu lꢄnh FOR,ꢏ
ñꢊc tꢎ câu lꢄnh FOR như sau: “Lꢄnh FOR chꢢ chꢒp
nhꢈn mꢏt tham sꢐ duy nhꢑt là biꢆn ñꢆm. Tên biꢆn
không ñưꢚc sꢁ dꢑng quá hai ký tꢐ khác rꢓng. Sau ký
hiꢄu = là cꢈn dưꢃi và cꢈn trên cꢗa biꢆn ñꢆm. Các cꢈn
trên và cꢈn dưꢃi là các sꢉꢏnguyênꢏdươngꢏvàꢏñưꢚc
ñꢊt giꢌa tꢝ khóa TO”.
ꢁ
Xây dꢐng dꢌ liꢄu thꢁꢏñꢀ kiꢀm thꢁ câu lꢄnh FOR theo
kꢟ thuꢈt kiꢀm thꢁ lꢃp tương ñương
37
Kiꢀm thꢁ hꢂp trꢇng
ꢀ
Dꢐa vào mã nguꢛn/cꢒu trúc chương trình
ꢁ
Xây dꢐng dꢌ liꢄu thꢁ sau khi mã hóa/lꢈp
trình
ꢀ
ꢀ
ꢀ
Thưꢘng phát hiꢄn các lꢓi lꢈp trình
Khó thꢐc hiꢄn
Chi phí cao
38
19
Các kꢟ thuꢈt kiꢀm thꢁ hꢂp
trꢇng
ꢀ
ꢀ
ꢀ
Kiꢀm thꢁ dꢐa trên ñꢛ thꢍ luꢛng ñiꢅu khiꢀn
Kiꢀm thꢁ dꢐa trên ñꢛ thꢍ luꢛng dꢌ liꢄu
Kiꢀm thꢁꢏñꢂt biꢆn (mutation testing)
39
ðꢛ thꢍ luꢛng ñiꢅu khiꢀn
ꢀ
ðꢛ thꢍ luꢛng ñiꢅu khiꢀn (Control Flow Graph -ꢏ
ðTLðK) làꢏñꢛ thꢍ cóꢏhưꢃng, biꢀu diꢤn mꢂt chương
trình
ꢁ
ꢁ
ꢁ
ñꢢnh: biꢀu diꢤn lꢄnh tuꢋn tꢐ hay khꢉi lꢄnh
cung: biꢀu diꢤn các rꢥ nhánh
mꢂt ñꢢnh vào và mꢂt ñꢢnh ra ñưꢚc thêm vào ñꢀ biꢀu
diꢤn ñiꢀm vào và ra cꢗa chương trình
ꢀ
Lꢂ trình (path) trong ðTLðK
ꢁ
xuꢒt phát tꢝꢏñꢢnh vào ñi qua các ñꢢnh vàꢏcungꢏtrongꢏ
ñꢛ thꢍ và kꢆt thúc tꢙi ñꢢnh ra
40
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ phần mềm - Chương 9: Kiểm thử - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_cong_nghe_phan_mem_chuong_9_kiem_thu_nguyen_thanh.pdf