Áp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềmÁp dụng kĩ thuật khai phá dữ liệu cho phân lớp các ca kiểm thử phần mềm
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - LÊ LÊ NA ÁP DỤNG KĨ THUẬT KHAI PHÁ DỮ LIỆU CHO PHÂN LỚP CÁC CA KIỂM THỬ PHẦN MỀM LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI - 2019 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG - LÊ LÊ NA ÁP DỤNG KĨ THUẬT KHAI PHÁ DỮ LIỆU CHO PHÂN LỚP CÁC CA KIỂM THỬ PHẦN MỀM Chuyên ngành: Hệ thống thông tin Mã số: 8.48.01.04 NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS TRẦN ĐÌNH QUẾ HÀ NỘI - 2019 i LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng Các số liệu, kết luận văn trung thực chưa công bố nghiên cứu khác Hà Nội, ngày tháng Tác giả luận văn Lê Lê Na năm ii LỜI CẢM ƠN Để hồn thành luận văn thạc sĩ cách hoàn chỉnh, bên cạnh nỗ lực thân phần quan trọng hướng dẫn hỗ trợ nhiệt tình q Thầy Cơ ủng hộ động viên tinh thần gia đình bạn bè, đồng nghiệp suốt thời gian học tập nghiên cứu thực luận văn thạc sĩ Tơi xin trân trọng bày tỏ lòng biết ơn sâu sắc tới PGS.TS Trần Đình Quế, người hết lòng giúp đỡ tạo điều kiện tốt cho tơi hồn thành luận văn Xin chân thành bày tỏ lòng biết ơn đến tồn thể q Thầy Cơ Khoa Công nghệ thông tin Khoa Sau đại học Học viện Cơng nghệ Bưu Viễn thơng tận tình truyền đạt kiến thức quý báu tạo điều kiện thuận lợi cho suốt trình học tập nghiên cứu thực đề tài luận văn Tôi xin chân thành cảm ơn đồng nghiệp công ty tạo điều kiện để tiến hành nghiên cứu, cung cấp thông tin đầy đủ trung thực cho nghiên cứu này, tạo điều kiện, quan tâm động viên tơi hồn thành luận văn Cuối cùng, tơi xin chân thành cảm ơn đến gia đình, anh chị bạn đồng nghiệp hỗ trợ cho tơi nhiều suốt q trình học tập, nghiên cứu thực đề tài luận văn thạc sĩ cách hoàn chỉnh Hà Nội, ngày tháng Tác giả luận văn Lê Lê Na năm iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii DANH MỤC BẢNG v DANH MỤC HÌNH VÀ BIỂU ĐỒ vi MỞ ĐẦU .1 CHƯƠNG 1: KHAI PHÁ DỮ LIỆU VÀ BÀI TOÁN PHÂN LỚP CÁC CA KIỂM THỬ 1.1 Khai phá liệu 1.1.1 Tại lại cần khai phá liệu 1.1.2 Khái niệm 1.1.3 Quá trình khai phá liệu: 1.1.4 Các tốn thơng dụng Khai phá liệu: .5 1.2 Kỹ thuật kiểm thử phần mềm 1.2.1 Một số phương thức thiết kế kiểm thử 1.2.2 Ví dụ thử nghiệm 1.3 Kết luận CHƯƠNG 2: PHÂN LỚP DỮ LIỆU DỰA TRÊN NAIVE BAYES VÀ CÂY QUYẾT ĐỊNH J48 10 2.1 Kỹ thuật Naive Bayes cho phân lớp liệu 10 2.1.1 Một số khái niệm 10 2.1.2 Kỹ thuật Naïve Bayes 11 2.1.3 Phân lớp liệu với Naïve Bayes .13 2.2 Kỹ thuật định J48 15 2.2.1 Cây định 15 2.2.2 Thuật toán ID3: 17 2.2.4 Phân lớp liệu dựa J48 19 2.3 Kết luận 20 CHƯƠNG 3: PHÂN LOẠI CÁC CA KIỂM THỬ, THỬ NGHIỆM VÀ ĐÁNH GIÁ 21 iv 3.1 Phát biểu toán .21 3.2 Xây dựng liệu .21 3.2.1 Giới thiệu file arff: 21 3.2.2 Xây dựng ứng dụng 22 3.2.3 Sinh ca kiểm thử 24 3.2.4 Xây dựng liệu tiền xử lý 27 3.3 Thống kê liệu 28 3.4 Thử nghiệm đánh giá 29 3.4.1 Sử dụng Weka để phân loại .29 3.4.2 Sử dụng thuật tốn Nạve Bayes .31 3.4.3 Sử dụng thuật toán J48 35 3.5 Đánh giá, so sánh .39 3.6 Kết luận 42 KẾT LUẬN .43 TÀI LIỆU THAM KHẢO 44 v DANH MỤC BẢNG Bảng 1.1: Các ca kiểm thử phủ cấp Bảng 3.1: Tổng quan ứng dụng máy tính bỏ túi .22 Bảng 3.2: Hoạt động hàm ứng dụng 23 Bảng 3.3: Luồng thực thi ứng dụng 24 Bảng 3.4: Hướng dẫn sử dụng randoop 25 Bảng 3.5 : Kết chạy Naïve Bayes với cross-validation 32 Bảng 3.6 : Kết chạy Naïve Bayes với kỹ thuật Percentage Split .34 Bảng 3.7 : Kết J48 với cross validation 36 Bảng 3.7: Kết J48 với Percentage split 38 Bảng 3.8: So sánh Naïve Bayes J48 với cross validation 39 Bảng 3.9: So sánh Naïve Bayes J48 với percentage split 40 vi DANH MỤC HÌNH VÀ BIỂU ĐỒ Hình 1.1 Các bước trình phát triển tri thức cở liệu Hình 1: Naive Bayes toán phân lớp .14 Hình 2: Cây định luồng thực 16 Hình 3: Ví dụ toán phân lớp sử dụng định J48 20 Hình 3.1: Mẫu file arff chuẩn dựa liệu iris 22 Hình 3.2: Thao tác với randoop bước 25 Hình 3.3: Thao tác với randoop bước 25 Hình 3.4: Kết chạy với randoop 25 Hình 3.5: Kết chạy Coverage với cơng cụ hỗ trợ Eclemma 26 Hình 3.6: Kết JaCoCo Metrics 27 Hình 3.7: Bộ liệu huấn luyện mẫu .27 Hình 3.9: Tiền xử lý liệu Weka 28 Hình 3.10: Các bước thực Weka 31 Hình 3.11: Kết thử nghiệm Naïve Bayes với n=5 31 Hình 3.12: Kết thử nghiệm Nạve Bayes với n=10 32 Hình 3.14: Kết chạy Naïve Bayes với tỷ lệ phân chia 50% .33 Hình 3.16: Kết chạy Naïve Bayes với tỷ lệ phân chia 75% .34 Hình 3.17: Kết chạy Nạve Bayes với tỷ lệ phân chia 80% .34 Hình 3.18: Kết J48 với n=5 36 Hình 3.19: Kết J48 với n=10 36 Hình 3.21: Kết J48 với tỷ lệ phân chia 50% 37 Hình 3.23: Kết J48 với tỷ lệ phân chia 75% 38 Hình 3.24: Kết J48 với tỷ lệ phân chia 80% 38 vii Biểu đồ 3.1: Lược đồ Naïve Bayes với cross-validation 33 Biểu đồ 3.2: Lược đồ Naïve Bayes với Percentage Split 35 Biểu đồ 3.3: Kết J48 với cross validation 37 Biểu đồ 3.4: Kết J48 với Percentage split 39 Biểu đồ 3.5: So sánh Naïve Bayes J48 kỹ thuật Cross-validation .40 Biểu đồ 3.6: So sánh Naïve Bayes J48 với Percentage Split .41 MỞ ĐẦU Cùng với phát triển mạnh mẽ công nghệ thông tin, sản phẩm phần mềm sử dụng nguồn liệu lớn xuất không ngừng Kĩ thuật phần mềm lĩnh vực nghiên cứu liên quan đến thiết kế, triển khai sửa đổi để xây dựng phần mềm phù hợp trì lâu dài Kiểm thử giai đoạn quy trình phát triển phần mềm, giai đoạn khơng thể thiếu vòng đời phát triển phần mềm Kiểm thử thường tiến hành quy mô lớn để tìm lỗi phần mềm để kiểm tra kết thực tế phần mềm với mong muốn thiết kế hay không Điều đòi hỏi phải xây dựng trường hợp thử nghiệm mà khai thác hết tất trường hợp phần mềm Sẽ rủi ro phức tạp tất trường hợp thử nghiệm thực tay việc tạo mơ hình thử nghiệm tự động đời nơi mà trường hợp thử nghiệm xây dựng cách tự động Nhưng vấn đề với tiếp cận phần mềm xây dựng hàng ngàn dòng mã việc thực tất trường hợp thử nghiệm nhiều thời gian vài ngày để hồn thành Khai phá liệu nghiên cứu, ứng dụng nhiều lĩnh vực khác nước giới Trong kiểm thử phần mềm, khai phá liệu trở nên vô phổ biến, giúp phân tích khai thác liệu, chia nhỏ vùng thử nghiệm từ giúp tiết kiệm thời gian tăng độ xác trường hợp thử nghiệm Xác định ca kiểm thử, phân loại giản lược ca kiểm thử vấn đề nhiều quan tâm nghiên cứu ([1],[2],[3],[4],[5] [15]) Với mục đích đưa tiến cơng nghệ phục vụ cho công việc ngày, luận văn chọn đề tài tìm hiểu "Áp dụng kĩ thuật khai phá liệu cho phân lớp ca kiểm thử phần mềm" Trong phạm vi luận văn trình bày cách xử lý toán kiểm thử chương trình máy tính bỏ túi sử dụng phép toán cộng, trừ, nhân, chia đơn giản trường hợp kiểm thử đặt vô phức tạp số lượng testcases nhiều Luận văn tập trung áp dụng thuật toán Naive 31 Hình 3.10: Các bước thực Weka 3.4.2 Sử dụng thuật tốn Nạve Bayes a Cross-validation: - Lần thứ nhất: Chọn n=5, ta kết sau: Hình 3.11: Kết thử nghiệm Nạve Bayes với n=5 - Lần thứ hai: Chọn n=10, ta kết 32 Hình 3.12: Kết thử nghiệm Nạve Bayes với n=10 Bảng kết thử nghiệm Naïve Bayes với kỹ thuật Cross-validation: Naïve Bayes kỹ thuật Cross-validation N=5 81.02% N=10 81.02% Bảng 3.5 : Kết chạy Naïve Bayes với cross-validation 33 Naive Bayes với Cross-validation 90.00% 81.02% 81.02% N=5 N=10 80.00% 70.00% 60.00% 50.00% 40.00% 30.00% 20.00% 10.00% 0.00% Độ xác Biểu đồ 3.1: Lược đồ Nạve Bayes với cross-validation Từ biểu đồ cho thấy kỹ thuật Naïve Bayes với hai giá trị n cho kết giống b Percentage split: - Lần thứ nhất: Tỷ lệ phân chia 50%, ta có kết sau: Hình 3.14: Kết chạy Nạve Bayes với tỷ lệ phân chia 50% - Lần thứ hai: Tỷ lệ phân chia 75%, ta có kết sau: 34 Hình 3.16: Kết chạy Nạve Bayes với tỷ lệ phân chia 75% - Lần thứ ba: Tỷ lệ phân chia 80%, ta có kết sau: Hình 3.17: Kết chạy Nạve Bayes với tỷ lệ phân chia 80% Bảng kết thử nghiệm Naïve Bayes với kỹ thuật chia tỷ lệ phân chia: Naïve Bayes với kỹ thuật chia tỷ lệ phân chia Tỷ lệ 50% 81.48% Tỷ lệ 75% 81.48% Tỷ lệ 80% 88.37% Bảng 3.6 : Kết chạy Naïve Bayes với kỹ thuật Percentage Split 35 Naive Bayes với Percentage Split 90.00% 88.37% 88.00% 86.00% 84.00% 82.00% 81.48% 81.48% Tỷ lệ 50% Tỷ lệ 75% 80.00% 78.00% Tỷ lệ 80% Độ xác Biểu đồ 3.2: Lược đồ Naïve Bayes với Percentage Split Từ lược đồ trên, ta nhận thấy độ xác lớn liệu huấn luyện chiếm đến 80% tổng số liệu Sự nhầm lẫn thường rơi vào nhãn dư thừa nhiều nhãn khơng dư thừa Giá trị độ xác chênh khơng đáng kể, nhìn chung, độ xác >80% 3.4.3 Sử dụng thuật toán J48 a Cross-validation - Lần thứ nhất: n=5, ta kết quả: 36 Hình 3.18: Kết J48 với n=5 - Lần thứ hai: n=10, ta kết quả: Hình 3.19: Kết J48 với n=10 Bảng kết chạy J48 với cross-validation: J48 với kỹ thuật cross-validation N=5 95.83% N=10 97.22% Bảng 3.7 : Kết J48 với cross validation 37 J48 với cross validation 97.50% 97.00% 96.50% 96.00% 95.50% 95.00% N=5 N=10 Độ xác Biểu đồ 3.3: Kết J48 với cross validation Từ lược đồ trên, ta nhận thấy kết chọn n=10 tốt so với kết chọn n=5 thuật toán Độ chênh lệch không đáng kể 1.39% b Percentage Split - Lần thứ nhất: Tỷ lệ phân chia 50%, ta kết quả: Hình 3.21: Kết J48 với tỷ lệ phân chia 50% - Lần thứ hai: Tỷ lệ phân chia 75%, ta kết quả: 38 Hình 3.23: Kết J48 với tỷ lệ phân chia 75% - Lần thứ ba: Tỷ lệ phân chia 80%, ta kết quả: Hình 3.24: Kết J48 với tỷ lệ phân chia 80% Bảng kết thử nghiệm J48 với kỹ thuật Percentage split: J48 với kỹ thuật Percentage Split Tỷ lệ 50% 88.89% Tỷ lệ 75% 94.44% Tỷ lệ 80% 97.67% Bảng 3.7: Kết J48 với Percentage split 39 J48 với Percentage split 100.00% 97.67% 98.00% 96.00% 94.44% 94.00% 92.00% 90.00% 88.89% 88.00% 86.00% 84.00% Tỷ lệ 50% Tỷ lệ 75% Tỷ lệ 80% Độ xác Biểu đồ 3.4: Kết J48 với Percentage split Từ lược đồ trên, nhìn chung tỷ lệ phân chia lớn tức liệu huấn luyện lớn độ tăng lên Có thể thấy chênh lệch lớn xấp xỉ 12% Kết có liệu huấn luyện nhiều thực tốt thực nghiệm với J48 3.5 Đánh giá, so sánh a Cross-validation Bảng kết hai thuật tốn với kỹ thuật Nạve Bayes J48: Cross-validation K=5 K=10 Naïve Bayes 81.02% 81.02% J48 95.83% 97.22% Bảng 3.8: So sánh Naïve Bayes J48 với cross validation 40 So sánh Naive Bayes J48 Kỹ thuật Cross-validation 100.00% 97.22% 95.83% 95.00% 90.00% 85.00% 81.02% 81.02% 80.00% 75.00% 70.00% K=5 K=10 Naïve Bayes J48 Biểu đồ 3.5: So sánh Naïve Bayes J48 kỹ thuật Cross-validation Từ biểu đồ cho thấy, kỹ thuật J48 vượt trội hẳn so với kỹ thuật Naïve Bayes Giá trị độ xác J48 cao khoảng 14% đến 16% so với thuật tốn Nạve Bayes b Percentage Split Bảng kết hai thuật toán với kỹ thuật Nạve Bayes J48: Thuật tốn Percentage Split 50% 75% 80% Naïve Bayes 81.48% 81.48% 88.37% J48 88.89% 94.44% 97.67% Bảng 3.9: So sánh Naïve Bayes J48 với percentage split 41 So sánh Naive Bayes J48 với Percentage Split 100.00% 97.67% 94.44% 95.00% 88.89% 90.00% 88.37% 85.00% 81.48% 81.48% 80.00% 75.00% 70.00% Tỷ lệ 50% Tỷ lệ 75% Naïve Bayes Tỷ lệ 80% J48 Biểu đồ 3.6: So sánh Naïve Bayes J48 với Percentage Split Từ biểu đồ trên, lại lần ta thấy kết thuật toán J48 vượt trội hẳn so với thuật tốn Nạve Bayes Tỷ lệ thường chênh lớn tốt phân chia với tỷ lệ 80%, chênh lệch xấp xỉ 10% Từ hai kết trên, tiếp theo, luận văn áp dụng thuật toán J48 với tham số percentage split = 80% huấn luyện (vì có độ xác tốt q trình thử nghiệm với liệu luận văn) vào liệu kiểm tra, kết thu được: 42 Hình: Kết với liệu kiểm tra Kết luận: từ liệu ban đầu gồm 324 test case, với 216 test case đưa làm liệu huấn luyện, 108 test case đưa làm liệu kiểm tra Ta thấy kết thu với liệu kiểm tra bao gồm 108 test case ban đầu, ta giảm xuống 53 test case gần nửa so với số lượng test case ban đầu đưa vào kiểm tra Điều giúp kiểm thử viên giảm nửa công việc cần làm ứng dụng 3.6 Kết luận Chương sâu phân tích liệu cụ thể source code Java chuẩn bị dựa hoạt động máy tính bỏ túi với phép toán cộng, trừ, nhân, chia Luận văn sử dụng kỹ thuật phân lớp áp dụng thuật toán Naive Bayes J48 áp dụng vào liệu với phần mềm Weka để đưa kết từ lần thử nghiệm với đầu vào khác nhau, từ đưa lược đồ so sánh kết thuật toán giúp đánh giá lựa chọn thuật toán phù hợp cho liệu Chương cho thấy với liệu đưa vào thuật toán J48 phù hợp hơn, cho kết tốt 43 KẾT LUẬN Từ việc nghiên cứu toàn phân lớp ca kiểm thử trình phát triển phần mềm, luận văn đưa phương pháp sử dụng khai phá liệu nhằm tối giản ca kiểm thử phát triển phần mềm Qua kết thực nghiệm đạt cho thấy mơ hình đưa hồn tồn khả thi áp dụng Các kết luận văn đạt được: Khảo sát phương pháp tạo ca kiểm thử phần mềm, nêu ý nghĩa q trình kiểm thử vòng đời phát triển phần mềm,sự quan việc đưa ca kiểm thử xác hiệu nhằm rút gọn thời gian thực hiện, tiết kiệm chi phí Trình bày phương pháp phân lớp liệu áp dụng vào phân lớp ca kiểm thử phần mềm, từ lọc tối giản tối đa ca kiểm thử dư thừa trùng lặp Xây dựng dự liệu dựa phép tính cộng, trừ, nhân, chia tương tự chương trình máy tính bỏ túi.Chỉ phương pháp khai phá liệu phù hợp với liệu xây dựng số liệu cụ thể khẳng định hiệu phương pháp sử dụng Hướng pháp triển: Từ liệu xây dựng phát triển lên thành chương trình tính tốn phức tạp hơn, đa dạng sử dụng mang tính thương mại nhiều ví dụ phần mềm tính tốn siêu thị chương trình quản lý hàng Điều đồng nghĩa với việc testcase sinh lớn phức tạp nhiều Áp dụng kỹ thuật khai phá liệu, thuật toán giới thiệu luận văn vào liệu giúp phân loại, tối giản ca kiểm thử cho hiệu thử nghiệm tăng lên, giúp doanh nghiệp tiết kiệm thời gian chi phí mà đảm bảo chất lượng phần mềm 44 TÀI LIỆU THAM KHẢO Tài liệu tiếng anh: [1] Mahapatra, R P., & Singh, J (2008) Improving the effectiveness of software testing through test case reduction World Academy of Science, Engineering and Technology, 37, 345-350 [2] Ahmad A Saifan, "Test Case Reduction Using Data Mining Classifier Techniques"_2016 [3] Jiawei Han and Micheline Kamber, Data Mining "Concepts and Techniques" (2000) [4] https://wikipedia.org/wiki/Khai_phá_dữ_liệu truy cập ngày 08/04/2018 [5] Ian H.Witten, Eibe Frank, “Data mining : practical machine learning tools and techniques”, Second Edition, Elsevier Inc, 2005 [6] Jason D M Rennie “Improving Multi-class Text Classification with Naive Bayes”, Massachusetts Institute of Technology, (2001) [7] http://www.cs.ucla.edu/~miodrag/cs259- security/sahami98bayesian.pdf, Truy cập ngày 18/11/2018 [8] Johan Hovold “Naive Bayes Spam Filtering Using Word-Position-Based Attributes”, Proceedings of the Second Conference on Email and Anti-Spam, (2004) [9] Bo Pang, Lillian Lee “A Sentimental Education: Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts”, Proc of 42nd ACL, pp 271-278 (2004) [10] Yustinus Eko Soelistio and Martinus Raditia Sigit Surendra, “Simple text mining for sentiment analysis of political figure using Naïve Bayes classifier”, The Proceedings of The 7th ICTS, Bali, pp 99-104, (2013) [11] Eclemma, http://www.eclemma.org/index.html [12] Randoop, https://randoop.github.io/randoop/ [13] Weka, https://www.cs.waikato.ac.nz/ml/weka/downloading.html [14] JUnit, https://junit.org/junit4/ 45 [15] JaCoCo Metrix, https://www.jacoco.org/jacoco/trunk/doc/ Các trang web: [1] https://medium.com/@akankshamalhotra24/naive-bayes-theorem- 79832d506a633 truy cập ngày 15/5 [2] Wikipedia, http://en.wikipedia.org/wiki/ [3] Google, https://www.google.com.vn/ ... pháp để thực kiểm thử phần mềm phân tích đặc điểm, hiệu quả, phạm vi áp dụng phương pháp Kỹ thuật khai phá liệu chọn áp dụng luận văn kỹ thuật phân lớp liệu phương pháp kiểm thử chọn phương pháp... Phân loại ca kiểm thử, thử nghiệm đánh giá Chương sâu phân tích liệu áp dụng liệu thực tế vào Weka, áp dụng thuật toán với liệu cụ thể Từ phân tích đánh giá kết thu 3 CHƯƠNG 1: KHAI PHÁ DỮ LIỆU... CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - LÊ LÊ NA ÁP DỤNG KĨ THUẬT KHAI PHÁ DỮ LIỆU CHO PHÂN LỚP CÁC CA KIỂM THỬ PHẦN MỀM Chuyên ngành: Hệ thống thông tin Mã số: 8.48.01.04 NGƯỜI HƯỚNG