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

Xây dựng công cụ sinh đột biến cho chương trình Lustre

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

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 3,67 MB

Nội dung

BỘ GIÁO DỤC ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TẠ THANH HẢI XÂY DỰNG CÔNG CỤ SINH ĐỘT BIẾN CHO CHƯƠNG TRÌNH LUSTRE LUẬN VĂN THẠC SĨ KỸ THUẬT Đà Nẵng - Năm 2017 BỘ GIÁO DỤC ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TẠ THANH HẢI XÂY DỰNG CÔNG CỤ SINH ĐỘT BIẾN CHO CHƯƠNG TRÌNH LUSTRE Chuyên ngành: Khoa học máy tính Mã số: 60.48.01.01 LUẬN VĂN THẠC SĨ KỸ THUẬT Người hướng dẫn khoa học: PGS.TS NGUYỄN THANH BÌNH Đà Nẵng - Năm 2017 i LỜI CAM ĐOAN Tôi xin cam đoan: a Những nội dung Luận văn thực hướng dẫn trực tiếp PGS.TS.Nguyễn Thanh Bình; b Mọi tham khảo dùng Luận văn trích dẫn rõ ràng trung thực tên tác giả, tên cơng trình, thời gian, địa điểm công bố; c Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tơi xin chịu hồn tồn trách nhiệm Tác giả Tạ Thanh Hải ii TÓM TẮT LUẬN VĂN XÂY DỰNG CƠNG CỤ SINH ĐỘT BIẾN CHO CHƯƠNG TRÌNH LUSTRE Tóm tắt - Lustre ngơn ngữ đồng luồng liệu, sử dụng rộng rãi để phát triển hệ thống phản ứng, hệ thống điều khiển hệ thống giám sát, lò phản ứng hạt nhân, máy bay dân sự, xe ôtô Đặc biệt, Lustre thích hợp cho phát triển hệ thống thời gian thực Trong ứng dụng vậy, hoạt động kiểm thử để phát lỗi giữ vai trò quan trọng Trong đó, kiểm thử đột biến kỹ thuật sử dụng phổ biến để đánh giá khả phát lỗi liệu thử Việc sinh đột biến từ toán tử đột biến đề xuất cơng việc quan trọng tốn nhiều chi phí (thời gian, nhân lực), ta thực sinh đột biến phương pháp thủ công Trong luận văn này, chúng tơi trình bày giải pháp sinh đột biến cách tự động cho chương trình Lustre dựa tốn tử định nghĩa Công cụ sinh đột biến tự động yêu cầu cấp bách cho việc kiểm thử đột biến chương trình Lustre, từ áp dụng kiểm thử đột biến cho chương trình Lustre với quy mơ lớn Cơng cụ thử nghiệm sinh đột biến số lớn chương trình Lustre cho kết khả quan Từ khóa - Tốn tử đột biến, MuLustre; Ngơn ngữ Lustre, Lập trình đồng bộ, Hệ thống phản ứng GENERATING MUTANTS TOOL FOR LUSTRE PROGRAMS Abstract - Lustre is a data flow synchronous language, which is widely used for the development of reactive systems, control and monitoring systems, such as nuclear reactors, civilian aircraft, cars Especially, Lustre is suitable for developing real-time systems In such applications, testing activities for error detection play a very important role In particular, mutagenesis testing is one of the most techniques that commonly used for evaluating error detection of test data Creating mutations from a set mutant operator is an important and costly (time, human) task, if applying manual method In this thesis, we present a automatically mutant solution for the Lustre program based on a set of defined operators Automated mutagenesis tools are an urgent requirement for testing the mutations in Lustre programs, which can be used to test mutations Lustre program on the larger-scale The tool was tested for mutation on a large number of Lustre programs and showed positive results Key words - mutation operator; MuLustre; Lustre Programming Language; Synchronous programming language; Reactive System iii MỤC LỤC LỜI CAM ĐOAN .i TÓM TẮT LUẬN VĂN ii MỤC LỤC iii DANH MỤC CÁC TỪ VIẾT TẮT vi DANH MỤC CÁC BẢNG vii DANH MỤC CÁC HÌNH viii MỞ ĐẦU 1 Lý chọn đề tài .1 Mục tiêu nhiệm vụ Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu .3 Ý nghĩa khoa học thực tiễn đề tài Bố cục luận văn .3 CHƯƠNG TỔNG QUAN KIỂM THỬ ĐỘT BIẾN 1.1 Giới thiệu 1.2 Lý thuyết kiểm thử đột biến .6 1.2.1 Khái niệm kiểm thử đột biến 1.2.2 Cơ sở kiểm thử đột biến .8 1.2.3 Quy trình kiểm thử đột biến .9 1.2.4 Một số khái niệm 11 1.2.4.1 Toán tử đột biến 11 1.2.4.2 Đột biến tương đương .12 1.2.4.3 Tỷ lệ đột biến 13 1.2.5 Một số vấn đề kiểm thử đột biến .13 1.3 Một số kỹ thuật cải tiến kiểm thử đột biến .14 1.3.1 Giảm chi phí tính tốn .14 1.3.1.1 Các kỹ thuật làm “ít hơn” (A “fewer” approach) 15 1.3.1.2 Các kỹ thuật làm nhanh (A “do smarter” approach) 17 1.3.2 Tăng tự động hóa .20 1.3.2.1 Tạo liệu thử tự động .20 1.3.2.2 Xác định đột biến tương đương tự động .21 1.4 Ứng dụng kiểm thử đột biến 22 1.4.1 Đột biến mã nguồn 23 1.4.1.1 Kiểm thử đột biến cho ngôn ngữ Fortran 23 iv 1.4.1.2 Kiểm thử đột biến cho ngôn ngữ C 23 1.4.1.3 Kiểm thử đột biến cho ngôn ngữ Java 24 1.4.1.4 Kiểm thử đột biến cho ngôn ngữ C# 24 1.4.1.5 Kiểm thử đột biến cho SQL 25 1.4.2 Đột biến đặc tả 25 1.4.2.1 Kiểm thử đột biến cho đặc tả hình thức 25 1.4.2.2 Kiểm thử đột biến cho môi trường thực thi 26 1.4.2.3 Kiểm thử đột biến cho dịch vụ Web 26 1.4.2.4 Kiểm thử đột biến cho hệ thống mạng 27 1.5 Kết luận 27 CHƯƠNG KIỂM THỬ ĐỘT BIẾN CHO CHƯƠNG TRÌNH LUSTRE 28 2.1 Giới thiệu ngôn ngữ đồng Lustre 28 2.2 Các lớp lỗi ngôn ngữ Lustre 30 2.2.1 Các lỗi kiểu liệu (Type Faults) .31 2.2.2 Các lỗi biến (Variable Faults) 31 2.2.3 Các lỗi số (Constant Faults) 31 2.2.4 Các lỗi biểu thức (Expression Faults) 31 2.3 Bộ toán tử đột biến cho chương trình Lustre 32 2.3.1 Phân loại toán tử đột biến .32 2.3.1.1 Đột biến biến .32 2.3.1.2 Đột biến số 32 2.3.1.3 Đột biến biểu thức số học 33 2.3.1.4 Đột biến biểu thức quan hệ .33 2.3.1.5 Đột biến biểu thức luận lý 33 2.3.1.6 Đột biến biểu thức 33 2.3.2 Bộ toán tử đột biến 33 2.4 Kết luận 34 CHƯƠNG CÔNG CỤ SINH ĐỘT BIẾN TỰ ĐỘNG CHO CHƯƠNG TRÌNH LUSTRE 35 3.1 Giới thiệu 35 3.2 Các kết nghiên cứu liên quan 36 3.3 Công cụ sinh đột biến cho chương trình Lustre .38 3.3.1 Quy trình sinh đột biến cho chương trình Lustre 38 3.3.2 Phát triển công cụ sinh đột biến 39 3.3.2.1 Bộ phân tích cú pháp (Lustre Parser) 39 3.3.2.2 Công cụ sinh đột biến MuLustre .43 v 3.4 Thử nghiệm đánh giá 44 3.4.1 Thử nghiệm 44 3.4.2 Dữ liệu thử .45 3.4.3 Đánh giá 48 3.5 Kết luận 49 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50 TÀI LIỆU THAM KHẢO .52 QUYẾT ĐỊNH GIAO ĐỀ TÀI BẢN SAO KẾT LUẬN CỦA HỘI ĐỒNG, BẢN SAO NHẬN XÉT CỦA CÁC PHẢN BIỆN vi DANH MỤC CÁC TỪ VIẾT TẮT AAR ABS ACR ARO AOR ASR BOFs CAR CBT CNR CRO CRP CSR DDR DSA FSBs FSM GLR LCR LRO MS MSG PFSM ROR RRO RSR SAN SAR SCR SDL SRC SVR UOI UOD VRO Array Reference For Array Reference Replacement Absolute Value Insertion Array Reference For Constant Replacement Arithmetic Replacement Operator Arithmetic Operator Replacement Array Reference For Scalar Variable Replacement Buffer Overflows Constant For Array Reference Replacement Constraint-based testing Comparable Array Name Replacement Constant Replacement Operator Constant Replacement Constant For Scalar Variable Replacement Dynamic Domain Reduction Data Statement Alterations Format String Bugs Finite State Machines Goto Label Replacement Logical Connector Replacement Logical Replacement Operator Mutation Score Mutant Schema Generation Probabilistic Finite State Machines Relational Operator Replacement Relational Replacement Operator Return Statement Replacement Statement Analysis Scalar Variable For Array Reference Replacement Scalar For Constant Replacement Statement DeLetion Source Constant Replacement Scalar Variable Replacement Unary Operator Insertion Unary Operator Delete Variable Replacement Operator vii DANH MỤC CÁC BẢNG Số hiệu Tên bảng hình Trang 1.1 Ví dụ minh họa đột biến 1.2 Ví dụ tốn tử đột biến ROR 11 1.3 Tập toán tử đột biến dùng Mothra (cho ngôn ngữ Fortran) 11 1.4 Ví dụ đột biến tương đương 13 2.1 Giá trị luồng X luồng Y với chu kỳ ti (i=0 5) 30 2.2 Các toán tử đề xuất cho Lustre 33 2.3 Số đột biến sinh 34 3.1 Các công cụ đột biến công bố 37 3.2 Kết sinh đột biến 44 3.3 Số đột biến tạo từ toán tử đột biến 46 3.4 Kết thử nghiệm với liệu thử ngẫu nhiên 47 viii DANH MỤC CÁC HÌNH Số hiệu hình Tên hình Trang 1.1 Tiến trình thực kiểm thử đột biến 10 1.2 Ví dụ phương thức chương trình gốc 19 1.3 Phiên đột biến chương trình gốc (Hình 1.2) 20 2.1 Mơ hình hệ thống phản ứng 28 2.2 Ví dụ đoạn chương trình Lustre 29 2.3 Ví dụ chương trình Lustre đơn giản 30 3.1 Quy trình sinh đột biến cho Lustre 38 3.2 Kiến trúc hệ thống công cụ sinh đột biến 39 3.3 Các bước trình biên dịch thơng thường thực 40 3.4 Quy trình xây dựng trình biên dịch dùng Lex Yacc 41 3.5 Cấu trúc phân tích từ vựng Lex 42 3.6 Cấu trúc phân tích cú pháp Yacc 42 3.7 Biểu đồ so sánh đột biến sinh 45 3.8 Tỷ lệ đột biến liệu thử 48 54 [27] Wong WE, Mathur AP, “How strong is constrained mutation in fault deletion?” International Computer Symposium, p 515–520, 1994 [28] Wong WE, Maldonado JC, DelamaroME, Mathur AP, “Constrained mutation in C programs” VIII Simpósio Brasileiro de Engenharia de Software (SBES 94), pp 439-452, 1994 [29] Ma Y-S, Offutt J, Kwon YR, “MuJava: an automated class mutation system”, Software Testing, Verification and Verification and, vol 15, no 2, pp 97-133, 2005 [30] Anthony A Aaby, “Compiler construction using FLex and Bison”, Walla Walla College, April, 2005 [31] Bert Hubert, “LEX and YACC primer/How to”, PowerDNS BV, April, 2002 [32] A Offutt, “A practical system for mutation testing: help for the common programmer,” in IEEE International Test Conference on TEST: The Next 25 Years, Washington, DC, USA, 1994 [33] Untch Roland H., Offutt Andrew Jefferson, Jea Mary, “Mutation Analysis Using Program Schemata”, in the 1993 International Symposium on Software Testing and Analysis, Cambridge, Massachusetts, June 28-30, 1993 ... Lustre Chương XÂY DỰNG CÔNG CỤ SINH ĐỘT BIẾN CHO CHƯƠNG TRÌNH LUSTRE Trong chương này, nghiên cứu giải pháp để xây dựng công cụ sinh đột biến tự động cho chương trình Lustre dựa toán tử đột biến. .. quy trình kiểm thử đột biến cho chương trình Lustre  Ý nghĩa thực tiễn Công cụ sinh đột biến tự động để sinh đột biến từ toán tử đột biến đề xuất cho chương trình Lustre Bố cục luận văn Chương. .. thử đột biến - Ngôn ngữ đồng Lustre - Mã nguồn Lustre Parser - Phân tích thiết kế hệ thống sinh đột biến tự động - Xây dựng công cụ sinh tự động đột biến cho chương trình Lustre từ toán tử đột biến

Ngày đăng: 20/06/2020, 16:33

w