KHOA CÔNG NGH THÔNG TIN

Đ I H C THÁI NGUYÊN

Ạ Ọ

Đ tài th c t p chuyên ngành: ự ậ ề

M C LỤ

ỤC

Ụ Ụ

Ề Ể Ề

Ử Ầ ề Ổ ệ ử ầ

M C L C 2 ........................................................................................................... DANH M C CÁC HÌNH 5 ................................................................................... Ụ 6 L I NÓI Đ U .................................................................................................... Ầ TÓM T T N I DUNG 7 ....................................................................................... Ắ Ộ 9 NG 1. T NG QUAN V KI M TH PH N M M ............................. CH ƯƠ 9 1.1 Các khái ni m c b n v ki m th ph n m m ...................................... ơ ả ề ể 1.1.1 Ki m th ph n m m là gì? 9 ................................................................ ề ử ầ 10 .............................................................. ng pháp ki m th 1.1.2 Các ph ử 1.1.2.1 Ki m th tĩnh – Static testing 10 .................................................... THI T K TEST-CASE ươ ể Ế

TRONG KI M TH

PH N M M

Ph m Th Trang

Sinh viên th c hi n : ự ệ ạ ị

L p : ĐHCQ K4A ớ

Giáo viên h ng d n ướ ẫ : Nguy n H ng Tân ễ ồ

Công ngh ph n m m

B môn : ộ ệ ầ ề

Thái Nguyên, tháng 9 năm 2009

2

ử ộ

1.1.3 Các chi n l

ể ế ượ ể ể ể

ấ ộ ể

ử ộ ể ể

ể ể ể ể ộ ố ấ 1.1.5 Các ph ươ ổ

ắ ề

ử ủ ể

ế

ng đ

10 1.1.2.2 Ki m th đ ng – Dynamic testing ............................................ 11 ................................................................. c ki m th ử ể 1.1.3.1 Ki m th h p đen – Black box testing 11 ..................................... ử ộ 12 1.1.3.2 Ki m th h p tr ng – White box testing .................................. ắ ử ộ 13 1.1.3.3 Ki m th h p xám – Gray box testing ...................................... ử ộ 1.1.4 Các c p đ ki m th ph n m m 14 ................................................... ử ầ ề 14 ...................................................... 1.1.4.1 Ki m th đ n v – Unit test ị ử ơ 1.1.4.2 Ki m th tích h p – Intergration Test 15 ...................................... ử ợ 1.1.4.3 Ki m th h th ng – System Test 17 ........................................... ử ệ ố 19 1.1.4.4 Ki m th ch p nh n s n ph m – Acceptance Test ................. ẩ ậ ả ử ấ 1.1.4.5 M t s c p đ ki m th khác 20 .................................................. ử 21 i ........................................... ng pháp ki m th con ng ườ 21 1.1.5.1 T ng duy t – Walkthrough ...................................................... ệ 1.1.5.2 Thanh tra mã ngu n – Code Inspection 22 ..................................... ồ 22 1.2 Nguyên t c ki m th ph n m m ........................................................... ử ầ ể CH 24 NG 2. THI T K TEST – CASE .......................................................... ƯƠ Ế 2.1 Khái ni mệ 24 ................................................................................................ 24 t k test – case ................................................................ 2.2 Vai trò c a thi ủ ế ế t k test – case 24 .................................................................. 2.3 Quy trình thi ế ế 2.3.1 Ki m th h p tr ng - Ki m th bao ph logic 25 ............................. ử ộ ể ắ 26 2.3.1.1 Bao ph câu l nh – Statement Coverage ................................... ủ ệ 2.3.1.2 Bao ph quy t đ nh – Decision coverage 27 ................................. ủ ế ị 2.3.1.3 Bao ph đi u ki n – Condition coverage 28 ................................ ủ ề ệ 30 2.3.1.4 Bao ph quy t đ nh/đi u ki n – Decision/condition coverage ủ ề ế ị 31 2.3.1.5 Bao ph đa đi u ki n – Multiple condition coverage ............... ề ủ 2.3.2 Ki m th h p đen 33 ............................................................................ ử ộ 33 ng – Equivalence Patitioning .................... 2.3.2.1 Phân l p t ng đ ươ ớ ươ 2.3.2.2 Phân tích giá tr biên – Boundary Value Analysis 36 ..................... ị 2.3.2.3 Đ th nguyên nhân – k t qu - Cause & Effect Graphing 37 ....... ế ồ ị 43 i – Error Guessing ......................................................... 2.3.2.4 Đoán l ỗ c 44 ........................................................................................ 2.3.3 Chi n l ế ượ NG 3. ÁP D NG 45 ................................................................................... CH Ụ ƯƠ 45 ..................................................................................................... 3.1 Đ c t ặ ả 3.2 Thi t k test – case 47 .................................................................................. ế ế 3.2.1 V đ th nguyên nhân – k t qu 47 .................................................... ả ẽ ồ ị 50 ng ..................................................................... 3.2.2 Phân l p t ươ ớ ươ 3.2.2.1 Xác đ nh các l p t ng đ 50 ng ................................................ ươ ớ ươ ị 51 .......................................................... 3.2.2.2 Xác đ nh các ca ki m th ử ể ị 51 3.2.3 Phân tích giá tr biên .......................................................................... ị 51 3.2.3.1 Xét các tr ng thái đ u vào ......................................................... ạ ầ

3

3.2.4 Các ph 3.2.3.2 Xét không gian k t quế ắ

Ậ Ế

Ả Ệ

52 ............................................................. ả ng pháp h p tr ng 53 ............................................................. ộ ươ 3.2.4.1 Bao ph câu l nh 53 ....................................................................... ủ ệ 55 ................................................................... 3.2.4.2 Bao ph quy t đ nh ủ ế ị 3.2.4.3 Bao ph đi u ki n 55 ..................................................................... ệ ủ ề 3.2.4.4 Bao ph quy t đ nh – đi u ki n 55 ............................................... ế ị ủ ệ 56 3.2.4.5 Bao ph đa đi u ki n ................................................................ ệ ề ủ K T LU N 57 ....................................................................................................... TÀI LI U THAM KH O 59 ................................................................................. 60 NG D N .............................................. NH N XÉT C A GIÁO VIÊN H Ủ ƯỚ Ậ Ẫ

4

DANH M C CÁC HÌNH

ấ ộ ể

ng trình nh đ ki m th ỏ ể ể

ng trình trong Hình 2.1 t kê các l p t ng đ ng ẫ

ớ ươ ế ồ ị

ệ ệ

ượ ử ụ

ế

ử...............................................................14 ử .................................................26 ..........................................30 ươ ...............................34 ả ơ ả ...........................39 ộ ........................................................................40 ồ ị..............................41 c s d ng khi dò theo đ th ả ...........................................................47 .................................................................................48 Hình 1.1 S đ các c p đ ki m th ơ ồ Hình 2.1 M t ch ươ ộ Hình 2.2 Mã máy cho ch ươ Hình 2.3 M t m u cho vi c li ệ ệ ộ Hình 2.4 Các ký hi u đ th nguyên nhân – k t qu c b n Hình 2.5 Các ký hi u ràng bu c Hình 2.6 Nh ng xem xét đ ữ Hình 3.1 Đ th nguyên nhân – k t qu : ồ ị Hình 3.2 B ng quy t đ nh ả ế ị

5

L I NÓI Đ U

Trong ngành k ngh ph n m m, năm 1979, có m t quy t c n i ti ng là: ổ ế ề ệ ầ ắ ộ ỹ

ổ “Trong m t d án l p trình đi n hình, thì x p x 50% th i gian và h n 50% t ng ộ ự ể ấ ậ ơ ờ ỉ

chi phí đ c s d ng trong ki m th các ch ng trình hay h th ng đã đ c phát ượ ử ụ ử ể ươ ệ ố ượ

tri n”. Và cho đ n nay, sau g n m t ph n 3 th k , quy t c đó v n còn đúng. Đã ầ ế ỷ ế ể ẫ ắ ầ ộ

có r t nhi u ngôn ng , h th ng phát tri n m i v i các công c tích h p cho các ể ữ ệ ố ớ ớ ụ ề ấ ợ

l p trình viên s d ng phát tri n ngày càng linh đ ng. Nh ng ki m th v n đóng ậ ử ụ ử ẫ ư ể ể ộ

vai trò h t s c quan tr ng trong b t kỳ d án phát tri n ph n m m nào. ế ứ ự ề ể ầ ấ ọ

ủ R t nhi u các giáo s , gi ng viên đã t ng than phi n r ng: “ Sinh viên c a ề ằ ừ ư ề ả ấ

chúng ta t t nghi p và đi làm mà không có đ c n thi ố ệ ượ c nh ng ki n th c th c t ế ự ế ầ ự ữ ế t

ng trình. H n n a, chúng ta hi m khi có đ v cách đ ki m th m t ch ề ử ộ ể ể ươ ữ ế ơ ượ c

i khuyên b ích đ cung c p trong các khóa h c m đ u v cách m t sinh nh ng l ữ ờ ở ầ ề ể ấ ổ ộ ọ

i các bài t p c a h ”. viên nên làm v ki m th và g l ề ể ỡ ỗ ử ậ ủ ọ

Các tác gi c a cu n sách n i ti ng ả ủ ổ ế ố “The Art of Software Testing” – Nghệ

thu t ki m th ph n m m ử ề , Glenford J. Myers, Tom Badgett, Todd M. Thomas, ể ậ ầ

Corey Sandler đã kh ng đ nh trong cu n sách c a mình r ng: “ H u h t các thành ủ ằ ẳ ố ị ế ầ

ph n quan tr ng trong các th thu t c a m t nhà ki m th ch ậ ủ ử ươ ủ ể ầ ọ ộ ế ng trình là ki n

th c v cách đ vi t các ca ki m th có hi u qu ”. Vi c xây d ng các test – case ứ ề ể ế ử ự ể ệ ệ ả

là m t nhi m v r t khó khăn. Đ có th xây d ng đ ụ ấ ự ệ ể ể ộ ượ ậ ữ c t p các test – case h u

ích cho ki m th , chúng ta c n r t nhi u ki n th c và kinh nghi m. ầ ấ ử ứ ể ề ế ệ

Đó là nh ng lý do thúc đ y em th c hi n đ tài này. M c đích c a đ tài là ủ ề ữ ự ụ ệ ề ẩ

tìm hi u nh ng ki n th c t ng quan nh t v ki m th , và cách thi t k test – case ấ ề ể ứ ổ ữ ử ể ế ế ế

trong ki m th ph n m m. Vi c th c hi n đ tài s giúp em tìm hi u sâu h n và ệ ử ự ề ệ ề ẽ ể ể ầ ơ

c các ki n th c đã h c đ có th thi lĩnh v c r t h p d n này, v n d ng đ ẫ ự ấ ấ ậ ụ ượ ọ ể ứ ế ể ế ế t k

đ ượ c các test – case m t cách có hi u qu và áp d ng vào nh ng bài toán th c t ả . ự ế ụ ữ ệ ộ

B n báo cáo đ c hoàn thành d i s ch b o t n tình c a th y giáo, ThS ả ượ ướ ự ỉ ả ậ ủ ầ

Nguy n H ng Tân, s giúp đ nhi t tình c a các th y cô trong b môn Công ngh ự ễ ỡ ồ ệ ủ ầ ộ ệ

6

t c các b n. Em hi v ng s nh n đ ph n m m, và t ề ầ ấ ả ẽ ậ ạ ọ ượ ự ế ủ c s đóng góp ý ki n c a

c hoàn thi n h n. Nh ng đóng góp đó các th y cô và các b n đ b n báo cáo đ ạ ể ả ầ ượ ữ ệ ơ

đó, em có th ti p t c phát tri n đ tài s là kinh nghi m quý báu cho em. Và t ẽ ệ ừ ể ế ụ ề ể

t nghi p và đ án t t nghi p s p t này cho đ t th c t p t ợ ự ậ ố ệ ồ ố ệ ắ ớ i, cũng nh cho công ư

vi c trong t ng lai. ệ ươ

Em xin chân thành cám n.ơ

Sinh viên

Ph m Th Trang ạ ị

TÓM TẮT N I DUNG

B n báo cáo đ c chia thành 3 ch ng v i n i dung nh sau: ả ượ ươ ớ ộ ư

• Ch ươ ề ng 1: T ng quan v ki m th ph n m m. ề ể ử ầ ổ

Ch ươ ề ng này là cái nhìn t ng quan v ki m th ph n m m: ử ầ ề ể ổ

ắ các khái ni m c b n v ki m th ph n m m, các quy t c ử ầ ề ể ơ ả ề ệ

trong ki m th , và các ph ử ể ươ ề ng pháp ki m th ph n m m ử ể ầ

tiêu bi u.ể

• Ch ng 2: Thi ươ ế ế ề t k test – case trong ki m th ph n m m. ử ầ ể

Trong ch ng này, em đi tìm hi u các ph ng pháp thi ươ ể ươ ế t

ề ư k test – case có hi u qu . T đó rút ra nh n xét v u ả ừ ế ệ ậ

nh c đi m c a t ng ph ng pháp. ượ ủ ừ ể ươ

• Ch ươ ụ ng 3: Áp d ng.

ng pháp thi T nh ng ph ữ ừ ươ ế ế ể t k test – case đã tìm hi u

trong Ch ng 2, em áp d ng đ xây d ng t p các test – ươ ụ ự ể ậ

7

case cho m t bài toán c th : Thi t k các test – case cho ụ ể ộ ế ế

ch ng trình “Tam giác”. ươ

8

CH

NG 1.

T NG QUAN V KI M TH

ƯƠ

PH N M M

1.1

Các khái ni m c b n v ki m th ph n m m ơ ả ề ể

ử ầ

1.1.1

Ki m th ph n m m là gì?

ử ầ

ầ Ki m th ph n m m là quá trình kh o sát m t h th ng hay thành ph n ả ộ ệ ố ử ầ ề ể

i nh ng đi u ki n xác đ nh, quan sát và ghi l d ướ ữ ề ệ ị ạ i các k t qu , và đánh giá ả ế

m t khía c nh nào đó c a h th ng hay thành ph n đó ủ ệ ố ộ ạ ầ . (Theo B ng chú gi ả ả i

thu t ng chu n IEEE c a Thu t ng k ngh ph n m m- IEEE Standard ữ ỹ ủ ữ ệ ề ầ ậ ậ ẩ

Glossary of Software Engineering Terminology).

Ki m th ph n m m là quá trình th c thi m t ch ng trình v i m c đích ử ầ ự ộ ể ề ươ ớ ụ

tìm l i.ỗ (Theo “The Art of Software Testing” – Ngh thu t ki m th ph n m m ử ầ ậ ể ề ). ệ

Ki m th ph n m m là ho t đ ng kh o sát th c ti n s n ph m hay d ch ự ễ ả ử ầ ạ ộ ể ề ả ẩ ị

ng chúng d đ nh s đ v ph n m m trong đúng môi tr ụ ầ ề ườ ự ị ẽ ượ ằ c tri n khai nh m ể

i có l i ích liên quan nh ng thông tin v ch t l cung c p cho ng ấ ườ ợ ề ấ ượ ữ ủ ng c a

s n ph m hay d ch v ph n m m y. M c đích c a ki m th ph n m m là ả ử ầ ụ ầ ề ấ ủ ụ ể ề ẩ ị

tìm ra các l ỗ ạ i hay khi m khuy t ph n m m nh m đ m b o hi u qu ho t ế ề ệ ế ầ ằ ả ả ả

i u c a ph n m m trong nhi u ngành khác nhau. (Theo Bách khoa đ ng t ộ ố ư ủ ề ề ầ

toàn th m Wikipedia ). ư ở

Có th đ nh nghĩa m t cách d hi u nh sau: ễ ể ể ị ư ộ ộ Ki m th ph n m m là m t ử ầ ể ề

c thi t k đ đ m b o mã hóa ti n trình hay m t t p h p các ti n trình đ ộ ậ ợ ế ế ượ ế ế ể ả ả

máy tính th c hi n theo cái mà chúng đã đ c thi ự ệ ượ ế ế ể ự t k đ làm, và không th c

hi n b t c th gì không mong mu n. Đây là m t pha quan tr ng trong quá ấ ứ ứ ộ ố ọ ệ

i xây d ng h th ng và khách hàng trình phát tri n h th ng, giúp cho ng ệ ố ể ườ ệ ố ự

th y đ c h th ng m i đã đáp ng yêu c u đ t ra hay ch a? ấ ượ ệ ố ầ ặ ư ứ ớ

9

1.1.2

Các ph

ng pháp ki m th

ươ

Có 2 ph ươ ng pháp ki m th chính là: Ki m th tĩnh và Ki m th đ ng. ể ử ộ ử ử ể ể

1.1.2.1

Ki m th tĩnh – Static testing

Là ph ng pháp th ph n m m đòi h i ph i duy t l i các yêu c u và các ươ ệ ạ ử ề ả ầ ỏ ầ

đ c t ặ ả ằ b ng tay, thông qua vi c s d ng gi y, bút đ ki m tra logic, l n t ng chi ấ ệ ử ụ ầ ừ ể ể

ti t mà không c n ch y ch ng trình. Ki u ki m th này th ng đ ế ạ ầ ươ ử ể ể ườ ượ ử ụ c s d ng

i mà vi t mã l nh m t mình. b i chuyên viên thi ở t k ng ế ế ườ ế ệ ộ

Ki m th tĩnh cũng có th đ đ ng hóa. Nó s th c hi n ki m tra toàn c t ể ượ ự ộ ẽ ự ử ệ ể ể

ng trình đ c phân tích b i m t trình thông d ch ho c biên b bao g m các ch ồ ộ ươ ượ ặ ở ộ ị

v cú pháp c a ch ng trình. d ch mà xác nh n tính h p l ị ợ ệ ề ủ ậ ươ

1.1.2.2

Ki m th đ ng – Dynamic testing

ử ộ

Là ph ng pháp th ph n m m thông qua vi c dùng máy ch y ch ng trình ươ ử ệ ề ạ ầ ươ

ng trình. Đó là ki m th d a trên các ca đ đi u tra tr ng thái tác đ ng c a ch ể ề ủ ạ ộ ươ ử ự ể

ki m th xác đ nh b ng s th c hi n c a đ i t ng ki m th hay ch y các ự ự ố ượ ử ủ ể ệ ằ ị ử ể ạ

ch ươ ứ ng trình. Ki m th đ ng ki m tra cách th c ho t đ ng đ ng c a mã l nh, t c ạ ộ ử ộ ủ ứ ệ ể ể ộ

là ki m tra s ph n ng v t lý t h th ng t ả ứ ự ể ậ ừ ệ ố ớ ờ i các bi n luôn thay đ i theo th i ế ổ

gian. Trong ki m th đ ng, ph n m m ph i th c s đ ự ự ượ ử ộ ề ể ả ầ ạ c biên d ch và ch y. ị

Ki m th đ ng th c s bao g m làm vi c v i ph n m m, nh p các giá tr đ u vào ệ ớ ự ự ử ộ ị ầ ề ể ậ ầ ồ

và ki m tra xem li u đ u ra có nh mong mu n hay không. Các ph ư ệ ể ầ ố ươ ể ng pháp ki m

th đ ng g m có ki m th Unit – Unit Tests, Ki m th tích h p – Intergration ử ộ ử ể ồ ử ể ợ

Tests, Ki m th h th ng – ử ệ ố ể System Tests, và Ki m th ch p nh n s n ph m – ử ể ẩ ả ậ ấ

Acceptance Tests.

10

1.1.3

Các chi n l

ế ượ

c ki m th ể

c ki m th thông d ng nh t bao g m: Ki m th Ba trong s nh ng chi n l ố ữ ế ượ ụ ử ể ể ấ ồ ử

h p đen, Ki m th h p tr ng, và Ki m th h p xám. ắ ộ ử ộ ử ộ ể ể

1.1.3.1

– Black box testing

Ki m th h p đen ử ộ

M t trong nh ng chi n l c ki m th quan tr ng là ki m th ế ượ ữ ộ ử h p đen, ử ể ể ộ ọ

ng d li u ng vào/ra . Ki m th h p đen xem ch h ướ ữ ệ , hay h ướ ử ộ ể ươ ộ ng trình nh là m t ư

ấ “h p đen”. M c đích c a b n là hoàn toàn không quan tâm v cách c x và c u ủ ạ ư ử ụ ề ộ

trúc bên trong c a ch ủ ươ ng trình. Thay vào đó, t p trung vào tìm các tr ậ ườ ng h p mà ợ

ch ng trình không th c hi n theo các đ c t c a nó. ươ ặ ả ủ ự ệ

Các ph

ng pháp ki m th h p đen

ươ

ử ộ

Theo h ng ti p c n này, d li u ki m tra đ c l y ch t các đ c t ướ ế ậ ữ ệ ể ượ ấ ỉ ừ . ặ ả

• Phân l p t ng đ ng ớ ươ ươ – Equivalence partitioning.

• Phân tích giá tr biên – Boundary value analysis. ị

• Ki m th m i c p ử ọ ặ – All-pairs testing. ể

• Ki m th fuzz – Fuzz testing. ử ể

– Model-based testing. • Ki m th d a trên mô hình ử ự ể

• Ma tr n d u v t ậ ấ ế – Traceability matrix.

• Ki m th thăm dò – Exploratory testing. ử ể

• Ki m th d a trên đ c t ử ự ể ặ ả – Specification-base testing.

Ki m th d a trên đ c t t p trung vào ki m tra tính thi ử ự ặ ả ậ ể ể ế ầ t th c c a ph n ự ủ

m m theo nh ng yêu c u thích h p. Do đó, ki m th viên nh p d li u vào, và ch ậ ữ ệ ữ ử ề ể ầ ợ ỉ

th y d li u ra t ấ ữ ệ đ i t ừ ố ượ ng ki m th . M c ki m th này th ứ ử ử ể ể ườ ng yêu c u các ca ầ

ki m th tri t đ đ c cung c p cho ki m th viên mà khi đó có th xác minh là ử ệ ể ượ ể ử ể ể ấ

ố đ i v i d li u đ u vào đã cho, giá tr đ u ra (hay cách th c ho t đ ng) có gi ng ị ầ ố ớ ữ ệ ạ ộ ứ ầ

11

c xác đ nh trong ca ki m th đó hay không. Ki m th v i giá tr mong mu n đã đ ớ ố ị ượ ử ể ể ị ử

d a trên đ c t ự ặ ả là c n thi ầ ế ắ t, nh ng không đ đ đ ngăn ch n nh ng r i ro ch c ủ ể ể ư ủ ữ ặ

u, nh

Ư

ượ

c đi m ể

ch n.ắ

Ki m th h p đen không có m i liên quan nào t i mã l nh, và ki m th viên ử ộ ể ố ớ ử ệ ể

ch r t đ n gi n tâm ni m là: m t mã l nh ph i có l i. S d ng nguyên t c “ Hãy ỉ ấ ơ ệ ệ ả ả ộ ỗ ử ụ ắ

đòi h i và b n s đ c nh n”, nh ng ki m th viên h p đen tìm ra l ạ ẽ ượ ỏ ữ ử ể ậ ộ ỗ ữ i mà nh ng

l p trình viên đã không tìm ra. Nh ng, m t khác, ng ậ ư ặ ườ ử ộ i ta cũng nói ki m th h p ể

đen “gi ng nh là đi trong bóng t i mà không có đèn v y”, b i vì ki m th viên ư ố ố ử ể ậ ở

không bi c ki m tra th c s đ c xây d ng nh th nào. Đó ế t các ph n m m đ ầ ề ượ ự ự ượ ể ư ế ự

là lý do mà có nhi u tr ng h p mà m t ki m th viên h p đen vi t r t nhi u ca ề ườ ử ể ợ ộ ộ ế ấ ề

ki m th đ ki m tra m t th gì đó mà đáng l ử ể ể ứ ể ộ ẽ có th ch c n ki m tra b ng 1 ca ể ể ỉ ầ ằ

ki m th duy nh t, và/ho c m t s ph n c a ch ng trình không đ ầ ủ ộ ố ử ể ặ ấ ươ ượ c ki m tra ể

chút nào.

Do v y, ki m th h p đen có u đi m c a “m t s đánh giá khách quan”, ể ộ ự ử ộ ư ủ ể ậ

m t khác nó l i có nh c đi m c a “thăm dò mù”. ặ ạ ượ ủ ể

1.1.3.2

Ki m th h p tr ng – White box testing

ử ộ

Là m t chi n l c ki m th khác, trái ng ế ượ ộ ử ể ượ ử ộ c hoàn toàn v i ki m th h p ớ ể

đen, ki m th h p tr ng hay ki m th h ắ ử ộ ử ướ ể ể ng logic cho phép b n kh o sát c u trúc ạ ấ ả

bên trong c a ch ng trình. Chi n l ủ ươ ế ượ c này xu t phát t ấ ừ ữ ệ ử ằ d li u ki m th b ng ể

ng trình. Ki m th viên s truy c p vào c u trúc s ki m th tính logic c a ch ự ể ủ ử ươ ử ể ẽ ấ ậ

i thu t bên trong ch d li u và gi ữ ệ ả ậ ươ ng trình (và c mã l nh th c hi n chúng). ệ ự ệ ả

Các ph

ng pháp ki m th h p tr ng

ươ

ử ộ

12

• Ki m th giao di n l p trình ng d ng - API testing (application ứ ệ ậ ụ ử ể

programming interface): là ph ng pháp ki m th c a ng d ng s ươ ử ủ ứ ụ ể ử

d ng các API công khai và riêng t . ụ ư • Bao ph mã l nh – Code coverage: ủ ệ ộ t o các ki m tra đ đáp ng m t ứ ể ể ạ

ẩ ề ủ ệ

s tiêu chu n v bao ph mã l nh. ố • Các ph ng pháp gán l i – Fault injection. ươ ỗ

ng pháp ki m th hoán chuy n – Mutation testing • Các ph ươ ử ể ể

methods.

• Ki m th tĩnh – Static testing: ử ể ọ ki m th h p tr ng bao g m m i ắ ử ộ ể ồ

ki m th tĩnh. ử ể

Ph ng pháp ki m th h p tr ng cũng có th đ ươ ử ộ ể ượ ử ụ c s d ng đ đánh giá s ể ể ắ ự

hoàn thành c a m t b ki m th mà đ c t o cùng v i các ph ng pháp ki m th ộ ộ ể ử ủ ượ ạ ớ ươ ể ử

h p đen. Đi u này cho phép các nhóm ph n m m kh o sát các ph n c a 1 h ộ ủ ề ề ầ ầ ả ệ

th ng ít khi đ ố ượ ọ c ki m tra và đ m b o r ng nh ng đi m ch c năng quan tr ng ữ ả ằ ứ ể ể ả

nh t đã đ ấ ượ c ki m tra. ể

1.1.3.3

Ki m th h p xám – Gray box testing

ử ộ

i c u trúc d li u và gi Ki m th h p xám đòi h i ph i có s truy c p t ỏ ử ộ ậ ớ ấ ữ ệ ự ể ả ả i

thu t bên trong cho nh ng m c đích thi ữ ụ ậ ế ế t k các ca ki m th , nh ng là ki m th ử ử ở ư ể ể

i s d ng hay m c h p đen. Vi c thao tác t i d li u đ u vào và đ nh m c ng ứ ườ ử ụ ứ ộ ệ ớ ữ ệ ầ ị

d ng d li u đ u ra là không rõ ràng, gi ng nh m t chi c ạ ư ộ ữ ệ ế “h p xám”, ộ ầ ố ầ b i vì đ u ở

vào và đ u ra rõ ràng là bên ngoài “h p đen” ầ ở ộ ọ ề ệ ố mà chúng ta v n g i v h th ng ẫ

đ c ki m tra. S khác bi t này đ c bi ượ ự ể ệ ặ ệ t quan tr ng khi qu n lý ki m th tích ả ử ể ọ

c vi t b i hai chuyên viên h p – ợ Intergartion testing gi a 2 modun mã l nh đ ữ ệ ượ ế ở

thi t k khác nhau, trong đó ch giao di n là đ c đ a ra đ ki m th . Ki m th ế ế ệ ỉ ượ ư ể ể ử ể ử

t k đ i chi u đ quy t đ nh, ví d , giá tr h p xám có th cũng bao g m c thi ộ ể ả ồ ế ế ố ế ị ụ ế ể ị

biên hay thông báo l i.ỗ

13

1.1.4

Các c p đ ki m th ph n m m

ấ ộ ể

ử ầ

Ki m th ph n m m g m có các c p đ : Ki m th đ n v , Ki m th tích ử ơ ử ử ể ể ề ể ấ ầ ồ ộ ị

ẩ . h p, Ki m th h th ng và Ki m th ch p nh n s n ph m ợ ử ệ ố ử ấ ậ ả ể ể

Hình 1.1 S đ các c p đ ki m th ấ ộ ể ơ ồ ử

1.1.4.1

Ki m th đ n v – Unit test ử ơ ị

M t đ n v là m t thành ph n ph n m m nh nh t mà ta có th ki m th ộ ơ ể ể ề ầ ấ ầ ộ ỏ ị ử

đ c. Ví d , các hàm (Function), th t c ượ ụ ủ ụ (Procedure), l p ớ (Class) hay ph ngươ

c xem là Unit. th c ứ (Method) đ u có th đ ể ượ ề

Vì Unit đ ng có kích th ượ c ch n đ ki m tra th ể ể ọ ườ ướ ạ c nh và ch c năng ho t ứ ỏ

đ ng đ n gi n, chúng ta không khó khăn gì trong vi c t ộ ệ ổ ứ ậ ch c ki m th , ghi nh n ử ể ả ơ

và phân tích k t qu ki m th . N u phát hi n l i, vi c xác đ nh nguyên nhân và ả ể ệ ỗ ử ế ế ệ ị

ng đ i d dàng vì ch khoanh vùng trong m t đ n th Unit kh c ph c cũng t ụ ắ ươ ộ ơ ố ễ ể ỉ

14

đang ki m tra. M t nguyên lý đúc k t t th c ti n: th i gian t n cho Unit Test s ế ừ ự ễ ể ộ ố ờ ẽ

đ t ki m r t nhi u th i gian và chi phí cho vi c ki m th ượ ề c đ n bù b ng vi c ti ằ ệ ế ể ề ệ ệ ấ ờ ử

và s a l i ử ỗ ở các m c ki m th sau đó. ể ứ ử

Unit Test th ng do l p trình viên th c hi n. Công đo n này c n đ ườ ự ệ ạ ầ ậ ượ ự c th c

hi n càng s m càng t t trong giai đo n vi ệ ớ ố ạ ế ể t code và xuyên su t chu kỳ phát tri n ố

ph n m m. Thông th ng, Unit Test đòi h i ki m th viên có ki n th c v thi ề ầ ườ ứ ề ử ế ể ỏ ế t

ng trình. M c đích c a Unit Test là b o đ m thông tin đ k và code c a ch ế ủ ươ ụ ủ ả ả ượ c

x lý và xu t (kh i Unit) là chính xác, trong m i t ử ố ươ ấ ỏ ng quan v i d li u nh p và ớ ữ ệ ậ

ch c năng c a Unit. Đi u này th ng đòi h i t ứ ủ ề ườ ỏ ấ ả ề t c các nhánh bên trong Unit đ u

ph i đ c ki m tra đ phát hi n nhánh phát sinh l i. M t nhánh th ả ượ ể ể ệ ỗ ộ ườ ộ ng là m t

chu i các l nh đ ệ ỗ ượ ệ c th c thi trong m t Unit. Ví d : chu i các l nh sau đi u ki n ụ ự ệ ề ộ ỗ

If và n m gi a then ... else là m t nhánh. Th c t ự ế ệ ể ơ vi c ch n l a các nhánh đ đ n ọ ự ữ ằ ộ

ả gi n hóa vi c ki m th và quét h t Unit đòi h i ph i có k thu t, đôi khi ph i ử ế ệ ể ả ậ ả ỏ ỹ

dùng thu t toán đ ch n l a. ể ọ ự ậ

Cùng v i các m c ki m th khác, Unit Test cũng đòi h i ph i chu n b tr ị ướ c ử ụ ể ả ẩ ớ ỏ

các ca ki m th ( ể ử Test case) ho c k ch b n ki m th ( ặ ị ử Test script), trong đó ch đ nh ể ả ỉ ị

rõ d li u đ u vào, các b ầ ữ ệ ướ c th c hi n và d li u đ u ra mong mu n. Các Test ầ ữ ệ ự ệ ố

case và Test script này nên đ c gi i đ tái s d ng. l ượ ữ ạ ể ử ụ

1.1.4.2

Ki m th tích h p – Intergration Test

Integration test k t h p các thành ph n c a m t ng d ng và ki m th nh ầ ủ ế ợ ộ ứ ụ ử ể ư

m t ng d ng đã hoàn thành. Trong khi Unit Test ki m tra các thành ph n và Unit ộ ứ ụ ể ầ

riêng l thì Intgration Test k t h p chúng l ẻ ế ợ ạ ớ ữ i v i nhau và ki m tra s giao ti p gi a ự ể ế

chúng.

Hai m c tiêu chính c a Integration Test: ủ ụ

i giao ti p x y ra gi a các Unit. • Phát hi n l ệ ỗ ế ả ữ

15

• Tích h p các Unit đ n l thành các h th ng nh ( ơ ẻ ợ ệ ố ỏ Subsystem) và cu iố

cùng là nguyên h th ng hoàn ch nh ( ệ ố ỉ System) chu n b cho ki m th ị ử ở ể ẩ

System Test). m c h th ng ( ứ ệ ố

Trong Unit Test, l p trình viên c g ng phát hi n l ố ắ ệ ỗ ậ i liên quan đ n ch c năng ế ứ

và c u trúc n i t ộ ạ ủ ế i c a Unit. Có m t s phép ki m th đ n gi n trên giao ti p ể ộ ố ử ơ ả ấ

ế gi a Unit v i các thành ph n liên quan khác, tuy nhiên m i giao ti p liên quan đ n ữ ế ầ ớ ọ

Unit ch th t s đ c ki m tra đ y đ khi các Unit tích h p v i nhau trong khi ỉ ậ ự ượ ủ ể ầ ớ ợ

th c hi n Integration Test. ự ệ

Tr m t s ít ngo i l ừ ộ ố ạ ệ , Integration Test ch nên th c hi n trên nh ng Unit đã ự ữ ệ ỉ

đ c ki m tra c n th n tr c đó b ng Unit Test, và t t c các l i m c Unit đã ượ ể ẩ ậ ướ ằ ấ ả ỗ ứ

đ c s a ch a. M t s ng i hi u sai r ng Unit m t khi đã qua giai đo n Unit ượ ử ộ ố ữ ườ ể ạ ằ ộ

Test v i các giao ti p gi ế ớ ả ậ ữ l p thì không c n ph i th c hi n Integration Test n a. ự ệ ả ầ

Th c t ự ế ệ vi c tích h p gi a các Unit d n đ n nh ng tình hu ng hoàn toàn khác. ế ữ ữ ẫ ợ ố

M t chi n l c c n quan tâm trong Integration Test là nên tích h p d n t ng Unit. ế ượ ầ ầ ừ ộ ợ

M t Unit t ộ ạ i m t th i đi m đ ờ ể ộ ượ ợ c tích h p vào m t nhóm các Unit khác đã tích h p ộ ợ

tr c đó và đã hoàn t t các đ t Integration Test tr ướ ấ ợ ướ ể c đó. Lúc này, ta ch c n ki m ỉ ầ

th giao ti p c a Unit m i thêm vào v i h th ng các Unit đã tích h p tr c đó, ớ ệ ố ế ủ ử ớ ợ ướ

đi u này s làm cho s l ố ượ ẽ ề ẽ ả ng can ki m th gi m đi r t nhi u, và sai sót s gi m ấ ử ả ể ề

đáng k .ể

Có 4 lo i ki m th trong Integration Test: ử ể ạ

• Ki m th c u trúc (Structure Test): T ng t ử ấ ể ươ ự ể White Box Test, ki m

th c u trúc nh m b o đ m các thành ph n bên trong c a m t ch ử ấ ủ ả ả ầ ằ ộ ươ ng

ấ trình ch y đúng và chú tr ng đ n ho t đ ng c a các thành ph n c u ạ ộ ủ ế ầ ạ ọ

trúc n i t i c a ch ng trình ch ng h n các câu l nh và nhánh bên ộ ạ ủ ươ ệ ạ ẳ

trong.

• Ki m th ch c năng (Functional Test): T ng t Black Box Test, ử ứ ể ươ ự

ki m th ch c năng ch chú tr ng đ n ch c năng c a ch ng trình, ử ủ ứ ứ ể ế ọ ỉ ươ

ủ mà không quan tâm đ n c u trúc bên trong, ch kh o sát ch c năng c a ế ấ ứ ả ỉ

ch ng trình theo yêu c u k thu t. ươ ậ ầ ỹ

16

• Ki m th hi u năng (Performance Test): ử ệ ể Ki m th vi c v n hành ử ệ ể ậ

c a h th ng. ủ ệ ố

i (Stress Test): Ki m th các gi • Ki m th kh năng ch u t ử ả ị ả ể ử ể ớ ạ ủ i h n c a

h th ng. ệ ố

1.1.4.3

ệ ố – System Test

Ki m thể

ử h th ng

M c đích System Test là ki m th thi ụ ử ể ế ế t k và toàn b h th ng (sau khi tích ộ ệ ố

h p) có th a mãn yêu c u đ t ra hay không. ợ ặ ầ ỏ

System Test b t đ u khi t t c các b ph n c a ph n m m đã đ ắ ầ ấ ả ậ ủ ề ầ ộ ượ ợ c tích h p

thành công. Thông th ng lo i ki m th này t n r t nhi u công s c và th i gian. ườ ố ấ ứ ử ể ề ạ ờ

Trong nhi u tr ề ườ ng h p, vi c ki m th đòi h i m t s thi ử ộ ố ể ệ ợ ỏ ế ị ầ t b ph tr , ph n ụ ợ

m m ho c ph n c ng đ c thù, đ c bi ầ ứ ề ặ ặ ặ ệ ệ ố t là các ng d ng th i gian th c, h th ng ờ ự ụ ứ

phân b , ho c h th ng nhúng. ệ ố ặ ố Ở ứ m c đ h th ng, ng ộ ệ ố ườ i ki m th cũng tìm ử ể

ki m các l i, nh ng tr ng tâm là đánh giá v ho t đ ng, thao tác, s tin c y và các ế ỗ ạ ộ ư ự ề ậ ọ

yêu c u khác liên quan đ n ch t l ng c a toàn h th ng. ấ ượ ế ầ ệ ố ủ

Đi m khác nhau then ch t gi a Integration Test và System Test là System Test ữ ể ố

chú tr ng các hành vi và l i trên toàn h th ng, còn Integration Test chú tr ng s ọ ỗ ệ ố ọ ự

giao ti p gi a các đ n th ho c đ i t ố ượ ữ ế ể ặ ơ ng khi chúng làm vi c cùng nhau. Thông ệ

th ng ta ph i th c hi n Unit Test và Integration Test đ b o đ m m i Unit và s ườ ể ả ự ệ ả ả ọ ự

ng tác gi a chúng ho t đ ng chính xác tr t ươ ạ ộ ữ ướ c khi th c hi n System Test. ệ ự

Sau khi hoàn thành Integration Test, m t h th ng ph n m m đã đ c hình ộ ệ ố ề ầ ượ

thành cùng v i các thành ph n đã đ ầ ớ ượ ậ c ki m tra đ y đ . T i th i đi m này, l p ủ ạ ể ể ầ ờ

ư ộ ệ ố trình viên ho c ki m th viên b t đ u ki m th ph n m m nh m t h th ng ắ ầ ử ử ề ể ể ầ ặ

hoàn ch nh. Vi c l p k ho ch cho System Test nên b t đ u t ắ ầ ừ ệ ậ ế ạ ỉ giai đo n hình ạ

thành và phân tích các yêu c u. ầ

System Test ki m th c các hành vi ch c năng c a ph n m m l n các yêu ử ả ứ ủ ể ề ầ ẫ

ng nh đ tin c y, tính ti n l c u v ch t l ề ầ ấ ượ ư ộ ệ ợ ậ ả i khi s d ng, hi u năng và b o ử ụ ệ

m t. M c ki m th này đ c bi t thích h p cho vi c phát hi n l ứ ử ể ậ ặ ệ ệ ỗ ệ ợ ớ i giao ti p v i ế

17

ph n m m ho c ph n c ng bên ngoài, ch ng h n các l i "t c ngh n" (deadlock) ầ ứ ề ạ ẳ ầ ặ ỗ ẽ ắ

ho c chi m d ng b nh . Sau giai đo n System Test, ph n m m th ụ ề ế ạ ầ ặ ớ ộ ườ ẵ ng đã s n

sàng cho khách hàng ho c ng ặ ườ ẩ i dùng cu i cùng ki m th ch p nh n s n ph m ử ấ ậ ả ể ố

(Acceptance Test) ho c dùng th ( ử Alpha/Beta Test). ặ

Đòi h i nhi u công s c, th i gian và tính chính xác, khách quan, System Test ứ ề ỏ ờ

th ng đ ườ ượ c th c hi n b i m t nhóm ki m th viên hoàn toàn đ c l p v i nhóm ử ộ ậ ự ệ ể ộ ở ớ

i g m nhi u lo i ki m th khác nhau, phát tri n d án. B n thân System Test l ả ự ể ạ ồ ử ề ể ạ

ph bi n nh t g m: ấ ồ ổ ế

• Ki m th ch c năng (Functional Test): B o đ m các hành vi c a h ử ứ ể ủ ệ ả ả

th ng th a mãn đúng yêu c u thi ầ ỏ ố t k . ế ế

• Ki m th hi u năng (Performance Test): B o đ m t ử ệ ể ả ả ố ư i u vi c phân ệ

ư ờ b tài nguyên h th ng (ví d b nh ) nh m đ t các ch tiêu nh th i ổ ệ ố ụ ộ ạ ằ ớ ỉ

gian x lý hay đáp ng câu truy v n... ứ ử ấ

i (Stress Test hay Load Test): • Ki m th kh năng ch u t ử ả ị ả ể ả B o đ m ả

i áp l c cao (ví d nhi u ng h th ng v n hành đúng d ệ ố ậ ướ ự ụ ề ườ ấ i truy xu t

cùng lúc). Stress Test t p trung vào các tr ng thái t ạ ậ ớ ạ ể i h n, các "đi m

ch t", các tình hu ng b t th ế ấ ố ườ ắ ế ố ng nh đang giao d ch thì ng t k t n i ị ư

(xu t hi n nhi u trong ki m tra thi t b nh POS, ATM...)... ể ề ệ ấ ế ị ư

• Ki m th c u hình (Configuration Test). ử ấ ể

• Ki m th b o m t (Security Test): ử ả ể ậ ậ B o đ m tính toàn v n, b o m t ẹ ả ả ả

c a d li u và c a h th ng. ủ ữ ệ

ủ ệ ố • Ki m th kh năng ph c h i (Recovery Test): B o đ m h th ng có ử ả ụ ồ ể ệ ố ả ả

kh năng khôi ph c tr ng thái n đ nh tr ụ ạ ả ổ ị ướ ấ c đó trong tình hu ng m t ố

tài nguyên ho c d li u; đ c bi ữ ệ ặ ặ ệ ệ ố t quan tr ng đ i v i các h th ng ố ớ ọ

giao d ch nh ngân hàng tr c tuy n... ự ư ế ị

Nhìn t quan đi m ng i dùng, các c p đ ki m th trên r t quan tr ng: ừ ể ườ ộ ể ử ấ ấ ọ

ng th c. Chúng b o đ m h th ng đ kh năng làm vi c trong môi tr ủ ả ệ ố ệ ả ả ườ ự

18

L u ý là không nh t thi ư ấ ế t ph i th c hi n t ự ệ ấ ả t c các lo i ki m th nêu trên. ể ử ả ạ

Tùy yêu c u và đ c tr ng c a t ng h th ng, tuỳ kh năng và th i gian cho phép ệ ố ủ ừ ư ả ầ ặ ờ

c a d án, khi l p k ho ch, ng ậ ủ ự ế ạ ườ ữ i Qu n lý d án s quy t đ nh áp d ng nh ng ế ị ụ ự ẽ ả

lo i ki m th nào. ử ể ạ

1.1.4.4

Ki m th ch p nh n s n ph m – Acceptance Test

ử ấ

ậ ả

Thông th ng, sau giai đo n System Test là Acceptance Test, đ c khách ườ ạ ượ

ủ hàng th c hi n (ho c y quy n cho m t nhóm th ba th c hi n). M c đích c a ộ ặ ủ ự ứ ự ụ ệ ệ ề

Acceptance Test là đ ch ng minh ph n m m th a mãn t ể ứ ề ầ ỏ ấ ả t c yêu c u c a khách ầ ủ

hàng và khách hàng ch p nh n s n ph m (và tr ti n thanh toán h p đ ng). ẩ ậ ả ả ề ấ ợ ồ

ọ Acceptance Test có ý nghĩa h t s c quan tr ng, m c dù trong h u h t m i ế ứ ế ầ ặ ọ

tr ng h p, các phép ki m th c a System Test và Acceptance Test g n nh ườ ử ủ ể ầ ợ ư

ng t , nh ng b n ch t và cách th c th c hi n l i r t khác bi t. t ươ ự ệ ạ ấ ự ứ ư ấ ả ệ

Đ i v i nh ng s n ph m dành bán r ng rãi trên th tr ng cho nhi u ng ố ớ ị ườ ữ ẩ ả ộ ề ườ i

ng s thông qua hai lo i ki m th g i là ki m th Alpha – s d ng, thông th ử ụ ườ ử ọ ử ể ẽ ể ạ

Alpha Test và ki m th Beta – Beta Test. V i Alpha Test, ng i dùng ki m th ử ể ớ ườ ể ử

ph n m m ngay t ề ầ ạ ơ i n i phát tri n ph n m m, l p trình viên s ghi nh n các l ậ ể ề ẽ ầ ậ ỗ i

ho c ph n h i, và lên k ho ch s a ch a. V i Beta Test, ph n m m s đ ẽ ượ ử c g i ử ữ ế ề ầ ặ ả ạ ồ ớ

i cho ng t ớ ườ i dùng đ ki m th ngay trong môi tr ử ể ể ườ ng th c, l ự ỗ ồ i ho c ph n h i ả ặ

cũng s g i ng i cho l p trình viên đ s a ch a. ẽ ử c l ượ ạ ể ử ữ ậ

Th c t cho th y, n u khách hàng không quan tâm và không tham gia vào quá ự ế ế ấ

trình phát tri n ph n m m thì k t qu Acceptance Test s sai l ch r t l n, m c dù ấ ớ ề ể ẽ ế ệ ả ặ ầ

ph n m m đã tr i qua t ề ầ ả ấ ả t c các ki m th tr ể ử ướ ế c đó. S sai l ch này liên quan đ n ự ệ

ộ vi c hi u sai yêu c u cũng nh s mong ch c a khách hàng. Ví d đôi khi m t ờ ủ ư ự ụ ể ệ ầ

ph n m m xu t s c v ấ ắ ề ầ ượ ở t qua các phép ki m th v ch c năng th c hi n b i ử ề ứ ự ể ệ

nhóm th c hi n d án, nh ng khách hàng khi ki m th sau cùng v n th t v ng vì ấ ọ ư ự ử ự ệ ể ẫ

b c c màn hình nghèo nàn, thao tác không t ố ụ ự ử ụ nhiên, không theo t p quán s d ng ậ

c a khách hàng v.v... ủ

19

ng là m t nhóm nh ng d ch v G n li n v i giai đo n Acceptance Test th ạ ề ắ ớ ườ ữ ộ ị ụ

và tài li u đi kèm, ph bi n nh h ổ ế ư ướ ệ ệ ng d n cài đ t, s d ng v.v... T t c tài li u ặ ử ụ ấ ả ẫ

đi kèm ph i đ ả ượ ậ c c p nh t và ki m th ch t ch . ẽ ể ử ặ ậ

1.1.4.5

M t s c p đ ki m th khác

ộ ố ấ ộ ể

Ngoài các c p đ trên, còn m t s c p đ ki m th khác nh : ộ ố ấ ộ ể ử ư ấ ộ

Ki m th h i quy – Regression Testing:

ử ồ

Theo chu n IEEE610.12-90, ki m th h i quy là “s ki m tra l ể ự ể ử ồ ẩ ạ ọ i có l a ch n ự

c a m t h th ng hay thành ph n đ xác minh là nh ng s thay đ i không gây ra ủ ộ ệ ố ự ữ ể ầ ổ

nh ng h u qu không mong mu n…”. Trên th c t ự ế ữ ậ ả ố ằ , quan ni m này là ch ra r ng ệ ỉ

ph n m m mà đã qua đ c đó v n có th đ c ki m tra l ề ầ ượ c các ki m tra tr ể ướ ể ượ ẫ ể ạ i.

Beizer đ nh nghĩa đó là s l p l ự ặ ạ ị ủ i các ki m tra đ ch ra r ng cách ho t đ ng c a ằ ạ ộ ể ỉ ể

t ph n m m không b thay đ i, ngo i tr ị ạ ừ ớ ề ầ ổ i m c nh yêu c u. Hi n nhiên là s ầ ứ ư ể ự

c th c hi n gi a s đ m b o đ th a hi p ph i đ ệ ả ượ ỏ ữ ự ả ự ệ ả ượ ư ử ồ c đ a ra b i ki m th h i ể ở

quy m i l n th c hi n m t s thay đ i và nh ng tài nguyên đ ộ ự ỗ ầ ữ ự ệ ổ ượ ự c yêu c u th c ầ

hi n đi u đó. ề ệ

Ki m th tính đúng – Correctness testing:

Tính đúng đ n là yêu c u t ắ ầ ố ủ ế ủ i thi u c a ph n m m, là m c đích ch y u c a ể ủ ụ ề ầ

ki m th . Ki m th tính đúng s c n m t ki u ng i đáng tin nào đó, đ ch ra ẽ ầ ử ử ể ể ể ộ ườ ể ỉ

cách ho t đ ng đúng đ n t cách ho t đ ng sai l m. Ki m th viên có th bi ạ ộ ắ ừ ạ ộ ể ế t ử ể ầ

ho c không bi t các chi ti t bên trong c a các modun ph n m m đ ặ ế ế ủ ề ầ ượ ử c ki m th , ể

ộ ví d lu ng đi u khi n, luông d li u, v.v …. Do đó, ho c là quan đi m h p ụ ồ ữ ệ ề ể ể ặ

tr ng, ho c là quan đi m h p đen có th đ ể ể ượ ắ ặ ộ ầ c th c hi n trong ki m th ph n ử ự ể ệ

m m.ề

20

1.1.5

Các ph

ng pháp ki m th con ng

i

ươ

ườ

Hai ph ng pháp ki m th con ng Code Inspections và ươ ử ể ườ i ch y u là ủ ế

Walkthroughs. Hai ph i đ c và ki m tra ươ ng pháp này bao g m m t nhóm ng ồ ộ ườ ọ ể

i mà không g theo mã l nh c a ch ệ ủ ươ ng trình. M c tiêu c a chúng là đ tìm ra l ủ ụ ể ỗ ỡ

i.ỗ l

ng pháp ki m tra M t ộ Inspection hay Walkthrough là 1 s c i ti n c a ph ự ả ế ủ ươ ể

mà l p trình viên đ c ch ng trình c a h tr c khi ki m th nó. Inspections và ậ ọ ươ ủ ọ ướ ử ể

ng trình Walkthroughs hi u qu h n là b i vì nh ng ng ả ơ ữ ệ ở ườ i khác s ki m th ch ẽ ể ử ươ

t h n chính tác gi c a ch ng trình đó. t ố ơ ả ủ ươ

ệ Inspections/Walkthroughs và ki m th b ng máy tính b sung cho nhau. Hi u ử ằ ể ổ

qu tìm l i s kém đi n u thi u đi 1 trong 2 ph ả ỗ ẽ ế ế ươ ệ ử ổ ng pháp. Và đ i v i vi c s a đ i ố ớ

ch ng trình cũng nên s d ng các ph ng pháp ki m th này cũng nh các k ươ ử ụ ươ ư ử ể ỹ

thu t ki m th h i quy. ử ồ ể ậ

1.1.5.1

T ng duy t – Walkthrough

s xem xét k l Walkthrough là m t thu t ng mô t ộ ữ ậ ả ự ỹ ưỡ ng c a m t quá trình ộ ủ

m c tr u t ng trong đó nhà thi t k hay l p trình viên lãnh đ o các thành viên ở ứ ừ ượ ế ế ậ ạ

trong nhóm và nh ng ng ữ ườ ề i có quan tâm khác thông qua m t s n ph m ph n m m, ộ ả ầ ẩ

và nh ng ng ữ ườ i tham gia đ t câu h i, và ghi chú nh ng l ỏ ữ ặ ỗ ạ i có th có, s vi ph m ự ể

ủ ụ các chu n phát tri n và các v n đ khác. Walkthrough mã l nh là 1 t p các th t c ể ệ ề ậ ấ ẩ

và các công ngh dò l i cho vi c đ c nhóm mã l nh. Trong m t ệ ỗ ộ Walkthrough, ệ ệ ọ

nhóm các nhà phát tri n – v i 3 ho c 4 thành viên là t ể ặ ớ ố ệ t nh t – th c hi n xét duy t ự ệ ấ

i. Ch 1 trong các thành viên là tác gi c a ch ng trình. l ạ ỉ ả ủ ươ

M t u đi m khác c a ể ộ ư ủ walkthroughs, hi u qu trong chi phí g l ỡ ỗ ệ ả ự i, là 1 th c

mà khi m t l ng đ c đ nh v chính xác trong mã l nh. t ế i đ ộ ỗ ượ c tìm th y, nó th ấ ườ ượ ị ệ ị

Thêm vào đó, ph ng pháp này th ng tìm ra 1 t p các l i, cho phép sau đó các l ươ ườ ậ ỗ ỗ i

đó đ c s a t ượ ử ấ ả ớ ệ t c v i nhau. M t khác, ki m th d a trên máy tính,ch tìm ra tri u ử ự ể ặ ỉ

21

ch ng c a l i (ch ng trình không k t thúc ho c đ a ra k t qu vô nghĩa), và các ủ ỗ ứ ươ ặ ư ế ế ả

i th ng đ c tìm ra và s a l n l t t ng l l ỗ ườ ượ ử ầ ượ ừ ỗ i m t. ộ

1.1.5.2

Thanh tra mã ngu n – Code Inspection ồ

Thanh tra mã ngu n là 1 t p h p các th t c và các k thu t dò l ủ ụ ậ ậ ồ ợ ỹ ỗ ệ i cho vi c

ng g m 4 ng i. M t trong s đ c các nhóm mã l nh. M t nhóm ki m duy t th ọ ể ệ ệ ộ ườ ồ ườ ộ ố

đó đóng vai trò là ng t – m t l p trình viên lão luy n và không đ c là ườ i đi u ti ề ế ộ ậ ệ ượ

tác gi c a ch ng trình và ph i không quen v i các chi ti t c a ch ng trình. ả ủ ươ ả ớ ế ủ ươ

Ng ườ i đi u ti ề ế ể t có nhi m v : phân ph i nguyên li u và l p l ch cho các bu i ki m ậ ị ụ ệ ệ ổ ố

duy t, ch đ o phiên làm vi c, ghi l t c các l i t c tìm th y và đ m b o là ỉ ạ ệ ệ ạ ấ ả i đ ỗ ượ ấ ả ả

các l i sau đó đ c s a. Thành viên th hai là m t l p trình viên. Các thành viên ỗ ượ ử ộ ậ ứ

còn l i trong nhóm th ng là nhà thi t k c a ch ng trình ( n u nhà thi ạ ườ ế ế ủ ươ ế ế ế t k

khác l p trình viên) và m t chuyên viên ki m th . ử ộ ể ậ

1.2

Nguyên t c ki m th ph n m m

ử ầ

ả Đ ki m th đ t hi u qu thì khi ti n hành ki m th ph n m m c n ph i ế ể ể ử ạ ử ể ề ệ ầ ầ ả

tuân th m t s quy t c sau: ủ ộ ố ắ

Quy t c 1ắ : M t ph n quan tr ng c a 1 ca ki m th là đ nh nghĩa c a đ u ra ủ ầ ử ủ ộ ọ ể ầ ị

hay k t qu mong mu n. ố ế ả

ki m tra ch Quy t c 2ắ : L p trình viên nên tránh t ậ ự ể ươ ng trình c a mình. ủ

Quy t c 3ắ : Nhóm l p trình không nên ki m th ch ử ươ ể ậ ng trình c a chính h . ọ ủ

Quy t c 4ắ : Ki m tra th u đáo m i k t qu c a m i ki m tra. ỗ ể ọ ế ả ủ ể ấ

c vi t cho các tr ng thái đ u vào không Quy t c 5ắ : Các ca ki m th ph i đ ử ả ượ ể ế ạ ầ

h p l và không mong mu n, cũng nh cho các đ u vào h p l và ợ ệ ợ ệ ư ố ầ

mong mu n.ố

ng trình đ xem li u ch ng trình có th c hi n cái Quy t c 6ắ : Kh o sát 1 ch ả ươ ể ệ ươ ự ệ

mà nó c n th c hi n ch là 1 ph n, ph n còn l ỉ ự ệ ầ ầ ầ ạ ệ i là xem li u

22

ch ng trình có th c hi n cái mà nó không c n ph i th c hi n hay ươ ả ự ự ệ ệ ầ

không.

ng trình th c s là 1 Quy t c 7ắ : Tránh các ca ki m th bâng qu tr khi ch ể ơ ừ ử ươ ự ự

ch ươ ng trình bâng qu . ơ

thi t ng m là không Quy t c 8ắ : Không d ki n k t qu c a ki m th theo gi ự ế ế ả ủ ử ể ả ế ầ

tìm th y l i. ấ ỗ

i l i trong 1 đo n ch ng trình là t ng ng v i s Quy t c 9ắ : Xác su t t n t ấ ồ ạ ỗ ạ ươ ươ ứ ớ ố

i đã tìm th y trong đo n đó. l ỗ ạ ấ

: Ki m th là 1 nhi m v c c kỳ sáng t o và có tính th thách trí Quy t c 10ắ ụ ự ử ử ệ ể ạ

tu .ệ

23

CH

NG 2.

THI T K TEST – CASE

ƯƠ

2.1

Khái ni mệ

Thi ế ế t k test – case trong ki m th ph n m m là quá trình xây d ng các ầ ự ử ể ề

ph ươ ng pháp ki m th có th phát hi n l ử ệ ỗ ể ể ề i, sai sót, khuy t đi m c a ph n m m ể ủ ế ầ

đ xây d ng ph n m m đ t tiêu chu n. ể ự ề ẩ ạ ầ

2.2

Vai trò c a thi

t k test – case

ế ế

t nh t có kh năng phát hi n ra l i, sai sót • T o ra các ca ki m th t ử ố ể ạ ệ ấ ả ỗ

c a ph n m m m t cách nhi u nh t. ộ ủ ề ề ấ ầ

• T o ra các ca ki m th có chi phí r nh t, đ ng th i t n ít th i gian và ờ ố ử ẻ ể ấ ạ ồ ờ

công s c nh t. ứ ấ

2.3

Quy trình thi

t k test – case

ế ế

M t trong nh ng lý do quan tr ng nh t trong ki m th ch ng trình là thi ử ươ ữ ể ấ ộ ọ ế t

k và t o ra các ca ki m th - các Test case có hi u qu . V i nh ng ràng bu c v ế ả ớ ộ ề ữ ử ể ệ ạ

th i gian và chi phí đã cho, thì v n đ then ch t c a ki m th tr thành: ề ố ủ ử ở ể ấ ờ

T p con nào c a t t c ca ki m th có th có kh năng tìm ra nhi u l ủ ấ ả ề ỗ ử ể ể ả ậ i nh t? ấ

Thông th ng, ph ng pháp kém hi u qu nh t là ki m tra t t c đ u vào ườ ươ ệ ể ả ấ ấ ả ầ

ng u nhiên – quá trình ki m th m t ch ử ộ ể ẫ ươ ộ ng trình b ng vi c ch n ng u nhiên m t ệ ằ ẫ ọ

t p con các giá tr đ u vào có th . V m t kh năng tìm ra nhi u l ậ ể ề ặ ị ầ ề ỗ ả ợ i nh t, t p h p ấ ậ

các ca ki m th đ ể ử ượ c ch n ng u nhiên có r t ít c h i là t p h p t ấ ơ ộ ợ ố ư ầ i u hay g n ẫ ậ ọ

i u. Sau đây là m t s ph t ố ư ộ ố ươ ử ộ ng pháp đ ch n ra m t t p d li u ki m th m t ộ ậ ữ ệ ể ọ ể

cách thông minh.

24

ể Đ ki m th h p đen và ki m th h p tr ng m t cách th u đáo là không th . ể ể ử ộ ử ộ ể ấ ắ ộ

c ki m th h p lý là chi n l Do đó, m t chi n l ộ ế ượ ử ợ ế ượ ể ạ c có th k t h p s c m nh ể ế ợ ứ

c a c hai ph ủ ả ươ ặ ừ ằ ng pháp trên: Phát tri n 1 cu c ki m th nghiêm ng t v a b ng ử ể ể ộ

vi c s d ng các ph ng pháp thi ng h p đen nào đó và sau ệ ử ụ ươ ế ế t k ca ki m th h ể ử ướ ộ

đó b sung thêm nh ng ca ki m th này b ng vi c kh o sát tính logic c a ch ữ ủ ử ệ ể ằ ả ổ ươ ng

trình, s d ng ph ử ụ ươ ng pháp h p tr ng. ộ ắ

Nh ng chi n l c k t h p đó bao g m: ế ượ ế ợ ữ ồ

1. Phân l p t H p đen ng đ ng ộ ớ ươ ươ H p tr ng ắ 1. Bao ph câu l nh ệ ủ

2. Phân tích giá tr biên ị 2. Bao ph quy t đ nh ủ ế ị

3. Đ th nguyên nhân – k t qu ồ ị ế ả 3. Bao ph đi u ki n ệ ủ ề

4. Đoán l 4. Bao ph đi u ki n – quy t đ nh iỗ ủ ề ế ị ệ

5. Bao ph đa đi u ki n. ủ ệ ề

ng pháp có nh ng u đi m cũng nh khuy t đi m riêng, do đó đ M i ph ỗ ươ ư ư ữ ế ể ể ể

có đ c t p các ca ki m th t i u, chúng ta c n k t h p h u h t các ph ượ ậ ử ố ư ế ợ ế ể ầ ầ ươ ng

pháp. Quy trình thi t k các ca ki m th s b t đ u b ng vi c phát tri n các ca ế ế ử ẽ ắ ầ ể ệ ể ằ

ki m th s d ng ph ử ử ụ ể ươ ể ng pháp h p đen và sau đó phát tri n b sung các ca ki m ể ộ ổ

th c n thi t v i ph ử ầ ế ớ ươ ng pháp h p tr ng. ộ ắ

2.3.1

Kiểm thử hộp trắng - Ki m th bao ph logic

Ki m th h p tr ng có liên quan t ắ ử ộ ể ớ ệ i m c đ mà các ca ki m th th c hi n ứ ộ ử ự ể

hay bao ph tính logic (mã ngu n) c a ch ủ ủ ồ ươ ơ ả ng trình. Ki m th h p tr ng c b n ử ộ ể ắ

là vi c th c hi n m i đ ng đi trong ch ọ ườ ự ệ ệ ươ ng trình, nh ng vi c ki m th đ y đ ệ ử ầ ư ể ủ

đ ng đi là m t m c đích không th c t cho m t ch ườ ự ế ụ ộ ộ ươ ặ ng trình v i các vòng l p. ớ

Các tiêu chu n trong ki m th bao ph logic g m có: ử ủ ể ẩ ồ

25

2.3.1.1

Bao ph câu l nh – Statement Coverage

T t ng: ng trình ít nh t 1 l n. ư ưở Th c hi n m i câu l nh trong ch ự ệ ệ ọ ươ ầ ấ

Xét ví d v i đo n mã l nh JAVA sau: ụ ớ ệ ạ

public void foo (int a, int b, int x){

if (a>1 && b==0) {

x=x/a;}

if (a==2||x>1){

x=x+1;

}

}

Hình 2.1 M t ch ộ ươ ng trình nh đ ki m th ử ỏ ể ể

26

t 1 ca ki m th đ n đi qua B n có th th c hi n m i câu l nh b ng vi c vi ọ ể ự ệ ệ ệ ằ ạ ế ử ơ ể

đ ng ace. T c là, b ng vi c đ t A=2, B=0 và X=3 t ườ ứ ệ ặ ằ ạ i đi m a, m i câu l nh s ỗ ể ệ ẽ

đ c th c hi n 1 l n (th c t , X có th đ c gán b t kỳ giá tr nào). ượ ự ế ự ệ ầ ể ượ ấ ị

Th ng tiêu chu n này khá kém. Ví d , có l n u quy t đ nh đ u tiên là phép ườ ụ ẩ ẽ ế ế ị ầ

or ch không ph i phép and thì l ứ ả ỗ i này s không đ ẽ ượ ế c phát hi n. Hay n u quy t ế ệ

i này cũng s không đ c tìm ra. Cũng v y, có đ nh th hai mà b t đ u v i ị ắ ầ ớ x>0, l ứ ỗ ẽ ượ ậ

1 đ ng đi qua ch ng trình mà đó x không thay đ i (đ ng đi ườ ươ ở ổ ườ abd). N u đây là ế

1 l i, thì l i này có th không tìm ra. Hay nói cách khác, tiêu chu n bao ph câu ỗ ỗ ủ ể ẩ

ng là vô ích. l nh quá y u đ n n i mà nó th ệ ế ỗ ế ườ

2.3.1.2

Bao ph quy t đ nh – Decision coverage

ế ị

T t ng: t đ các ca ki m th mà m i quy t đ nh có k t lu n đúng hay ư ưở Vi ế ủ ế ị ử ế ể ậ ỗ

sai ít nh t 1 l n. Nói cách khác, m i h ng phân nhánh ph i đ c xem xét k ỗ ướ ầ ấ ả ượ ỹ

l ưỡ ng ít nh t 1 l n. ấ ầ

Các ví d v câu l nh r nhánh hay quy t đ nh là các câu l nh switch, do- ụ ề ế ị ệ ệ ẽ

while, và if-else. Các câu l nh đa đ ng GOTO th ng s d ng trong m t s ngôn ệ ườ ườ ộ ố ử ụ

ng l p trình nh FORTRAN. ữ ậ ư

Bao ph quy t đ nh th ng th a mãn bao ph câu l nh. Vì m i câu l nh là ế ị ủ ườ ủ ệ ệ ỏ ỗ

trên s b t ngu n m t đ ng đi ph nào đó ho c là t ự ắ ộ ườ ồ ụ ặ ừ 1 câu l nh r nhánh ho c là ẽ ệ ặ

đi m vào c a ch ng trình, m i câu l nh ph i đ t ừ ể ủ ươ ả ượ ệ ỗ ế c th c hi n n u m i quy t ế ự ệ ỗ

c th c hi n. Tuy nhiên, có ít nh t 3 ngo i l đ nh r nhánh đ ị ẽ ượ : ạ ệ ự ệ ấ

ng trình không có quy t đ nh. • Nh ng ch ữ ươ ế ị

ng trình hay th ng trình con/ph • Nh ng ch ữ ươ ườ ươ ề ng th c v i nhi u ứ ớ

đi m vào. M t câu l nh đã cho có th đ ệ ể ượ ể ộ ỉ ế c th c hi n n u và ch n u ế ự ệ

ch ng trình đ c nh p vào t ươ ượ ể ậ ạ

i 1 đi m đ u vào riêng. ầ • Các câu l nh bên trong các ON-unit. Vi c đi qua m i h ng r nhánh ệ ệ ỗ ướ ẽ

t làm cho t t c các ON-unit đ s là không nh t thi ẽ ấ ế ấ ả ượ c th c thi. ự

27

Vì chúng ta đã th y r ng bao ph câu l nh là đi u ki n c n thi ủ ấ ằ ệ ề ệ ầ ế ộ t, nên m t

chi n l t h n là bao ph quy t đ nh nên đ c đ nh nghĩa bao hàm c bao ph c t ế ượ ố ơ ế ị ủ ượ ị ả ủ

ậ câu l nh. Do đó, bao ph quy t đ nh yêu c u m i quy t đ nh ph i có k t lu n ế ị ế ị ủ ệ ế ầ ả ỗ

c th c hi n ít nh t 1 l n. đúng ho c sai, và m i câu l nh đó ph i đ ỗ ả ượ ệ ặ ự ệ ấ ầ

Ph ng pháp này ch xem xét nh ng quy t đ nh hay nh ng s phân nhánh 2 ươ ế ị ữ ữ ự ỉ

đ ng và ph i đ c s a đ i cho nh ng ch ườ ả ượ ử ổ ữ ươ ng trình có ch a nh ng quy t đ nh đa ữ ế ị ứ

đ ng trình JAVA có ch a các l nh select (case), các ch ườ ng. Ví d , các ch ụ ươ ứ ệ ngươ

trình FORTRAN ch a các l nh s h c (ba đ ng) if ho c các l nh tính toán hay s ố ọ ứ ệ ườ ệ ặ ố

ng trình COBOL ch a các l nh h c ọ GOTO, và các ch ươ ệ GOTO bi n đ i hay các ế ứ ổ

ng trình l nh ệ GO-TO-DEPENDING-ON (các l nh goto ph thu c). V i nh ng ch ụ ữ ệ ộ ớ ươ

nh v y, tiêu chu n này đang s d ng m i k t lu n có th c a t ử ụ ể ủ ấ ả ỗ ế ư ậ ế t c các quy t ậ ẩ

i ch ng trình hay th ng trình con ít đ nh ít nh t 1 l n và g i m i đi m vào t ị ể ấ ầ ọ ỗ ớ ươ ườ

nh t 1 l n. ấ ầ

c b i ít nh t 2 ca ki m th Trong hình 2.1, bao ph quy t đ nh có th đ t đ ủ ể ạ ượ ở ế ị ể ấ ử

ng bao ph các đ ủ ườ ace và abd ho c ặ acd và abe. N u chúng ta ch n kh năng th ế ả ọ ứ

hai, thì 2 đ u vào test-case là A=3, B=0, X=3 và A=2, B=1, X=1. ầ

ẫ Bao ph quy t đ nh là 1 tiêu chu n m nh h n bao ph câu l nh, nh ng v n ạ ế ị ư ủ ủ ệ ẩ ơ

ng trong đó x khá y u. Ví d , ch có 50% c h i là chúng ta s tìm ra con đ ơ ộ ụ ế ẽ ỉ ườ

không b thay đ i (ví d , ch khi b n ch n kh năng th nh t). N u quy t đ nh th ọ ứ ấ ế ị ụ ế ạ ả ổ ị ỉ ứ

hai b l ph i nói là x<1 thay vì x>1), l ị ỗ i (n u nh đáng l ư ế ẽ ả ỗ i này s không đ ẽ ượ c

phát hi n b ng 2 ca ki m th trong ví d tr c. ệ ằ ụ ướ ử ể

2.3.1.3

Bao ph đi u ki n – Condition coverage

ủ ề

T t ng: t đ các ca ki m th đ đ m b o r ng m i đi u ki n trong ư ưở Vi ế ủ ử ể ả ả ằ ể ề ệ ỗ

m t quy t đ nh đ m nh n t t c các k t qu có th ít nh t m t l n. ế ị ậ ấ ả ộ ầ ế ể ả ấ ả ộ

Vì v y, nh v i bao ph quy t đ nh, thì bao ph đi u ki n không ph i luôn ủ ề ư ớ ế ị ủ ệ ả ậ

luôn d n t i vi c th c thi m i câu l nh. Thêm vào đó, trong tiêu chu n bao ph ẫ ớ ự ệ ệ ẩ ỗ ủ

28

ng trình hay th ng trình con, cũng nh các ON- đi u ki n, m i đi m vào ch ỗ ề ể ệ ươ ườ ư

unit, đ ượ ọ c g i ít nh t 1 l n. Ví d , câu l nh r nhánh do k=0 to 50 while ệ ụ ẽ ầ ấ

(j+k

đ ượ ủ c yêu c u cho nh ng tình hu ng k<=50, k>50 (đ đ n l n l p cu i cùng c a ể ế ầ ặ ữ ầ ố ố

vòng l p), j+k=quest. ặ

Hình 2.1 có 4 đi u ki n: ệ A>1, B=0, A=2, X>1. Do đó các ca ki m th đ y đ ử ầ ủ ể ề

A>1, A<=1, B=0 và B<>0 có m t t là c n thi ầ ế ể t đ thúc đ y nh ng tr ng thái mà ữ ạ ẩ ặ ạ i

i đi m đi m ể a và A=2, A<>2, X>1, X<=1 có m t t ặ ạ ể b. S l ố ượ ng đ y đ các ca ủ ầ

ki m th th a mãn tiêu chu n và nh ng đ ng đi mà đ ử ỏ ữ ể ẩ ườ ượ c đi qua b i m i ca ở ỗ

ki m th là: ử ể

1. A=2, B=0, X=4 ace

2. A=1, B=1, X=1 abd

Chú ý là, m c dù cùng s l ng các ca ki m th đ c t o ra cho ví d này, ố ượ ặ ử ượ ạ ụ ể

nh ng bao ph đi u ki n th ng t ủ ề ư ệ ườ ố ơ t h n bao ph quy t đ nh là vì nó có th ế ị ủ ể

ể ự (nh ng không luôn luôn) gây ra m i đi u ki n riêng trong 1 quy t đ nh đ th c ề ế ị ư ệ ọ

hi n v i c hai k t qu , trong khi bao ph quy t đ nh l ớ ả ế ị ủ ế ệ ả ạ i không. Ví d trong cùng ụ

nhánh: DO K=0 TO 50 WHILE (J+K

ế (th c hi n thân vòng l p hay b qua nó). N u b n đang s d ng ki m th quy t ử ụ ự ử ế ể ệ ạ ặ ỏ

c th a mãn b ng cách cho vòng l p ch y t đ nh, thì tiêu chu n này có th đ ẩ ị ể ượ ạ ừ ặ ằ ỏ

K=0 t ng h p trong đó m nh đ i ớ 51, mà ch a t ng ki m tra tr ư ừ ể ườ ề WHILE b sai. ệ ợ ị

Tuy nhiên, v i tiêu chu n bao ph đi u ki n, 1 ca ki m th s c n ph i cho ra 1 ử ẽ ầ ủ ề ệ ể ả ẩ ớ

k t qu sai cho nh ng đi u ki n ế ệ J+K

ỏ M c dù n u m i nhìn thoáng qua, tiêu chu n bao ph đi u ki n xem ra th a ủ ề ệ ế ẩ ặ ớ

ế mãn tiêu chu n bao ph quy t đ nh, nh ng không ph i lúc nào cũng v y. N u ư ế ị ủ ậ ả ẩ

IF (A&B) đ c ki m tra, thì tiêu chu n bao ph đi u ki n s cho phép quy t đ nh ế ị ượ ệ ẽ ủ ề ể ẩ

t 2 ca ki m th - A đúng, B sai, và A sai, B đúng – nh ng đi u này s b n vi ạ ế ư ử ề ể ẽ

không làm cho m nh đ IF đ c th c hi n. ề THEN c a câu l nh ủ ệ ệ ượ ự ệ

Ví d , 2 ca ki m th khác: ể ụ ử

29

1. A=1, B=0, X=3

2. A=2, B=1, X=1

bao ph t t c các k t qu đi u ki n, nh ng chúng ch bao ph 2 trong 4 k t qu ủ ấ ả ả ề ủ ư ế ệ ế ỉ ả

quy t đ nh (c 2 đ u bao ph đ ng đi abd và do đó, không s d ng k t qu ế ị ủ ườ ề ả ử ụ ả true ế

c a quy t đ nh đ u tiên và k t qu ầ ủ ế ị ả false c a quy t đ nh th hai). ế ị ủ ứ ế

2.3.1.4

Bao ph quy t đ nh/đi u ki n – Decision/condition coverage

ế ị

T t ng: ế ư ưở Th c hi n đ các ca ki m th mà m i đi u ki n trong 1 quy t ự ủ ử ệ ề ệ ể ỗ

đ nh th c hi n trên t ị ự ệ ấ ả t c các k t qu có th ít nh t 1 l n, và m i đi m vào đ ấ ế ể ể ả ầ ỗ ượ c

g i ít nh t 1 l n. ấ ọ ầ

Đi m y u c a bao ph quy t đ nh/đi u ki n là m c dù xem ra nó có th s ề ế ủ ế ị ể ử ủ ể ệ ặ

t c các đi u ki n, nh ng th d ng t ụ ấ ả t c các k t qu c a t ế ả ủ ấ ả ư ệ ề ườ ả ậ ng không ph i v y

vì nh ng đi u ki n ch c ch n đã c n các đi u ki n khác. ắ ữ ề ề ệ ệ ả ắ

Hình 2.2 Mã máy cho ch ng trình trong Hình 2.1 ươ

30

Bi u đ ti n trình trong hình 2.2 là cách 1 trình biên dich t o ra mã máy cho ồ ế ể ạ

ch ng trình trong Hình 2.1. Các quy t đ nh đa đi u ki n trong ch ng trình ươ ế ị ề ệ ươ

ngu n đã b chia thành các quy t đ nh và các nhánh riêng vì h u h t các máy không ế ị ế ầ ồ ị

đ c ch t o đ có th th c hi n các quy t đ nh đa đi u ki n. Khi đó 1 bao ph ượ ể ự ế ị ế ạ ể ệ ề ệ ủ

ki m th t m h n xu t hi n là vi c s d ng t ấ ệ ử ụ ỉ ơ ử ỉ ể ệ ấ ả ỗ t c các k t qu có th c a m i ả ể ủ ế

quy t đ nh g c. Hai ca ki m th bao ph quy t đ nh tr c không làm đ ế ị ế ị ử ủ ể ố ướ ượ ề c đi u

này; chúng không th s d ng k t qu ể ử ụ ả false c a quy t đ nh H và k t qu ế ị ả true c aủ ủ ế ế

quy t đ nh K. ế ị

Lí do, nh đã đ ư ượ ệ c ch ra trong hình 2.2, là nh ng k t qu c a các đi u ki n ữ ả ủ ế ề ỉ

trong các bi u th c c l ng các ứ and và or có th c n tr hay ngăn ch n vi c ể ả ệ ướ ượ ể ặ ở

quy t đ nh khác. Ví d , n u 1 đi u ki n ụ ế ế ị ề ệ and là sai, không c n ki m tra các đi u ầ ề ể

ki n ti p theo trong bi u th c. T ng t nh v y, n u 1 đi u ki n ứ ệ ể ế ươ ự ư ậ ệ or là đúng thì ế ề

cũng không c n ki m tra các đi u ki n còn l i. Do đó, các l i trong bi u th c logic ề ể ệ ầ ạ ỗ ứ ể

không ph i lúc nào cũng đ c phát hi n b ng các tiêu chu n bao ph đi u ki n và ả ượ ủ ề ệ ệ ẩ ằ

bao ph quy t đ nh/đi u ki n. ế ị ủ ề ệ

2.3.1.5

Bao ph đa đi u ki n – Multiple condition coverage

T t ng: ư ưở Vi ế ủ t đ các ca ki m th mà t ể ử ấ ả ữ ế t c nh ng s k t h p c a các k t ự ế ợ ủ

qu đi u ki n có th trong m i quy t đ nh, và t t c các đi m vào ph i đ ả ề ế ị ệ ể ỗ ấ ả ả ượ ọ c g i ể

ít nh t 1 l n. ấ ầ

Ví d , xét chu i mã l nh sau: ỗ ụ ệ

NOTFOUND = TRUE;

DO I=1 TO TABSIZE WHILE (NOTFOUND); /*SEARCH TABLE*/

…searching logic…;

END;

B n tình hu ng đ ki m th là: ể ể ử ố ố

1. I<= TABSIZE và NOTFOUND có giá tr đúng (đang duy t) ệ ị

31

2. I<= TABSIZE và NOTFOUND có giá tr sai (tìm th y m c vào tr ụ ấ ị ướ c

khi g p cu i b ng). ố ả ặ

3. I>TABSIZE và NOTFOUND có giá tr đúng (g p cu i b ng mà không ố ả ặ ị

tìm th y m c vào). ụ ấ

4. I>TABSIZE và NOTFOUND có giá tr sai (m c vào là cái cu i cùng ụ ố ị

trong b ng). ả

ệ D nh n th y là t p h p các ca ki m th th a mãn tiêu chu n đa đi u ki n ử ỏ ề ể ễ ẩ ậ ấ ậ ợ

cũng th a mãn các tiêu chu n bao ph quy t đ nh, bao ph đi u ki n và bao ph ủ ề ế ị ủ ệ ẩ ỏ ủ

quy t đ nh/đi u ki n. ế ị ề ệ

Quay l ạ i hình 2.1, các ca ki m th ph i bao ph 8 s k t h p: ử ả ự ế ợ ủ ể

1. A>1, B= 0

2. A>1, B<>0

3. A<=1, B=0

4. A<=1, B<>0

5. A=2, X>1

6. A=2, X<=1

7. A<>2, X>1

8. A<>2, X<=1

ng h p t Vì là ca ki m th s m h n, nên c n chú ý là các tr ơ ử ớ ể ầ ườ ợ ừ ể 5 đ n 8 bi u ế

di n các giá tr t i v trí câu l nh IF th hai. Vì X có th thay đ i trên câu l nh IF ị ạ ị ễ ệ ứ ổ ở ể ệ

này, nên giá tr c n t i câu l nh IF này ph i đ c sao d phòng thông qua tính ị ầ ạ ệ ả ượ ự

logic đ tìm ra các giá tr đ u vào t ng ng. ị ầ ể ươ ứ

c ki m tra này không nh t thi Nh ng s k t h p đ đ ự ế ợ ể ượ ữ ể ấ ế ầ t ng ý r ng c n ằ ụ

, chúng có th đ c bao ph b i 4 ca th c hi n c 8 ca ki m th . Trên th c t ể ự ế ự ử ệ ả ể ượ ủ ở

ki m th . Các giá tr đ u vào ki m th , và s k t h p mà chúng bao ph , là nh ự ế ợ ị ầ ử ủ ử ể ể ư

sau:

A=2, B=0, X=4 Bao ph tr ủ ườ ng h p 1, 5 ợ

A=2, B=1, X=1 Bao ph tr ủ ườ ng h p 2, 6 ợ

32

A=1, B=0, X=2 Bao ph tr ủ ườ ng h p 3, 7 ợ

A=1, B=1, X=1 Bao ph tr ủ ườ ng h p 4, 8 ợ

Th c t là vi c có 4 ca ki m th và 4 đ ng đi riêng bi t trong hình 2.1 ch là ự ế ử ể ệ ườ ệ ỉ

s trùng h p ng u nhiên. Trên th c t ự ự ế ẫ ợ ủ ọ , 4 ca ki m th này không bao ph m i ử ể

đ ng đi, chúng b qua đ ng đi ườ ỏ ườ ế acd. Ví d , b n s c n 8 ca ki m th cho quy t ụ ạ ẽ ầ ử ể

ng đi: đ nh sau m c dù nó ch ch a 2 đ ị ỉ ứ ặ ườ

If (x==y&&length(z)==0&&FLAG) {

J=1;}

Else {

I=1;}

Trong tr ng h p các vòng l p, s l ng các ca ki m th đ ườ ố ượ ặ ợ ử ượ ể ở c yêu c u b i ầ

tiêu chu n đa đi u ki n th ng ít h n nhi u s l ng đ ng đi. ề ệ ẩ ườ ề ố ượ ơ ườ

Tóm l i, đ i v i nh ng ch ng trình ch ch a 1 đi u ki n trên 1 quy t đ nh, ạ ố ớ ữ ươ ỉ ứ ế ị ề ệ

thì 1 tiêu chu n ki m th nh nh t là m t s l ộ ố ượ ử ỏ ể ấ ẩ ọ ng đ các ca ki m th đ (1) g i ể ử ể ủ

t ấ ả ụ t c các k t qu c a m i quy t đ nh ít nh t 1 l n và (2) g i m i đi m c a m c ả ủ ế ị ủ ể ế ầ ấ ỗ ọ ỗ

vào (nh là đi m vào hay ON-unit) ít nh t 1 l n, đ đ m b o là t t c các câu ể ả ư ể ả ầ ấ ấ ả

l nh đ ệ ượ c th c hi n ít nh t 1 l n. Đ i v i nh ng ch ầ ố ớ ự ữ ệ ấ ươ ế ng trình ch a các quy t ứ

i thi u là s l ng đ các ca ki m th đ đ nh có đa đi u ki n thì tiêu chu n t ệ ị ẩ ố ề ố ượ ể ử ể ủ ể

g i t ọ ấ ả ế t c nh ng s k t h p có th c a các k t qu đi u ki n trong m i quy t ự ế ợ ả ề ể ủ ữ ệ ế ỗ

t c các đi m vào c a ch ng trình ít nh t 1 l n. đ nh, và t ị ấ ả ủ ể ươ ấ ầ

2.3.2

Ki m th h p đen

ử ộ

2.3.2.1

Phân l p t

ng đ

ng – Equivalence Patitioning

ớ ươ

ươ

Phân l p t ng đ ng là m t ph ớ ươ ươ ộ ươ ầ ng pháp ki m th h p đen chia mi n đ u ử ộ ề ể

vào c a m t ch ng trình thành các l p d li u, t ủ ộ ươ ớ ữ ệ ừ ử đó suy d n ra các ca ki m th . ể ẫ

Ph ng pháp này c g ng xác đ nh ra m t ca ki m th mà làm l ra m t l p l ươ ố ắ ử ể ộ ị ộ ộ ớ ỗ i,

do đó làm gi m t ng s các tr ng h p ki m th ph i đ c xây d ng. ả ổ ố ườ ử ả ượ ể ợ ự

33

Thi ng đ ng d a trên s đánh giá v các ế ế t k ca ki m th cho phân l p t ử ớ ươ ể ươ ự ự ề

ng đ ng v i m t đi u ki n vào. L p t ng đ l p t ớ ươ ươ ớ ươ ề ệ ớ ộ ươ ng bi u th cho t p các ị ể ậ

tr ng thái h p l hay không h p l ợ ệ ạ ợ ệ ố ớ đ i v i đi u ki n vào. ề ệ

M t cách xác đ nh t p con này là đ nh n ra r ng 1 ca ki m th đ ử ượ ự c l a ể ể ậ ằ ậ ộ ị

ch n t t cũng nên có 2 đ c tính khác: ọ ố ặ

1. Gi m thi u s l c phát tri n đ ể ố ượ ả ng các ca ki m th khác mà ph i đ ử ả ượ ể ể ể

hoàn thành m c tiêu đã đ nh c a ki m th “h p lý”. ị ử ợ ụ ủ ể

2. Bao ph m t t p r t l n các ca ki m th có th khác. T c là, nó nói cho ể ủ ộ ậ ấ ớ ử ứ ể

chúng ta m t th gì đó v s có m t hay v ng m t c a nh ng l ặ ủ ề ự ứ ữ ặ ắ ộ ỗ ậ i qua t p

giá tr đ u vào c th . ụ ể ị ầ

Thi t k Test-case b ng phân l p t ng đ ng ti n hành theo 2 b c: ế ế ớ ươ ằ ươ ế ướ

ng đ ng và (1). Xác đ nh các l p t ị ớ ươ ươ

(2). Xác đ nh các ca ki m th . ử ể ị

Xác đ nh các l p t

ng đ

ng

ớ ươ

ươ

Các l p t ng đ ng đ ớ ươ ươ ượ ầ c xác đ nh b ng b ng cách l y m i tr ng thái đ u ỗ ạ ằ ằ ấ ị

vào (th ng là 1 câu hay 1 c m t ườ ụ ừ ề trong đ c t ) và phân chia nó thành 2 hay nhi u ặ ả

nhóm (có th s d ng b ng 2.3 đ li t kê các l p t ng đ ng). ể ử ụ ể ệ ả ớ ươ ươ

Hình 2.3 M t m u cho vi c li t kê các l p t ng đ ng ộ ẫ ệ ệ ớ ươ ươ

Đi u ki n bên ngoài Các l p t ng đ Các l p t ệ ề ớ ươ ươ ng ươ ng h p lợ ệ ng đ ớ ươ không h p lợ ệ

Chú ý là hai ki u l p t ng đ ng đ ng đ ng h p l ể ớ ươ ươ ượ c xác đ nh: l p t ị ớ ươ ươ ợ ệ

mô t các đ u vào h p l c a ch ng trình, và l p t ng đ ng không h p l mô ả ợ ệ ủ ầ ươ ớ ươ ươ ợ ệ

t t ả ấ ả t c các tr ng thái có th khác c a đi u ki n (ví d , các giá tr đ u vào không ề ị ầ ủ ụ ể ệ ạ

34

đúng). V i 1 đ u vào hay đi u ki n bên ngoài đã cho, vi c xác đ nh các l p t ớ ươ ng ề ệ ệ ầ ớ ị

đ ng h u nh là 1 quy trình mang tính kinh nghi m. Đ xác đ nh các l p t ươ ớ ươ ng ư ệ ể ầ ị

đ ng c có th áp d ng t p các nguyên t c d i đây: ươ ắ ướ ụ ể ậ

1. N u 1 tr ng thái đ u vào đ nh rõ gi ế ạ ầ ị ớ ạ ủ ớ i h n c a các giá tr , xác đ nh 1 l p ị ị

ng đ ng h p l và 2 l p t ng đ ng không h p l t ươ ươ ợ ệ ớ ươ ươ . ợ ệ

2. N u 1 tr ng thái đ u vào xác đ nh s giá tr , xác đ nh 1 l p t ng đ ớ ươ ế ạ ầ ố ị ị ị ươ ng

và 2 l p t ng đ ng b t h p l h p l ợ ệ ớ ươ ươ . ấ ợ ệ

ng trình 3. N u 1 tr ng thái đ u vào ch đ nh t p các giá tr đ u vào và ch ỉ ị ầ ế ậ ầ ạ ị ươ

ng đ ng h p l cho s d ng m i giá tr là khác nhau, xác đ nh 1 l p t ử ụ ớ ươ ỗ ị ị ươ ợ ệ

m i lo i và 1 l p t ng đ ng không h p l ớ ươ ạ ỗ ươ . ợ ệ

4. N u 1 tr ng thái đ u vào ch đ nh m t tình hu ng “ch c ch n – must be”, ế ắ ắ ạ ầ ố ộ ỉ ị

xác đ nh 1 l p t ng đ ng h p l và 1 l p t ng đ ng không h p l ớ ươ ị ươ ợ ệ ớ ươ ươ . ợ ệ

N u có b t kỳ lý do nào đ tin r ng ch ng trình không x lý các ph n t ể ế ằ ấ ươ ầ ử ử

ng đ ng đó thành các l p t trong cùng 1 l p là nh nhau, thì hãy chia l p t ư ớ ươ ớ ươ ớ ươ ng

đ ng nh h n. ươ ỏ ơ

Xác đ nh các ca ki m th ử

V i các l p t ng đ ng xác đ nh đ b c c trên, b c th hai là s ớ ươ ớ ươ ị ượ ở ướ ướ ứ ử

ng đ ng đó đ xác đ nh các ca ki m th . Quá trình này nh sau: d ng các l p t ụ ớ ươ ươ ư ử ể ể ị

1. Gán 1 s duy nh t cho m i l p t ng đ ng. ỗ ớ ươ ấ ố ươ

2. Cho đ n khi t t c các l p t ng đ ng h p l đ ế ấ ả ớ ươ ươ ợ ệ ượ ợ c bao ph b i (h p ủ ở

nh t thành) các ca ki m th , vi ử ể ấ ế ề t 1 ca ki m th m i bao ph càng nhi u ử ớ ủ ể

các l p t ng đ ng đó ch a đ t. ớ ươ ươ ư ượ c bao ph càng t ủ ố

3. Cho đ n khi các ca ki m th c a b n đã bao ph t t c các l p t ử ủ ủ ấ ả ớ ươ ng ế ể ạ

đ ng không h p l , vi t 1 ca ki m th mà bao ph m t và ch m t trong ươ ợ ệ ế ủ ộ ỉ ộ ử ể

các l p t ng đ ng không h p l ớ ươ ươ ch a đ ợ ệ ư ượ c bao ph . ủ

35

4. Lý do mà m i ca ki m th riêng bao ph các tr ng h p không h p l ủ ử ể ỗ ườ ợ ệ là ợ

vì các ki m tra đ u vào không đúng nào đó che gi u ho c thay th các ể ế ấ ặ ầ

ki m tra đ u vào không đúng khác. ể ầ

ng đ ng là r t t t khi l a ch n ng u nhiên các ca M c dù vi c phân l p t ệ ớ ươ ặ ươ ấ ố ự ẫ ọ

ki m th , nh ng nó v n có nh ng thi u sót. Ví d , nó b qua các ki u test – case ử ữ ụ ư ể ể ế ẫ ỏ

có l i nào đó. Hai ph ng pháp ti p theo, phân tích giá tr biên và đ th nguyên ợ ươ ồ ị ế ị

c nhi u nh ng thi u sót này. nhân – k t qu , bao ph đ ả ủ ượ ế ữ ề ế

2.3.2.2

Phân tích giá tr biên – Boundary Value Analysis

Kinh nghi m cho th y các ca ki m th mà kh o sát t ử ệ ể ả ấ ỷ ỷ m các đi u ki n biên ề ệ

có t l ỷ ệ ữ ph n trăm cao h n các ca ki m th khác. Các đi u ki n biên là nh ng ử ể ề ệ ầ ơ

đi u ki n mà các tình hu ng ngay t i, trên và d ề ệ ố ạ ướ i các c nh c a các l p t ủ ớ ươ ng ạ

đ ng đ u vào và các l p t ng đ ng đ u ra. Phân tích các giá tr biên là ph ươ ớ ươ ầ ươ ầ ị ươ ng

pháp thi t k ca ki m th b sung thêm cho phân l p t ng đ ế ế ử ổ ớ ươ ể ươ ng, nh ng khác ư

ng đ ng 2 khía c nh: v i phân l p t ớ ớ ươ ươ ở ạ

1. Phân tích giá tr biên không l a ch n ph n t b t kỳ nào trong 1 l p t ầ ử ấ ớ ươ ng ự ọ ị

đ ng là đi n hình, mà nó yêu c u là 1 hay nhi u ph n t ươ đ ầ ử ượ ự ọ c l a ch n ể ề ầ

nh v y mà m i c nh c a l p t ng đ ng đó chính là đ i t ủ ớ ươ ỗ ạ ư ậ ươ ố ượ ể ng ki m

tra.

ầ 2. Ngoài vi c ch t p trung chú ý vào các tr ng thái đ u vào (không gian đ u ỉ ậ ệ ạ ầ

vào), các ca ki m th cũng nh n đ ử ể ậ ượ ằ ế c b ng vi c xem xét không gian k t ệ

qu (các l p t ng đ ớ ươ ả ươ ng đ u ra). ầ

Phân tích giá tr biên yêu c u óc sáng t o và l ng chuyên môn hóa nh t đ nh ầ ạ ị ượ ấ ị

ắ và nó là m t quá trình mang tính kinh nghi m r t cao. Tuy nhiên, có m t s quy t c ệ ộ ố ấ ộ

chung nh sau: ư

36

1. N u 1 tr ng thái đ u vào đ nh rõ gi i h n c a các giá tr , hãy vi t các ca ế ạ ầ ị ớ ạ ủ ị ế

ki m th cho các giá tr cu i c a gi i h n, và các ca ki m th đ u vào ố ủ ử ể ị ớ ạ ử ầ ể

không h p l cho các tr ng h p v a ra ngoài ph m vi. ợ ệ ườ ợ ừ ạ

2. N u 1 tr ng thái đ u vào đ nh rõ s l ố ượ ế ạ ầ ị ng giá tr , hãy vi ị ế ể t các ca ki m

ộ th cho con s l n nh t và nh nh t c a các giá tr và m t giá tr trên, m t ỏ ấ ủ ố ớ ử ấ ộ ị ị

giá tr d i nh ng giá tr này. ị ướ ữ ị

3. S d ng quy t c 1 cho m i tr ng thái đ u vào. Ví d , n u 1 ch ng trình ỗ ạ ụ ế ử ụ ầ ắ ươ

tính toán s kh u tr FICA hàng tháng và n u m c t i thi u là 0.00$, và ứ ố ừ ự ế ấ ể

i đa là 1,165.25$, hãy vi t các ca ki m th mà kh u tr 0.00$ và t ố ế ử ể ấ ừ

l n h n 1,165.25$. Chú ý là vi c xem 1,165.25, kh u tr âm và kh u tr ừ ấ ấ ừ ớ ệ ơ

xét gi i h n c a không gian k t qu là quan tr ng vì không ph i lúc nào ớ ạ ủ ế ả ả ọ

các biên c a mi n đ u vào cũng mô t cùng m t t p s ki n nh biên ủ ề ầ ả ộ ậ ự ệ ư

i h n đ u ra (ví d , xét ch ng trình con tính SIN). Ngoài ra, c a gi ủ ớ ạ ụ ầ ươ

không ph i lúc nào cũng có th t o ra 1 k t qu bên ngoài gi ể ạ ế ả ả ớ ạ ầ i h n đ u

ra, nh ng tuy nhiên r t đáng đ xem xét ti m n đó. ề ẩ ư ể ấ

4. S d ng nguyên t c 2 cho m i tr ng thái đ u ra. ỗ ạ ử ụ ầ ắ

5. N u đ u vào hay đ u ra c a 1 ch ng trình là t p đ c s p th t ( ví ủ ế ầ ầ ươ ậ ượ ắ ứ ự

hay 1 danh sách đ nh tuy n hay 1 b ng) t p trung chú ý d ,1 file tu n t ụ ầ ự ế ả ậ ị

vào các ph n t đ u tiên và cu i cùng c a t p h p. ầ ử ầ ủ ậ ố ợ

6. S d ng s khéo léo c a b n đ tìm các đi u ki n biên. ủ ạ ử ụ ự ể ề ệ

2.3.2.3

Đ th nguyên nhân – k t qu - Cause & Effect Graphing ả

ồ ị

ế

M t y u đi m c a phân tích giá tr biên và phân l p t ng đ ng là chúng ộ ế ớ ươ ủ ể ị ươ

không kh o sát s k t h p c a các tr ự ế ợ ủ ả ườ ự ế ợ ng h p đ u vào. Vi c ki m tra s k t h p ệ ể ầ ợ

đ u vào không ph i là m t nhi m v đ n gi n b i vì n u b n phân l p t ầ ụ ơ ớ ươ ng ế ệ ả ạ ả ộ ở

đ ng các tr ng thái đ u vào, thì s l ươ ố ượ ầ ạ ng s k t h p th ự ế ợ ườ ạ ng là r t l n. N u b n ấ ớ ế

không có cách l a ch n có h th ng m t t p con các tr ng thái đ u vào, có l ệ ố ộ ậ ự ầ ạ ọ ẽ ạ b n

37

i vi c ki m th s ch n ra m t t p tùy h ng các đi u ki n, đi u này có th d n t ẽ ọ ể ẫ ớ ộ ậ ứ ề ệ ề ệ ể ử

không có hi u qu . ả ệ

Đ th nguyên nhân – k t qu h tr ả ỗ ợ ồ ị ế trong vi c l a ch n m t cách có h ọ ệ ự ộ ệ

i nh h ng t th ng t p các ca ki m th có hi u qu cao. Nó có tác đ ng có l ệ ử ể ả ậ ố ộ ợ ả ưở ớ i

vi c ch ra tình tr ng ch a đ y đ và nh p nh ng trong đ c t . Nó cung c p c ư ầ ặ ả ủ ệ ậ ằ ạ ỉ ấ ả

cách bi u di n chính xác cho các đi u ki n logic và hành đ ng t ng ng ể ễ ề ệ ộ ươ ứ

Quá trình d i đây đ c các test – case: ướ ượ ử ụ c s d ng đ xây d ng đ ể ự ượ

1. Đ c t đ ặ ả ượ c chia thành các ph n có th th c hi n đ ầ ể ự ệ ượ ầ c. Đi u này là c n ề

thi ế ở t b i vì đ th nguyên nhân – k t qu tr nên khó s d ng khi đ ế ả ở ử ụ ồ ị ượ c

l n. s d ng trên nh ng đ c t ử ụ ặ ả ớ ữ

đ t. M t nguyên 2. Nguyên nhân và k t qu trong các đ c t ế ặ ả ượ ả c nh n bi ậ ế ộ

nhân là m t tr ng thái đ u vào nh t đ nh hay m t l p t ng đ ộ ớ ươ ộ ạ ấ ị ầ ươ ủ ng c a

các tr ng thái đ u vào. M t k t qu là m t tr ng thái đ u ra hay 1 s ả ộ ế ạ ầ ạ ầ ộ ự

bi n đ i h th ng (k t qu còn l i mà 1 đ u vào có tr ng thái c a 1 ổ ệ ố ế ế ả ạ ủ ầ ạ

ch ng trình hay h th ng). B n nh n bi ươ ệ ố ạ ậ ế ả ằ t nguyên nhân và k t qu b ng ế

vi c đ c t ng t c a đ c t và g ch chân các t mô t ọ ừ ệ ừ ủ ặ ả ạ ừ ho c c m t ặ ụ ừ ả

nguyên nhân và k t qu . Khi đ ế ả ượ c nh n bi ậ ế ế t, m i nguyên nhân và k t ỗ

qu đ c gán cho 1 s duy nh t. ả ượ ấ ố

ổ 3. Xây d ng đ th nguyên nhân – k t qu b ng cách phát tri n và bi n đ i ế ả ằ ồ ị ự ể ế

thành đ th Boolean n i gi a nguyên nhân n i dung ng nghĩa c a đ c t ộ ủ ặ ả ữ ồ ị ữ ố

và k t qu . ả ế

4. Đ th đ c đ i v i các ràng bu c mô t ồ ị ượ ượ c di n gi ễ ả ớ ộ ả ự ế ợ nh ng s k t h p ữ

c a nguyên nhân và/ho c k t qu là không th vì các ràng bu c ng nghĩa ủ ặ ế ữ ể ả ộ

và môi tr ng. ườ

ẩ 5. B ng vi c dò theo các đi u ki n tr ng thái trong đ th m t cách c n ồ ị ộ ệ ề ệ ạ ằ

th n, b n chuy n đ i đ th thành m t b ng quy t đ nh m c vào gi ổ ồ ị ộ ả ế ị ụ ể ậ ạ ớ i

h n. M i c t trong b ng mô t ạ ỗ ộ ả ả ộ m t ca ki m th . ử ể

38

6. Các c t trong b ng quy t đ nh đ ế ị ả ộ ượ c chuy n thành các ca ki m th . ử ể ể

Ký hi u c b n cho đ th đ c ch ra trong hình 2.4. T ng t ệ ơ ả ồ ị ượ ỉ ưở ượ ng m i nút ỗ

có giá tr là 0 ho c 1; 0 mô t tr ng thái v ng m t và 1 mô t ặ ị ả ạ ặ ắ ả ạ ặ tr ng thái có m t.

c l i, Hàm đ ng nh t nói là n u ấ ế a là 1 thì b là 1; ng ồ ượ ạ b là 0. Hàm not là nói n u ế a

là 1 thì b là 0; ng i thì c l ượ ạ b là 1. Hàm or kh ng đ nh r ng n u ẳ ế a ho c ặ b ho c ặ c là ằ ị

1, thì d là 1; ng c l i ượ ạ d là 0. Hàm and kh ng đ nh n u c ả a và b là 1 thì c là 1; ế ẳ ị

ng c l i c phép có s l ng đ u vào b t kỳ. ượ ạ c là 0. Hai hàm or và and đ ượ ố ượ ấ ầ

Hình 2.4 Các ký hi u đ th nguyên nhân – k t qu c b n ệ ồ ị ả ơ ả ế

Trong h u h t các ch ng trình, s k t h p nào đó c a m t s nguyên nhân ế ầ ươ ự ế ợ ộ ố ủ

là không th b i vì lý do ng nghĩa và môi tr không th ể ở ữ ườ ng (ví d , m t ký t ụ ộ ự ể

đ ng th i v a là “A” v a là “B”). khi đó, ta s d ng ký hi u trong Hình 2.5. Ràng ồ ờ ừ ử ụ ừ ệ

bu c E (Exclude – lo i tr ) kh ng đ nh r ng t ạ ừ ằ ẳ ộ ị ố i đa, ch có ho c ỉ ặ a ho c ặ b có th làể

1 (a và b không th đ ng th i là 1). Ràng bu c I (Include – bao hàm) kh ng đ nh ít ể ồ ẳ ờ ộ ị

nh t m t trong ộ ấ a, b ho c ặ c ph i luôn luôn là 1 ( ả a, b ho c ặ c không th đ ng th i là ể ồ ờ

39

0). Ràng bu c O (Only – ch m t) kh ng đ nh m t và ch m t ho c ỉ ộ ỉ ộ ặ a ho c ặ b ph iả ẳ ộ ộ ị

là 1. Ràng bu c R (Request – yêu c u) kh ng đ nh r ng khi a là 1, thì b ph i là 1 (ví ẳ ầ ằ ộ ị ả

ng h p d , không th có tr ụ ể ườ ặ ạ ợ a là 1, còn b là 0). Ràng bu c M (Mask – m t n ) ộ

kh ng đ nh là n u k t qu ế ế ả a là 1, k t qu ả b s b t bu c ph i là 0. ộ ẽ ắ ế ả ẳ ị

Hình 2.5 Các ký hi u ràng bu c ộ ệ

i h n – limited-entry B c ti p theo là t o b ng quy t đ nh m c vào gi ả ế ị ướ ụ ế ạ ớ ạ

decision table. T ng t v i các b ng quy t đ nh, thì nguyên nhân chính là các ươ ự ớ ế ị ả

đi u ki n và k t qu chính là các hành đ ng. Quy trình đ c s d ng là nh sau: ế ề ệ ả ộ ượ ử ụ ư

1. Ch n m t k t qu đ là tr ng thái có m t (1). ộ ế ả ể ặ ạ ọ

c tr i đ th , tìm t l t c nh ng s k t h p c a các nguyên 2. L n ng ầ ượ ở ạ ồ ị ấ ả ự ế ợ ữ ủ

nhân (đ i t ng cho các r ng bu c) mà s thi ố ượ ẽ ằ ộ ế ậ ế t l p k t qu này thành 1. ả

3. T o m t c t trong b ng quy t đ nh cho m i s k t h p nguyên nhân. ỗ ự ế ợ ộ ộ ế ị ạ ả

4. V i m i s k t h p, hãy quy đ nh tr ng thái c a t ỗ ự ế ợ ủ ấ ả t c các k t qu khác ế ạ ả ớ ị

và đ t chúng vào m i c t. ỗ ộ ặ

Trong khi bi u di n b c 2, c n quan tâm các v n đ sau: ễ ướ ể ề ấ ầ

40

1. Khi l n ng c tr l or mà đ u ra c a nó là 1, không bao gi ầ ượ ở ạ i qua m t nút ộ ủ ầ ờ

thi t l p nhi u h n 1 đ u vào cho nút ế ậ ề ầ ơ ề or là 1 m t cách đ ng th i. Đi u ờ ồ ộ

này đ c g i là path sensitizing – làm nh y đ ng đi . M c tiêu c a nó là ượ ọ ạ ườ ủ ụ

i th t b i vì m t nguyên nhân che đi m t nguyên nhân đ ngăn ch n dò l ể ặ ỗ ấ ạ ộ ộ

khác.

2. Khi l n ng c tr l ầ ượ ở ạ i qua m t nút ộ and mà đ u ra c a nó là 0, dĩ nhiên, ủ ầ

ph i li t kê t t c các s k t h p đ u vào d n t i đ u ra 0. Tuy nhiên, ả ệ ấ ả ự ế ợ ẫ ớ ầ ầ

ầ n u b n đang kh o sát tr ng thái mà 1 đ u ra là 0 và m t hay nhi u đ u ế ề ạ ầ ả ạ ộ

ra khác là 1, thì không nh t thi t ph i li t kê t ấ ế ả ệ ấ ả t c các đi u ki n mà d ề ệ ướ i

đi u ki n đó các đ u vào khác có th là 1. ề ệ ể ầ

3. Khi l n ng c tr l ầ ượ ở ạ i qua m t nút ộ ỉ ầ and mà đ u ra c a nó là là 0, ch c n ủ ầ

li and chính ệ t kê 1 đi u ki n trong đó t ệ ề ấ ả ầ t c đ u vào b ng 0. (N u nút ằ ế ở

gi a c a đ th nh v y thì t t c các đ u vào c a nó xu t phát t các nút ữ ủ ồ ị ư ậ ấ ả ủ ấ ầ ừ

trung gian khác, có th có quá nhi u tr ng thái mà trong tr ng thái đó t ề ể ạ ạ ấ t

c các đ u vào c a nó b ng 0.) ả ủ ằ ầ

Hình 2.6 Nh ng xem xét đ ữ ượ ử ụ c s d ng khi dò theo đ th ồ ị

• N u x=1, không quan tâm v ế ề

tr ng h p a=b=1 (s xem xét ườ ự ợ

th 1)ứ

• N u x=0, li t kê t ế ệ ấ t c các ả

tr ng h p trong đó a=b=0. ườ ợ

t kê t • N u ế x =1, li ệ ấ t c các ả

tr a=b=c=1. ợ ườ

ng h p trong đó • N u ế x=0, bao g m ch 1 tr ồ ỉ ườ ng

h p mà ợ a=b=c=0 (s xem xét 3). ự

Đ i v i các tr ng thái mà abc là ố ớ ạ

001, 010, 100, 011, 101 và 110 ,

bao g m ch 1 tr ồ ỉ ườ ỗ ng h p m i ợ

41

tr ng thái (s xem xét 2). ự ạ

Nh ng s xem xét này có th xu t hi n th t th ữ ự ệ ể ấ ấ ườ ộ ng, nh ng chúng có m t ư

m c đích r t quan tr ng: đ gi m b t các k t qu đ ể ả ả ượ ụ ế ấ ọ ớ ồ ị c k t h p c a đ th . ế ợ ủ

Chúng li t kê các tr ng h p mà h ng v các ca ki m th ít có l i. N u các ca ệ ườ ợ ướ ử ể ề ợ ế

i không đ c li t kê, m t đ th nguyên nhân – k t qu l n s ki m th ít có l ử ể ợ ượ ệ ộ ồ ị ả ớ ẽ ế

ng ca ki m th c c kỳ l n. N u s l t o ra m t s l ạ ộ ố ượ ế ố ượ ử ự ể ớ ng các ca ki m th trên ể ử

th c t là quá l n, b n s ch n ra 1 t p con nào đó, nh ng không đ m b o là các ự ế ạ ẽ ọ ư ậ ả ả ớ

ca ki m th ít có l i s là nh ng ca ki m th đ c li t kê. Do đó, t t h n h t là ử ể ợ ẽ ử ượ ữ ể ệ ố ơ ế

li ệ t kê chúng trong su t quá trình phân tích c a đ th . ủ ồ ị ố

NH N XÉT

V đ th nguyên nhân – k t qu là ph ng pháp t o các ca ki m th có h ẽ ồ ị ế ả ươ ử ể ạ ệ

th ng mô t ố ả ự ế ợ ủ ế s k t h p c a các đi u ki n. S thay đ i s là 1 s l a ch n k t ự ổ ẽ ự ự ề ệ ọ

c, nh ng khi th c hi n nh v y, có v nh b n s b h p không th d tính tr ợ ể ự ướ ư ạ ẽ ỏ ư ậ ư ự ệ ẻ

sót nhi u ca ki m th “thú v ” đ ể ị ượ ử ề c xác đ nh b ng đ th nguyên nhân – k t qu . ả ồ ị ế ằ ị

Vì v đ th nguyên nhân – k t qu yêu c u chuy n m t đ c t ẽ ồ ị ộ ặ ả ế ể ả ầ ộ thành m t

m ng logic Boolean, nó cung c p m t tri n v ng khác và s hi u bi ự ể ể ạ ấ ộ ọ ế ắ ơ t sâu s c h n

. Trên th c t n a v đ c t ữ ề ặ ả ự ế ự ả , s phát tri n c a 1 đ th nguyên nhân – k t qu là ể ủ ồ ị ế

cách hay đ khám phá s m h và ch a đ y đ trong các đ c t ư ầ ủ ự ơ ồ . ặ ả ể

ử ữ M c dù vi c v đ th nguyên nhân – k t qu t o ra t p các ca ki m th h u ệ ẽ ồ ị ả ạ ể ế ậ ặ

ng nó không t o ra t t c các ca ki m th h u d ng mà có d ng, nh ng thông th ư ụ ườ ạ ấ ả ử ữ ụ ể

th đ ể ượ c nh n bi ậ ế ỏ t. Ngoài ra, đ th nguyên nhân – k t qu không kh o sát th a ồ ị ế ả ả

đáng các đi u ki n gi ề ệ ớ ạ ệ i h n. Dĩ nhiên, b n có th c g ng bao ph các đi u ki n ể ố ắ ủ ề ạ

gi i h n trong su t quá trình. ớ ạ ố

ồ ị ấ Tuy nhiên, v n đ trong vi c th c hi n đi u này là nó làm cho đ th r t ệ ự ề ệ ề ấ

ph c t p và d n t i s l ng r t l n các ca ki m th . Vì th , t t nh t là xét 1 s ứ ạ ẫ ớ ố ượ ấ ớ ế ố ử ể ấ ự

phân tích giá tr gi i h n tách r i nhau. ị ớ ạ ờ

42

ọ Vì đ th nguyên nhân – k t qu làm chúng ta m t th i gian trong vi c ch n ồ ị ế ệ ả ấ ờ

các giá tr c th cho các toán h ng, nên các đi u ki n gi ị ụ ể ề ệ ạ ớ ạ ộ i h n có th b pha tr n ể ị

thành các ca ki m th xu t phát t ử ấ ể ừ ồ ị đ th nguyên nhân – k t qu . Vì v y, chúng ta ế ả ậ

đ t đ ạ ượ ụ c m t t p các ca ki m th nh nh ng hi u qu mà th a mãn c 2 m c ư ộ ậ ử ể ệ ả ả ỏ ỏ

tiêu.

ắ Chú ý là vi c v đ th nguyên nhân – k t qu phù h p v i m t s quy t c ẽ ồ ị ộ ố ệ ế ả ợ ớ

trong Ch ươ ầ ng 1. Vi c xác đ nh đ u ra mong đ i cho m i ca ki m th là m t ph n ợ ử ệ ể ầ ỗ ộ ị

c h u c a k thu t (m i c t trong b ng quy t đ nh bi u th các k t qu đ ả ố ữ ỗ ộ ế ị ả ượ c ủ ể ế ậ ỹ ị

mong đ i). Cũng chú ý là nó khuy n khích chúng ta tìm ki m các k t qu có tác ế ế ế ả ợ

d ng không mong mu n. ụ ố

Khía c nh khó nh t c a k thu t này là quá trình chuy n đ i đ th thành ổ ồ ị ấ ủ ể ậ ạ ỹ

đ ng hóa nó b ng quy t đ nh. Quá trình này có tính thu t toán, t c là b n có th t ả ế ị ể ự ộ ứ ậ ạ

t 1 ch ng trình. Trên th tr ng đã có m t vài ch ng trình th b ng vi c vi ằ ệ ế ươ ị ườ ộ ươ ươ ng

m i t n t i giúp cho quá trình chuy n đ i này. ạ ồ ạ ể ổ

2.3.2.4

Đoán l

i – Error Guessing

M t k thu t thi t k test-case khác là error guessing – đoán l ộ ỹ ậ ế ế iỗ . Tester đ cượ

ng trình đ c bi đ a cho 1 ch ư ươ ặ ệ t, h ph ng đoán, c b ng tr c giác và kinh ả ằ ự ọ ỏ

nghi m, các lo i l i có th và sau đó vi t các ca ki m th đ đ a ra các l i đó. ạ ỗ ệ ể ế ử ể ư ể ỗ

Th t khó đ đ a ra m t quy trình cho k thu t đoán l ể ư ậ ậ ộ ỹ ỗ i vì nó là m t quy trình ộ

có tính tr c giác cao và không th d đoán tr c. Ý t ể ự ự ướ ưở ng c b n là li ơ ả ệ ộ t kê m t

danh sách các l i có th hay các tr ng h p d x y ra l i và sau đó vi t các ca ỗ ể ườ ễ ả ợ ỗ ế

ki m th d a trên danh sách đó. M t ý t ử ự ể ộ ưở ử ng khác đ xác đ nh các ca ki m th có ể ể ị

liên đ i v i các gi ớ ớ ả ị đ nh mà l p trình viên có th đã th c hi n khi đ c đ c t ể ọ ặ ả ứ (t c ự ệ ậ

là, nh ng th b b sót kh i đ c t , ho c là do tình c , ho c là vì ng i vi t có ỏ ặ ả ứ ị ỏ ữ ặ ặ ờ ườ ế

đó là rõ ràng). Nói cách khác, b n li c m giác nh ng đ c t ả ặ ả ữ ạ ệ t kê nh ng tr ữ ườ ợ ng h p

t đó mà có th đã b b sót khi ch ng trình đ c thi đ c bi ặ ệ ị ỏ ể ươ ượ t k . ế ế

43

2.3.3

Chi n l

c ế ượ

Các ph ng pháp thi t k test-case đã đ ươ ế ế ượ c th o lu n có th đ ậ ể ượ ả ế ợ c k t h p

c toàn di n. Vì m i ph ng pháp có th đóng góp 1 t p riêng thành m t chi n l ộ ế ượ ệ ỗ ươ ể ậ

các ca ki m th h u d ng, nh ng không cái nào trong s chúng t nó đóng góp ử ữ ụ ư ể ố ự

m t t p tr n v n các các ca ki m th . Chi n l c h p lý nh sau: ộ ậ ế ượ ợ ử ư ể ẹ ọ

1. N u đ c t ế ặ ả ắ ầ có ch a s k t h p c a các đi u ki n đ u vào, hãy b t đ u ứ ự ế ợ ủ ệ ề ầ

v i vi c v đ th nguyên nhân – k t qu . ả ớ ệ ẽ ồ ị ế

2. Trong tr ng h p b t kỳ, s d ng ph ng pháp phân tích giá tr biên. Hãy ườ ử ụ ấ ợ ươ ị

nh r ng đây là m t s phân tích c a các biên đ u vào và đ u ra. Ph ộ ự ớ ằ ủ ầ ầ ươ ng

pháp phân tích giá tr biên mang l ị ạ i m t t p các đi u ki n ki m tra b ề ộ ậ ệ ể ổ

sung, và r t nhi u hay toàn b các đi u ki n này có th đ ộ ể ượ ệ ề ề ấ ấ c h p nh t ợ

thành các ki m th nguyên nhân – k t qu . ả ử ể ế

3. Xác đ nh các l p t ng đ ng h p l và không h p l ớ ươ ị ươ ợ ệ ợ ệ cho đ u vào và ầ

c xác đ nh trên n u c n thi t. đ u ra, và b sung các ca ki m th đ ầ ử ượ ể ổ ế ầ ị ế

i đ thêm các ca ki m th thêm vào. 4. S d ng k thu t đoán l ỹ ử ụ ậ ỗ ể ử ể

5. Kh o sát tính logic c a ch ủ ả ươ ử ng trình liên quan đ n t p các ca ki m th . ế ậ ể

S d ng tiêu chu n bao ph quy t đ nh, bao ph đi u ki n, bao ph ủ ề ử ụ ế ị ủ ệ ẩ ủ

quy t đ nh/đi u ki n, hay bao ph đa đi u ki n ( trong đó bao ph đa ế ị ủ ủ ề ệ ề ệ

đi u ki n là đ ệ ề ượ ử ụ c s d ng nhi u nh t ). N u tiêu chu n bao ph không ế ủ ề ấ ẩ

c b i các ca ki m th đ c xác đ nh trong b n b c tr c, và đ t đ ạ ượ ử ượ ể ở ố ị ướ ướ

n u vi c đ t đ ệ ế ạ ượ ự ế ợ c tiêu chu n là không th ( t c là, nh ng s k t h p ứ ữ ể ẩ

ấ ủ ch c ch n c a các đi u ki n có th là không th t o vì b n ch t c a ể ể ạ ủ ề ệ ả ắ ắ

ch ươ ỏ ng trình), hãy thêm vào các ca ki m th có kh năng làm cho th a ể ử ả

mãn tiêu chu n.ẩ

Tuy vi c s d ng chi n l c này s không đ m b o r ng t t c các l ệ ử ụ ế ượ ả ằ ẽ ả ấ ả ỗ ẽ i s

đ c tìm th y, nh ng nó đã đ ượ ư ấ ượ ợ c xác minh là đ i di n cho m t s th a thu n h p ộ ự ỏ ệ ạ ậ

lý.

44

CH

NG 3.

ƯƠ

ÁP D NGỤ

ng pháp thi t k test – case đã tìm hi u T nh ng ph ữ ừ ươ ế ế ể ở ụ trên, em v n d ng ậ

chúng vào thi t k test – case cho ch ng trình “Tam giác”. ế ế ươ

3.1

Đ c t

ặ ả

Ch ng trình đ c vào 3 giá tr nguyên t h p tho i vào. Ba giá tr này t ươ ọ ị ừ ộ ạ ị ươ ng

ứ ng v i chi u dài 3 c nh c a 1 tam giác. Ch ạ ủ ề ớ ươ ng trình hi n th 1 thông đi p cho ị ể ệ

bi t tam giác đó là tam giác th ng, cân, hay đ u. ế ườ ề

ả Ba giá tr nh p vào th a mãn là 3 c nh c a m t tam giác khi và ch khi c 3 ủ ạ ậ ỏ ộ ỉ ị

ng, và t ng c a 2 s b t kỳ trong 3 s ph i l n h n s s đ u là s nguyên d ố ố ề ươ ả ớ ố ấ ơ ố ủ ố ổ

th 3. Khi đó, m t tam giác đ u là tam giác có 3 c nh b ng nhau, tam giác cân là ứ ề ạ ằ ộ

tam giác có 2 trong 3 c nh b ng nhau, và tam giác th ạ ằ ườ ng thì có 3 c nh khác nhau. ạ

unit main;

interface

uses

Windows,   Messages,   SysUtils,   Variants,   Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type

TMainForm = class(TForm)

AEdit: TLabeledEdit;

BEdit: TLabeledEdit;

CEdit: TLabeledEdit;

btnTest: TButton;

procedurebtnTestClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

Mã l nh c a ch ng trình: ủ ệ ươ

45

end;

var

MainForm: TMainForm;

implementation

{$R *.dfm}

Procedure TMainForm.btnTestClick(Sender: TObject);

var

a, b, c: Integer;

begin

try

a := StrToInt(AEdit.Text);

b := StrToInt(BEdit.Text);

c := StrToInt(CEdit.Text);

if (a < 0) Or (b < 0) Or (c < 0) then

ShowMessage('3 canh A, B, C khong thoa man

la 3 canh cua mot tam giac.')

else

if (a + b > c) And (a + c > b) And (b + c >

a) then

begin

if (a = b) And (b = c) then

ShowMessage('3 canh A, B, C lap thanh

mot tam giac deu.')

else

if (a=b) Or (b=c) Or (c=b) then

ShowMessage('3 canh A, B, C lap

thanh mot tam giac can.')

else

ShowMessage('3 canh A, B, C lap

thanh mot tam giac thuong.');

end

else

ShowMessage('3 canh A, B, C khong thoa

man la 3 canh cua mot tam giac.');

except

ShowMessage('Loi dinh dang du lieu. De nghi ban

xem va nhap lai.');

46

end;

end;

end.

3.2

Thi

t k test – case

ế ế

Áp d ng chi n l c ki m th đã trình bày trong Ch ng 2, các ca ki m th ế ượ ụ ử ể ươ ể ử

đ c xây d ng nh sau: ượ ự ư

3.2.1

V đ th nguyên nhân – k t qu

ẽ ồ ị

ế

Do đ c t có s k t h p đ u vào nên tr c tiên, áp d ng ph ng pháp v đ ặ ả ự ế ợ ầ ướ ụ ươ ẽ ồ

th nguyên nhân – k t qu . ả ế ị

Nguyên nhân là:

1. C 3 giá tr nh p vào đ u là s nguyên d ng. ề ậ ả ố ị ươ

2. T ng 2 s b t kỳ trong 3 s l n h n s còn l i. ơ ố ố ấ ố ớ ổ ạ

3. Hai trong 3 s có giá tr b ng nhau. ị ằ ố

4. Ba s có giá tr b ng nhau. ị ằ ố

K t qu là: ế ả

R1. Thông báo ba giá tr nh p vào l p thành tam giác th ng. ị ậ ậ ườ

R2. Thông báo ba giá tr nh p vào l p thành tam giác cân. ị ậ ậ

R3. Thông báo ba giá tr nh p vào l p thành tam giác đ u. ị ậ ề ậ

R4. Thông báo ba giá tr nh p vào không l p thành m t tam giác. ị ậ ậ ộ

R5. Thông báo l ỗ i nh p d li u. ậ ữ ệ

Hình 3.1 Đ th nguyên nhân – k t qu : ả ồ ị ế

47

i h n. Ch n k t qu R1 B c ti p theo là t o b ng quy t đ nh m c vào gi ả ế ị ướ ụ ế ạ ớ ạ ế ả ọ

là đ u tiên. R1 có m t n u nút các nút 12 và 3 = 1,0. Nút 12 = 1 khi 1 và 2 = 1,1. ặ ế ầ

Áp d ng l n l t cho s có m t c a t ng k t qu đ u vào, ta đ ầ ượ ụ ặ ủ ừ ả ầ ự ế ượ ả c b ng

quy t đ nh nh sau: ế ị ư

Hình 3.2 B ng quy t đ nh ế ị ả

1

2

5

4

3

1 1 0 1 1

1

1 1 0

2

48

0 1

3

1

4

1 0 0 0 0

R1

0 1 0 0 0

R2

0 0 1 0 0

R3

0 0 0 1 0

R4

0 0 0 0 1

R5

B c cu i cùng là chuy n đ i b ng quy t đ nh thành các ca ki m th . Các ca ổ ả ế ị ướ ử ể ể ố

ki m th thu đ ử ể ượ c nh sau: ư

STT Các đi u ki n ệ ề Ca ki m th ử ể Hành đ ngộ

2,3,4 1 R1 C 3 giá tr nh p vào đ u là s ậ ề ả ị ố 2,4,3 nguyên d ng, và t ng c a 2 s ươ ủ ổ ố 3,2,4 ơ b t kỳ trong 3 s luôn l n h n ố ấ ớ 3,4,2 s th 3, và không có c p 2 s ố ứ ặ ố 4,2,3 b t kỳ nào trong 3 s đó là = ấ ố 4,3,2 nhau.

3,3,4 2 R2 C 3 giá tr nh p vào đ u là s ậ ề ả ị ố

nguyên d ng, và t ng c u 2 s ươ ả ổ ố 3,4,3 ơ b t kỳ trong 3 s luôn l n h n ố ấ ớ

49

4,3,3 s th 3, và t n t ố ứ ồ ạ i m t c p 2 ộ ặ

s trong 3 s đó là = nhau. ố ố

3 3,3,3 R3 C 3 giá tr nh p vào đ u là s ậ ề ả ị ố

nguyên d ng, và c 3 s có giá ươ ả ố

tr b ng nhau. ị ằ

4 1,2,4 R4 C 3 giá tr nh p vào đ u là s ậ ề ả ị ố

nguyên d ng, và t n t i 2 s ươ ồ ạ ố ị ủ Và 5 hoán v c a

nó ặ trong 3 s có t ng nh h n ho c ỏ ơ ố ổ

i. b ng s còn l ố ằ ạ

A,2,2 5 R5 T n t ồ ạ i m t giá tr nh p vào ị ậ ộ -1,1,1 không ph i là s nguyên d ng. ả ố ươ 1.1,1,1

ị ủ Và 2 hoán v c a

m i tr ỗ ườ ng h p ợ

3.2.2

Phân l p t

ng đ

ng

ớ ươ

ươ

3.2.2.1

Xác đ nh các l p t

ng đ

ng

ớ ươ

ươ

Các giá tr nh p vào là s i 1 giá tr không ậ ị ố C 3 giá tr đ u là s (1) ị ề ả ố T n t ồ ạ ị

ph i là s (2) ả ố

C 3 giá tr đ u nguyên i 1 giá tr không Các giá tr là nguyên ị ị ề ả T n t ồ ạ ị

nguyên (4) (3)

Các giá tr là d ng C 3 giá tr đ u d T n t ị ươ ị ề ả ươ ng ồ ạ i 1 giá tr <=0 (6) ị

(5)

50

-32768 : 32767 (7) <-32768 (8), >32767 (9) H ng s ằ ố

Nh h n ho c b ng (11) ớ T ng 2 s b t kỳ so v i ố ấ ổ L n h n (10) ơ ớ ặ ằ ỏ ơ

s th 3 ố ứ

3.2.2.2

Xác đ nh các ca ki m th

Các ca ki m th bao ph các l p t

ng đ

ng h p l

ớ ươ

ươ

: ợ ệ

Ca ki m th 2,3,4 và 5 hoán v bao ph các l p (1), (3), (5), (7), (10). ủ ử ể ớ ị

ng ng v i t ng ca ki m th không h p l

:

Các ca ki m th t ể

ử ươ ứ

ớ ừ

ợ ệ

(2) A, 1, 1 và 2 hoán v .ị

(4) 1.1, 1, 1 và 2 hoán v .ị

(6) -1, 1, 1 và 2 hoán v .ị

(8) -32769, 1, 1 và 2 hoán v .ị

(9) 32768, 1, 1 và 2 hoán v .ị

(11) 1, 2, 4 và 5 hoán v .ị

3.2.3

Phân tích giá tr biên

3.2.3.1

Xét các tr ng thái đ u vào

Xét các tr ng thái đ u vào thu đ c các ca ki m th nh sau: ạ ầ ượ ử ư ể

1. 1, 1, 1

2. A, 1, 1 và 2 hoán v .ị

3. 1.1, 1, 1 và 2 hoán v .ị

4. 0, 1, 1 và 2 hoán v .ị

51

5. -1, 1, 1 và 2 hoán v .ị

6. -32768, 1, 1 và 2 hoán v .ị

7. -32769, 1, 1 và 2 hoán v .ị

8. 32767, 1, 1 và 2 hoán v .ị

9. 32768, 1, 1 và 2 hoán v .ị

10. 1, 2, 3 và 5 hoán v .ị

11. 1, 2, 4 và 5 hoán v .ị

3.2.3.2

Xét không gian k t quế

Xét không gian k t qu , thu đ c các ca ki m th nh sau: ế ả ượ ử ư ể

Ba s đ u vào th a mãn là 3 c nh c a m t tam giác đ u ố ầ ủ ề ạ ỏ ộ

12. 1, 1, 1

13. 32767, 32767, 32767

Ba s đ u vào th a mãn là 3 c nh c a m t tam giác cân ố ầ ủ ạ ỏ ộ

14. 1, 1, 2 và 2 hoán v .ị

15. 32767, 32767, 32766 và 2 hoán v .ị

Ba s đ u vào th a mãn là 3 c nh c a m t tam giác th ng ố ầ ủ ạ ỏ ộ ườ

16. 2, 3, 4 và 5 hoán v .ị

17. 32767, 32766, 32765 và 5 hoán v .ị

Ba s đ u vào không th a mãn là 3 c nh c a 1 tam giác ố ầ ủ ạ ỏ

18. 1, 2, 3 và 5 hoán v .ị

19. 1, 2, 4 và 5 hoán v .ị

20. 32767, 1, 32765 và 5 hoán v .ị

52

21. 32767, 1, 32766 và 5 hoán v .ị

L i đ nh d ng d li u vào ữ ệ ỗ ị ạ

22. A, 1, 1 và 2 hoán v .ị

23. 0, 1, 1 và 2 hoán v .ị

24. -1, 1, 1 và 2 hoán v .ị

25. 1.1, 1, 1 và 2 hoán v .ị

3.2.4

Các ph

ươ

ng pháp h p tr ng ộ

3.2.4.1

Bao ph câu l nh

ng trình tam giác: L u đ thu t toán cho ch ậ ư ồ ươ

a

a,b,c:integ L u đ thu t toán cho đo n code c a ch ng trình ư ồ ủ ạ ậ ươ

a:=

StrToInt(AEdit.Text);

b:=

StrToInt(BEdit.Text); Đ

er;

b Không có  ngoại lệ

Đ

a<0 or b<0  or c<0 S c d

ShowMessage e

s

ShowMessage M5

M1

Show   Message Show Message  Show   Message Đ

M2 a+b>c and  a+c>b and  b+c>a 53 a=b or b=c  a=b and  or c=b  Đ Show Message  b=c S M3 M1 M4

g f

h

S

i

S

k Đ j

l

Trong đó:

M1: Ba c nh A, B, C không th a mãn là 3 c nh c a 1 tam giác. ỏ ủ ạ ạ

M2: Ba c nh A, B, C l p thành 1 tam giác đ u. ậ ề ạ

M3: Ba c nh A, B, C l p thành 1 tam giác cân. ậ ạ

ng. M4: Ba c nh A, B, C l p thành 1 tam giác th ậ ạ ườ

M5: L i đ nh d nh d li u. Đ ngh b n xem và nh p l i. ữ ệ ỗ ị ị ạ ậ ạ ề ạ

c: Các ca ki m th thu đ ể ử ượ

1. -1, 1, 1 (abdl) và các hoán v ị

2. 1, 1, 1 (abefhl)

3. 2, 2, 1 (abefijl) và các hoán v ị

4. 2, 3, 4 (abefikl) và các hoán v ị

5. 1, 2, 4 (abegl) và các hoán v ị

6. A, 1, 1 (acl) và các hoán v ị

54

7. (a,c,l) 1.1, 1, 1 và các hoán v ị

3.2.4.2

Bao ph quy t đ nh

ế ị

c: Các ca ki m th thu đ ể ử ượ

1. -32768, -32768, -32768 (abdl) và các hoán v ị

2. 32767, 32767 , 32767 (abefhl) và các hoán v ị

3. 32767, 32767, 327676 (abefijl) và các hoán vị

4. 32767, 32766, 32765 (abefikl) và các hoán v ị

5. 32767, 1, 2 (abegl) và các hoán v ị

6. A, 1, 1 (acl) và các hoán v ị

7. 1.1, 1, 1 (a,c,l) và các hoán v ị

3.2.4.3

Bao ph đi u ki n ủ ề

c là: Các ca ki m th thu đ ể ử ượ

1. -1, 1, 1 và các hoán v .ị

2. 2, 3, 4 và các hoán v .ị

3. 1, 2 , 4 và các hoán v .ị

4. 2, 2, 1 và các hoán v .ị

5. 1, 1, 1 và các hoán v .ị

6. A, 1, 1 và các hoán v .ị

7. 1.1, 1, 1 và các hoán v .ị

3.2.4.4

Bao ph quy t đ nh – đi u ki n ế ị

c là: Các ca ki m th thu đ ể ử ượ

1. -1, 1, 1 và các hoán v .ị

2. 2, 3, 4 và các hoán v .ị

55

3. 1, 2 , 4 và các hoán v .ị

4. 2, 2, 1 và các hoán v .ị

5. 1, 1, 1 và các hoán v .ị

6. A, 1, 1 và các hoán v .ị

7. 1.1, 1, 1 và các hoán v .ị

3.2.4.5

Bao ph đa đi u ki n

c là: Các ca ki m th thu đ ể ử ượ

1. -1, 1, 1 và các hoán v .ị

2. 2, 3, 4 và các hoán v .ị

3. 1, 2 , 4 và các hoán v .ị

4. 2, 2, 1 và các hoán v .ị

5. 1, 1, 1 và các hoán v .ị

6. A, 1, 1 và các hoán v .ị

7. 1.1, 1, 1 và các hoán v .ị

56

K T LU N

Ki m th ph n m m, m t h ng đi không còn m i m trên th gi ử ầ ộ ướ ề ể ế ớ ẻ ớ ư i, nh ng

i là m t h Vi t Nam. Nó h a h n m t t l ạ ộ ướ ng đi r t m i ấ ớ ở ệ ứ ẹ ộ ươ ng lai m i cho các ớ

h c sinh, sinh viên ngành CNTT. ọ

Qua tìm hi u và xây d ng đ tài này, em th y mình đã đ t đ ạ ượ ự ể ề ấ ộ ư c m t u

đi m cũng nh v n còn m t s t n t i. ộ ố ồ ạ ư ẫ ể

c: Nh ng đi m đ t đ ể ạ ượ ữ

c t ng quan v ki m th ph n m m: Các khái ni m c  N m đ ắ ượ ổ ề ể ử ệ ề ầ ơ

ng pháp ki m th ph n m m, và các v n đ liên quan … b n, các ph ả ươ ử ầ ể ề ề ấ

c các ph ng pháp và chi n l c thi t k test  Tìm hi u và n m đ ể ắ ượ ươ ế ượ ế ế

c các ph ng pháp đã – case trong ki m th ph n m m, và áp d ng đ ử ầ ụ ề ể ượ ươ

tìm hi u đ xây d ng các test – case cho 1 bài toán c th - Ch ụ ể ự ể ể ươ ng

trình “Tam giác”.

 B sung và rèn luy n thêm k năng s d ng ph n m m Word và ử ụ ề ệ ầ ổ ỹ

Powerpoint.

 Nâng cao kh năng đ c hi u tài li u Ti ng Anh. ọ ể ệ ế ả

Nh ng đi m ch a đ t: ư ạ ữ ể

 S áp d ng nh ng ki n th c tìm hi u đ c m i ch d ng l i ụ ữ ự ứ ế ể ượ ỉ ừ ớ ạ ở ộ m t

ụ bài toán nh , mà v n ch a th áp d ng cho các bài toán hay ng d ng ụ ử ư ứ ẫ ỏ

l n.ớ

T nh ng đi m đ t và ch a đ t c s góp ý ư ạ ở ữ ừ ể ạ trên, em hi v ng s nh n đ ọ ẽ ậ ượ ự

chân thành c a các th y cô và các b n đ b n báo cáo đ c hoàn thi n h n. ể ả ủ ạ ầ ượ ệ ơ

Sinh viên

57

Ph m Th Trang ạ ị

58

TÀI LI U THAM KH O

1. The Art of Software Testing, Glenford J. Myers, Second Edition, John Wiley

and Sons, Inc.

2. Software Engineering - A Practitioner’s Approach, Roger S.Pressman, Sixth

Edition, Ph.D, McGraw-Hill, Inc.

3. A Practitioner's Guide to Software Test Design, Lee Copeland, First Edition,

Artech House Publishers Boston, London.

4. Effective methods for Software Testing, William E. Perry, 3rd Edition, Wiley

Publishing, Indian.

Software Testing, Ron Patton, Second Edition, Sam Publishing. 5.

6. http://www.vietnamesetestingboard.org/

7. http://en.wikipedia.org/wiki/Software_testing

8. M t s trang web v ki m th ph n m m khác. ề ể ử ầ ộ ố ề

59

NH N XÉT C A GIÁO VIÊN H

ƯỚ NG

D NẪ

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

………………………………………………………………………………………

Thái Nguyên, ngày … tháng 09 năm 2009

Giáo viên h ng d n ướ ẫ

Nguy n H ng Tân ồ ễ

60