Luận văn đề xuấ mộ gii hua có h sinh ra bộ es -case có h ki m ra dượccác rường hợp cần được ki m hử phi nb n mới sao cho có h đmb o răng phi nmới n yvẫnb o ồnkh nang hực hiện mộ cách đún
Trang 1ĐẠI HỌC QUOC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
3 Loe
NGUYEN I TH IXÁC ĐỊNH XAP XI UNG CODE GAY LOI O
PHIEN B N CHUONG TRÌNH B KHI DUOCSỬA TỪ PHIEN B N CHƯƠNG TRINH A
Chuyén nganh : Khoa hoc may tinhMã số : 60 48 01
TP HO CHI MINH, THANG 11/2013CONG TRINH ĐƯỢC HOÀN THÀNH TAITRUONG ĐẠI HOC BACH KHOA —- DHQG TP.HCM
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠITRUONG ĐẠI HOC BACH KHOA —ĐÐLIIQG -HCM
Cán bộ hướng dẫn khoa hoc: TS Nguy nH a h ng
5 TS Th NgọcChuXác nhận của Chủ ch Hội đồng danh giáL v Trường Khoa qu nly chuyên ngành saukhi luận văn đã được sửa chữa (nêu có).
CH TỊCHH [DONG TRUONG KHOA KHOA HOC MAY TINH(Họ nv chữk ) (Họ nv chữk )
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC BACH KHOA Độc lập - Tự do - Hạnh phúc
NHI M ULUẬN ÁN THẠC SĨ
Họ nhọc ví n:Nguyn lệ Hi MSHV: 09070433Ne y, hang, năm sinh: 07/05/1985 Noi sinh: Tp.Hồ Ch MinhChuyén nganh: Khoa Hoc May T nh Mã số : 60 48 01
I TEN DE TÀI: Xác d nh xấp x v ng codeg yl i phi nb nchương rnh B khi được
sửa phi nb nchương rnh A.
I NHI M U AN IDUNG:e Nhiém vuchinh: Nghiênc u và xây dựng gi i hua ki ml iv xác đnhxấpx v ng
code g yv[I phí nbnchương rnh đã được chnh sửa phí nb n chương rnh
đã ho n hiện.
e Nhiệm vụ chỉ tiết:o Tim hi u các phương pháp sinh est case tự động cho chương rnh ié chương
trình sinh test case tự động dựa trên những phương pháp đã m hi u.o Nghiênc u kĩ huật thực thi kí hiệu (symbolic execution) Xây dựng chương r nh
phn ch đoạn chương rnh heo luồng thực thi của chương trình,t đó ạo ra tập
điều kiện rong chương r nh dưới dang bi uth c logic.o Nghiên c u các công cụ gi i quyết bài toán kh thỏa mãn (SMT solver) Xây dựng
chương r nh gi I các điều kiện có dạng bi uth c logic hu được quá trình thựcthi kí hiệu, sinh ra các es case ương ng với các điều kiện
© Nghiéne ud dé xuất một gi 1 thuật cókh năng hục hiện được các yêu cầu :
- _ Sinh ra được bộ test-case ít nhất cóth đ đ mb o rang nếu phiên b n mớicho ra kết qu đúng với mọi test-case trong bộ này ta cóth đ mb orăngphiên mới này vẫn b o tổn kh năng hực hiện mộ cách đúng đắn mọi ch c
nang của phiên b n cũ.
Trang 4- Néu phiên b n mới cho ra két qu sai một test-case n o đó, có h ch rađược xâpX vùng code có kh năng g yral i.
© Xây dựng ng dụng minh họa cho các công việc trên.HI NGÀY GIAO NHI M_ U:14/1/2013
IV NGÀY HOÀN THÀNH NHI M_ [:22/11/2013.V.CÁNB HƯỚNG DAN: TS.Nguy nH a h ng
Trang 5LỜIC MON
Lời đầu tiên, em xin gửi lời c m ơn chân thành và sâu sắc đến thầy TS.Nguy nHa h ng, người thay trực tiếp hướng dẫn Luận văn của em Thay là người đã ruyềnđạt cho em những kiến th c nền t ng qu báu, người đã luôn ận tình hướng dẫn và giúpđỡ v động viên em vượt qua những khó khăn rong suốt quá trình thực hiện đ hoàn
h nh dé tai Luận văn n y.
Em cũng xin gửi lời c m ơn dén quý thay cô rong khoa da dạy d và truyén đạt
cho em những kiên th c chuyên môn trong suôt thời gian học tập bậc thạc sĩ, ao điều
kiện cho tôi thực hiện dé tài nay.
Tôi xin gửi lời c m ơn dến những người bạn ¢ ng lớp, khóa học đã luôn b ncạnh động vi n, giúp đỡ m i khi tôi gặp tr ngại va chia sẻ thành công, that bại cùng tôi.
Cuôi cùng, con xin chân thành c m on cha mẹ, những người đã nuôi dưỡng, dayd con khôn lớn như ng y hôm nay Cha mẹ đã luôn sát cánh, dối theo t ng bước đi cuacon và luôn bên cạnh, cho con những lời khuyên quý giá m i khi con gặp khó khăn, r
ngại rong con đường học van.
Tp HCM, ngày 22 tháng 11 năm 2013
Nguyn lệ Hi
Trang 6TÓM TATLUAN AN
L ¡ của chương rnh hường xuấ hiện do quá r nh sửa đổi.m rộngv pha rincủa mộ chương rnh Khi đó dựa r nphí nbn đã ho nchnhv đáp ng đúng mọirường hợp được ki m hử, người lập rnh sẽ phá rin phi nb n mới nhằm m rộngch c năng cho chương r nh, hoặc củng cố cấu ric của chương r nh, hoặc do mộ số nhu
cầu nghiệp vụ n o đó cần sửa đổi chương rnh Quá rnhphá ri nphi nb nmớin y
cần hỏa mãn điều kiện cob nl phi nb nchương r nh mới vẫn ph id mb o van hựchiện đúng các ch c năng vốn có của phi nb n chương rnh cũ.T đó phá sinh nhu cầu
phá rí nmộ gi ¡ hua ki m hử phi nb n mới dựa r nphi nb n cũ đã ho nch nh.
Luận văn đề xuấ mộ gii hua có h sinh ra bộ es -case có h ki m ra dượccác rường hợp cần được ki m hử phi nb n mới sao cho có h đmb o răng phi nmới n yvẫnb o ồnkh nang hực hiện mộ cách đúng dan ch c năng của phi nb n cũ.Đông hời rong khi ki m ra các rường hợp của bộ es -casen y r nphi nb n mới, nếuphi nb nmới g yral i,gi i hud sẽ xác đnh mộ cách xấpx v ng code có h dig yrali rường hop đó O bước sinh es -case, gi i hud sẽ lưu lại những hông in cầnhié cho giai đoạn xác đnh l i iếp heo Sau khi sinh es -case, chúng a sẽ có được c yAST của c 2 phi nbn của chương rnhv những hông in đã được dánh dau rnchúng Dựa v oc y AST v những hông inn y gi i hua sẽ lần lượ m1 ¡rẽ nhánh,Iido h mv nẹ code, | ïdo bỏ só v ngcodev |i hực hi r nphi nb nchương rnh
sửa đôi.
Trang 7Bugs offen appear in the process of modification, expansion, and development anew version of a program To optimize the cost of developing a new version,programmer usually bases on the gold version — the version which passed all the testcasesin the last testing operation — and make some optimal changes to reach the goals of thenew version Those goals may be some new features, optimizing the program or
consolida ing he program Bu he new version has a requiremen , 1 mus s keep all the
features of the gold version That means the new version must passed all the testcaseswhich the gold version has already passed in the last testing operation From this arises
the need to develop a algorithm which can test the new version base on the gold version.
This thesis introduces an algorithm can generate the testsuite which covers all
necessary cases to make sure the new version remains correctly all the features of the
gold version Furthermore, if the new version fails at some testcases in the generatedtestsuite, the algorithm will show the causes which is possibly a reason makes theprogram fails when run those testcases In the generating the testsuite step, all nessesaryinformation will be saved for the next finding causes step After the test suite is
generated, we also got the AST trees of the new version and the gold version along with
nessesary information marked in them With those AST trees and marked information, if
the new version fails at some testcases, the algorithm will try to find the branch bugs,
losing code bugs, inserting code bugs and manipulating bugs.
iil
Trang 8LỜI CAM ĐOAN
Tôi xin cam đoan b n luận văn 6 nghiệpn y1 công rnh nghĩ nc u hực sự củacá nhân tôi, được hực hiện rncơs nghĩ nc ul huyềê, các kiên h cnên ng rong
lĩnh vực ki m hu phân mêm v dưới sự hướng dân khoa học của Tiên sĩ Nguy nH a
Phùng.
Tôi cũng xin cam doan các sô liệu, các hnh vẽ v b ng bi u, bi u do dược sửdụng rong luận văn n y đều huộcs hữu b icánh n ôi, r các phan đã được rch dânnguôn ham kh o.
Tp HCM, ngày 22 tháng 11 năm 2013
K on
Nguyn lệ Hi
Trang 9MỤC LỤC
LOL CAM 095 |TOM TAT LUAN ĂN Sen TH TT TT TH TH xa II
LOL CAM 62990 H IVMUC LUC HINH 1ã VIIMỤC LUC BÁNG St St t2 x21 117121 1171211121111 1.11111111111111 Excke VIIIMỞ Đ UU - S31 1 T1 1211111171111 11111111 11T 11111 1111111117111 11111 1x11 rret 9CHUGONG 1 TONG QUAN ŨŨ 111.1 Đặt vấn AG eee cccceccecsscsceeescsesssscssucsescsscscseevsscsvsssscevsscsescsecasseesscseerssceceveieseaesecees II1.2 Phát bi u dG lài 5-5 c3 3 SE SE E312 1 3711171131111 171 1511511110111 y0 121.3 go na 131⁄4 Bố cục của luận văn -i G-k-kStSxSkSxSx SE SE SE S1 SH HH ra 14CHUONG 2 CƠ SỞ LY THUYET occecccccccccccccsecscsescescsescseescsscsescssessseeescseeseesacsveneneeen 152.1 Tnh đúng dan của chương rnh( rogram Correc ñ€s$) -s- 55c sscccsseecvở 152.2 Thực thi kí hiệu (Symbolic EXecufiOn)) << HH Hư 20
2.3 Các phương pháp sinh es case U động -<Ă SH re, 262A Gi ¡ thuật CTGP SG Sn S111 1111111111111 111111111111 11 1111110111111 1111111113146 392.55 Gi ¡ thuật của công cụ ki mÌ ¡DARWIN QQQHHHnnHH nhe, 42
2.6 Công cụ Taran UuÏa - s5 1333310 v1 vn ng ng ng vờ 45
Trang 10CHUONG 3 GIẢI THUAT KI MTH Hl NBANC A CHƯƠNG TRÌNHD ATRN HE N BAN TRƯ Coiieccccccccccccscccscscsescseesecscsescsescsescsevseeseacseaceeacacacstacsracseerseereess 49
3.1 Mộ số khái niệm ChUNY wo.cececececcsescsscssescssssessssessescssescsscseesesessescsuesssscsessssessesssseseees 49
3.2 BI Oán đã ra LG Q TT TH Tu khe 50
3.3 Gi ¡ huậ để xuất - Ăn TK TH TT HT TT ng như ro 5]
CHƯƠNG 4 HI N TH C SG -Ă c1 S111 SH ST v.v HH ng 62
4.1 Bộ phân tích mã nguồn (Code AnaÌyZeT) - 55-5 ©2222 S22x+E£E xxx crvrrrrxcvee 62
4.2 Bộ thực thi kí hiệu (Symbolic EXeCUfIOn) He, 65
TÀI LL U THAM KHÁO - s33 32v 221 1 17171 111150711111 1EEEecerkrrrrd 82510808 SA 84
Trang 11MỤC LỤC HÌNH
H nh 1 Hệ hống các phương pháp ki m ra nh dúng dắn +2 5-5 17H nh 2 Minh họa quá r nh ki m hử ĩnh << Ăn kh, 19
H nh 3 Minh họa quá r nh ki m hử dộng << Ă + Ă S111, 19
Hnh4.C y hue hibi u ượng của chương r nh (_ ) SĂĂĂ Set 24
H nh 5 Sơ đồ điều khi n luông của chương r nh (_ 3) <5 s62 +z£kszzxzzzvrzet 37H nh 6 Kiến húc công cụ DAR IN - S2 E3 3S SE ng ren 45Hình Giao diện công cụ Varan ulÌa -ssc S233 030 ng ng vn 47
Hnh Gi i hud Ïaran uÌa «<< c3 SY 23833113 11 31v 1v ng vs 48
Hoh Bộph n ch mã nguÖn - c5 %5 5S E E3 kEE£ềE SE SE St tr re 62Hnh10.C y AST của chương r nh UCLUN 7 << Ă Ăn xu 64
Hnh II Bộ hue Aik hiệu 55-5 55c c 2c 225238331131 11 313 1v ng vs 65
H nh 12 Mô h nh r về của Z3 - c-ccccc2ctirttirttrrttrrttrrttrtrrrrrrrrrrrrrrrrre 69
Hnh 13 Kế qu chạy chương rnh rường hợp sai điều kiện rẽ nhánh 72
Hnh 14 Kế qu chạy chương rnh rường hợp h m điều kiện rẽ nhánh 74
Hnh 15 Kế qu chạy chương rnh rường hợp bỏ só điều kiện rẽ nhánh 76
H nh 16 Kế qu chạy chương rnh rường hợp sửa đổi quá rnh hye hi 78
Vil
Trang 12ng 1 Chương rnh đổi giá r hai số nguy 1 (_) cceccccccccccsccseseesestesessesesscsesesesteseeeseees 22
ng 2.B ng hực hik hiệu của chương r nh (_ ) s55 S S3 veesseeeseess 23
ng 3 Chương r nh ph n loại đa giác (_ Ï) - -Ặ 5S 2212930 111 ng re 28
ng 4.B ng bao phủ của chương r nÏ((_ Ì) - s75 ẶccsS s3 errrerrrerrreerves 29
ng 5 Các bước gi i hua sinh es case hướng mục 1 U «5< «<< <<<<5 30ng 6 Chương rnh m số nghiệm phương r nh bậc 2 ( 2) -c-+5se5+5sc: 30ng B ng bao phủ diều kiện của chương r nh (_ 2) - ¿2552 2 +5s+szsscszx+zscs2 30ng B ng bao phủ cập nha của( 2) với giá r đầu v o (3, 6,Š) cccccececeree 3]ng B ng bao phủ cập nhậ của( 2) với giá r đầu v o(1,6, ) 31ng 10 Cac bước gi i hud sinh es case hướng đường di - s<<< s5 s55 34
ng II Danh sách dường di rong chương r nh (3) co SĂSĂ ke 37
ng 12 Đoạn chương rnh nh UCLN - - < Ăn kh 64
ng 13 Mã gi gi I hua hue hik hiệuU s5Ặ 55552225 ssSeeerssrerserrs 67
ng 14 Mộ đoạn chương r nh đơn 21 ï1 - 55 5S 222%530 33133 ng 67ng 15 Tap điều kiện hu được sau khi hực hi k hius ccc csceeesscecesesceseeceeeeeees 68ng 16.M6 ập công h c đầu v 0 của Z3 ccecececcccssescssesssessescsessssessescsessssescsesseasssescseseene 69
Trang 13MỞ ĐẦU
Trong những năm gần đ y với sự phát tri n mạnh mẽ heo hướng hương mại hóa củangành công nghiệp phát tri n phần mềm, các hệ thống phần mềm hiện nay ngày càngph c tạp Kèm heo đó các chi ph 6n kém vào công tác ki m tra, ki m thử phần mềmng yc ng ăng,d vậy t 1é1 i phát sinh không gi m dim còn có chiều hướng ăng l n.Những | i phát sinh của chương r nh Ï m ngăn c n hệ thống thực hiện đúng ch ¢ năngmong muốn của nó, gây tốn kém, thất thoát tài s n và cóth nh hư ng tới an ninh thôngtin Thống kê của Viện Tiêu chuẩn và Công nghệ Hoa Kì (Tassey 2002) [19] cho thay các| i chương rnh có xu hướng ang mạnh, h ng năm iu ốn kho ng 59.5 t USD, vào
kho ng 0.6% tông s n phâm quôc nội Mi.
Vì vậy, yêu cau đặt ra là ph i tạo ra các chương r nh có cha lượng tốt, an toàn vàcó t lệ i thấp nhất Yêu cầu nay đặc biệt quan trọng khi các chương r nh được tích hợpvào trong một hệ thống đòi hỏi độ b o mật cao Muốn tạo ra mộ chương r nh có chấtlượng tốt, điều kiện tiên quyết là các yêu cầu vé nh đúng đắn (correctness) của chươngtrình cần ph i được d mb o Hiện nay, có rất nhiều phương pháp ki m ra nh đúng dancủa chương rnh Trong đó, những phương pháp phổ biến có th k dến như | cácphương pháp ki m ra đoạn mã (code review v code inspec ion), v các phương phápki m tra phần mềm (software verification), ki m thử phan mềm (software testing) Trongsố các phương pháp r n, ki m thử chương r nh vẫn] phương pháp phổ biến nha , đượcchấp nhận rộng rãi v I phương pháp hiệu qu và có độ chính xác cao so với các phương
pháp khác trong việc ki m ra nh đúng dan của chương r nh.
Tuy nhiên, phương pháp ki m thử phần mềm đòi hỏi ki m thử viên ph i thực hiện
quá rnhphn chchương rnhcho ng rường hợp của bộ es cased xác d nh nguy n
nh ng y 1 i, quá trình này hiện nay vẫn chưa đượch trợ bằng các công cụ máy móc.Hiện nay, quá rnhph n ch chương rnhrn ng1 iphá sinh hầu hết van được thựchiện băng tay, gây tôn kém rât nhiêu chi phí vê nhân lực, thời gian (chiêm kho ng 50%
Trang 14tông chi phí của quá trình phát tri n phần mềm (theo Bezier [6])) Những tôn kém này cóth được gi mthi u nều quá trình n y được tự động hóa.
Dựa trên quá trình tìm hi u và nghiên c u, kêt hợp với các thành qu của cácnhóm nghiên c u di rước, học viên đề xua mộ gi ¡ hua có h phn chmộ cách ự
động khi các rường hợp của bộ es -case của chương r nh sinh ral iv gợi cho kí m
hu viên nguy nnh nv v rv ngmã lệnh có h dag yral I.
Trang 15CHUONG 1 TONG QUAN
Trong chương này, luận van trình bay tông quan về các khó khăn gặp phải hiện
nay của qua trình kiêm thứ phán mém, phát biêu nội dung mà dé tài muôn giải quyết, cdc
đóng gop của luận văn và cuối cùng là bô cục nội dung trình bay trong luận van.
1.1 Đặt van déKi m thử chương r nh ng yc ng khang đ nh v trí quan trọng của nó trong quy trìnhphát tri n phần mềm Ki m hử chương rnhl quy rnhb od m các chương rnh ph i
có độ an toàn cao và itl i, y u cầu rã quan rong dang dược ra quan mì trong sự phát
tri n mạnh mẽ heo hướng hương mại hóa của ngành công nghệ phần mềm những năm
gan d y Do đặc h của việc pha ri ny vanh nh phan mềm, mộ 1 ira nhỏ rongchương rnh cũng có h g y ra những hiệ hại ra lớn, v vậy đ hạn chế hấp nha
những rủi ro có h x y ra rong quá rnh phá ri n phần mềm, công việc ki m hit
chương rnhng yc ng được dau uv chú rong.
ấn dé khó khăn nha của công việc ki m hử chương rnh hiện nay! công việc n y
phụ huộc chủ yếu v o con người ới xu hé phá rỉ n mạnh mẽ của ng nh công nghiệpphần mềm ng y nay, chương r nh đang được phá rỉ n có quy mô ng y mộ lớn hơn vsố người ham gia v o quá rnhphá rỉ nng yc ng đông hơn vay nếu không có cácphương pháp kỹ thuật và các công cụh trợ chỉ ph v khối lượng công việc rong quá
rnhki m hử phân mêm có h_ ang! nrâ lớn.
D gi m thi u được chi ph văng năng suất cho những dự án phần mềm, quá r nhnghỉ nc uv để xuấ những phương pháp ự động hóa cho việc ki m hử phần mềm
đang ng y c ng được quan m hơn Có hai di m dang chú dy, h nhất là làm sao
tạo ra được tập các rường hợp ki m thử số lượng càng ít càng tốt mà phát hiện được hầuhết các 1 ¡ của chương rnh; h hai là dựa vào các test-case c61 1 của chương r nh, Ì msao đ phát hiện l ¡ đó nằm dòng lệnhn od cóth tiến hành quá trình sửa l i mộtcách nhanh chóng Đó hai đi m cân được lưu m của hai quá trình Ki m thử và Phát
II
Trang 16hiện | i Việc Ki m thử va Phát hiện | i cần ph ¡ có các phương pháp, kỹ thuật và cáccông cụh trợ thì mới cóth gi m thi u được chí ph v ang năng suât cho một dự anphân mêm.
Do quy mô của chương r nh ng y c ng lớn, ng y nay các chương rnh được pharin heo mộ quy rnh lặp, phi nb n mới sẽ được phá ri ndựa r nphi nbn rước vkế h anhững ch c năng đã được hiện hựcn y.D yl quy rnh 4 yéuv hop! đ lế
ki m hoi gian, công s cv chi ph cho việc phá ri n mộ dự án Quá rnh phá rin
chương r nh ng y nay không còn được nhận h cl công việc ạo ra mộ chương rnhho nh o mộ lần rồi dem di vậnh nhv hương mai hóa Thay v o đó, quá rnh phá
ri nchương rnh được hực hiện song song với quá r nh vậnh nhv hương mại hóa.Chương r nh sẽ được n ng cấp dần dần với nhiều phi nb ncap nha y heo những y u
cầu phá sinhv những ph n hôi của người sử dụng.
Tuy nhiên cũng quy rnhphá rí nlặpn y, dã phá sinh ra mộ loại Ï i mới, đó |“regression bug” L ing y xua hiện do quá rnh sửa déi,m rộng v phá ri n của mộchương rnh Khi đó dựa r nphíi nb n đã ho nchnhv đáp ng đúng moi rường hopđược ki m hử, người lập rnh sẽ phá ri nphi nb nmới nhằmm rộng ch c năng chochương r nh, hoặc giữ nguy n ch c năng nhưng c i iến hơn về những ch_ i u khác nhưốc độ chạy chương r nh, ié kiệm bộ nhớ, iễ kiệm năng lượng , hoặc rong môirường sư phạm sinh vi n cần hye hiện đúng chương rnh heo chương rnh mẫu củagiáo vi n đưa ra Sau khi hực hiện những sửa dối đó, phi nb n mới được ạo ra có hkhông hực hiện dung những ch cnăngm phi nb n rước đó đã dược ki m hur! dung.
T những van đề r nphá sinh nhu cầu phá rí nmộ gii hud ki m humo cách ựđộng phi nb n mới của mộ chương r nh dựa r nphi nb n rước đã ho n ch nh.
1.2 Phát biêu dé tai
ới nhu câu đã đê cập rn,đề ¡n ysẽ ap rung nghí nc ud để xuâ mộ gi 1hua :
Trang 17Nhận đầu v ol 2 phi nb n của mộ chương r nh:o_ hi nbn? đã chạy đúng với mọi rường ki m hw được đề ra.
o hí nb nmới P'`được phá rin phi nbnP.
Sinh ra được bộ test-case m rộng bộ es -case của phinbnPd céth baophủ mọi đường hực hi củac 2 phinbnPy ?
So sánh kế qu hue hi của Pv P'với ng rường hợp của bộ es -case v a
dược sinh ra.
Nếu phiên b n P’ cho ra kết qu khác kế qu hue hicta P một test-case nàodo, gii hua sẽ kê luận Pˆcó liv ch ra được xâp x vung code có kh năng
gây ral i đó.
Giới hạn bài toán:
Có râ nhiêu nguy nnh ncó h g yral ichương rnh, uy nhi n rong g1 ¡ huanyséch ap rung v ol ïrế nhánh, | i hực hi các c u lệnh.
hi nb nP’ van ph thiện hye những ch cnangm P đã có.
1.3 Đóng góp của đề tài
ê mặ 1 huyê :- Dễ ra mộ phương pháp có h ki m thử mộ cách ự dong phiên b n mới của
mộ chương r nh dựa trên phiên b n rước đã ho n ch nh.
- Đề xuất một gi i thuật phn ch nguy nnh n mộ cách u động cho ngrường hợp | 1 của bộ es -case.
êmặ ng dụng:
- _ Xây dựng được một hệ thống thực tếh trợ sinh test case v phn chnguy nnh ng yl Icủa mộ phi nb nchương rnh mới dựa rn phi nb n đã đúng vớimọi rường hợp kí m hử rước đó.
Trang 181.4 Bồ cục cua luận văn
Luận văn được ô ch c h nh các chương ch nh sau:
Chương 2: Tr nh b y các kiên h c cos được sử dụng rong luận văn đ gi iquyê bi oán dé ra, bao gôm Sofware Tes ing, Sofware — erilica ion, Symbolici} ion, hai 1 -ori i al-ori ation, gi iExecution, hai phương pháp a h-oriented Generation, Goal-oriented Generation, gi i
hua CTG®, công cụ ki mI i DAR_ IN, công cu Taran ula.Chương 3: Trnhby ưng, phn chv hié kế của phương pháp đề xuấ đki m hử các phi nb n của chương r nh Bao gồm các quá rnhph n ch chương rnh,
hực hi k hiệu r n chương rnh, áp dụng công cụ SMT solver kế hợp với gi ¡ huậ
CTG” đ sinh ra ap es case cho chương rnh Gi i hud đề xu đ m nguy nnh n
g yl ¡cho phi nb n của chương r nh.
Chương 4: Tr nh b y phần hiện hực chương r nh
Chương 5: lr nhb y quá rnh hử nghiệm chương r nh với ap dữ liệu đê xuâ vphn ch, đánh giá các kế qu đạ được
Chương 6: Tông kê dê iv dê xuâ các hướng pha ri n rong ương lai.
Trang 19CHƯƠNG 2 CƠ SỞ LÝ THUYET
Trong chương này, luận văn sẽ trình bày các cơ sở lý thuyết về các phương pháp
kiêm tra tính đúng dan của chương trình, phương pháp thực thi kí hiệu trên mã nguôn
` " , * ` ede A cr ial E
chương trình, các phương pháp sinh test case cho chương trình, giải thuật T `, c ngcụ kiểm 1 i C Hợ cụ Tarantula
2.1 Tính đúng dan của chương trình (Program Correctness)
Các chương rnh phân mêm khi được phá rỉ nv đưa v osu dụng hực ê canph ida được những phẩm cha cob n sau:
- Tnhdung đắn và chính xác (correctness)- Tinh chắc chan (robustness)
- Tinh thân thiện với người dùng (user friendliness)
- Kh năng h ch nghi (adap abili y)
- Kh năng ái sử dụng (reuseability)- Tinh liên kết (interoperability)
- Tinh hiệu qu (efficiency)
- Tinhkh chuẩn (portability)
- Tinh an toàn (security)
Trong các nh cha rn h nh đúng đắn của chương rnh! nh cha có nhhư ng đếnkh năng hoạ động đúng ch c năng y u cầu của chương r nh, hạn chế các | i
phá sinh v đmboan o n cho hệ hồng Ty huộc v o mục đ ch sử dung, lĩnh vực
hoạ động v các nhóm người d ng chương rnh, mộ số nh cha có h được bỏ quarong quá rnh ki m dnh s n phẩm rước khi đưa ra sử dung hực ế Tuy nhi n, nhđúng din 1 phẩm cha in quyế không h hiếu được rong mọi chương rnh Kháiniệm về nh đúng dan của chương rnh! mộ khái niệm râ khó đ đnh nghĩa M i lậprnh vi n hoặc m i người d ng có những nhu câu v mong đợi khác nhau vê kh năng
15
Trang 20huc hi của chương rnh, v vậy cũng có nhiêu d nh nghĩa khác nhau vê nh đúng dancủa chương r nh Những d nh nghĩa n y bao gôm:
- Chương rnh không ch a những l i cú pháp có th được phát hiện trong quátrình biên d ch chương r nh.
- Chương rnh không ch a những | i, bao g6m1 i cú pháp hay I i phương h c
có th được phát hiện tự dộng trong quá trình biên d ch và thực thi của chươngtrình.
- én tại những tập dữ liệu test mà khi thục hi chương r nh sẽ đưa ra những kếtqu chính xác.
- - Với những tập dữ liệu test cụ th (được xác đnh hoặc ngẫu nhi n), chươngtrình sẽ đưa ra được những kết qu chính xác
- Với tate các tập dữ liệu test hợp lệ, chương rnh sẽ đưa ra những kết qu
dung hoặc hợp lý.
Hiện nay có rất nhiều phương pháp ki m ra nh đúng đắn của chương rnh,những phương pháp n y đựa phân thành nhiều các nhóm riêng biệt và năm trongmột ph hệ cụth Các phương pháp phố biến cóth được liệ k như trong Hình |
dưới d y:
Trang 21Software Software
Verification testingStatic Dynamic Static DynamicVerification Verification Testing Testing
Model
Checking Black-Box | | White-Box :
Path- oriented oriented
Goal-Hình 1.H thống các phương pháp iém tra tính đúng dan2.1.1 Kiểm tra phần mềm (Software Verification)
Ki m ra phần mềm (Sof ware Verification) 1 quá rnh d ngđ đmb omộ hệthống phần mềm được ao ra hỏa mãn các y u cầu ban đầu của hệ héng Quá r nh này
dược hực hiện băng việc ki mm ra xem phần mềm có hue hiện dúng các ch c năng mong
đợi hay không Ð yl mộ quá rnhkhông h hiếu rong quy rnhphá ri n phan mềm.Các kỹ hud ki m raphần mềm có h được chia h nh hai hướng iếp cinch nhl Ki m
ra động (Dynamic Verifica ion) vy Ki m ra inh (S a ic Verification).
- Kim ra inh (S aic verifica ion) 1 qua rnh phân tích va 1 đoạn mã nguồncủa chương r nh nhằm xác d nh chương r nh được ki m tra có thỏa mãn yêu cầu
da ra hay không hương pháp n y không đòi hỏi việc thực thi thực tế đoạn
chương rnhm dựa r n các kĩ huậ phn ch chương rnh, nh oán toán học,
Trang 22chương r nh hoạ động đúng với yêu câu ch c năng hay chưa Quá r nh ki m trađộng hường được xem như quá r nh ki m thử chương r nh.
2.1.2 Kiếm thứ phần mềm (Software Testing):
Ki m hử phần mém (Sof ware Tes ing)l quá rnh d ng đ kim ra các l i phá
sinh hoạ các hiếu sé ch c năng của phan mềm nh md mb okh năng hoạ động hiệu
gu , ối ưu của phần mềm rong hực ế Quá rnh được hye hiện bang cách ki m ra,khosá hực mộ s n phẩm hay d ch vụ phần mềm rong môi rường chúng dự đ nh sẽđược ri n khai nhằm cung cấp cho người có lợi ch li n quan những hông in về chalượng của s n phâm hay d ch vụ phần mềm ấy Sau quá r nh kỉ m ht, các phần mềm có
h được đưa ra sử dụng rong hệ héng hực é với sự đ mb o về cha lượng cũng như |hiệu năng.
T y huộc v o phương pháp ki m hu phân mêm được sử dung, quá r nh ki m huphần mêm có h được hực hi ai ba k giai đoạnn o rong quy rnh phá ri n phân
mềm Tuy nhi n, hau he các công việc ki m hu đều được hue hiện sau khi các y u cau
déu được đ nh nghia, ph n chy hiện hue
Có 2 phương pháp ki m huchnh! ki m hu ĩnhv ki m ht dong:
- Ki mthu inh (Saic es ing): wong ung như qua rnh ki m ra inh, d y |quá trình phân tích va | doan mã nguồn của chương r nh, bang cách duyệt lạicác yêu cầu v các đặc ( bằng tay, thông qua việc sử dụng giấy bú đ ki m tralogic, lần t ng chỉ tiết mà không cần thực hi chương rnh Quá rnh ki m thử
inh được minh họa như hình sau:
Trang 23Source code
Requirements
System Spec
` ⁄
- Kim hvu động (Dynamic es ing): 1 phương pháp ki m hu hông qua việc
Hình 2 Minh họa quá trình iễm thử tinhhue hi chương rnh r nmộ hệ hống hực ế nhằm ki m ra các kế qu dầura cũng như ác động hực ế của chương rnh Trong ki m hu động phanmềm ph i hực sự được bi n dch/hông dchv hue hi r nmôi rường hye
é Quy rnh ki m hi động bao gồm việc hực hi phần mềm, nhập các giá rđầu vov ki m ra xem liệu đầu ra có như mong đợi hay không Các phươngpháp ki m hử phổ biến bao gồm: Ki m hử don v (Unit test), Ki m hử chhợp (In ergra ion ess), Kim hử hệ hống (Sysem ess)v Ki m hử chấp
Hình 3 Minh hoa quá trình iễm thử động
19
Trang 24Trong ki m hu phần mém, có ba chiên lược ki m hu hông dụng nha | ki m huhộp đen (Black-box es ing), Ki m hử hộp rắng(_ hi e-box testing).
- Ki m thử hộp den! ki uki m thử dựa v o các đặc t đầu v ov đầu ra hoặccác đặc t ch c năng của chương rnhm không cần quan m đến cấu trúc bêntrong của Các ki m thử viên sẽ dựa vào những thông tin’ rnd xây dựng cáctest case phù hợp, sau do hực hi chương r nh với các test case tạo rad ki m traxem các chương r nh có hực hiện đúng ch c năng mong muốn hay không
- Ki m thử hộp trăng là ki u ki m thử dựa vào cau trúc logic và thuật toán bêntrong của chương r nh Ki m thử hộp trang đòi hỏi ph i có sự xem xét tới cau trúcdữ liệu và gi i thuật bên trong cho những mục đ ch hiết kế các test case Các testcase được sinh ra cóth ki m ra được kh năng hực hiện của chương rnh rongnhững tình huỗng không theo luéng thực thi mong muốn đ cóth tìm ra những |hông trong thuật toán của chương r nh.
Ki m ht phần mém1 kh ucần hié đ n ng cao cha lượng của hệ hồng Tuynhi n các phương pháp ki m ht ruyén hồng đều có nhược đi m chungl chỉ ph khácao (do cần i u ốn nhiều nh n lực cho công việc ki m hử)v không an o n(do ronghầu hế các rường hợp các ki m hử vi nph i hye hi phần mềm cần ki m hử r n hệ
hống hued quan sá các kế qu r về).2.2 Thực thi kí hi u (Symbolic Execution)
Thực thi kí được giới hiệu lần đầu inv onăml 6b 1J.C.King [14], được x ydựng dựa rn wu ng sử dụng các giá r k hiệu, hay v giá r ha, cho các giá r đầuvào của chương r nh Giá r của các biến rong chương r nh cũng được bi u đi n đưới
dạng bỉ u h c của các k hiệu.T do, các giá r đầu ra của chương r nh cũng được xácdnh nhl mộ h m trên ập giá r k hiệu dầuvo rn hương phápn ydmbo
chương rnh hỏa mãn các y u cầu ngay c khi các đặc đi m của chương r nh chưa đượcbiê
Trang 25hương pháp hực hik hiệu | mộ m rộng của phương pháp hực hi thơnghường ới việc sử dụng hực hik hiệu, các cú pháp của ngơn ngữ cũng nhưi nghĩa
của chương rnh vẫn khơng hay đổi Sự hay đối chỉnh đ y chnh ra việc đ nh nghĩa
các các đối ượng dữ liệu k hiệu (cáck hiệu được sử dụng hay cho các giá r số cụ h )
Cụ h hon, gi sử a cần sử dụng m6 ập giá r đầuv ođ hực hi mộ chương rnh, acĩ h sử dụng mộ vài k hiệu rong ậpk hiệu hay hé {2,,œ,.œ, }đ hye hi chương
trình Ta biế răng khi hye hi chương rnh, đầu v o của chương rnh hường được gan
b inhững giá r số cụ h cho các biến chương r nh (ham số hủ uc, biến o n cục cụcbộ ) vay.d cĩ h xử|I chương rnh với các dầu v o dạng k hiệu, chương r nh
xem giá r củak hiệu a, nhul các hăng sơ.
Trạng hái hực hi của mộ chương rnh hực hik hiệu bao gồm: Giá r ( dạngk hiệu) của các biến rong chương r nh, mộ đường đi điều kiện (Path condition - PC) vàmộ con rỏ chương rnh Con rỏ chương rnh ch acon ro dến lệnh kế iếp chươngrnh sẽ hực hi Đường đi diều kiện của chương r nh dược d nh nghĩa như sau: cho mộchương rnh Pv mộ 4p es đầu v of, goi p;l mộ lưu vế chương r nh (program
race) của / khi hực hi P Duong di điều kiện của Đi, goi là PC,;1 mộ cơng h c logic
bậc nhã r n các giá r k hiệu đầu v o tat cơng h en yl các r ng buộc với những
giá r đầuv od chương rnhcĩ h hue hi r n đường đi p,Ð chương rnh khi huehicĩ h đến được cdc v r r n đường đi mong muốn h các giá r đầu v oph i hỏamãn cơng h c r n.Cơng h ccủa PCI mộ cơng h c dạng hội của các bi u h c logic
nhỏ hơn dụ cơng h c {œ>0Aø,+3xøz¿<10Az,<2} 1 mộ cơng h c của mộdường di diều kiện rong chương r nh
C y hực hi k hiệu (execuion ree) d ng d mơ các dường di hực hi
(execution path) của chương rnh rong quá rnh hực hi k hiệu chương rnh do Cácnode rong c y đại diện cho các rang hái của chương r nh (được gan nhãn Ì v r của
dịng lệnh) v các cạnh bi u di n quá rnh chuy n dồi giữa các rạng hái Khi mộ lệnh
điều kiện IF hue hi, node ương ng với lệnh r n sẽ cĩ hai cạnh được chia ra ương ng
21
Trang 26với các nhãn “I” y “F”, các nhãn này ương ng với các rẽ nhánh THEN v ELSE củađiêu kiện r n Trong khi đó, rạng hái hye hi của chương rnh bao gôm giá r k hiệu
của các biên, con ro chương rnh,v đường đi điêu kiện cũng được cập nhậ ương ng.
dụ với đoạn chương rnh (P) d ngởđ đôi giá r cua hai biên In crger x và y
nêu x lớn hơny B ng 1 dưới đ y:
O: int x, y;
1: af (x > y) {
2: X x + V;3: V = xX — Vy4: X= xX - V?
5: if (x - y > QO)
6: assert(false);}
7: return;
Bang 1 Chương trình đổi gia trị hai số nguyên (P)T doạn chương r nh trên, ki hua hue hik hiệu dược ap dụng d có h m
dược b ng hực hik hiệu cũng nhưIl c y hực hi ương ng Kh idau, C giữ giá r
TRUE, và x và y giữ giá r k hiệu I Xv Y ương ng Tại m i diều kiện rẽ nhánh, giár cua € được cập nha ương ng với các đầu ra có h có của điều kiện đó Tại cáclệnh gán trong chương r nh các biến chương r nh cũng được cập nhậ với các giá r kihiệu ương ng Cụ h„, sau khi hực hi lệnh IF dòng l,c 2 nhánh THEN vy ELSEcủa điều kiện if (x > y) đều có h x yra,v vậy Ccũng được cập nha ương ng, clsẽ có2 C ương ng với các nhánh | X>Y v X<=Y ới X>Y chương rnh iếp uc
hực hiện dòng 2, với các giá r củaxv y được cập nha lại lần lượ | X+Yv Y ớiX<=Y, chương rnh iếp uc hực hiện dòng , với các giá r củaxv y vẫn dược giữnguyên là X và Y Tương uw, alan lug hue hik hiệu cho các lệnh v các diều kiệnkhác Cuối c nø,b ng hực hik hiệu v cậy hực hi sẽ được cập nha đầy đủ, các kếqu được h hiện rong B ng 2 và Hình 4.
Trang 27StmtID |x y PC
0 xX Y True2 X+Y |Y X>Y
3 X+Y |X 4 Y X -6 Y X (X>Y) && (Y-X>0)
-7 X Y (X<=Y)
7 Y X (X>Y) && (Y-X<=0)
=Bang 2 Bang thực thí ihi u cua chương trình (P)
Nếu cómộ C không h h amãn dược, cl với mọi gia r dầu v o, gla r củaC déul FALSE, điều n y có nghĩal rạng háin y không h da được, hay các đườngđiđếnv r của rạng hail khôngkh hi,v việc hực hik hiệu không h iép uc rn
nhánh ương ng đó được du, C ại dòng 6l không h hoa mãn được, v Y-X>0
ương dương với Y>X, m u huấn với X>Y, nên giá r của bi u h c logic (X>Y) &&
(Y-X>Ð0) luôn là FALSE vậy, với mọi giá r cuaXv Y h giá r của C ai dòng 6
déul FALSE, akế luận các đường di ới dong 6 của chương r nh déul khôngkh hi
Trang 28Hình 4 Cây thực thi biểu tượng của chương trình (P)Thực hik hiệu dược ph n loại h nh hai phương pháp hực hi, dol :
- Thue thi kí hiệu inh (Static symbolic execution): Cũng như các phương pháp
inh khác, phương pháp n y dược thực hiện bằng tay r n doan mã nguồn chươngtrình thay vì thực thi thực tế chương r nh Sử dụng các kiến th c về toán học kếthợp với phn ch chương rnhd cóth hu được cây thực hi cũng như Ìl b ngthực thi kí hiệu của chương r nh
- Thue thi kí hiệu động (Dynamic symbolic execution): Thực thi kí hiệu đượcthực hiện trong quá trình thực hi chương r nh, với mội tập giá tr đầu vào là cáckí hiệu Tại các điều kiện cũng như các lệnh gan, các giá tr được xử lý là các kíhiệu thay vì các con số cụth Quá rnh nh oán được thay bang quá r nh đánh
Trang 29giá, va kêt qu tr vê là một dãy các công th c logic M i công th c là một rangbuộc trên các kí hiệu dau vođ chương rnh da đên được v trí mong muôn
ương ng.
Những phương pháp hiện hực ki hua hue hik hiệu:
- hương pháp biến đổi (Transform approach)- —_ hương pháp đo đạc (Instrumentation approach)
hương pháp y ch nh tại thời di m thực thi (Customize runtime approach)
Uudi mv hạn chế của phương pháp hực hik hiệu:- Ưu đi m: Việc thực thi kí hiệu có th thay thế cho một số lượng lớn các thực
hi hông hường Cụ th , bộ giá tr kí hiệu {z,.œ,.ơ, } có th thay thế được rấtnhiều bộ giá tr thực như {A.y.z } , việc này là rất hiệu qu_ cho quá trình test vàdebug chương r nh B n cạnh đó, phương pháp hye thi kí hiệu có th kết hợp
được với các phương pháp khác như lập trình tiến hóa, gi i quyết rang
buộc rong việc ki m ra chương rnh,h_ trợ rất tốt trong van đề ki m tra tínhđúng dan của chương rnh Ngo 1ra, hue thi kí hiệu còn được su dụng hiệu qutrong việc sinh es case cho chương r nh, hoặc tối ưu hóa chương r nh
- Han chế: Ki huật thực thi kí hiệu ch h trợv đánh gia được các phép toán s6học, quan hệ hay luan! như: +,-,*,/, ABS, MOD,<,>,>.<,=,4,&,|, Tươngpháp thực thi kí hiệu không h_ trợ các bi u th c phi tuyến tinh, các bi uth c cóch a các phép toán số mũ, lượng giác, logari Ð y cũng | van đề khiến chophương pháp n y không hoạ động tốt với các chương r nhch a những điều kiệnph c tạp Ngo ira phương pháp n y còn hao 6n khá nhiều tài nguyên hệ thống doph i lưu rt nhiêu thông tin trong quá trình thục hi chương r nh.
25
Trang 302.3 Các phương pháp sinh test case tự động
Các phương pháp hực nghiệm cho hay, các phương pháp ki m ht chương rnh
dựa r ncác i u chuẩn es day di hường dem lại kế gu ố rong việc phá hiện ral i
rong chương rnh B n cạnh đó các i u chuẩn es có h d ng rong việc đánh giá chalượng chương r nh Tr n hực ế, hầu hễ các i uchuẩn es đầy đủ đều y u cầu các ch cnăng cụ h của mộ đoạn code chương r nh cần ph ¡ được hực hi Cụ h hon, m i lệnhrong chương r nh ph ¡ được hue hi nha mộ lần khi chương rnh được ki m hử.Những phương pháp ki m ra sử dụng i uchuẫn n y được gọi l phương pháp phn ch
bao phú.
Có nhiều i uchuân es về độ bao phủ:e Bao phủh m (Func ion coverage)
e Bao phú lệnh (S aemen coverage)
e Bao phủ đường di ( ah coverage)© Bao phủ điều kién/quyé đ nh (Condi ion/decision coverage)
Trong đó hai i u chuẩn es được áp dụng nhiều nha 1 bao phủ đường di và baophủ điều kiện / quyế đnh Tương ng với hai i u chuẩn es n y 1 hai phương phápsinh es case, với i u chuẩn bao phủ đường dil phương pháp hướng đương dan (pa horien ed), còn với i u chudddibao phủ điều kiện / quyé dhl phương pháp hướng mụctiêu.
2.3.1 Hướng mục tiêu (goal-oriented)
hương pháp sinh es case hướng mục i ul phương pháp dự rn i u chuẩn baophủ điều kién/quyé đ nh Mộ điều kiệnI mộ bi u h c logic có h được đánh giá bănggiá r TRUE hoặc FALSE, nhưng không ch a những bi u h c TRUE hoặc FALSEkhác Mộ quyế dnhl mộ biu h ccó h 1m nh hư ng đến luồng điều khi n của
Trang 31đoạn chương r nh déu được duyệ quay moi điêu kiện rong đoạn code đêu da giá rTRUE nha mộ lần v FALSE nha mộ lần.
hương pháp sinh es case hương mục i u được đưa ra lần đầu i nb iKorelv onăm 1 0 [5] Đối với phương pháp n y, đã có nhiều hệ héng áp dụng phương pháp
rong việc sinh es case cho chương r nh như TESTGEN, GADGET.
a Chuyến đối van đề sinh test case thành một bài toán tối ưuhương pháp sinh es case hướng mục i udựa rn ưngl mi h oh phanrong mộ chương rnh có h được xem như mộ h m Chương rnh có h được huehi ng bước cho dến khi dén dược mộ v r xác dnh rong doạn mã nguồn chươngtrình Các giá r của các biễn ương ng ạiv rn y được ghi lạ v xem nhưil giá rcủa hàm dụ, gi sử có mộ chương rnh ch a điều kiện if ( pos >= 21) dòngsố 35 của chương rnh,v mục iucta al ph ¡đổ mb o rằng nhánh TRUE của điềukiệnn y dược hực hi D da dược điềun y, aphi m được mộ đầu v oph hợp d
có h | m cho giá r của biến pos ai dòng 35 lớn hơn hoặc bằng 21 khi dòng n y dược
hực hi Có mộ cách đơn gi nđ xác đnh được giá r cua pos dòng 35, đó là cho
chương rnh hực hi đên dòng 35v ghi lại giá r của pos ại dòng n y.
Da pos35(x) | giá r của pos ai dòng 35 khi chương rnh được hực hib 1
f(x) dạ giá r 6i hi u
Cách iép cận rn gặp ph ¡ï mộ vân đề l : Dòng 35 của chương rnh có h
không được thục thi qua với một sô dữ liệu đầu vào Vi vậy, một sô giá tr x cóth làm
27
Trang 32cho hàm số f(x) đạt giá tr tối thi u, nhưng khi hực hi chương r nh với giá tr x trên thìchương r nh không bao gid chạy qua đòng 35 vấn đền y, hiện nay có hai gi i pháp:
- Th nhất, ta cóth xem vấn dé xác dnh kh năng chương rnh có h dếnđược v tri mong muôn với một tập giá tr đầu v o như 1 một bài toán con Bài
toán này cân ph i được gi i quy¢ rước khi gi i quyết bài toán tôi ưu f(x).- Th hai,tacóth xem giá tr f(x) rong rường hợpn y nhưi một sô vô cùng
lớn cho dén khi v trí mong muôn của chương r nh có h da được Nhu vay, vân
dé sinh es case cho chương rnh van ch là gi i quyết bài toán tôi ưu f(x) mà
không cần ph id nh nghĩa các b i oán con khác.Bảng bao phú:
Với i uchuân es | điều kiện / quyế đ nh mộ b ng bao phủ được aorad heo
d i gia r của các điêu kiện rong chương rnh Khi m i rẽ nhánh của diêu kiện đượchực hi, b ng bao phủ sẽ được cập nha băng cách đánh dầu aiv r rẽ nhánh v a hực
thi B ng bao phủ được x y dựng v oluc ph n ch chương rnhd có h xác đnh đượcdanh sách các điều kiện v các rẽ nhánh có h trong chương r nh được cap nha m ikhi chương rnh được hực hi với mộ bộ es case đâu v o Quá rnhn ycó h đượcmo
kiện
hông quav dụ sau:
Cho đoạn code d ng đ ph n loại đa giác dựa rn số cạnh
else
œŒœ ~] Œœ Os WN EP else ifelse if
if (num edge > 4)
printf ("Polygon") ;(num edge < 3)printf ("Line") ;
(num edge == 4)
printf ("Quadrilateral");printf ("Triangle") ;
Bang 3 Chuong trinh phan loai da giac (P1)Ð có h dến dược diều kiện IF ai dòng 3, es case ph hợp ph il m cho điều
line 1 da giá r FALSE.ới điêu kiện dong 5, diéu kién n ych có h được
Trang 33hực hi khi điều kiện dòng Iv điều kiện dòng 3c ng da giá r FALSE Nếu mục
l
A
i ucua việc sinh es casel d ac các rẽ nhánh rong đoạn code đều được hực hi, h
sẽ cần có hai test case cho điều kiện trong chương rnh,m i es case ương ng với giá
r TRUE và giá r FALSE của điều kiện.Đối với điều kiện dòng l,gi sử có hai es
case hỏa mãn điều kiện đạ giá r TRUE v FALSE Khi đó, nha mộ rong hai es
case trên có h hue hi được đến mộ rẽ nhánh ai điều kiện dòng 3.T do, chúng aiép uc m es case còn lạid có h bao phủ được hai rẽ nhánh của dòng 3 Tương ự aiép uc m các es caseph hợp đ có h sinh rabộ es case có h bao phủ o n bộ cácrẽ nhánh rong chương r nh.
Decision TRUE FALSE| xX X
3 - xX
5 -_ -_7 - -
Bàng 4 Bảng bao phú cua chương trình (PT)c Giải thuật sinh test case bằng phương pháp hướng mục tiêu
Gi ¡ hud heo hướng n y được chia ral m 4 bước:
Bước 1: Chuân b- Chương rnh đượcph n chd xác đnh 4c các điều kiện dựa r n các điềukiện - quyé đnh rong chương r nh
- Kh i ạob ng bao phủBước 2: Kh ¡ dầu
- Tạo ngẫu nhỉ nm6 es case.- Thue hichương r nh lần đầu i nvới es casen y.- Theo d i rạng hái bao phủ của các điều kiện rong chương rnh ron quá rnh
Trang 34- Sử dụng các es case đã đạ đênv r của điều kiện đang xé Sinh ra es case
mới sao cho điêu kiện n y được hỏa mãn Nghĩal điêu kiện da giá r TRUE vFALSE.
- Thue hi chương rnh với các es case mới sinh ra, cập nha b ng bao phú saum 1 lan chạy.
- Lap lai qua rnh m kiêm cho đên khí mra es case ph hop hoặc điêu kiệnd ng da được
Bước 4: Lap lại bước 3 với các điêu kiện đã được hực hi.
Bước 5: Lap lại bước 3 với các điều kiện chưa được hục hi, với các es caseđược gieo ngau nhi n
Bàng 5 Các bước giải thuật sinh test case hướng mục tiêuD minh họa cho gi ¡ huậ này, a sử dụng doạn chương r nh( 2) như sau:
int Solve(int a, int b, int c){
Bang 6 Chương trình tim số nghỉ m phương trình bậc 2 (P2)
Chương r nh dược ph n chy dưa ra mộ b ng bao phủ như sau:
ConditionTRUE FALSECondition | (Delta = 0)
Condition 2 (Delta < 0)Condition 3 (Delta > 0)Bàng 7 Bảng bao phủ điều i n của chương trình (P2)
Đâu in, heo hua oán a sinh ramộ es case ngầu nhi n Gi su es case ngâu
nhi n ban đầu aoral :a=3,b=6v c= 5.
Trang 35Sau khi hue higøi lập chương rnh với es case r n,b ng bao phủ r
Condition TRUE FALSECondition | (Delta = 0) O XCondition 2 (Delta < 0) X -Condition 3 (Delta > 0) - -Bang 8 Bang bao phủ cập nhật cúa (P2) với giá trị dau vào (3, 6,5)
Gi diều kiện 1, a hay với es case đầu vo rn, dau ra của diều kiện |
FALSE, muốn điều kiện được hỏa mãn, ph 1 sinh ra es case mới có h | m cho đầu racủa điều kiện đạ giá r TRUE Ta sử dụng mộ gi ¡ hua ốiưuđ m es case ph hopny, dygii hua di ruyén được lựa chon Gi sử a sử dung h m đánh giá độ h chnghi như sau: F(a, b, c) = abs ((b#b)-(4*a*c)) ớicách nhn y, giá r độ h ch nghi của
es case với đầu ra của điêu kiện 11 rue sé1 24.
Ta hue hiện gi i hud ôi ưu rn es case rn, mục dchl Im cho giá r độ
h ch nghi F(a, b, c) da giá r cực ¡ul 0 Sau khi m ra được kê qu, a cập nha lại
b ng bao phủ Gi sử kế qu mdugel :a=1,b=6,c=
B ng bao phủ điều kiện r h nh:
Condition TRUE FALSECondition | (Delta = 0) X XCondition 2 (Delta < 0) X -Condition 3 (Delta > 0) - -Bàng 9 Bang bao phủ cập nhật của (P2) với giá trị dau vào (1, 6, 9)Ta iép uc hực hiện như r n dến khi ấ ¢ các ô rong b ng dều được đánh dấu.Các es case m được sẽl bộ es cased ngd es chương trình.
d Ưu diễm va hạn chế cúa phương pháp:
- Uudi m:
® Có h bao phủ dược ac các diêu kiện có rong chương r nh.® Dộ es case m hay có kch hước nhỏ, <= 2*n vớinl sô điêu kiện rong
chương r nh.
Trang 36Tránh rường hợp các es case r ng nhau.
Hạn chê:e Bộ es case không h bao phủhế o n bộ những đường di rong chương r nh
hu huộc v o công cu hue higi lập chương rnh vậy, với những chươngrnh ch a những điều kiệnm công cu gi lập khôngh ro được h phương
pháp n y không hoạ động.
2.3.2 Hướng đường di (path-oriented)
hương pháp sinh es case hướng đường dil phương pháp dựa rn i u chuẩn
es | bao phủ đường đi hương pháp được hực hiện bằng cách m kiếm rong không
gian của chương r nh những bộ es case ph hợp sao cho sau khi hực hi chương r nh,mộ đường dẫn chương r nh xác đnh rước có h được hực hi.B iv m ichuong rnhcó h ch a vô số đường đi, phương pháp được giới hạn lại việc sinh es case cho mộ
ập con của ập đường đi.
Có hai gi 1 pháp sinh es case heo hướng đường dân ch nh:
- Gi i pháp sử dụng phương pháp gi i quyết ràng buộc
- Gi ¡ pháp sử dung gi i thuật tôi ưu hóa
Trong đó, phương pháp gi i quyé r ng buộc được hực hiện khá đơn gi n Kihua hực hi k hiệu được áp dụng r n đoạn mã nguồn của chương r nh Sau do, ap
dường đi của chương r nh sẽ được rú ra, m i dường di sẽ dược bi u di n dưới dang mộ
công h cr ng buộc r n các biến đầu v o Sau đó m ¡công h e ương ngm i đườngđi rong chương rnh sẽ được gi i bang mộ công cụ gi i quyế r ng buộc (cons rainsolver)d mrađược es case ph hop r n đường đi đó hương phápn y ương đối d
hực hiện, uy nhị n,ch có h hoa động hiệu qu r ncác chương r nh đơn gi n.L docủa vấn dé r nI:kĩ hud hực hik hiệu cũng như công cụ gi i quyé r ng buộc ch h
ro được những phép oán đơn gi n như phép oán logic, đại số hay quan hệ vậy,không h gi i quyé phương pháp n y không h gi i quyé được các chương rnh ph c
Trang 37Hiện nay gi i pháp sinh es case hương mục i u được nghi nc u rộng rãi nhachnhl gi i pháp sử dụng các gi i hud ôi uu hóa liêp heo đ y, học vi nsẽ rnhb yr hơn về gi iphapn y.
a Phương pháp sử dụng giải thuật tối ưuTa hay rằng, với mi es case đầu v o, chương rnh sẽ hực hi heo nhữngđường di nha đnh đới mộ đường đi mục 1 u bá k, nhiệm vụ của al phi mramộ
test case ph hợp đ chương rnh có h hue hi heo đường đi mục i u đó Gi sử
đường di mục i u của al pathgoy = {a, b, e,f} Lại gi sử với mộ es case , chươngrnh hực hi heo mộ đường đi pah, = {a,c,d,e} dia, b,c, d,e,f l các c u lệnhr n đường di Kho ng cách giữa hai đường dil mộ công h cđược nh oán dựa rnap inpu đầu v o.
Distance goa+ = Ipathgog — pathil = F(x)
Ta hay rằng, giá r kho ng cách giữa hai đường dic ng nhé h hai đường dic nggần nhau Nếu kho ng cách băng 0 nghial đường di pa h„„ = path,, khi đó bộ cs case
cũng chnh | bộ es case mong muốn d chương rnh hực hi heo dường di pa hzsaị T
đó b i oán sinh cs case được chuy n h nhmộ bi oán ốiưu:Tm 4p giá r đầu v o
x sao cho F(x) đạ giá r nhỏ nhâ.
b Giái thuật sinh test case:
Lá
Quá rnh sinh es case cho chương rnh sử dụng gi i hua ôi uu được hực hiệnqua 4 bước:
Bước 1: Chương rnh dược ph n chd xác dnh ac các y u câu test Các yêu
cầu es n yl các dường đi có h có của chương rnh Sau khiphn ch, mộ
đanh sách các đường đi được ao ra.Bước 2: Chọn mộ đường dẫn mục i u rong danh sách đường dẫn Sinh ra mộ
es case ngau nhi n Thực hi chương r nh với es case ngâu nhí nn y, chương
-t2)CÓ
Trang 38r nh sẽ chạy heo mộ đường dẫn gọi l đường dẫn hực hi Ta nh giá r hchnghi của đường dẫn huc hi đối với đường dẫn mục i u.
Bước 3: Sử dụng mộ huậ oán ỗi ưuhóa d ối hi u gid r hch nghỉ giữađường dẫn mục i uv đường dẫn hue hi, es case aorachnh! es case mongmuốn đ chương rnhcó h hue hi r n đường dẫn mục i u
Bước 4: Lap lại bước 2v 3 với các đường dẫn chưa được xé , với giá r đầu vođược ao ra ngầu nhi n.
Bang 10 Các bước giải thuật sinh test case hướng đường đi
c Phương pháp đánh giá độ thích nghỉ
Có nhiều phương pháp đánh giá dộ hch nghỉ của mộ đường dẫn đối với mộđường dẫn mục ¡ u, rong đó có phương pháp dựa r n kho ng cách Euclide (NormalizedEuclide Distance - NED), sử dụng vớih m hchnghil sự gần nhau (CLOSENESS) của
các đường di, hoặc dựa rn kho ng cách Hamming (Normalized Ex end Hamming
Dis ance) được đề xuấ b ¡ vớih m hchnghil sự ương ự (SIMILARITY) giữa cácđường đi rong chương r nh.
Ta minh họa phương pháp đánh giá độ hch nghi bang việc sử dụng h m hchnghi SIMILARITY đ xác đnh sự hch nghi của mộ es case chạy r nmộ đường dẫnhực hi đối với mộ đường dẫn mục i ucho rước Đầu in a xác đnh công h c nhgiá r SIMILARITY Kho ng cách Hamming được xác dnh he symme ric differencerong! huyé 4p hợp Hiệu đốix ng giữa 4p Av B(k hiệu làA@® )l mộ ậpch acác phần ử huộc A hoặc huộc B nhưng không huộcc hai ap hợp Tom lại:
A®B=(AUB)-(ANB)
Gia r độ lớn của ap hiệu đôi x ng được dnh nghĩa Ì kho ng cách giữa 2 ap
hợp Av B
D, ,=|A®P BỊ
Trang 39Kho ng cách 2D, „ được chuânhĩađ r h nhmộ giá r so hực
DA-BN =_- ^°_
Khi do giá r N, ;gọil kho ng cách chuẩn hĩa giữa hai ập hop Av B giá rcủa nĩ năm rong kho ng: OS N,_, <1
Biv D,,=|A® Bl=|AUB|-|ANB|, a hay v ocơng he rn, hu được:
_|A+2B|-|Ao5|_,_|aò
N* |A + B| |A + 5|
Đã 1-N _JAà_
x A-B AUB A-B
Giá r của M, , duoc đặ nl SIMILARITY, d ngd xác đnh độ ương ự củahai ậpAv B.
Ta áp dụng SIMILARITY v o việc sinh es case cho chương rnh heo hướngđường dan Gi sử 4p QI 4p ấ c các đường đi rong chương r nh
Trong đĩ:
- n là sơ đường đi rong chương rnh
- path là đường đi h itrong P, 1<i<n
Da 5 ={r} voirl mộ bộ điều kiện rẽ nhánh r n dường đi path,
Kho ng cach bậc nha giữa hai đường di path, và path, dược nh heo cơng h c:
Di, =|S'®S'
Trang 40Kho ng cách chuân hóa bậc nha giữa hai đường đi path, và path là:
1 _—_ li
i-i IS} ayĐộ ương u bậc nha giữa hai đường đi path, và path, là:
đường đi mục 1 uhon path,.