1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)

59 278 0

Đ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

Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)Xây dựng công cụ kiểm thử tự động cho các chương trình C (Đồ án tốt nghiệp)

I H C QU C GIA HÀ N I I H C CÔNG NGH Nguy c Anh XÂY D NG CƠNG C KI M TH KHĨA LU N T T NGHI T I H C H CHÍNH QUY Ngành: Cơng ngh thông tin HÀ N I NG CHO 2015 I H C QU C GIA HÀ N I I H C CÔNG NGH Nguy c Anh XÂY D NG CÔNG C KI M TH KHÓA LU N T T NGHI T I H C H CHÍNH QUY Ngành: Cơng Ngh Thông Tin Cán b NG CHO ng d n: TS Ph m Ng c Hùng (ký tên) HÀ N I - 2015 VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY Nguyen Duc Anh A METHOD AND TOOL SUPPORTING FOR AUTOMATED TESTING OF C PROGRAMS THE BS THESIS Major: Information Technology Supervisor: Dr Pham Ngoc Hung L IC HA NOI - 2015 L IC u tiên, xin g i l chân thành t i Ti n s Ph m Ng c Hùng viên b môn Công Ngh Ph n M m ng d n t n tình, t m su giúp h c h n t t nghi p Quãng th c nhi u kinh nghi m v giao ti nghiên c u khoa h c, ni t qua nh th ng d n nh t qua nh ng d u, Ti p theo, xin g i l i c Ngh - i h c Qu c Gia Hà N i g Th y truy n cho ng n l a yêu c s ng d y cách Tôi c m th y t hào may m n m t sinh viê i h c Ngồi ra, tơi xin g i l i hồn thành khóa lu ng, b ng l i nói m i tơi g iv quý báu làm n n t c th gi ng c n t p th l nhi t t hi u qu cao nh t Các b b ng , th t b i B i i gian t v i nh t không th quên n th y cô gi nh n tâm truy ti p t i h c Công t nh ng ki n th c c công ngh thơng tin Cu cc tr i có ích cho xã h i, giúp tơi có m t m t a v ng ch yên tâm h c hành su t bao Tôi xin g i l i chân thành t i cha, m ng viên c i g thách Hà N i, ngày 03 Sinh viên Nguy c Anh TĨM T T Ngày nay, ngơn ng C m t nh ng ngôn ng l p trình ph bi phát tri n ph n m c bi t ph n m m h th ng M t nh ng t ki m th hi u qu c s d ng sinh ca ki m th ki m th h p tr ng u n ti t ki m chi phí ki m th ph n m m, trình sinh ca ki m th ct ng hóa h t m c có th cơng c ki m th hi n ch t p trung vào th c thi ca ki m th n sinh ca ki m th t ng M t vài công c ki m th sinh ca ki m th t ng ca ki m th nh ho c l n n lý, ngồi h n ch v th i gian sinh ca ki m th Vì th , khóa lu n xu t m m th t ng cho m t hàm C ch a bi n s nguyên, s th c bi n m ng s d ng t ki m th h p tr ng u n t công c h tr CFT4CUnit u vào g m m t hàm C tiêu chí ph ki m th ph u g m t p ca ki m th th a mãn tiêu chí ph ki m th t p ca ki m th ki m th vòng l p (n u hàm C có vòng l p) C th u tiên, mã ngu n c phân tích th u n th a mãn tiêu chí ph ki m th th u n c phân tích xây d ng t ng ki m th Ti p t ng ki m th ch a vòng l c c u trúc l ng ki m th m i dùng ki m th n vòng l p K ti p, ng ki m th c phân tích b ng t SE xây d ng h ràng bu c ng Cu i cùng, h ràng bu c c gi i sinh ca ki m th b ng cách k t h p t sinh ng u nhiên t n d ng th m nh công c SMT-Solver K t qu th c nghi m cho th y kh n c l i t t hàm C v i s b ca ki m th t i thi u mà v mb n cao c a mã ngu n Ngoài ra, th i gian sinh ca ki m th c c i thi gi c nhi u h ràng bu c khác k t h t sinh ng u nhiên s d ng công c SMT-Solver T khóa: Ki m th t SMT-Solver ng, hàm C, th u n, ca ki m th , Symbolic Execution, ABSTRACT Nowadays, C programming language has been known as one of the most popular programming languages to develope applications, especially system applications Because of high demand in quality, testing phase is performed quite rigorously and strictly As a result, the cost of the testing phase can be up to 40% - 60% the total cost of application development process Test case generation in white-box testing is an effective technique and used widely to ensure the high quality of applications To reduce the cost of the testing phase, the test case generation process should be automated as much as possible However, some testing tools focus on executing test cases and output the testing report instead of generating test cases automatically Other testing tools assist to generate test cases automatically but the number of test cases may be a lot or un-known which cause many difficult and challenging problems such as management, time limit, etc The thesis proposes an approach how to generate test cases automatically for C Unit containing integer variables, float variables, array variables The proposed approach is based on white-box testing and implements in CFT4CUnit tool to demonstrate the effectiveness of the approach Firstly, source code is analysed to generate corresponding Control Flow Graph (CFG) Then I traverse the CFG to obtain the independent paths After that, paths containing loop is reconstructed to create some new paths used to test the loop Next, each path is analysed by using symbolic execution technique to generate corresponding constraints Finally, the process of solving the constraints is performed to find solution as fast as possible by combining random technique and SMT-Solvers The experimental result shows the effectiveness of the approach with the minimum number of test cases but ensures the high quality of source code Keywords: automated testing, C Unit, control flow testing, test case, symbolic execution, SMTSolver L ng nh ng nghiên c u v ki m th t bày lu n án c cn ng cho hàm C c trình t báo cáo khóa lu n t i i h c Công Ngh - i h c Qu c Gia Hà N i ho c b t k i h c khác Nh ng tơi vi t khơng chép t tài li u, không s d ng k t qu c i khác mà khơng trích d n c th ki m th t ng tơi trình bày khố lu n tơi t phát tri n, không chép mã ngu n c i khác N u sai tơi hồn tồn ch u trách nhi nh c i h c Công Ngh - i h c Qu c Gia Hà N i Hà N i, ngày 03 tháng Sinh viên Nguy c Anh M CL C tv T t ki m th h p tr 2.1 T t ki m th h p tr u n u n 2.2 Quy trình chung c a ki m th h p tr u ng 2.3 Quy trình chung c a ki m th h p tr u 2.3.1 Các tiêu chí ph ki m th th u n ng ki m th t ki m th h p tr 2.5 T m quan tr ng c a t u ng 10 ng hóa quy trình ki m th h p tr u n 11 m th t ng hàm C s d t ki m th h p tr ng 12 u 3.1 T m th h p tr th 3.3 Xây d ng t 12 u n t mã ngu n 13 ng ki m th t 3.3.1 Xây d ng t 3.3.2 Xây d u th u n 16 c l p 16 ng ki m th vòng l p 17 3.3.2.1 Ki m th a vòng l 3.3.2.2 Ki m th a hai vòng l p l ng 19 3.4 Sinh t p d li u ki m th t t 18 ng ki m th 20 3.4.1 Xây d ng h ràng bu c 20 3.4.2 Tìm nghi m th a mãn h ràng bu c 22 3.4.2.1 Gi i h s d t sinh ng u nhiên 22 3.4.2.2 Gi i h s d ng SMT-Solver 23 mc ng sinh ca ki m th 29 Th c nghi m 31 n h tr 31 4.1.1 Gi i thi u v n SMT-Solver SmtInterpol 31 4.1.2 Gi i thi u v n CDT 31 4.1.3 Gi i thi u v n Jeval 32 4.2 Gi i thi u công c ki m th t ng hàm C 32 4.2.1 T ng quan v công c CFT4CUnit 32 u vào công c 33 u công c 34 th 4.2.2.2 T u n 34 ng ki m th 35 4.2.2.3 T p ca ki m th 36 4.2.2.4 Bi u th c chu n SMT-Lib 37 4.2.2.5 Ki m th vòng l 37 4.2.2.6 Ki m th vòng l p l ng 38 4.2.3 Th c nghi m 39 4.2.4 Ý c nghi m 43 K t lu n 45 DANH SÁCH B NG B 26 B ng So sánh CFT4CUnit, công c B ng Ki m th vòng l xu t [5] PathCrawler .40 d ng công c CFT4CUnit .40 B ng Ki m th hai vòng l p l ng hàm SelectionSort s d ng công c CFT4CUnit .42 DANH SÁCH KÝ HI U, CH VI T T T AST Abstract Syntax Tree CFG Control Flow Graph CDT C/C++ Development Tooling CVC Cooperating Validity Checker DIMACS Center for Discrete Mathematics and Theoretical Computer Science SMT-Solver Satisfiability Modulo Theories Solver SAT Boolean Satisfiability Problem T-Solver Theory-specific Solvers SE Symbolic Execution http://uet.vnu.edu.vn/~hungpn/CFT4CUnit/ Hình 4.2 mơ t giao di n t ng quan c a cơng c CFT4CUnit Hình 4.2 Giao di n công c CFT4CUnit 4.2.1 u vào công c CFT4CUnit m t hàm C ch a bi n s nguyên (ki u int), s th c (ki u double, float) bi n m ng m t chi u ho c hai chi u Ch s bi n m ng có th s nguyên ho c bi u th c Các kh i l u while do, while, switch case Hình 4.3 m t ví d Hình 4.3 Ví d c x lí bao g m r nhánh, for, u vào cơng c u vào công c CFT4CUnit 33 4.2.2 4.2.2.1 th dòng u n Cơng c CFT4CUnit s th a mãn tiêu chí ph câu l nh, ph nhánh ph ng ki m th b t kì th t th c hi n t ng câu l nh CFG Th sinh u ki n th u n i s d ng nh n m t ng CFG chuy n sang c hi n th a i dùng có th , ngồi i di chuy n sang v trí m i th CFG ph câu l nh/nhánh hi n th CFG th a mãn tiêu chí ph câu l nh ph nhánh Th th CFG ph u ki n hi n th CFG ng v i tiêu chí ph u ki n Hình 4.4 mơ t th CFG c a hàm foo nêu Hình 4.3 th a mãn tiêu chí ph câu l nh ph nhánh Hình 4.5 hi n th th CFG hàm foo ng v i tiêu chí ph u ki n u tiên mang nhãn Bat dau ham nh k t thúc mang nhãn Ket thuc ham ng màu xanh lam ng v ng màu xanh ng v i nhánh sai Hình 4.4 th CFG th a mãn tiêu chí Hình 4.5 ph câu l nh ph nhánh 34 th CFG th a mãn tiêu chí ph u ki n Hình 4.6 4.2.2.2 T ng CFG chuy n sang màu dùng nh n vào m ng ki m th b t kì i ng ki m th ng ki m th ng v i t ph c sinh t ng hi n th th Ph câu l nh, Ph nhánh Ph u ki n C th , th Ph câu l nh hi n th t p ng ki m th th a mãn tiêu chí ph câu l nh Th Ph nhánh hi n danh sách t ng ki m th th a mãn tiêu chí ph nhánh Th Ph u ki n ng ki m th th a mãn tiêu chí ph u ki n Ngồi ra, t cl ng v ph câu l nh ph nhánh hi n th th T c l p Hình 4.7 T Hình 4.8 T ng ki m th th a mãn ph câu l nh hàm foo ng ki m th th a mãn ph nhánh hàm foo 35 Hình 4.9 T Hình 4.10 T ng ki m th th a mãn ph u ki n hàm foo cl sinh t p ng ki m th ph nhánh ph câu l nh hàm foo 4.2.2.3 T p ca ki m th i dùng nh n vào nút Tìm ca ki m th sinh ca ki m th th i gian th c Tùy vào lo i h ràng bu c c n gi i mà công c s d t sinh ng u nhiên hay t n d ng th m nh SMT-Solver Thơng tin v q trình SE c hi n th chi ti t th Quá trình SE Ví d minh h a Hình 4.11 Hình 4.11 Ca ki m th th sinh theo ng u nhiên dùng SMT-Solver 36 t 4.2.2.4 Bi u th c chu n SMT-Lib i dùng nh n vào m Lib ch c sinh t ng hi n th t ng ki m th , h ràng bu c th a mãn chu n SMTth H ràng bu c chu n SMT-Lib Trong trình d ng chu n SMT-Lib vào u vào vi n SmtInterpol i dùng có th tl ng d Hình 4.12 trình bày h ràng bu c chu n SMT-Lib ng v th CFG ph câu l nh/nhánh th a mãn tiêu chí ph câu l nh n SmtInterpol theo ý th m Hình 4.12 H ràng bu c chu n SMT- ng v ng ki m th ng ki m th 4.2.2.5 Ki m th vòng l ki m th vòng l i dùng c nh bi n l p vòng l p i dùng nh n nút Tìm ca ki m th sinh t p ca ki m th n vòng l p T p ca ki m th hi n th th Ki m th vòng l g m thông tin: s l n l ng ki m th ng s l n l p, h ràng bu c, ca ki m th , giá tr tr v thơng tin q trình gi i h (s d ng SMT-Solver hay sinh ng u nhiên) Hình 4.13 nêu ví d ki m th vòng l tinh_tong Vòng l nh s l n l p t c l p l i l n, l n, l n, m t s ng u nhiên (9 l n) 37 Hình 4.13 Ki m th vòng l 4.2.2.6 Ki m th vòng l p l ng ki m th ng ki m th ch a hai vòng l p l i dùng c n nh bi n l p vòng l p vòng l i dùng nh n nút Tìm ca ki m th sinh ca ki m th n vòng l p Th Ki m th vòng l p hi n th t p ca ki m th ki m tra vòng l p Th Ki m th vòng l p ngồi hi n th t p ca ki m th ki m tra vòng l p bên ngồi Hình 4.14 Ki m th m ng ki m th ch a hai vòng l p l ng hàm SelectionSort 38 4.2.3 m ch tính hi u qu c sánh v kh CFT4CUnit, công c xu t, ph n th c nghi m th gi a ba công c : công c xu t [5] công c PathC so xu t u vào ba công c m t hàm C v i bi n s nguyên, s th c bi n m u ba công c t p ca ki m th T p ví d th c nghi m chia thành ba lo i: t p ví d có câu l u ki gi n, t p ví d có câu l u ki n ph c t p, t p ví d ch a vòng l p, t p ví d có ch s bi n m ng ph c t p Các t p ví d c th c hi n máy h u hành Window 32 -2410M CPU @ 2.30GHz v i 6GB Ram B ng so sánh gi a ba công c CFT4CUnit, công c PathCrawler Công c CFT4CUnit ph nhánh ph u ki n con, công c l i phát hi xu t [5] xu t [5] c hàm C Trong ví d foo, PathCrawler g p ph i l i interrupted khơng th sinh thành công ca ki m th u tiên c l i, t ki m th lu u ng cl m sinh t p ca ki m th thành công phát hi c l i Công c xu t [5] phát hi n l i ti m i CFT4CUnit không sinh t p ca ki m th ph i u ki n V i ví d UCLN, PathCrawler g p ph i l i interrupted ca ki m th u tiên d sinh h ràng bu c dài Các h ràng bu c m c xây d ng b ng cách ph nh h ràng bu c nêu ph c t p trình tìm ca ki m th k ti p t h ràng bu c m i tr m t th i gian K t qu , m t kho ng th i gian gi i h n t c, PathCrawler khơng hồn thành trình sinh ca ki m th c l i, CFT4CUnit công c u sinh thành công ca ki m th Trong ví d Grade, PathCrawler sinh t i 12 ca ki m th hai cơng c l i sinh s ca ki m th u mà phát hi n l i Xét ví d Average, CFT4CUnit phát hi c l i công c xu t [5] ch phát hi c m t l i Ví d Average cho th y kh nl it sinh t p ca ki m th th a mãn tiêu chí ph u ki n thay ph PathCrawler sinh t i 21 ca ki m th c l i 39 Cu i cùng, v i ví d ComplexIndex ch a ch s PathCrawler công c xu t [5] không gi i quy bi n m ng d ng bi u th c, cv c l i, CFT4CUnit có q trình rút g n ch s m ng d ng bi u th c nên phát hi B ng So sánh CFT4CUnit, công c CFT4CUnit c m t l i xu t [5] PathCrawler Công c xu t [5] PathCrawler Hàm C th m có th S l i S ng ki m th S l i S ng ki m th S l i S ng ki m th Foo - - UCLN 6 - - Grade 6 12 Average 21 ComplexIndex - - - - t p ca ki m th vòng l B ng nêu ví d ch a vòng l c sinh b i công c CFT4CUnit Công c xu c ca ki m cho vòng l p t ki m th vòng l p c n c tiêu khác so v i CFT4CUnit nên không nêu so sánh khóa lu n B ng 3, p kh i vòng l m N ng ki m th m i vòng l p chép m t s l n c th khơng có ca ki m th th a mãn, c t ca ki m ghi d B ng Ki m th vòng l Mã ngu n UCLN d ng công c CFT4CUnit ch a vòng l p t p cl p !(m

Ngày đăng: 18/03/2018, 22:52

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN