1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Xác định xấp xỉ vùng code gây lỗi ở phiên bản chương trình B khi được sửa từ phiên bản chương trình A

93 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xác định xấp xỉ vùng code gây lỗi ở phiên bản chương trình B khi được sửa từ phiên bản chương trình A
Tác giả Nguyen Le Hi
Người hướng dẫn TS. Nguyen Ha Hung
Trường học Đại học Quốc gia TP.HCM
Chuyên ngành Khoa học máy tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2013
Thành phố Tp.HCM
Định dạng
Số trang 93
Dung lượng 12,39 MB

Nội dung

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 2

CÔ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 5

LỜ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 6

TÓ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 7

Bugs 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 8

LỜ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 9

MỤ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 10

CHUONG 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 11

MỤ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 12

ng 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 13

MỞ ĐẦ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 14

tô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 15

CHUONG 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 16

hiệ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 17

Nhậ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 18

1.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 19

CHƯƠ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 20

huc 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 21

Software 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 22

chươ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 23

Source 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 24

Trong 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 25

hươ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 26

vớ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 27

StmtID |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 28

Hì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 29

giá, 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 30

2.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 32

cho 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 33

hự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 35

Sau 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 36

Trá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 37

Hiệ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:

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 38

r 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 39

Kho 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 40

Kho 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,.

Ngày đăng: 24/09/2024, 06:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN