Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 109 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
109
Dung lượng
1,15 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ - TÔ HỮU NGUYÊN MỘT SỐ CẢI TIẾN VỀ RÀNG BUỘC XÂU TRONG SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO THỰC THI TƯỢNG TRƯNG LUẬN ÁN TIẾN SĨ TOÁN HỌC Hà Nội - 2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ - T Ô H Ữ U N G U Y Ê N MỘT SỐ CẢI TIẾN VỀ RÀNG BUỘC XÂU TRONG SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO THỰC THI TƯỢNG TRƯNG LUẬ N ÁN TIẾ N SĨ TOÁN HỌC Chuyên ngành : Cơ sở toán học cho tin học Mã số: 46 01 10 Người hướng dẫn khoa học: TS Ng uyễ n Trư ờng Th ắng PG S TS Đặ ng Vă n Đứ c Hà Nội 2020 i MỤC LỤC MỤC LỤC i LỜI CAM ĐOAN iii LỜI CẢM ƠN iv DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT v DANH MỤC BẢNG BIỂU vi DANH MỤC HÌNH VẼ vii MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ THỰC THI BIỂU TRƯNG 1.1 Kiểm thử phần mềm 1.1.1 Các khái niệm 1.1.2 Các phương pháp kiểm thử 10 1.2 Kỹ thuật kiểm thử hộp trắng dòng điều khiển 12 1.2.1 Kiểm thử hộp trắng dòng điều khiển theo hướng động 12 1.2.2 Kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh 14 1.2.3 Các tiêu chí phủ kiểm thử 15 1.2.4 Đồ thị dòng điều khiển 16 1.2.5 Đường kiểm thử 17 1.3 So sánh kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh động .17 1.4 Thách thức kiểm thử phần mềm 18 1.5 Thực thi biểu trưng 19 1.5.1 Tổng quan thực thi biểu trưng 19 1.5.2 Thực thi biểu trưng tĩnh 24 1.5.3 Thực thi biểu trưng động 27 1.5.4 Thực thi Concolic 33 1.5.5 Thực thi biểu trưng với lời gọi phương thức 37 1.6.6 Ràng buộc xâu vai trò giải ràng buộc xâu 40 1.6 Kết luận chương 42 CHƯƠNG THỰC THI BIỂU TRƯNG VÀ MƠ HÌNH HĨA RÀNG BUỘC 44 2.1 Đặt vấn đề 44 2.1.1 Bùng nổ đường 44 ii 2.1.2 Mơ hình hóa nhớ 46 2.2 Thực thi biểu trưng công cụ mở rộng 47 2.2.1 Thực thi biểu trưng kiểm thử phần mềm 47 2.2.2 Thực thi biểu trưng ngôn ngữ Java 48 2.3 Giải ràng buộc thực thi biểu trưng 54 2.4 Ràng buộc hỗn hợp cải tiến giải ràng buộc xâu 56 2.4.1 Đồ thị xâu 58 2.4.2 Xây dựng lại ràng buộc 58 2.4.3 Quá trình tiền xử lý 59 2.4.4 Sinh ràng buộc xâu kết thực 60 2.4.5 Giải ràng buộc sử dụng Otomat 62 2.5 Kết luận chương 62 CHƯƠNG GIẢI RÀNG BUỘC XÂU 63 3.1 Đặt vấn đề 63 3.2 Các vấn đề liên quan đến Bitvector thỏa mãn SMT (satisfiability modulo theories) 64 3.2.1 Lý thuyết thỏa mãn SMT 64 3.2.2 Giải ràng buộc xâu dựa phương pháp BitVector 66 3.3 Giải ràng buộc xâu dựa phương pháp sử dụng OTOMAT 67 3.4 Đề xuất giải ràng buộc xâu thực thi biểu trưng 70 3.4.1 Mơ hình hố ràng buộc xâu sử dụng đồ thị 71 3.4.2 Phát thêm ràng buộc kiểu nguyên liệu xâu 72 3.5 Thực nghiệm đánh giá kết 72 3.6 Kết luận chương 85 KẾT LUẬN VÀ KIẾN NGHỊ 86 DANH MỤC CƠNG TRÌNH CỦA TÁC GIẢ 87 TÀI LIỆU THAM KHẢO 88 iii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng tơi hồn thành hướng dẫn tận tình tập thể hướng dẫn gồm Các kết viết chung với tác giả khác trí đồng tác giả đưa vào luận án Các kết nêu luận án trung thực chưa công bố cơng trình trước thời gian cơng trình tơi cộng công bố Hà Nội, ngày… tháng….năm … Tác giả luận án iv LỜI CẢM ƠN Trước hết, tác giả xin bày tỏ lòng biết ơn chân thành sâu sắc tới thầy giáo hướng dẫn, TS Nguyễn Trường Thắng PGS TS Đặng Văn Đức Sự tận tình giúp đỡ, bảo, động viện tận tình q báu mà thầy dành cho tác giả suốt trình thực luận án kể hết Xin chân thành cảm ơn thầy cô, nhà khoa học thuộc Viện Công nghệ thông tin Học viện khoa học Cơng nghệ tận tình giúp đỡ tạo môi trường làm việc thuận lợi giúp tác giả thực tốt công việc nghiên cứu Xin chân thành cảm ơn Ban Giám Hiệu Trường đại học Công nghệ thông tin Truyền thông – Đại học Thái Nguyên tạo điều kiện thời gian công việc để tác giả tập trung hồn thành q trình học tập, nghiên cứu Đặc biệt xin gửi lời cảm ơn đến thầy cô, bạn đồng nghiệp Khoa Công nghệ thông tin động viên, giúp đỡ tác giả suốt trình nghiên cứu Cuối cùng, xin gửi lời cảm ơn sâu sắc tới gia đình, bạn bè người thân, người ln nguồn động viên để tác giả học tập nghiên cứu, ln sẻ chia khó khăn vất vả q trình nghiên cứu hồn thiện đề tài Hà Nội, ngày… tháng….năm … Tác giả luận án v DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT Từ viết tắt Từ đầy đủ JPF Java Path Finder MJI Model Java Interface DFA Deterministic Finite Automaton PC Điều kiện đường dẫn (path condition) QTKT Quy trình kiểm thử SAT Boolean satisfiability problem SDLC Software Development Life Cycle SE Thực thi biểu trưng (Symbolic Execution) SET Cây thực thi biểu trưng (Symbolic Execution Tree) SMT Satisfiability Modulo Theories SQA Software quality assurance STLC Software Test Life Cycle TPPM Thành phần phần mềm UT Kiểm thử đơn vị - Unit Testing VSUnit Visual Studio Unit Testing vi DANH MỤC BẢNG BIỂU Bảng 1.1 Ví dụ thực thi biểu trưng động 29 Bảng 1.2 So sánh thực thi Concolic với thực thi biểu trưng 34 Bảng 1.3 Minh họa việc chuyển đổi từ mã nguồn Java sang mã Jimple 35 Bảng 1.4 Mô tả ràng buộc xâu 41 Bảng 2.1 Xây dựng ràng buộc cho phép toán xâu 61 Bảng 3.1 Xây dựng ràng buộc tương ứng với phép toán xâu .66 Bảng 3.2 Kết đánh giá mơ hình cải tiến liệu 79 vii DANH MỤC HÌNH VẼ Hình 1.1 Mối quan hệ phát triển phần mềm kiểm thử phần mềm Hình 1.2 Quy trình chung kiểm thử hộp trắng theo hướng động 13 Hình 1.3 Ví dụ chèn mã nguồn DMS/SRT 14 Hình 1.4 Mã nguồn hàm triangle sau thêm mã nguồn 14 Hình 1.5 Quy trình chung kiểm thử hộp trắng theo hướng tĩnh 15 Hình 1.6 Các cấu trúc điều khiển phổ biến 17 Hình 1.7 Ví dụ ý tưởng thực cụ thể thực thi biểu trưng 23 Hình 1.8 Cây thực thi biểu trưng 26 Hình 1.9 Thực thi biểu trưng với phương thức nhận đầu vào đối tượng 31 Hình 1.10 Cây thực thi biểu trưng quản lý riêng 33 Hình 1.11 Thực thi biểu trưng lời gọi phương thức 38 Hình 2.1 Mơ hình hoạt động JPF 49 Hình 2.2 Sơ đồ trạng thái trình kiểm thử 50 Hình 2.3 Biểu diễn sơ đồ kiến trúc mức cao JPF 51 Hình 2.4 Ví dụ trừu tượng hố liệu 52 Hình 2.5 Một ví dụ khác trừu tượng hố liệu 52 Hình 2.6 Quy trình sàng lọc liệu 53 Hình 2.7 Đồ thị xâu 57 Hình 2.8 Thuật tốn giải ràng buộc hỗn hợp 58 Hình 2.9 Đồ thị sau loại bỏ phép toán equals 60 Hình 2.10 Các ràng buộc khơng thỏa mãn sau loại bỏ phép toán equals 60 Hình 2.11 Các đỉnh đại diện cho độ dài xâu bổ sung 61 Hình 3.1 Giải ràng buộc xâu dựa Otomat 69 Hình 3.2 Phương thức giải ràng buộc phủ định 70 Hình 3.3 Sơ đồ mơ hình hố ràng buộc xâu sử dụng đồ thị 71 Hình 3.4: Thuật tốn giải ràng buộc xâu 73 Hình 3.5 Chương trình Java kiểm thử 75 Hình 3.6 Kết sinh liệu biểu trưng số phép toán xâu 76 Hình 3.7 Code kiểm thử 78 83 Hình 3.11 Đồ thị xâu Áp dụng tiền xử lý đồ thị xâu loại bỏ đỉnh s khỏi đồ thị xâu ghi nhớ(giải pháp s1 giải pháp s2) giải pháp báo cáo ngược lại cho lời gọi Các ràng buộc nguyên sau thêm vào để chuẩn bị cho giải ràng buộc kiểu nguyên cho giải pháp nó, theo cách tiếp cận nghiên cứu gọi dự đốn tốt (l i độ dài biến biểu trưng s i): l1>0 l2>0 l3>0 l1=l2 l3 l1 l3 l1 l1>5 Trước bắt đầu giải xâu, giải ràng buộc số nguyên gọi để đưa số nguyên cụ thể thỏa mãn Giả sử giá trị l1=6, l2=6, l3=2 Các giá trị giải pháp phù hợp chúng giá trị nhỏ mà mối biến thỏa mãn ràng buộc Hãy xem xét cách tiếp cận Otomat đầu tiện thực ánh xạ xâu s i biểu trưng cho Otomat Mi Otomat khởi tạo để chứa tất từ có độ dại l i M1=…… M3=… Ta thực duyệt qua cạnh đồ thị i startsWith(s1,‘˽‘) M1 giao với ngôn ngữ ‗˽‘.* gán lại cho M1 kết gán cho M1 là: ˽… ii trim(s1,s3) M1 giao với ngôn ngữ M dó M3 ngơn ngữ từ có khoảng trắng đầu vào cuối M1 ˽.* M3 ˽.* ngôn ngữ M1 là: ˽… , M3 giao với ngôn ngữ M sau loại bỏ khoảng trắng hai đầu ngôn ngữ M3 là: [a-b],[b-a] 84 iii indexOf(s1,‘a‘,5) M1 giao với ngôn ngữ ….a.* kết phép giao gán cho M1 là: ˽….a iv endsWith(s3,‖ab‖) M3 giao với ngôn ngữ ―ab‖ kết ngôn ngữ M3 ―ab‖ Theo cách tiếp cận nghiên cứu lặp lại cạnh lần thứ hai cạnh gây thay đổi cho nhiều autoata đặt lại danh sách cơng việc dịng 12 hình 3.11 lợi ích mối quan tâm cạnh đầu tiên, lần qua cạnh (trim,s1,s3) M1= ˽….a M3=‖ab‖ ta thấy giao hai ngôn ngữ rỗng M kết thúc kí tự a M kết thúc kí tự b điều dẫn đến giải xâu trả UNSAT ràng buộc số nguyên thêm vào với ràng buộc số nguyên chuẩn bị giải là: l1 l3 cho kết l1=7 l2=7, l3=2 Tương tự với bước thực bên sau thực duyệt qua cạnh cho kết M1= ˽….a M3=ab Cạnh (trim,s1,s3) không làm cho kết phép giao M1 M3 rỗng làm thay đổi lại M1= ˽….ab chọn giải pháp ngắn cho Otomat cho kết cuối s1,s3 ―˽ ˽ ˽ ˽ ˽ab‖ s3 ―ab‖ Chuyển sang cách tiếp cận Bitvector trở lại dự đoán tốt l1=6, l2=6, l3=2 hai biến Bitvector b1 b3 khởi tạo tương ứng với độ dài 2, duyệt qua cạnh đồ thị i startsWith(s1,‘˽‘) sinh ràng buộc tương ứng b1[0]= ‘˽‘ thêm vào ii trim(s1,s3) vài ràng buộc thêm vào b1[i]=b3[0] b1[i+1]=b3[1] i=0,i