Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 105 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
105
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 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 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 Nguyễn Trường Thắng PGS 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 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 hoà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 hoá 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 toá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 tố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 hoá 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 viii Hình 3.8 Kết đánh giá mơ hình cải tiến liệu 80 Hình 3.9 Chương trình Java 81 Hình 3.10 Đồ thị xâu 82 Hình 3.11 Đồ thị xâu 83 81 Hình 3.9 chương trình Java bao gồm hàm với hai tham số xâu, dòng có nhánh tham số xâu đầu tiền bắt đầu khoảng trắng tham số nhau, dòng tạo biến xâu cách loại bỏ khoảng trắng hai đầu (và biến không thỏa mãn câu lệnh if dòng 1) Dòng biến kết thúc xâu ―ab‖ mặt khác hai tham số không Cuối nhánh cuối nằm dịng kí tự thứ năm biến xâu kí tự ‗a‟ Hình 3.9 Chương trình Java Trong chương trình này, với hai xâu ngẫu nhiên khó thực bốn nhánh chương trình nghiên cứu đặt phải đưa liệu tốt để thực thi chương trình với tất nhánh Để thực thi nhánh cần xây dựng tất ràng buộc đường dẫn có chương trình Trong chương trình có tất 12 điều kiện đường dẫn nghiên cứu chọn hai điều kiện đường dẫn để minh họa cho nghiên cứu Điều kiện đầu tiên, nhánh dòng lấy, nhánh dòng cuối nhánh dòng để đáp ứng luồng liệu theo ràng buộc phải thỏa mãn Ràng buộc Cạnh s1.startsWith(' ') (startsWith, s1,‟˽‟) s1.equals(s2 ) (equals, s1, s2) news1.endsWith('ab') (notEndsWith, s3,”ab”) s1.equals(s2) (notEquals, s1, s2) 82 s1.indexOf (5) == ('a') (indexOf , s1,‟a‟,5) (trim, s1, s3) Việc chọn điều kiện đường dẫn dẫn đến phải xây dựng đồ thị xâu đưa hình 3.10 với cạnh đưa bảng Hình 3.10 Đồ thị xâu Chạy tiền xử lý đồ thị cho thấy ràng buộc tồn giá trị không thỏa mãn cho cặp cạnh (equals,s1, s2 notequals(s1,s2) tiền xử lý kết luận UNSAT điều kiện đường dẫn lựa chọn Giả sử điều kiện đường dẫn trường hợp dòng 1, 3, hay s phải bắt đầu kí tự trắng s2 sau đước cắt khoảng trắng hai đầu phải kết thúc xâu ―ab‖ có kí tự thứ kí tự ‗a‟ tạo ràng buộc Ràng buộc Cạnh s1.startsWith(' ') (startsWith, s1,‟˽‟) s1.equals(s2 ) (equals, s1, s2) news1.endsWith('ab') (endsWith, s3,”ab”) s1.indexOf (5) == ('a') (indexOf , s1,‟a‟,5) (trim, s1, s3) Điều kiện đường dẫn tương ứng với đồ thị xâu: 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