Ứng dụng giải thuật di truyền sinh dữ liệu thử bao phủ cấu trúc của chương trình Java

26 11 0
  • Loading ...
1/26 trang

Thông tin tài liệu

Ngày đăng: 30/12/2018, 20:00

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA PHẠM VĂN TÍNH ỨNG DỤNG GIẢI THUẬT DI TRUYỀN SINH DỮ LIỆU THỬ BAO PHỦ CẤU TRÚC CỦA CHƯƠNG TRÌNH JAVA Chun ngành: KHOA HỌC MÁY TÍNH Mã số: 8480101 TĨM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Đà Nẵng – Năm 2018 Cơng trình hồn thành TRƯỜNG ĐẠI HỌC BÁCH KHOA Người hướng dẫn khoa học: PGS.TS Nguyễn Thanh Bình Phản biện 1: TS Trần Thế Vũ Phản biện 2: TS Nguyễn Quang Vũ Luận văn bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ ngành Khoa học máy tính họp Trường Đại học Bách khoa vào ngày 13 tháng 10 năm 2018 Có thể tìm hiểu luận văn tại: - Trung tâm Học liệu, Đại học Đà Nẵng Trường Đại học Bách khoa - Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách khoa - ĐHĐN MỞ ĐẦU Lý chọn đề tài Hiện nay, phần mềm đóng vai trò quan trọng thiếu lĩnh vực đời sống xã hội Do đó, việc đảm bảo cho phần mềm hoạt động tốt, đáp ứng tốt yêu cầu người sử dụng quan trọng Kiểm thử phần mềm hoạt động đóng vai trò quan trọng nhằm đánh giá tính đắn, hồn bảo đảm chất lượng phần mềm Có nhiều kỹ thuật kiểm thử ứng dụng việc phân tích, thiết kế, xây dựng phát triển phần mềm, kiểm thử cấu trúc (structural testing) kỹ thuật để xây dựng ca kiểm thử Kiểm thử cấu trúc áp dụng cho nhiều ngôn ngữ lập trình khác nhau, như: ngơn ngữ lập trình PHP, Ruby, VB, ngôn ngữ C/C++/C#, ngôn ngữ Java… đó, Java ngơn ngữ lập trình sử dụng rộng rãi phổ biến để phát triển phần mềm Việc kiểm thử mã nguồn Java để đảm bảo tính đắn quan trọng cần thiết Đã có nhiều nghiên cứu nhằm nâng cao hiệu kiểm thử cấu trúc tự động hóa số hoạt động quy trình kiểm thử cấu trúc hay xác định liệu thử đảm bảo tiêu chí bao phủ như: bao phủ câu lệnh, bao phủ rẽ nhánh, bao phủ lộ trình Một giải pháp dựa giải pháp phát sinh liệu thử đảm bảo tiêu chí bao phủ cách áp dụng giải thuật di truyền để sinh liệu thử Thuật giải di truyền (Genetic Algorithm - GA) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng Điểm mạnh GA việc xử lý liệu đầu vào có cấu trúc số phức, vị từ phức tạp, hàm chưa biết đến biến đầu vào Vì vậy, việc sinh liệu thử vấn đề cần tối ưu hóa Vì lý trên, chọn đề tài luận văn cao học: “Ứng dụng giải thuật di truyền sinh liệu thử bao phủ cấu trúc chương trình Java” Mục đích nghiên cứu Đề tài tìm hiểu sở lý thuyết giải thuật di truyền, lý thuyết kiểm thử cách tạo liệu kiểm thử đảm bảo tiêu chí bao phủ Mục tiêu đề tài nghiên cứu ứng dụng giải thuật di truyền để sinh liệu thử đảm bảo tiêu chí bao phủ mã nguồn Java Mục tiêu nhiệm vụ nghiên cứu a) Mục tiêu - Nắm vững kỹ thuật kiểm thử cấu trúc tiêu chí bao phủ cấu trúc - Xây dựng liệu thử đảm bảo tiêu chí bao phủ việc áp dụng tốt giải thuật di truyền việc sinh liệu kiểm thử chương trình Java b) Nhiệm vụ - Nghiên cứu thuật toán di truyền, kỹ thuật kiểm thử cấu trúc nguyên tắc sinh liệu thử đảm bảo tiêu chí bao phủ - Phát biểu, phân tích cài đặt giải thuật cho toán đặt - Xây dựng giải thuật ứng dụng kiểm thử thiết kế chương trình Java - Đánh giá kết Đối tượng phạm vi nghiên cứu - Kỹ thuật kiểm thử cấu trúc - Các tiêu chí bao phủ kỹ thuật sinh liệu thử - Giải thuật di truyền Phương pháp nghiên cứu a) Phương pháp lý thuyết - Tiến hành thu thập nghiên cứu tài liệu có liên quan - Nghiên cứu lý thuyết kiểm thử phần mềm - Nghiên cứu tiêu chí bao phủ chế sinh liệu thử - Nghiên cứu giải thuật di truyền việc ứng dụng giải thuật di truyền toán tối ưu - Nghiên cứu giải pháp sinh liệu thử tự động mã nguồn Java b) Phương pháp thực nghiệm - Nghiên cứu đề xuất giải pháp đảm bảo tiêu chí bao phủ liệu sinh sử dụng giải thuật di truyền kiểm thử mã nguồn môi trường Java - Cài đặt module để thực việc sinh liệu thử đảm bảo tiêu chí bao phủ chương trình cần kiểm thử - Kiểm tra, thử nghiệm, nhận xét đánh giá kết Ý nghĩa khoa học thực tiễn đề tài a) Ý nghĩa khoa học - Nắm vững vận dụng tốt kỹ thuật kiểm thử cấu trúc - Nắm vững tiêu chí bao phủ kiểm thử cấu trúc - Nắm vững ứng dụng tốt giải thuật di truyền - Kết làm tài liệu tham khảo b) Ý nghĩa thực tiễn Thiết kế cài đặt công cụ sinh liệu thử tự động đảm bảo tất tiêu chí bao phủ chương trình Java CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Kiểm thử phần mềm 1.1.1 Khái niệm kiểm thử phần mềm Kiểm thử phần mềm tiến hành để cung cấp cho bên liên quan thông tin chất lượng sản phẩm dịch vụ kiểm thử Kiểm thử cung cấp cho doanh nghiệp quan điểm, cách nhìn độc lập phần mềm để từ cho phép đánh giá thấu hiểu rủi ro trình triển khai phần mềm 1.1.2 Các bước kiểm thử 1.1.2.1 Lập kế hoạch kiểm thử 1.1.2.2 Thiết kế ca kiểm thử - Thiết kế liệu thử - Xác định điều kiện thực thi - Xác định kết mong đợi 1.1.2.3 Thực thi chương trình 1.1.2.4 Phân tích kết kiểm thử lập báo cáo 1.1.3 Các hoạt động kiểm thử phần mềm - Kiểm thử đơn vị (unit testing) - Kiểm thử tích hợp (integration testing) - Kiểm thử hệ thống (system testing) - Kiểm thử chấp nhận (acceptance testing) Trong trình hoạt động kiểm thử, kiểm thử phát lỗi, việc sửa lỗi sau phát sinh lỗi khác Do đó, cần thực kiểm thử hồi quy (regression testing) 1.1.4 Các kỹ thuật kiểm thử phần mềm - Kiểm thử chức (functional testing) hay gọi kiểm thử hộp đen (black-box testing) - Kiểm thử cấu trúc (structual testing) hay gọi kiểm thử hộp trắng (white-box testing) - Kiểm thử hộp xám (grey-box testing) - Kiểm thử động (dynamic testing) - Kiểm thử tĩnh (static testing) - Kiểm thử phi chức (non-functional testing) 1.2 Kiểm thử cấu trúc 1.2.1 Khái niệm đồ thị kiểm thử - Đồ thị kiểm thử đồ thị có hướng sử dụng để định nghĩa nhiều tiêu chí kiểm thử cấu trúc - Một đồ thị G định nghĩa gồm: + Tập đỉnh N, + Tập đỉnh đầu N0, với N0  N, + Tập đỉnh cuối Nf, với Nf  N, + Tập cung E, E tập N x N - Một lộ trình (path) chuỗi đỉnh [n1, n2, …, nk], cặp đỉnh liền kề (ni, nj), ≤ i, j ≤ k, thuộc tập cung E - Lộ trình kiểm thử (testpath) lộ trình xuất phát từ đỉnh đầu thuộc N0 kết thúc đỉnh cuối Nf Một lộ trình kiểm thử biểu diễn thực thi ca kiểm thử - Đồ thị luồng điều khiển: Đồ thị sử dụng phổ biến kiểm thử cấu trúc đồ thị luồng điều khiển (Control Flow Graph - CFG) Đồ thị xây dựng từ mã nguồn chương trình/đơn vị chương trình 1.2.2 Tiêu chí bao phủ - Độ bao phủ đánh giá dựa hai thơng số gồm tiêu chí bao phủ kiểm thử tập ca kiểm thử - Các tiêu chí bao phủ kiểm thử: + Tiêu chí bao phủ đỉnh (hay tiêu chí bao phủ câu lệnh) + Tiêu chí bao phủ cung (hay tiêu chí bao phủ nhánh) + Tiêu chí bao phủ lộ trình + Tiêu chí bao phủ lộ trình độc lập 1.2.3 Kiểm thử dựa đồ thị luồng điều khiển Kiểm thử cấu trúc dựa đồ thị luồng điều khiển nhằm tạo liệu thử thỏa mãn tiêu chí bao phủ thành phần đồ thị đỉnh, cung hay lộ trình Quy trình chung áp dụng cho kiểm thử dựa đồ thị luồng điều khiển để tạo ca kiểm thử minh họa Hình 1.2 1.2.4 Kiểm thử dựa đồ thị luồng liệu Tương tự kiểm thử dựa đồ thị luồng điều khiển, kiểm thử dựa đồ thị luồng liệu thực qua bước sau: - Xây dựng đồ thị luồng điều khiển từ chương trình - Xây dựng đồ thị luồng liệu cách bổ sung định nghĩa biến sử dụng biến vào đồ thị luồng điều khiển - Chọn tiêu chí bao phủ dựa đồ thị luồng liệu - Xác định lộ trình kiểm thử thỏa mãn tiêu chí bao phủ - Tạo ca kiểm thử thực thi lộ trình tương ứng 1.3 Giải thuật di truyền 1.3.1 Các khái niệm 1.3.1.1 Khái niệm Giải thuật di truyền Giải thuật di truyền (Genetic Algorithm - GA) kỹ thuật chung giúp giải vấn đề, tốn cách mơ tiến hóa người hay sinh vật nói chung điều kiện quy định sẵn môi trường GA kỹ thuật khoa học máy tính nhằm tìm kiếm lời giải phù hợp cho tốn tối ưu tổ hợp (combinatorial optimization), thuộc phân ngành giải thuật tiến hóa sử dụng nguyên lý tiến hóa như: di truyền, đột biến, chọn lọc tự nhiên, trao đổi chéo 1.3.1.2 Các toán tử di truyền - Toán tử chọn lọc toán tử tái sinh: trình chọn lọc đấu tranh sinh tồn cá thể làm thay đổi cá thể quần thể Những cá thể tốt, thích nghi với điều kiện sống có khả đấu tranh lớn hơn, tồn sinh sản Các cá thể khơng thích nghi với điều kiện sống dần + Toán tử chọn lọc + Toán tử tái sinh - Toán tử lai ghép (crossover operator) - Toán tử đột biến (mutation operator) 1.3.1.3 Các công thức giải thuật di truyền Giả sử có tập nhiễm sắc thể với thơng số sau: • Kích thước quần thể: populationSize • Các nhiễm sắc thể vi, với i=1 populationSize • Hàm mục tiêu: f(vi) - Cơng thức tính độ thích nghi eval(vi) nhiễm sắc thể vi: 𝑓(𝑣𝑖 ) 𝑒𝑣𝑎𝑙(𝑣𝑖 ) = 𝑝𝑜𝑝𝑢𝑙𝑎𝑡𝑖𝑜𝑛𝑆𝑖𝑧𝑒 ∑𝑖=1 𝑓(𝑣𝑖 ) - Cơng thức tìm tổng giá trị thích nghi F quần thể: 𝑝𝑜𝑝𝑢𝑙𝑎𝑡𝑖𝑜𝑛𝑆𝑖𝑧𝑒 𝐹= ∑ 𝑒𝑣𝑎𝑙(𝑣𝑖 ) 𝑖=1 - Cơng thức tính xác suất chọn pi cho nhiễm sắc thể vi: 𝑒𝑣𝑎𝑙(𝑣𝑖 ) 𝑝𝑖 = 𝐹 - Cơng thức tính xác suất tích lũy qi cho nhiễm sắc thể vi: 𝑞𝑖 = ∑𝑖𝑗=1 𝑝𝑖 1.3.1.4 Các tiêu chuẩn để kết thúc thuật toán - GA dừng số hệ sinh đạt đến số cho trước - GA dừng quần thể hội tụ, ví dụ cá thể tốt quần thể giống với kết mong muốn - GA dừng cá thể trở nên giống - GA dừng cá thể tốt quần thể không thay đổi theo thời gian 1.3.1.5 Sơ đồ cấu trúc giải thuật di truyền Hình 1.3 Sơ đồ thực giải thuật di truyền đơn giản Cấu trúc giải thuật GA: Begin Gán i=0; 10 - Sắp xếp cá thể quần thể theo độ thích nghi từ thấp đến cao - Đặt lại độ thích nghi cho quần thể xếp theo kiểu: cá thể thứ có độ thích nghi 1, cá thể thứ hai có độ thích nghi 2, …, cá thể thứ populationSize có độ thích nghi populationSize 1.3.4.3 Lựa chọn theo chế lấy mẫu ngẫu nhiên - Biểu diễn xác suất chọn cá thể lên đường thẳng - Đặt N điểm chọn lên đường thẳng Các điểm chọn cách 1/N, điểm đặt ngẫu nhiên khoảng [0,1/N] - Với điểm chọn, cá thể gần bên phải chọn 1.3.4.4 Lựa chọn tranh đấu - Lấy số cá thể quần thể, cá thể có độ thích nghi cao chọn - Lặp lại thao tác N lần 1.4 Kết luận CHƯƠNG KIỂM THỬ CẤU TRÚC TRONG MÔI TRƯỜNG JAVA 2.1 Giới thiệu mơi trường ngơn ngữ Java 2.1.1 Java gì? Java ngơn ngữ lập lập trình hướng đối tượng, phát triển Sun Microsystem, ngôn ngữ kế thừa trực tiếp từ C/C++ Java ngơn ngữ lập trình mạnh sử dụng đơng đảo phát triển phần mềm, trang web, lập trình game hay lập trình ứng dụng thiết bị di động 11 2.1.2 Ứng dụng Java 2.1.3 Những đặc điểm Java 2.1.3.1 Hướng đối tượng hoàn toàn 2.1.3.2 Độc lập phần cứng hệ điều hành 2.1.3.3 Ngôn ngữ thông dịch 2.1.3.4 Cơ chế thu gom rác tự động 2.1.3.5 Đa luồng 2.1.3.6 Tính an tồn bảo mật 2.1.4 Java Virtual Machine (JVM) - Java Virtual Machine (máy ảo Java) phần mềm giả lập máy tính, tập hợp lệnh logic để xác định hoạt động máy - Có thể xem JVM hệ điều hành thu nhỏ - JVM chuyển mã bytecode thành machinecode 2.1.5 Các khối điều khiển Java - Cấu trúc điều kiện if … else - Cấu trúc switch … case - Vòng lặp for - Vòng lặp while - Vòng lặp … while 2.2 Tổng quan phương pháp kiểm thử cấu trúc dựa đồ thị luồng điều khiển 2.3 Xây dựng đồ thị luồng điều khiển từ mã nguồn Java Nội dung thuật toán sinh đồ thị luồng điều khiển hàm/ phương thức Java thỏa mãn tiêu chí phủ kiểm thử cho trước trình bày Hình 2.3 Alg 01: Gen_CFG (f, c) Input: f: hàm Java đầu vào c: (tiêu chí bao phủ lệnh nhánh), (tiêu chí bao phủ điều kiện con) 12 graph: đồ thị luồng điều khiển thảo mãn tiêu chí bao phủ c hàm đầu vào f, graph biến toàn cục begin Khởi tạo graph:= f; B:= khối mã nguồn mã nguồn f Đồ thị G:= Các khối mã nguồn B Cập nhật graph if (G có đỉnh {break/ continue/ return}) then Cập nhật đỉnh graph end if for (mỗi khối mã nguồn M B) if (M tách khối mã nguồn được) then Gen_CFG (M, c) end if end for end Output: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: Hình 2.3 Thuật tốn sinh CFG từ mã nguồn 2.4 Xây dựng tập lộ trình kiểm thử 2.4.1 Xây dựng tập lộ trình độc lập 2.4.2 Xây dựng lộ trình kiểm thử vòng lặp 2.4.2.1 Lộ trình kiểm thử cho vòng lặp đơn 2.4.2.2 Lộ trình kiểm thử cho vòng lặp lồng 2.5 Kết luận CHƯƠNG GIẢI PHÁP SINH DỮ LIỆU THỬ DỰA TRÊN GIẢI THUẬT DI TRUYỀN 3.1 Phát biểu toán đặt Thuật toán di truyền phương pháp tìm kiếm thích nghi cách thay đổi liệu từ hệ tiếp theo, để tối ưu hóa mục tiêu (hàm fitness) 13 Để sinh liệu kiểm thử (test data) cho chương trình java, thuật toán di truyền (GA) đề xuất để tạo liệu kiểm thử tự động, tìm kiếm thích nghi để thay đổi liệu thử nghiệm từ hệ sử dụng hàm fitness để đánh giá liệu thử nghiệm tạo Sự thống trị (Dominance) Gọi G = (V, E) đồ thị với hai đỉnh phân biệt n0 nk Nút n thống trị (chiếm ưu hơn) nút m đường dẫn P từ đỉnh đầu n0 đến đỉnh m có chứa đỉnh n Bằng cách áp dụng mối quan hệ thống trị nút đồ thị G, biểu diễn đồ thị hình (với nút đại diện cho nút đồ thị) bắt nguồn từ đỉnh n0, gọi thống trị, ký hiệu DT(G) Một DT(G) = (V, E) đồ thị nút phân biệt n0, gọi nút gốc, đỉnh đầu cung; nút n (ngoại trừ nút gốc n0) đầu cung tồn đường dẫn (duy - đường dẫn thống trị) từ gốc n0 đến nút n ký hiệu dom(n) Kỹ thuật đề xuất để giảm chi phí kiểm thử phần mềm nhằm đáp ứng tiêu chí bao phủ tất câu lệnh Kỹ thuật dựa khái niệm mối quan hệ thống trị nút đồ thị luồng điều khiển chương trình nhằm mục đích bao phủ tập hợp câu lệnh (tương ứng nút đồ thị luồng điều khiển chương trình) đảm bảo mức độ phù hợp tất câu lệnh chương trình thử nghiệm 3.2 Biểu diễn nhiễm sắc thể Thuật toán di truyền đề xuất sử dụng vector nhị phân làm nhiễm sắc thể để biểu diễn giá trị biến đầu vào chương trình cần kiểm thử Độ dài vector phụ thuộc vào độ xác yêu cầu độ dài miền xác định biến đầu vào Giả sử chúng 14 ta muốn tạo trường hợp kiểm thử (test cases) cho chương trình gồm có n biến đầu vào x1, …, xn; biến xi nhận giá trị miền Di = [ai, bi] Giả sử thêm dịch chuyển di vị trí chữ số thập phân mong muốn cho giá trị biến xi Để đạt độ xác vậy, miền Di cần chia thành (bi − ai)  10di vùng có kích thước Chúng ta biểu thị mi số nguyên nhỏ cho: (bi − ai)  10di  2mi −1 Sau đó, biểu diễn biến xi mã hóa dạng chuỗi nhị phân binstri có chiều dài mi đáp ứng yêu cầu độ xác Phép ánh xạ từ chuỗi nhị phân binstri đến biến số thực xi phạm vi [ai, bi] thực theo công thức sau: 𝑏𝑖 − 𝑎𝑖 (3.1) 2𝑚 𝑖 − Trong đó, 𝑥𝑖′ biểu diễn giá trị thập phân chuỗi nhị phân 𝑥𝑖 = 𝑎𝑖 + 𝑥𝑖′ × binstri Lưu ý phương thức áp dụng để biểu diễn giá trị biến số nguyên cách đặt di = sử dụng công thức sau thay cho công thức (3.1) trên: 𝑥𝑖 = 𝑎𝑖 + 𝑖𝑛𝑡(𝑥𝑖′ × 𝑏𝑖 − 𝑎𝑖 ) 2𝑚𝑖 −1 (3.2) Bây giờ, nhiễm sắc thể (tương tự test case) biểu thị chuỗi nhị phân có chiều dài 𝑚 = ∑𝑛𝑖=1 𝑚𝑖 ; đó, nhóm m1 bits ánh xạ vào giá trị phạm vi [a1, b1] biến x1, nhóm m2 bits ánh xạ vào giá trị phạm vi [a2, b2] biến x2, v.v… nhóm mn bits cuối ánh xạ vào giá trị phạm vi [an, bn] biến xn 3.3 Khởi tạo quần thể (Initial population) Mỗi nhiễm sắc thể (tương ứng test case) biểu diễn chuỗi nhị phân có độ dài m Chúng ta tạo ngẫu nhiên 15 populationSize chuỗi nhị phân m-bits để khởi tạo cho quần thể ban đầu, với populationSize kích thước quần thể Giá trị populationSize thích hợp xác định thực nghiệm Chúng ta sử dụng công thức (3.1) (3.2) để chuyển đổi nhiễm sắc thể thành n số thập phân đại diện cho giá trị n biến đầu vào x1, …, xn 3.4 Xây dựng hàm thích nghi Thuật tốn di truyền sử dụng hàm đánh giá (fitness function) để đánh giá liệu kiểm thử tạo Hàm fitness phụ thuộc vào mối quan hệ thống trị nút biểu đồ luồng điều khiển chương trình Chúng ta sử dụng exePath để biểu diễn tập hợp nút đồ thị CFG duyệt qua sử dụng domPath(n) để tìm đường dẫn thống trị nút đích n Hàm fitness tỷ số số lượng nút bao phủ đường dẫn thống trị nút đích đến với tổng số nút đường dẫn thống trị nút đích Hàm fitness ft(vi) tính sau: (1) Tìm exePath: tìm tập hợp nút qua chương trình bao phủ trường hợp kiểm thử (2) Tìm domPath(n): tìm đường dẫn thống trị nút đích n (3) Xác định (𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛) − 𝑒𝑥𝑒𝑃𝑎𝑡ℎ): xác định tập hợp nút chưa bao phủ đường dẫn thống trị (4) Xác định (𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛) − 𝑒𝑥𝑒𝑃𝑎𝑡ℎ)′: xác định tập nút bao phủ đường dẫn thống trị (5) Tính tốn |(𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛) − 𝑒𝑥𝑒𝑃𝑎𝑡ℎ)′|: tính tốn số lượng nút bao phủ đường dẫn thống trị (6) Tính tốn |𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛)|: tính toán số lượng nút đường dẫn thống trị nút đích n Sau đó, tính giá trị hàm fitness: |(𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛) − 𝑒𝑥𝑒𝑃𝑎𝑡ℎ)′ | 𝑓𝑡(𝑣𝑖 ) = |𝑑𝑜𝑚𝑃𝑎𝑡ℎ(𝑛)| 16 Giá trị hàm fitness tính tốn luận văn tỷ lệ số lượng nút bao phủ đường dẫn thống trị n với số lượng nút đường dẫn thống trị nút đích n phản hồi từ toán GA Một trường hợp kiểm thử đại diện nhiễm sắc thể vi tối ưu giá trị hàm fitness ft(vi) = 3.5 Lựa chọn (Selection) Sau tính tốn giá trị hàm fitness trường hợp kiểm thử (test case) quần thể tại, thuật toán chọn lựa test cases từ tất thành viên quần thể cha mẹ quần thể Trong trình lựa chọn, GA sử dụng phương pháp bánh xe Roulette để thực 3.6 Kết hợp lại (Recombination) Trong giai đoạn kết hợp lại, ta sử dụng hai toán tử, chéo (Crossover) đột biến (Mutation) Các toán tử khởi tạo cá thể từ nhiễm sắc thể cha mẹ chọn, để tạo thành quần thể a) Crossover (lai ghép - chéo): Crossover hoạt động cấp độ cá thể Trong trình lai ghép nhau, hai cha mẹ (nhiễm sắc thể cha mẹ) trao đổi chuỗi thông tin (vật liệu di truyền – genetic material) vị trí ngẫu nhiên nhiễm sắc thể để tạo hai chuỗi (con cái) Mục đích khởi tạo quần thể tốt theo thời gian cách kết hợp vật liệu di truyền (materrial) từ cặp thành viên quần thể cha mẹ Crossover xảy theo xác suất lai ghép b) Mutation (đột biến): Mutation thực sở bit Toán tử đột biến ln hoạt động sau tốn tử chéo lật bit với xác suất xác định trước Xác suất đột biến PMUTATION cho số bits đột biến PMUTATION × m × populationSize mong muốn Mỗi bit (trong tất nhiễm sắc thể quần thể) có 17 hội bình đẳng để trải qua đột biến (tức là, thay đổi thành ngược lại) 3.7 Lựa chọn tối ưu (Elitist) Chức elitist tăng cường tại cách lưu trữ thành viên tốt quần thể trước Nếu thành viên tốt quần thể tồi tệ thành viên tốt quần thể trước đó, chúng chuyển đổi cho nhau, thành viên tốt quần thể thay thành viên tồi tệ quần thể Sau đó, lưu trữ thành viên tốt quần thể 3.8 Thuật toán tổng quát Luận văn xây dựng thuật toán dựa kỹ thuật GA với đầu vào chương trình cần kiểm thử, số biến đầu vào chương trình, miền độ xác biến đầu vào Thuật tốn xác định thơng số cho GA như: kích thước quần thể, số lượng tối đa hệ, xác suất chéo đột biến Thuật toán tạo tập hợp trường hợp kiểm thử, tập hợp nút bao phủ trường hợp kiểm thử danh sách nút chưa phát hiện, có 3.9 Kết luận CHƯƠNG CÀI ĐẶT VÀ THỬ NGHIỆM 4.1 Cài đặt giải pháp đề xuất Phần luận văn trình bày cách thức cài đặt giải pháp sinh liệu thử dựa kỹ thuật GA đề xuất Chương Luận văn sử dụng ngơn ngữ lập trình Java cơng cụ lập trình Eclipse để cài đặt mã nguồn cho giải pháp đề xuất 18 4.2 Triển khai mơ thực nghiệm Phần trình bày nội dung thí nghiệm thực để đánh giá hiệu GA hàm fitness đề xuất Các tham số GA thiết lập sau: Số lượng tối đa hệ MAX_GENERATIONS = 20, Kích thước quần thể populationSize = 20, Xác suất lai ghép PCROSSOVER = 85% Xác suất đột biến PMUTATION = 10% Bài toán phân loại tam giác sử dụng thí nghiệm Bài tốn tam giác nhận ba số nguyên làm liệu đầu vào; liệu số đo cạnh tam giác Đầu chương trình loại tam giác xác định ba cạnh ứng với số đo này: tam giác đều, tam giác cân, tam giác thường, không tam giác Tiếp theo, xây dựng biểu đồ luồng điều khiển CFG đảm bảo tiêu chí bao phủ đỉnh cho tốn tam giác theo mã nguồn đề xuất Biểu đồ CFG thể Hình 4.12 Tập hợp lộ trình kiểm thử sinh từ biểu đồ luồng điều khiển chương trình: Bảng 4.1 Stt Bảng danh sách lộ trình kiểm thử sinh từ đồ thị luồng điều khiển toán tam giác Testpaths 1, 2, 3, 4, 15, 24 1, 2, 3, 5, 6, 15, 24 1, 2, 3, 5, 7, 8, 9, 14, 15, 24 1, 2, 3, 5, 7, 8, 10, 11, 14, 15, 24 1, 2, 3, 5, 7, 8, 10, 12, 13, 14, 15, 24 1, 2, 16, 17, 18, 23, 24 1, 2, 16, 17, 19, 20, 23, 24 1, 2, 16, 17, 19, 21, 22, 23, 24 19 Hình 4.12 Biểu đồ luồng điều khiển CFG toán tam giác 4.3 Kết đánh giá kết Sau thiết kế cài đặt chương trình theo nội dung bước trình bày Chương “Giải pháp sinh liệu thử dựa giải thuật di truyền” áp dụng sinh liệu kiểm thử cho toán tam giác với tham số đầu vào đề cập mục 4.2, kết thử nghiệm chạy GA thể Bảng 4.2 Bảng 4.2 Kết thực thi sinh liệu thử 20 Node No Thế hệ/ Tổng fitness 1/ 12.399999 20 18 22 1/ 10.714285 2/ 7.1428556 3/ 6.4285707 4/ 6.4285707 5/ 6.4285707 … 19/ 5.7142854 20/ 5.7142854 1/ 0.0 1/ 10.714286 1/ 9.8571415 10, 1, 4, 9, 20 13, 24, 39 2, 3, 10 4, 10, 24 5, 11, 23 11, 18, 32 2, 18, 31 13, 13, 23 13 1/ 8.444446 15, 12, 15 11 27, 33, 33 14 1/ 8.25 2/ 8.75 3/ 9.0 4/ 10.0 1/ 9.0 2/ 10.0 3/ 10.375 4/ 10.125 5/ 10.125 … 19/ 10.375 20/ 10.75 1/ 13.0 Stt Tescases (a, b, c) 20, 36, 48 12, 10, 16 13, 16, 20 13, 15, 23 19, 23, 40 20, 19, 36 - Path Coverage 1, 2, 3, 5, 6, 15, 24 - 1, 2, 16, 17, 18, 23, 24 1, 2, 16, 17, 19, 21, 22, 23, 24 1, 2, 3, 5, 7, 8, 9, 14, 15, 24 1, 2, 3, 5, 7, 8, 10, 12, 13, 14, 15, 24 1, 2, 3, 5, 7, 8, 10, 11, 14, 15, 24 - - 47, 47, 47 1, 2, 3, 4, 15, 24 21 Stt Node No Thế hệ/ Tổng fitness 2/ 13.75 3/ 14.0 4/ 14.75 Tescases (a, b, c) Path Coverage Kết lộ trình thực thi tương ứng với liệu thử (test cases) sinh bảng trên: Bảng 4.3 # 10 11 12 13 14 15 16 17 18 Testcases 20, 36, 48 12, 10, 16 13, 16, 20 13, 15, 23 19, 23, 40 20, 19, 36 10, 1, 4, 9, 20 13, 24, 39 2, 3, 10 4, 10, 24 5, 11, 23 11, 18, 32 2, 18, 31 13, 13, 23 15, 12, 15 27, 33, 33 47, 47, 47 Kết lộ trình thực thi ứng với liệu thử Triangle type Tam giác thường Tam giác thường Tam giác thường Tam giác thường Tam giác thường Tam giác thường Không phải tam giác Không phải tam giác Không phải tam giác Không phải tam giác Không phải tam giác Không phải tam giác Không phải tam giác Không phải tam giác Tam giác cân Tam giác cân Tam giác cân Tam giác Path covered 1→2→3→5→6→15→24 1→2→3→5→6→15→24 1→2→3→5→6→15→24 1→2→3→5→6→15→24 1→2→3→5→6→15→24 1→2→3→5→6→15→24 1→2→16→17→18→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→16→17→19→21→22→23→24 1→2→3→5→7→8→9→14→15→24 1→2→3→5→7→8→10→12→13→14→15→24 1→2→3→5→7→8→10→11→14→15→24 1→2→3→4→15→24 Tiếp theo, để đánh giá tỷ lệ bao phủ lộ trình kiểm thử chương trình giải tam giác trên, chạy tiến hành nhiều lần để đánh giá liệu thử sinh từ GA Bảng 4.4 liệt kê 10 lần chạy chương trình để đánh giá tỷ lệ bao phủ lộ trình kiểm thử Bảng 4.4 # No of testcases 24 Tỷ lệ bao phủ lộ trình liệu kiểm thử No of Nodes visited 12 No of paths covered Coverage Ratio % 87.5 Time (ms) 66.842343 22 No of testcases 17 24 19 29 25 21 23 24 26 # 10 No of Nodes visited 12 12 12 12 12 12 12 12 12 No of paths covered 6 5 7 Coverage Ratio % 75 75 62.5 87.5 62.5 62.5 87.5 87.5 87.5 Time (ms) 89.798866 78.881123 85.250908 76.575238 77.827296 77.342105 94.904511 65.531383 77.503708 Biểu đồ biểu diễn tỷ lệ bao phủ lộ trình kiểm thử 100 80 60 40 20 No of testcases Hình 4.1 4.4 Kết luận Coverage Ratio (%) 10 Time (ms) Biểu đồ biểu diễn tỷ lệ bao phủ lộ trình kiểm thử 23 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kiểm thử khâu quan trọng vòng đời xây dựng phát triển phần mềm nhằm đánh giá chất lượng phần mềm Việc sinh liệu kiểm thử vấn đề thách thức, tính đa dạng độ phức tạp mã nguồn môi trường công nghiệp phần mềm Kiểm thử cấu trúc chiến lược kiểm thử dựa tìm lỗi để đánh giá chất lượng kiểm thử Kiểm thử cấu trúc yêu cầu việc xây dựng liệu kiểm thử phải đạt chất lượng, có khả phát lỗi cao dễ dàng tự động hóa nhằm giảm chi phí Luận văn tập trung nghiên cứu phương pháp sinh liệu kiểm thử tự động cho chương trình Java dựa giải thuật di truyền Kỹ thuật áp dụng khái niệm mối quan hệ thống trị nút đồ thị luồng điều khiển để giảm chi phí kiểm thử phần mềm Các khái niệm sử dụng để xác định hàm fitness để đánh giá liệu thử nghiệm tạo Các cài đặt thực nghiệm luận văn thực để đánh giá hiệu kỹ thuật GA, đánh giá tính hiệu hàm fitness để giảm chi phí kiểm thử phần mềm Kết thực nghiệm cho thấy phương pháp nghiên cứu bước đầu giải toán “Ứng dụng giải thuật di truyền sinh liệu thử bao phủ cấu trúc chương trình Java” Cụ thể, từ đầu vào chương trình Java tiêu chí phủ kiểm thử sinh ca kiểm cần thiết tập liệu kiểm thử sinh cách tự động thơng qua thuật tốn di truyền Kết thí nghiệm cho thấy kỹ thuật GA đề xuất vượt trội kỹ thuật kiểm thử ngẫu nhiên Lượng ca kiểm thử sinh phù hợp, đảm bảo độ bao phủ chương trình Tuy nhiên, ngồi kết đạt được, phương pháp nghiên cứu chưa xử lý tốt phương thức Java đầu vào phức tạp, chứa 24 biến xâu, biến trỏ, đệ quy Giải pháp đề dựa thuật toán di truyền, phụ thuộc vào tham số đầu vào hàm sinh ngẫu nhiên số đột biến hệ nên kết thử nghiệm lúc đạt tỉ lệ mong muốn Trong tương lai, tơi tập trung tìm phương pháp để giải hạn chế nêu mở rộng phạm vi, phương pháp nghiên cứu cho kiểm thử cho chương trình phức tạp thay kiểm tra chương trình đơn giản Đồng thời tơi tối ưu hàm fitness việc giải toán thực tế để nâng cao chất lượng kiểm thử cấu trúc, nhằm giảm thiểu chi phí pha kiểm thử đảm bảo chất lượng phần mềm./ ... đầu giải toán Ứng dụng giải thuật di truyền sinh liệu thử bao phủ cấu trúc chương trình Java Cụ thể, từ đầu vào chương trình Java tiêu chí phủ kiểm thử sinh ca kiểm cần thiết tập liệu kiểm thử. .. Ứng dụng giải thuật di truyền sinh liệu thử bao phủ cấu trúc chương trình Java Mục đích nghiên cứu Đề tài tìm hiểu sở lý thuyết giải thuật di truyền, lý thuyết kiểm thử cách tạo liệu kiểm thử. .. thử cấu trúc tiêu chí bao phủ cấu trúc - Xây dựng liệu thử đảm bảo tiêu chí bao phủ việc áp dụng tốt giải thuật di truyền việc sinh liệu kiểm thử chương trình Java b) Nhiệm vụ - Nghiên cứu thuật
- Xem thêm -

Xem thêm: Ứng dụng giải thuật di truyền sinh dữ liệu thử bao phủ cấu trúc của chương trình Java, Ứng dụng giải thuật di truyền sinh dữ liệu thử bao phủ cấu trúc của chương trình Java

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay