Mục tiêu của đề tài là nghiên cứu các phƣơng pháp mô hình hóa ràng buộc giải ràng buộc từ đó cải tiến khả năng giải ràng buộc và áp dụng kỹ thuật thực thi biểu trƣng trong tự động sinh các ca kiểm thử. Cài đặt thử nghiệm các phƣơng pháp đề xuất trong sinh tự động các ca kiểm thử trên kiểu dữ liệu xâu và kiểu dữ liệu hỗn hợp. Phân tích, đánh giá kết quả sau khi thử nghiệm.
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 .1 CHƢƠNG TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ THỰC THI BIỂU TRƢNG .5 1.1 Kiểm thử phần mềm 1.1.1 Các khái niệm .5 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 hoá 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 đƣợc hồn thành dƣới hƣớng dẫn tận tình tập thể hƣớng dẫn gồm Các kết đƣợc viết chung với tác giả khác đƣợ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 cơng bố cơng trình trƣớc thời gian cơng trình tơi cộng đƣợc 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 quí báu mà thầy dành cho tác giả suốt q trình thực luận án khơng thể kể hết đƣợc 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 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ừ đầy đủ Từ viết tắt 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 đƣợc 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 hoá 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 tốn giải ràng buộc hỗn hợp 58 Hình 2.9 Đồ thị sau loại bỏ phép tố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 đƣợc 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 tố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 đƣợc 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 nhƣng 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 đƣợc 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 đƣợc đƣa hình 3.10 với cạnh đƣợc đƣ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 đƣợc 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 đƣợc 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 s2 khỏi đồ thị xâu ghi nhớ(giải pháp s1 giải pháp s2) giải pháp đƣợc báo cáo ngƣợc lại cho lời gọi Các ràng buộc nguyên sau đƣợc 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 nhƣ cách tiếp cận nghiên cứu đƣợc gọi dự đoán tốt (li độ dài biến biểu trƣng si): 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 đƣợc 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 si biểu trƣng cho Otomat Mi Otomat đƣợc khởi tạo để chứa tất từ có độ dại li 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 đƣợc gán cho M1 là: ˽… ii trim(s1,s3) M1 giao với ngôn ngữ M3 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ữ M1 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 đƣợc 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 đƣợc đặ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 M1 kết thúc kí tự a M3 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 đƣợc thêm vào với ràng buộc số nguyên chuẩn bị đƣợc 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 nhƣ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 đƣợc 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]= ‘˽‘ đƣợc thêm vào ii trim(s1,s3) vài ràng buộc đƣợc thêm vào b1[i]=b3[0] b1[i+1]=b3[1] i=0,i