Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
1,09 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ KHÁNH CHI PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG TỪ MÃ NGUỒN VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG CHẤM BÀI LẬP TRÌNH LUẬN VĂN THẠC SĨ Ngành: Kỹ Thuật Phần Mềm HÀ NỘI – 2019 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ KHÁNH CHI PHƢƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG TỪ MÃ NGUỒN VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG CHẤM BÀI LẬP TRÌNH Ngành: Kỹ Thuật Phần Mềm Chuyên ngành: Kỹ Thuật Phần Mềm Mã số: 848 01 03.01 LUẬN VĂN THẠC SĨ Ngành: Kỹ Thuật Phần Mềm NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS TS Phạm Ngọc Hùng HÀ NỘI – 2019 VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY NGUYEN THI KHANH CHI A METHOD FOR AUTOMATED TEST DATA GENERATION FROM SOURCE CODE AND APPLICATION IN BUILDING PROGRAMMING MARKING SYSTEM THE MS THESIS Major: InformationTechnology Supervisor: Assoc Prof Pham Ngoc Hung HANOI - 2019 i MỤC LỤC MỤC LỤC i LỜI CẢM ƠN iii TÓM TẮT iv ABSTRACT v LỜI CAM ĐOAN vi DANH MỤC THUẬT NGỮ VIẾT TẮT vii DANH MỤC HÌNH VẼ viii DANH MỤC BẢNG x Chương 1: Mở đầu Chương 2: Phương pháp sinh liệu kiểm thử dòng điều khiển 2.1 Tổng quan kiểm thử dòng điều khiển 2.2 Các tiêu chí kiểm thử 2.3 Xây dựng đồ thị dòng điều khiển 2.3.1.Xây dựng đồ thị dòng điều khiển ứng với tiêu chí phủ câu lệnh phủ nhánh 2.3.2 Xây dựng CFG ứng với tiêu chí phủ điều kiện 2.3.3 Phương pháp xây dựng CFG từ mã nguồn Java 10 2.4 Sinh đường kiểm thử từ đồ thị 12 2.4.1 Sinh đường thỏa mãn tiêu chí phủ câu lệnh 12 2.4.2 Sinh đường thỏa mãn tiêu chí phủ nhánh 13 2.4.3 Sinh đường thỏa mãn tiêu chí phủ điều kiện 13 2.4.4 Phương pháp sinh đường kiểm thử đồ thị 14 2.5 Sinh ca kiểm thử từ đường 15 2.5.1 Sinh liệu kiểm thử 15 2.5.2 Sinh đầu mong muốn 17 2.6 Sinh ca kiểm thử giá trị biên vòng lặp 17 2.6.1.Sinh ca kiểm thử giá trị biên 18 2.6.2 Sinh ca kiểm thử vòng lặp 19 Chương 3: Công cụ thực nghiệm 22 ii 3.1 Đặc tả hệ thống chấm lập trình 22 3.1.1 Danh sách tác nhân 22 3.1.2 Mô tả ca sử dụng hệ thống: 24 3.2 Kiến trúc tổng thể hệ thống chấm lập trình 27 3.3 Kiến trúc mô-đun sinh ca kiểm thử tự động 28 3.4 Giới thiệu công cụ sinh ca kiểm thử tự động 29 3.3.1.Giao diện công cụ sinh ca kiểm thử tự động 29 3.3.2.Đồ thị dòng điều khiển 29 3.3.3.Tập đường kiểm thử 31 3.3.4 Tập ca kiểm thử 31 3.5 Kết thực nghiệm 33 Bài toán 1: Bài toán kiểm tra năm nhuận 33 Bài tốn 2: Bài tốn tính số ngày tháng 35 Bài tốn 3: Tìm ước số chung lớn 40 3.6 Ý nghĩa thực nghiệm 44 Chương 4: Kết luận 46 TÀI LIỆU THAM KHẢO 47 iii LỜI CẢM ƠN Trước tiên, xin gửi lời cảm ơn chân thành sâu sắc đến người thầy đáng kính PGS TS Phạm Ngọc Hùng - người trực tiếp hướng dẫn, bảo giúp đỡ tơi suốt q trình tơi học tập nghiên cứu trường Nhờ có lịng tốt thầy, say mê nghiên cứu khoa học, kiến thức uyên thâm hướng dẫn tận tình, tơi vượt qua khó khăn từ phía gia đình để tiếp tục học tập, nghiên cứu hoàn thiện luận văn Tôi xin chân thành cảm ơn thầy cô giáo khoa Công nghệ thông tin, trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội nhiệt tình giảng dạy, truyền đạt kiến thức quý báu suốt q trình tơi học tập nghiên cứu trường Tôi xin chân thành cảm ơn người thân gia đình, bạn bè, đồng nghiệp ln tạo điều kiện, giúp đỡ động viên công tác nghiên cứu khoa học Cuối cùng, xin cảm ơn ban giám hiệu trường THPT Ngô Gia Tự - Từ Sơn Bắc Ninh nơi công tác, đồng nghiệp em học sinh khối 11 tạo điều kiện tối đa, đóng góp nhận xét khách quan cho đề tài nghiên cứu để tơi hoàn thành luận văn Thạc sỹ trường Đại học Công nghệ - Đại học Quốc Gia Hà Nội iv TÓM TẮT Luận văn tập trung nghiên cứu phương pháp sinh ca kiểm thử từ mã nguồn ứng dụng việc tự động chấm tập lập trình học sinh viết ngơn ngữ Java nhằm hỗ trợ giáo viên Tin học Trường Trung học phổ thông/Trung học sở việc sinh ca kiểm thử chấm tập lập trình học sinh Với tập, giáo viên cung cấp mã nguồn mẫu (mã nguồn lỗi) Dựa vào mã nguồn này, tiến hành phân tích nhằm xây dựng đồ thị dịng điều khiển mã nguồn Tiếp đến, đường đồ thị ứng với dịng điều khiển có chương trình sinh Từ đường này, xây dựng hệ ràng buộc chứa điều kiện tham số Việc sinh liệu kiểm thử đường thực thi việc giải hệ ràng buộc đường tương ứng Khi có liệu kiểm thử, sử dụng đầu mã nguồn chuẩn để sinh giá trị đầu mong muốn tương ứng Cùng với ca kiểm thử sinh ra, luận văn nghiên cứu giải pháp để sinh ca kiểm thử cho vòng lặp sinh ca kiểm thử biên tham số ứng với miền giá trị đặc tả toán Luận văn tiến hành xây dựng công cụ hỗ trợ áp dụng thử nghiệm với chương trình đơn giản nhằm minh chứng cho tính đắn tính hiệu phương pháp đề xuất Tuy nhiên, cơng cụ cài đặt chưa hồn thiện cần tiếp tục phát triển nhằm có cơng cụ hỗ trợ giáo viên nêu Từ khóa: Kiểm thử tự động, sinh liệu kiểm thử, độ phủ kiểm thử, kiểm thử hộp trắng v ABSTRACT The thesis focuses on studying the method of testing data from source code and applying in automatically marking students' programming exercises written in Java language to support Informatics teachers at high schools information / junior high school in testing test cases and marking students' programming exercises For each teacher exercise, the teacher will provide sample source code (source code without errors) Based on this source code, we will conduct source code analysis to build control line graph of source code Next, we will generate the graph's paths corresponding to the possible control lines of the program From these paths, we will build the binding system without the conditions of the parameters Generating test data corresponding to the corresponding path is the finding of a solution of the corresponding system of equations Whenever there is test data, we will use the specification to generate the desired output values Along with the test cases as born, the thesis also studies solutions to generate test cases for loops and generate test cases at the boundaries of each parameter corresponding to the value domain and specification of the problem The thesis has also developed support tools and applied experiments with simple programs to demonstrate the correctness and effectiveness of the proposed method However, the installation tool has not been completed and needs to be further developed in order to have a teacher support tool as mentioned above Keywords: Automated testing, test data generation, test coverage, white-box testing vi LỜI CAM ĐOAN Tôi xin cam đoan luận văn Thạc sỹ Công nghệ thông tin "Phương pháp sinh liệu kiểm thử từ mã nguồn ứng dụng xây dựng hệ thống chấm tập lập trình" cơng trình nghiên cứu tơi hướng dẫn Thầy hướng dẫn, không chép lại người khác Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nguồn tài liệu khác Tất nguồn tài liệu tham khảo có trích dẫn cụ thể hợp pháp Tơi xin hồn tồn chịu trách nhiệm chịu hình thức kỷ luật theo quy định trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội cho lời cam đoan Hà Nội, ngày 26 tháng 03 năm 2019 Nguyễn Thị Khánh Chi vii DANH MỤC THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Từ đầy đủ Ý nghĩa AST Abstract Syntax Tree Cây cú pháp trừu tượng CFG Control Flow Graph Đồ thị dòng điều khiển EO Expected Output Giá trị đầu mong đợi JDT Java Development Tooling RO Real Output Giá trị đầu thực tế SE Symbolic Excecution Thực thi tượng trưng SMT-Solver Satisfiability Modulo Theories Solver TC Test Case Ca kiểm thử 33 3.5 Kết thực nghiệm Để chứng minh tính hiệu phương pháp nghiên cứu, luận văn sử dụng công cụ để sinh ca kiểm thử cho số toán với mã nguồn giáo viên cung cấp Các ca kiểm thử sử dụng để thực kiểm thử (chấm bài) với tập lập trình học sinh Ngồi ra, luận văn đề cập đến sinh thêm ca kiểm thử sử dụng phương pháp phân tích giá trị biên để minh chứng ca kiểm thử sinh phương pháp nghiên cứu chưa đủ để phát lỗi chương trình Dưới ba thực nghiệm ứng với ba toán áp dụng Bài toán 1: Bài toán kiểm tra năm nhuận Hình 3.10 mã nguồn chuẩn hàm laNamNhuan sử dụng để sinh ca kiểm thử cho toán kiểm tra năm nhuận Hàm nhận giá trị đầu vào số nguyên dương year ghi nhận năm Đầu hàm giá trị year thỏa mãn điều kiện năm nhuận, ngược lại hàm trả giá trị Biết rằng, năm nhuận năm chia hết cho 400 chia hết cho không chia hết cho 100 Để kiểm tra hết trường hợp xảy mã nguồn, ta sinh ca kiểm thử ứng với tiêu chí phủ cao mã nguồn chuẩn Các ca kiểm thử tiêu chí đánh giá chất lượng tập học sinh Ngồi ra, để có ca kiểm thử đầy đủ, ta cần phân tích mã nguồn để sinh thêm ca kiểm thử giá trị biên vịng lặp (nếu có) public int laNamNhuan(intyear) { if(year