Phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java

62 801 1
Phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHAN THỊ THU HÀ PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO CÁC ỨNG DỤNG JAVA LUẬN VĂN THẠC SĨ Ngành: Công nghệ thông tin Hà Nội -2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHAN THỊ THU HÀ PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO CÁC ỨNG DỤNG JAVA Ngành: Công nghệ thông tin Chuyên ngành: Kỹthuật phần mềm Mã Số:60.48.01.03 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS PHẠM NGỌC HÙNG Hà Nội -2015 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: GIỚI THIỆU CHƯƠNG 2: CÁC KỸ THUẬT KIỂM THỬ DÒNG ĐIỀU KHIỂN 2.1 Tổng quan kiểm thử hộp trắng 2.2 Kỹ thuật kiểm thử dòng điều khiển 10 2.2.1 Kiểm thử hộp trắng dòng điều khiển theo hướng động 10 2.2.2 Kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh 12 2.3 Quy trình kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh 2.3.1 Đồ thị dòng điều khiển 2.3.2 Các tiêu chí phủ kiểm thử 2.3.3 Đường kiểm thử 10 2.4 So sánh kĩ thuật kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh động 10 2.5 Tầm quan trọng tự động hóa quy trình kiểm thử hộp trắng dòng điều khiểnError! Book CHƯƠNG 3: PHƯƠNG PHÁP KIỂM THỬ DÒNG ĐIỀU KHIỂN HƯỚNG TĨNH CHO CÁC HÀM JAVA 15 3.1 Ý tưởng 15 3.2 Xây dựng đồ thị dòng điều khiển từ mã nguồn 16 3.3 Xây dựng tập đường kiểm thử 20 3.3.1 Xây dựng tập đường độc lập 20 3.3.2 Xây dựng đường kiểm thử vòng lặp 22 i 3.4 Xây dựng hệ ràng buộc 25 3.5 Sinh tập liệu kiểm thử dựa giải nghiệm hệ ràng buộc 27 3.5.1 Giải hệ sử dụng kỹ thuật sinh ngẫu nhiên 27 3.5.2 Giải hệ sử dụng SMT-Solver 27 CHƯƠNG 4: GIỚI THIỆU CÔNG CỤ 32 4.1 Kiến trúc công cụ 32 4.2 Nền tảng chương trình 33 4.2.1 Thư viện JDT 33 4.2.2 Bộ giải hệ Z3 Prover 34 4.3 Cài đặt công cụ 36 4.3.1 Tổng quan 36 4.2.2 Đầu vào công cụ JavaUnitCFT 36 4.2.3 Đầu công cụ 37 CHƯƠNG 5: THỰC NGHIỆM 42 5.1 Sinh liệu kiểm thử cho hàm đầu vào chứa biến số nguyên 42 5.1.1 Input 42 5.1.2 Output: 43 5.2 Sinh liệu kiểm thử cho hàm đầu vào chứa biến số thực 44 5.2.1 Input 44 5.2.2 Output 44 5.3 Sinh liệu kiểm thử cho hàm đầu vào chứa vòng lặp 47 5.3.1 Input 47 5.3.2 Output 47 CHƯƠNG 6: KẾT LUẬN 49 TÀI LIỆU THAM KHẢO 50 ii 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 thầy giáo, TS Phạm Ngọc Hùng - người trực tiếp hướng dẫn, bảo, động viên, tạo cho điều kiện tốt nhấtvà truyền cho cảm hứng nghiên cứu khoa học từ bắt đầu lựa chọn đề tài, suốt trình nghiên cứu, - tôiđã hoàn thành 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 - người đầy tâm huyết, tận tình đào tạo,cung cấp cho kiến thức chuyên môn vô quý giá.Những kiến thức không tạo cho tảng tốt trình học tập, nghiên cứu trường, mà học bổ ích, kỹ kinh nghiệm đáng quý cho suốt trình làm việc nghiên cứu chuyên môn sau Cuối cùng, xin chân thành cảm ơn người thân gia đình bạn bè, đồng nghiệp giúp đỡ, động viên đặc biệt gặp phải khó khăn việc học tập nghiên cứu, tiếp thêm động lực để vững tâm hoàn thành luận văn iii TÓM TẮT Kiểm thử đơn vị bước quy trình kiểm thử phần mềm Hiện nay, công ty phần mềm, kiểm thử đơn vị thường thực lập trình viên sau hoàn thành việc phát triễn mã nguồn sản phẩm, trước bàn giao cho phận kiểm thử để tiến hành kiểm thử tích hợp Do hạn chế mặt thời gian, chi phí nguồn nhân lực, lập trình viên thường sử dụng kỹ thuật kiểm thử hộp đen mà không áp dụng kỹ thuật kiểm thử hộp trắng tiến hành kiểm thử đơn vị Kết lỗi tiềm tàng mã nguồn sản phẩm không phát trước việc kiểm thử tích hợp thực Luận văn tập trung nghiên cứu phương pháp sinh liệu kiểm thử tự động cho ứng dụng Java dựa kỹ thuật kiểm thử hộp trắng dòng điều khiển hướng tĩnh, đồng thời cài đặt công cụ(JavaUnitCFT)hỗ trợ cho phương pháp Phương pháp mô tả thành quy trình với bước sau: Bước đầu tiên, từ mã nguồn cung cấp, ta phân tích để sinh đồ thị dòng điều khiển thỏa mãn tiêu chí phủ kiểm thử Sau đó, đồ thị dòng điều khiển phân tích để xây dựng tập đường kiểm thử Bước tiếp theo, đường kiểm thử chứa vòng lặp cấu trúc lại để sinh thêm đường kiểm thử dùng kiểm thử tính đắn vòng lặp Dựa tập đường kiểm thử, ta xây dựng hệ ràng buộc tương ứng Cuối cùng, ta thực giải hệ ràng buộc thu để sinh tập liệu cho cácca kiểm thử cách sử dụng mạnh công cụ SMT-Solver Một công cụ hỗ trợ phương pháp cài đặt ngôn ngữ lập trình Java để chứng minh tính đắn khả ứng dụng thực tế phương pháp Kết thực nghiệm cho thấy, tậpdữ liệu cho ca kiểm thử sinh cách tự động với số lượng tối thiểu đảm bảo đạt độ bao phủ cao, đạt độ tin cậy cao kiểm chứng tính đắn mã nguồn Từ khóa:Kiểm thử tự động, kiểm thử hộp trắng dòng điều khiển, đồ thị dòng điều khiển,kiểm thử vòng lặp, độ phủ,ca kiểm thử iv ABSTRACT Testingphase has lot of significance in Software Development Life Cycle (SDLC) due to it is the most important part in executing and fault rectification Because of high demand in quality, testing phase is performed quite thoroughly and strictly As a result, the cost of the testing phase can be up to 40% - 60% the total cost of application development process To reduce the cost of the testing phase, not only the testing execution phase but also the test case generation process should be automated as much as possible However, some automation testing tools just focus on executing test cases and return the testing report instead of generating test cases automatically The Thesis researches a method of generating a set of test cases automatically for Java applications based on the static white-box technique Input by source code of the application under test and coverage criteria, the output of this method is a minimal set of test cases which can satisfy the provided criteria and reach the maximum coverage level The proposed method processes as following: Firstly, the source code is required to be analysed in order to generate corresponding Control Flow Graph (CFG) Based on the CFG, independent paths will be built After that, paths containing loop is reconstructed to generatesome new paths used to test the loop Then, each path is analysed by using symbolic execution technique to create corresponding constraints Finally, the constraints aresolved to find solutions by SMT-Solver tools A set of test data for the test cases is generated automatically The experimental result shows the effectiveness of the approach with the set of test data for the minimum number of test cases but ensures the high quality of source code Keywords:Automated testing, white-box testing technique, control flow testing, test case, coverage criteria v 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ự động cho ứng dụng Java” nghiên cứu riêng tôi, 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ừ nhiều nguồn tài liệu Tất nguồn tài liệu tham khảo có xuất xứ rõ ràng hợp pháp Tôi xin hoàn toàn chịu trách nhiệm chịu hình thức kỷ luật theo quy định cho lời cam đoan Hà Nội, ngàythángnăm 2015 Phan Thị Thu Hà vi 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 JDT Java Development Tools Bộ công cụ lập trình ngôn ngữ lập trình Java CVC Cooperating Validity Checker DIMACS Center for Discrete Mathematics and Theoretical Computer Science SMT-Solver Satisfiability Solver Modulo vii Theories DANH MỤC HÌNH VẼ Hình 1.1 Top 10 ngôn ngữ lập trình phổ biến giai đoạn 2002-2015 Hình 2.1 Đảm bảo chất lượng phần mềm theo pha Hình 2.2 Chi phí cho việc tìm sửa lỗi Hình 2.3 Các thành phần đồ thị dòng điều khiển Hình 2.4 Các cấu trúc điều khiển phổ biến Hình 2.5 Kiểm thử hộp trắng dòng điều khiển theo hướng động 11 Hình 2.6 Ví dụ luật chèn mã nguồn DMS/SRT 12 Hình 2.7 Mã nguồn hàm triangle sau thêm khối mã nguồn 12 Hình 2.8 Kiểm thử hộp trắngdòng điều khiển theo hướng tĩnh 13 Hình 3.1 Quy trình kiểm thử hàm Java theo phương pháp nghiên cứu 15 Hình 3.2 Thuật toán sinh CFG từ mã nguồn 17 Hình 3.3 Mã nguồn hàm kiemTraNamNhuan 18 Hình 3.4 CFG hàm kiemTraNamNhuan tiêu chuẩn phủ câu lệnh, phủ nhánh 18 Hình 3.5 CFG hàm kiemTraNamNhuan tiêu chuẩn phủ điều kiện 19 Hình 3.6 CFG điều kiện kép (a>=0 || ((b>=0 && c>=0) || b+c>=0) || a+b+c>=0) 20 Hình 3.7 Thuật toán sinh tập đường độc lập từ CFG .21 Hình 3.8 Thuật toán sinh đường kiểm thử vòng lặp 23 Hình 3.9 Thuật toán sinh đường kiểm thử vòng lặp 24 Hình 3.10 Thuật toán sinh đường kiểm thử vòng lặp 25 Hình 3.11 Ví dụ hệ ràng buộc 25 Hình 3.12 Thuật toán sinh hệ ràng buộc từ đường kiểm thử 26 Hình 3.13 Quá trình rút gọn câu lệnh 27 Hình 3.14 Mô tả đầu vào, đầu SMT-Solver 29 Hình 3.15 Ví dụ hệ ràng buộc tuân theo chuẩn SMT-Lib .30 Hình 3.16 Quá trình chuyển biểu thức trung tố chuẩn SMT-Lib 31 Hình 4.1 Kiến trúc chương trình JavaUnitCFT 32 Hình 4.2 Ví dụ minh họa AST 33 Hình 4.3 Sử dụng ASTView Eclipse đoạn mã nguồn “test” 34 Hình 4.4 Cây AST mã nguồn class “test” 35 viii ràng buộc vào công cụ Z3 Prover để kiểm tra khả thi đường sinh liệuca kiểm thử đường khả thi 4.3 Cài đặt công cụ 4.3.1 Tổng quan JavaUnitCFTđược xây dựng theo phương pháp nghiên cứu nêu chương Công cụ sử dụng thư viện JDT, giải Z3 để giải hệ ràng buộc sinh tập liệu cho ca kiểm thử Công cụ xây dựng ngôn ngữ Java Hình 4.6 mô tả giao diện tổng quan công cụ JavaUnitCFT Hình 4.6 Giao diện công cụ JavaUnitCFT 4.2.2 Đầu vào công cụJavaUnitCFT Đầu vào công cụ hàm Java chứa biến số nguyên (kiểu int), số thực (kiểu double, float) biến mảng chiều hai chiều Chỉ số biến mảng số nguyên biểu thức Các khối lệnh điều khiển xử lí bao gồm rẽ nhánh, for, while do, while, switch case.Hình 4.7là ví dụ đầu vào công cụ Từ giao diện chương trình, người dùng nhấn vào nút “Mở tập tin” để chọn mã nguồn hàm Java cần sinh ca kiểm thử 36 Hình 4.7 Ví dụ đầu vào công cụ JavaUnitCFT 4.2.3 Đầu công cụ 4.2.3.1.Đồ thị dòng điều khiển Sau người sử dụng chọn hàm Java để sinh ca kiểm thử, công cụ JavaUnitCFT phân tích hàm đầu vào để sinh đồ thị dòng điều khiển thỏa mãn tiêu chí phủ câu lệnh, phủ nhánh phủ điều kiện Màn hìnhĐồ thị phủ cấp 1,2hiển thị CFG thỏa mãn tiêu chí phủ câu lệnh phủ nhánh Thẻ Đồ thị phủ cấp 3hiển thị CFG ứng với tiêu chí phủ điều kiện Hình 4.8 4.9 mô tả đồ thị CFG hàm KiemTraNamNhuan nêu hình 4.7 thỏa mãn tiêu chí phủ câu lệnh phủ nhánh Hình 4.10 4.11 hiển thị đồ thị CFG hàm KiemTraNamNhuanứng với tiêu chí phủ điều kiện Đỉnh mang nhãn Begin, đỉnh kết thúc mang nhãn End Đường màu xanh lam ứng với nhánh đúng, đường màu xanh ứng với nhánh sai Hình 4.8 Đồ thị CFG thỏa mãn tiêu chí phủ câu lệnh phủ nhánh công cụ 37 Hình 4.9 Chi tiết đồ thị CFG thỏa mãn tiêu chí phủ câu lệnh phủ nhánh Hình 4.10 Đồ thị CFG thỏa mãn tiêu chí phủ điều kiện công cụ 38 Hình 4.11.Chi tiết đồ thị CFG thỏa mãn tiêu chí phủ điều kiện Hình 4.12 4.13 thể số đường kiểm thử sinh từ đồ thị CFG tương ứng, người dùng nhấn chọn đường kiểm thử đường chuyển sang màu đỏ Hình 4.12 Đường tương ứng với đường kiểm thử CFG công cụ 39 Hình 4.13 Đường tương ứng với đường kiểm thử CFG 4.2.3.2.Tập đường kiểm thử Từ đồ thị CFG tương ứng với độ phủ sinh tự động từ mã nguồn hàm Java bước trên, chương trình thực sinh đường kiểm thử tương ứng với độ phủ:Phủ câu lệnh, Phủ nhánh vàPhủ điều kiện Cụ thể,Phủ câu lệnh hiển thị tập đường kiểm thử thỏa mãn tiêu chí phủ câu lệnh Phủ nhánhhiển thị danh sách tập đường kiểm thử thỏa mãn tiêu chí phủ nhánh VàPhủ điều kiện đưa tập đường kiểm thử thỏa mãn tiêu chí phủ điều kiện Ngoài ra, tập đường độc lập tương ứng với độ phủ câu lệnh phủ nhánh hiển thị Tập đường độc lập Hình 4.14 Tập đường kiểm thử thỏa mãn phủ câu lệnh hàm KiemTraNamNhuan 40 Hình 4.15 Tập đường kiểm thử thỏa mãn phủ nhánh hàm KiemTraNamNhuan Hình 4.16 Tập đường kiểm thử thỏa mãn phủ điều kiện hàm KiemTraNamNhuan Hình 4.17 Tập tất đường độc lập Hình 4.17 hiển thị tập tất đường độc lập, sở để sinh tậpđường kiểm thử phủ nhánh phủ câu lệnh cho hàm KiemTraNamNhuan 4.2.2.3.Tập liệu cho tập ca kiểm thử Với đường kiểm thử, giá trị biến ca kiểm thử tương ứng hiển thị cột Testcases.Chi tiết giá trị hiển thị thẻ Chi tiết nghiệm với thông tin như: kiểu biến, tên biến, giá trị trước thực ca kiểm thử, giá trị sau thực ca kiểm thử.Hình 4.18 mô tả chi tiết số ca kiểm thử hàm KiemTraNamNhuan với độ phủ nhánh Hình 4.18 Ca kiểm thử thỏa mãn độ phủ nhánh hàm KiemTraNamNhuan 41 CHƯƠNG 5: THỰC NGHIỆM Để kiểm thử tính đắn hiệu lập trình so với thiết kế, thực thử nghiệm với số đầu vào khác sau:  Hàm đầu vào chứa biến số nguyên  Hàm đầu vào chứa biến số thực  Hàm đầu vào có chứa vòng lặp Môi trường thử nghiệm mô tả bảng 5.1 bên Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz 2.40 GHz Installed memory (RAM) 4.00 GB Microsoft Windows 10 Pro © 2015 OS Name 64-bit Operating System, x64-based processor System type Eclipse IDE Version: Luna Service Release (4.4.2) Build id: 20150219-0600 Processor Bảng 5.1 Môi trường thử nghiệm công cụ sinh ca kiểm thử từ thiết kế 5.1 Sinh liệu kiểm thử cho hàm đầu vào chứa biến số nguyên 5.1.1 Input Hàm Java tìm ước chung lớn số, đầu vào biến số nguyên (kiểu int) Mã nguồn hàm UocChungLonNhat mô tả bảng 5.2 bên import java.util.Scanner; publicclass UocChungLonNhat { publicstaticint nhap() { Scanner input = new Scanner(System.in); booleancheck= false; intn=0; while(!check){ System.out.print(" "); try{ n= input.nextInt(); check= true; }catch(Exception e){ System.out.println("Ban hay nhap lai du lieu kieu so"); input.nextLine(); } } return (n); } publicstaticint UCLN(inta, intb){ while(a!= b){ if(a>b) a= a-b; elseb= b-a; 42 } return (a); } publicstaticvoid main(String[] args) { System.out.println("Nhap a"); inta = nhap(); System.out.println("Nhap b"); intb= nhap(); System.out.println("Uoc chung lon nhat cua "+a+" va "+b+" la: "+UCLN(a,b)); System.out.println("Boi chung nho nhat cua "+a+" va "+b+" la: "+((a*b)/UCLN(a,b))); } } Bảng 5.2 Đầu vào hàm UocChungLonNhatchứa biến số nguyên 5.1.2 Output: Hàm cho điều kiện phức tạp, nên CFG thu cho độ phủ cấp (phủ câu lệnh), cấp (phủ nhánh), phủ cấp (phủ điều kiện con) giống Ta có đồ thị CFG hàm UocChungLonNhat mô tả hình 5.1 bên Hình 5.1 CFG thỏa mãn điều kiện phủ cấp 1,2,3 hàm UocChungLonNhat Tập liệu kiểm thử thu hình bên dưới: Hình 5.2 Tập liệu liệu kiểm thử cho ca kiểm thử thỏa mãn độ phủ cấp 1,2,3 hàm UocChungLonNhat 43 5.2 Sinh liệu kiểm thử cho hàm đầu vào chứa biến số thực 5.2.1 Input Hàm Java quy đổi điểm từ hệ số sang hệ chữ với đầu vào biến kiểu số thực Mã nguồn hàm PhanLoaiDiemHocTap mô tả bảng 5.3 import java.util.Scanner; publicclass PhanLoaiDiemHocTap { publicstaticvoid main(String[] args) { floatscore; Scanner console = new Scanner( System.in ); System.out.print( "Nhap diem can kiem tra: " ); score= console.nextFloat(); System.out.print( "Diem so "+score+" tuong duong voi diem chu: "+ Grade ( score )); } staticchar Grade ( floatscore ){ charres ; if ( score< || score> 10) return'I'; if ( score>=9) res = 'A'; elseif ( score>=8) res = 'B'; elseif ( score>=6.5) res = 'C'; elseif ( score>=5) res = 'D'; else res = 'F'; returnres ; } } Bảng 5.3 Đầu vào hàm PhanLoaiDiemHocTapchứa biến số thực 5.2.2 Output Với điều kiện phủ cấp (phủ câu lệnh) cấp (phủ nhánh), giống Ta có đồ thị CFG hàm PhanLoaiDiemHocTap mô tả hình 5.3 Với điều kiện phủ cấp (phủ điều kiện con), ta thu đồ thị phủ CFG hình 5.5 với điều kiện kép ( score< || score> 10)đã tách thành khối điều kiện đơn ( score< 0) (score>10) 44 Hình 5.3 CFG thỏa mãn phủ cấp 1, hàm PhanLoaiDiemHocTap Tập liệu kiểm thử cho testcase thỏa mãn tiêu chí phủ cấp 1,2 thu hình 5.4 bên Hình 5.4 Tập liệu liệu kiểm thử cho ca kiểm thử thỏa mãn độ phủ cấp 1,2 hàm PhanLoaiDiemHocTap 45 Hình 5.5 CFG thỏa mãn phủ cấp hàm PhanLoaiDiemHocTap Tập liệu kiểm thử cho testcase thỏa mãn tiêu chí phủ cấp hàm PhanLoaiDiemHocTap thu hình 5.6, gồm liệu Hình 5.6 Tập liệu liệu kiểm thử cho ca kiểm thử thỏa mãn độ phủ cấp hàm PhanLoaiDiemHocTap 46 5.3 Sinh liệu kiểm thử cho hàm đầu vào chứa vòng lặp 5.3.1 Input Hàm Java tính tổng n số nguyên đầu tiên, với n số nhập vào từ bàn phím Mã nguồn hàm loopDoWhile mô tả bảng 5.4 import java.util.Scanner; publicclass loopDoWhile { publicstaticvoid main(String[] args) { System.out.println("Nhap n"); Scanner console = new Scanner(System.in); intn= console.nextInt(); loopDoWhile (n); System.out.println("Tổng "+n+" số nguyên là: "+ loopDoWhile (n)); } staticintloopDoWhile(intn){ inti=1; intsum=0; { sum+=i; i++; } while ( i[...]... độc lập Hàm Java Độ phủ Sinh tập đường kiểm thử Sinh đường kiểm thử vòng lặp Thực thi ca kiểm thử Sinh hệ ràng buộc Sinh dữ liệu cho các ca kiểm thử Hình 3.1 Quy trình kiểm thử một hàm Java theo phương pháp nghiên cứu 15 Đầu vào của bài toán là một tiêu chí phủ kiểm thử và một đơn vị chương trình Java chứa các biến số nguyên, số thực và biến mảng Đầu ra là tập dữ liệu cho tập các ca kiểm thử thỏa mãn... thế mạnh trình biên dịch để sinh ca kiểm thử mới 14 CHƯƠNG 3: PHƯƠNG PHÁP KIỂM THỬ DÒNG ĐIỀU KHIỂN HƯỚNG TĨNH CHO CÁC HÀM JAVA Chương này nghiên cứu phương pháp kiểm thử tự động hàm Java sử dụng kỹ thuật kiểm thử kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh Phương pháp nghiên cứu cách xây dựng đồ thị dòng điều khiển CFG, sinh tập đường đi độc lập, kỹ thuật kiểm thử tính đúng đắn với hàm đầu vào... thấy bằng kiểm thử tự động, nó có thể được tái tạo dễ dàng bằng cách đơn giản là thực hiện lại đúng ca kiểm thử đã được định nghĩa.Sau cùng, kiểm thử không bao giờ là đủ Không thể thực hiện toàn bộ các ca kiểm thử bằng kiểm thử thủ công Kiểm thử tự động giúp ta thực hiện được một khối lượng các ca kiểm thử lớn hơn rất nhiều trong một khoảng thời gian ngắn so với kiểm thử thủ công.Lượng ca kiểm thử được... trình hướng đối tượng, kiểm thử đơn vị là chính là kiểm thử từng tác vụ của mộtlớp (class) chức năng nào đó Hai phương pháp được sử dụng trong kiểm thử hộp trắng là kiểm thử dòng điều khiển (Control Flow Testing - CFT) và kiểm thử dòng dữ liệu (Data Flow Testing DFT) Trong khi phương pháp kiểm thử dòng điều khiển tập trung kiểm thử tính đúng đắn của các giải thuật sử dụng trong các đơn vị, hoặc chương... cụ kiểm thử như đã chèn thêm mã nguồn xác định số lần lặp tối đa của mỗi vòng lặp hoặc thêm yêu cầu thời gian chạy Tuy nhiên, nhìn chung số ca kiểm thử vẫn khá lớn gây khó khăn cho quản lí  Về thời gian sinh ca kiểm thử. Một cách tổng quan, kiểm thử động thực thi ca kiểm thử lặp lại nhiều lần nên thời gian sinh ca kiểm thử lâu hơn  Về khả năng kiểm thử vòng lặp Kiểm thử tĩnh hướng đến chỉ kiểm thử. .. khiển, từ đó sinh tập các đường kiểm thử Khi đã có được tập các đường kiểm thử, tôi áp dụng kết quả trong nghiên cứu của Đức Anh – sử dụng kỹ thuật thực thi tượng trưng (SE) để sinh hệ ràng buộc, sau đó giải hệ ràng buộc bằng Z3 - một công cụ SMT-Solver để thu được tập các dữ liệu kiểm thử thỏa mãn tiêu chí phủ kiểm thử một cách tự động Đồng thời,tôi đã xây dựng một công cụ dựa theo phương pháp đã nghiên... kiểm thử tự động cho các ứng dụng Java cho nghiên cứu của mình Tư tưởng của phương pháp được kế thừa từ nghiên cứu về “Xây dựng công cụ kiểm thử tự động cho các chương trình C” của Nguyễn Đức Anh, khóa luận tốt nghiệp Trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội, 2015 [2] Trong nghiên cứu của mình, Đức Anh đề xuất một phương pháp sinh ca kiểm thử tự động cho một hàm C chứa các biến số nguyên,... mô tả một cách chi tiết nêu cách xây dựng hệ ràng buộc từ một đường thi hành bất kì Tổng quan về SMT-Solver và kỹ thuật sinh ngẫu nhiên được trình bày để giải hệ ràng buộc sinh dữ liệu cho tập ca kiểm thử 3.1 Ý tưởng Luận văn nghiên cứu phương pháp kiểm thử hàm Java sử dụng kỹ thuật kiểm thử hộp trắngdòng điều khiển theo hướng tĩnh và cài đặt một công cụ hỗ trợ cho phương pháp này Sinh CFG Sinh tập... trình phần mềm, thì phương pháp kiểm thử dòng dữ liệu tập trung kiểm thử tính đúng đắn của việc sử dụng các biến dữ liệu trong đơn vị, chương trình phần mềm Trong khuôn khổ của luận văn này, chương này tôi sẽ trình bày chi tiết về phương pháp kiểm thử hộp trắng dòng điều khiển (kiểm thử dòng điều khiển) mà tôi đã nghiên cứu được 2.2 Tầm quan trọng của tự động hóa quy trình kiểm thử hộp trắng Đảm bảo... Tập dữ liệu liệu kiểm thử cho bộ ca kiểm thử thỏa mãn độ phủ cấp 3 hàm PhanLoaiDiemHocTap 46 Hình 5.7 CFG thỏa mãn phủ cấp 1 của hàm loopDoWhile 48 Hình 5.8 Kiểm thử vòng lặp cho hàm loopDoWhile với số lần lặp tối đa n=6 48 Hình 5.9 Tập dữ liệu liệu kiểm thử cho bộ ca kiểm thử vòng lặp cho hàm loopDoWhile với số lần lặp tối đa n=6 48 ix DANH MỤC BẢNG Bảng 5.1 Môi trường thử ... cứu phương pháp sinh liệu kiểm thử tự động cho ứng dụng Java dựa kỹ thuật kiểm thử hộp trắng dòng điều khiển hướng tĩnh, đồng thời cài đặt công cụ(JavaUnitCFT)hỗ trợ cho phương pháp Phương pháp. .. lý lựa chọn đề tài Phương pháp sinh liệu kiểm thử tự động cho ứng dụng Java cho nghiên cứu Tư tưởng phương pháp kế thừa từ nghiên cứu “Xây dựng công cụ kiểm thử tự động cho chương trình C”... nhân kiểm thử động tận dụng mạnh trình biên dịch để sinh ca kiểm thử 14 CHƯƠNG 3: PHƯƠNG PHÁP KIỂM THỬ DÒNG ĐIỀU KHIỂN HƯỚNG TĨNH CHO CÁC HÀM JAVA Chương nghiên cứu phương pháp kiểm thử tự động

Ngày đăng: 06/04/2016, 16:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan