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 đủ
pdf 29 trang baolam 26300 Free
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:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_9_kiem_thu_nguyen_thanh.pdf