NGHIÊN CỨU MỘT SỐ KỸ THUẬT SINH TEST CASE TỐT TRONG KIỂM THỬ PHẦN MỀM

73 5 0
  • Loading ...
1/73 trang

Thông tin tài liệu

Ngày đăng: 13/04/2018, 18:52

1 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP ĐẠI HỌC NGHIÊN CỨU MỘT SỐ KỸ THUẬT SINH TEST CASE TỐT TRONG KIỂM THỬ PHẦN MỀM ĐH 2014-TN08-03 Chủ nhiệm đề tài: ThS Tô Hữu Nguyên THÁI NGUYÊN, THÁNG NĂM 2017 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP ĐẠI HỌC NGHIÊN CỨU MỘT SỐ KỸ THUẬT SINH TEST CASE TỐT TRONG KIỂM THỬ PHẦN MỀM ĐH 2014-TN08-03 Xác nhận tổ chức chủ trì (ký, họ tên, đóng dấu) Chủ nhiệm đề tài (ký, họ tên) THÁI NGUYÊN, THÁNG NĂM 2017 DANH SÁCH THÀNH VIÊN THAM GIA NGHIÊN CỨU TT Họ tên Nguyễn Hồng Tân Học hàm, học vị Thạc sĩ Đơn vị công tác Bộ Môn: Công nghệ phần mềm - Khoa CNTT Hà Thị Thanh Thạc sĩ Bộ Môn: Công nghệ phần mềm - Khoa CNTT Nội dung công việc tham gia thực đề tài Nghiên cứu, đánh giá tổng quan kỹ thuật, công cụ sinh liệu kiểm thử tự động Nghiên cứu thách thức kiểm thử phần mềm, kỹ thuật thực thi t ng tr ng MỤC LỤC MỞ ĐẦU Chương TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ SINH DỮ LIỆU KIỂM THỬ 1.1 Kiểm thử phần mềm 1.2 Kiểm thử đơn vị Chương JAVA PATHFINDER VÀ THỰC THI TƯỢNG TRƯNG 2.1 Java pathfinder 2.1.1 Giới thiệu JPF 2.1.2 Khả kiểm tra JPF 10 2.1.3 Kiến trúc mức cao JPF .11 2.1.4 Khả mở rộng JPF .13 2.1.5 Một số mở rộng JPF 14 2.2 Thực thi t ng tr ng 15 2.2.1 Những khái niệm 15 2.2.2 Thực thi t ng tr ng tĩnh 16 2.2.3 Thực thi t ng tr ng động 20 2.2.4 Xây dựng ràng buộc 27 2.2.5 L u trữ giá trị t ng tr ng 29 2.3 SE với kiểu liệu nguyên thủy 30 2.4 SE với đối t ng 34 2.5 SE với lời gọi ph ơng thức 38 2.6 Những thách thức vài giải pháp 39 2.6.1 Bùng nổ đ ờng 39 2.6.2 Giải ràng buộc 41 2.6.3 Mơ hình hóa nhớ 43 2.6.4 Giải vấn đề t ơng tranh 44 Chương THỰC THI TƯỢNG TRƯNG TRÊN KIỂU DỮ LIỆU XÂU 44 3.1 Ràng buộc hỗn h p giải ràng buộc xâu 45 3.1.1 Đồ thị xâu 46 3.1.2 Xây dựng lại ràng buộc 47 3.1.3 Tiền xử lý 48 3.1.4 Sinh ràng buộc xâu 49 3.2.Giải ràng buộc xâu dựa ph ơng pháp BitVector 53 3.3.Cài đặt đanh giá kêt 54 KẾT LUẬN VÀ KIẾN NGHỊ 57 TÀI LIỆU THAM KHẢO 58 DANH MỤC HÌNH VẼ Hình 1.1 Ph ơng thức kiểm thử VSUnit Hình 1.2 Ph ơng thức LuhnAlgorithm Hình 1.3 Ph ơng thức test cho LuhnAlgorithm Hình 2.1 Mơ hình hoạt động JPF Hình 2.2 Sơ đồ trạng thái trình kiểm thử 10 Hình 2.3 Kiến trúc JPF mức cao 12 Hình 2.4 Mẫu Listener 13 Hình 2.5 Cây thực thi t ng tr ng 19 Hình 2.6 Thuật tốn thực thi t ng tr ng động 21 Hình 2.7 Thực thi t ng tr ng với ph ơng thức nhận đầu vào đối t ng 24 Hình 2.8 Cây thực thi t ng tr ng đ c quản lý riêng 27 Hình 2.9 Hệ thống kiểm thử tổng quát 29 Hình 2.10 Gán giá trị t ng tr ng cho tham số đầu vào 31 Hình 2.11 Thực thi t ng tr ng với câu lệnh gán 32 Hình 2.12 Thực thi t ng tr ng với câu lệnh rẽ nhánh 34 Hình 2.13 Khởi tạo đối t ng làm đầu vào cho ch ơng trình 36 Hình 2.14 Sinh ràng buộc liên quan tới đối t ng 38 Hình 3.1 Thuật tốn giải ràng buộc hỗn h p 45 Hình 3.2 Đồ thị xâu 47 Hình 3.3 Đồ thị sau loại bỏ phép toán equals 48 Hình 3.4 Các ràng buộc khơng thỏa mãn sau loại bỏ phép toán equals 49 Hình 3.5 Các đỉnh đại diện cho độ dài xâu đ c bổ sung 49 Hình 3.6 Giải ràng buộc xâu dựa Automata 51 Hình 3.7 Ph ơng thức giải ràng buộc phủ định 52 Hình 3.8 Ch ơng trình Java kiểm thử 54 Hình 3.9 Kết sinh liệu t ng tr ng số phép toán xâu 54 DANH MỤC BẢNG BIỂU Bảng 2.1 Ví dụ thực thi t ng tr ng động 23 Bảng 2.2 Minh họa việc chuyển đổi từ mã nguồn Java sang mã Jimple 27 Bảng 2.3 Sửa đổi ch ơng trình với câu lệnh liên quan tới đối t ng 34 Bảng 3.1 Xây dựng ràng buộc cho phép toán xâu 50 Bảng 3.2 Xây dựng dàng buộc t ơng ứng với phép toán xâu 53 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐHCNTT&TT THÔNG TIN KẾT QUẢ NGHIÊN CỨU Thông tin chung - Tên đề tài: Nghiên cứu số kỹ thuật sinh test case tốt kiểm thử phần mềm - Mã số: ĐH2014-TN08-03 - Chủ nhiệm: ThS Tô Hữu Nguyên - Tổ chức chủ trì: Tr ờng Đại học Cơng nghệ Thơng tin & Truyền thông, Đại học Thái Nguyên - Thời gian thực hiện: 1/2014-12/2015.(Gia hạn đến tháng năm 2016) Mục tiêu - Nghiên cứu số kỹ thuật sinh test case kiểm thử phần mềm áp dụng vào toán cụ thể - Nghiên cứu kỹ thuật thực thi t ng tr ng từ làm sở để sinh Test Case cách hiệu để nâng cao chất l ng phần mềm Tính sáng tạo - Đề xuất áp dụng ph ơng pháp kiểm thử thực thi t ng tr ng áp dụng kiểm thử units kiểm thử phần mềm - Xây dựng thuật toán sinh liệu kiểm thử kiểu liệu xâu, b ớc đầu đ a số cho đ c số kết định Kết nghiên cứu Với mục tiêu đề ban đầu nghiên cứu, tìm kiếm h ớng tiếp cận hiểu sử dụng kỹ thuật thực thi t tài đạt đ ng tr ng áp dụng tự động sinh test case đề c số kết nh sau: - Hệ thống kiến thức kiểm thử phần mềm, kiểm thử units test - Nghiên cứu kỹ thuật thực thi t ng tr ng vấn đề liên quan - Phát triển hai ph ơng pháp sinh liệu kiểm thử số kiểu liệu Xây dựng thuật toán sinh liệu kiểm thử kiểu liệu xâu đánh giá hiệu thuật toán Từ nội dung nghiên cứu, nhóm thực cơng bố tạp chí n ớc quốc tế Công bố báo theo nội dung nghiên cứu tạp chí khoa học cơng nghệ n ớc n ớc Sản phẩm 5.1 Sản phẩm khoa học [1] Tô Hữu Nguyên, Nguyễn Hồng Tân, Hà Thị Thanh, Đỗ Thanh Mai (2016), ―Thực thi t ng tr ng sinh tự động liệu kiểm thử phần mềm‖, Tạp chí khoa học Đà Lạt –Đại Học Đà Lạt, 6(2), tr 254-273 [2] To Huu Nguyen, Tran Thi Ngan, Do Thanh Mai, Tran Manh Tuan (2016), ―A Novel Symbolic execution model in automated generation of test case‖, International Journal of Innovative Technology and Exploring Engineering (IJITEE) e-ISSN: 2395 -0056, 3(7), pp 145-155 [3] Tô Hữu Nguyên, Nguyễn Hồng Tân, Hà Thị Thanh (2016), ―Kỹ thuật mơ hình hóa ràng buộc hỗn h p ph ơng pháp giải ràng buộc xâu thực thi t ng tr ng‖, Tạp chí Khoa học Cơng nghệ, Đại học Thái Nguyên, 159(14), tr 141-147 5.2 Sản phẩm đào tạo [1] Lê Thị Định, Nghiên cứu kỹ thuật thực thi tượng trưng sinh tự động Test case, Khóa luận tốt nghiệp Đại học năm 2016, Quyết định số 443/QĐ ĐHCNTT&TT ngày 15 tháng 06 năm 2016 [2] Đinh Trọng Tiến, Nghiên cứu áp dụng thực thi tượng trưng kiểm thử Unit Junit cho ngôn ngữ Java, Khóa luận tốt nghiệp Đại học năm 2016, Quyết định số 443/QĐ ĐHCNTT&TT ngày 15 tháng 06 năm 2016 [3] Đề tài góp phần đào tạo trình độ tiến sĩ cho NCS Tô Hữu Nguyên với tên đề tài, Kỹ thuật thực thi tượng trưng việc sinh tự động test case, tác giả Tơ Hữu Nguyên, Quyết định số 215/QĐ –CNTT-Viện CNT ngày 04 tháng 12 năm 2012 5.3 Sản phẩm ứng dụng Sử dụng ph ơng pháp tiếp cận Automata xây dựng modul sinh liệu kiểm thử cho unit test kiểu liệu xâu Java PathFinder Phương thức chuyển giao, địa ứng dụng, tác động lợi ích mang lại kết nghiên cứu 6.1 Về bồi dưỡng, đào tạo nhân lực khoa học công nghệ Hiện nay, công nghệ thông tin h ớng u đ c u tiên phát triển Đảng Nhà n ớc ta Đề tài nhằm mục đích nghiên cứu kỹ thuật thực thi t ng tr ng tự động sinh test case Nhóm nghiên cứu ph ơng pháp áp dụng ph ơng pháp tiếp thực thi t ng tr ng kết h p java pathfinder tự động sinh test case kiểu liệu xâu, nhằm nâng cao khả áp dụng kỹ thuật vào thực tế Đây nội dung giúp giảng viên CNTT&TT trau dồi kiến thức chuyên môn, nâng cao ph ơng pháp nghiên cứu khoa học giảng viên tham gia đề tài không nâng cao đ c kiến thức chuyên sâu lĩnh vực mà rèn luyện khả viết báo n ớc quốc tế 6.2 Đối với đào tạo trường đại học CNTT&TT Các kết đề tài đ c ứng dụng phục vụ mục đích giảng dạy, học tập nghiên cứu khoa học lĩnh vực chuyên mơn kiểm thử phần mềm nhóm ngành CNTT, KTPM đ đ c đào tạo tr ờng đại học CNTT&TT Điều c thể sản phẩm đề tài nh báo, báo cáo toàn văn đề tài 6.3 Đối với xã hội Kiểm thử phần mềm nói chung sinh liệu kiểm thử nói riêng vấn đề đ đ c nhà nghiên cứu công ty phần mềm quan tâm Giải c vấn đề nâng cao khả phát lỗi sản phầm 10 phần mềm nh khả rút ngắn thời gian, chi phí dành cho giai đoạn kiểm thử 6.4 Khả áp dụng phương thức chuyển giao kết nghiên cứu Ch ơng trình thực nghiệm phát triển hồn thiện, có khả áp sinh dữ liệu kiểm thử số kiểu liệu đặc biệt kiểu văn (trong kiểm thử ứng dụng Web truy vấn SQL) Các sản phẩm đề tài bao gồm báo cáo hội thảo tạp chí đ c sử dụng nh nguồn tài liệu tham khảo lĩnh vực khai phá liệu lĩnh vực liên quan cho th viện nhà tr ờng sử dụng để phục vụ công tác giảng dạy, học tập nghiên cứu khoa học tr ờng đại học CNTT&TT Ngày 15 tháng năm 2017 Tổ chức chủ trì Chủ nhiệm đề tài (ký, họ tên, đóng dấu) (ký, họ tên) Tô Hữu Nguyên 46 } buildStringGraph(PathCondition pc) { StringGraph sg ; for string or mixed constraint c pc: sg= sg return preprocess(pc; sg) hyperedge(c) } Giá trị giới hạn thời gian ―timeout‖ đ c đ a vào để đảm bảo tr ờng h p kết h p hai giải ràng buộc kiểu xâu ràng buộc kiểu nguyên đ a đ c kết luận cuối thời gian cho phép Khi thuật tốn dừng với kết luận ràng buộc không thỏa mãn Các phần phụ thuộc theo nh mô tả đồ thị xâu đ c xây dựng thông qua b ớc gọi ―tiền xử lý‖ theo ph ơng pháp tiếp cận Automat BitVector Vấn đề đặt làm ràng buộc đ thỏa mãn làm thông tin đ c sinh ràng buộc xâu không c phản hồi lại cho giải kiểu nguyên 3.1.1 Đồ thị xâu Các loại ràng buộc đ c phân loại thành ràng buộc kiểu xâu, ràng buộc kiểu nguyên, ràng buộc hỗn h p kiểu xâu kiểu nguyên Trong trình cài đặt, ràng buộc kiểu xâu ràng buộc hỗn h p đ c biểu diễn đồ thị đặc biệt gọi đồ thị xâu Định nghĩa: Đồ xâu loại đồ thị có h ớng H=(X, E, Ʊ) Trong đó, tập đỉnh đ c xác định X=I S với I S lai tập rời (I tập biểu diễn cho biến kiểu nguyên S tập biểu diễn cho biến kiểu xâu) Tập Ʊ biểu diễn cho phép toán xâu tập cạnh gắn nhãn (hyperedge) có h ớng E E2 E3 E4 … cho En= Ʊ E1 Xn Hay nói cách khác cạnh gắn nhãn có h ớng cạnh mà thành phần tên phép toán thành phần khác đỉnh thuộc I S Đỉnh mở rộng loại đ c thêm vào đồ thị 47 xâu, đồ thị tổng quát không cần thiết cho phép tốn thuật tốn (theo nghĩa khơng dựa thuộc tính riêng biệt đồ thị mà đơn giản cấu trúc phù h p) Sử dụng đồ thị ph ơng pháp phổ biến lập trình thỏa mãn ràng buộc Hình 3.2 mơ tả ví dụ cho đồ thị xâu t ơng ứng với ràng buộc: s1.trim().equals(s2)^S1.equals(s3.concat(s2)) Hình 3.2 Đồ thị xâu 3.1.2 Xây dựng lại ràng buộc Với ràng buộc xâu ràng buộc hỗn h p điều kiện ràng buộc đ ờng đi, đóng góp vào cạnh đồ thị xâu, xây dựng lại ràng buộc ràng buộc giá trị trả phép toán đ c ánh xạ trực tiếp vào cạnh đồ thị xâu Ví dụ: ràng buộc s1.equals(s2) thêm vào cạnh (equals, s1,s2) với tốn tử khác Giá trị trả là kiểu ký tự, kiểu nguyên kiểu xâu Một biến phụ đ c sinh đại diện cho kết phép toán Biến phụ đ vào nh đỉnh đồ thị xâu Nó cho phép cạnh đ c thêm c thêm vào nh tr ờng h p giá trị trả Trong ví dụ đ c trình bày Hình 3.2, vòng tròn mơ tả cho đỉnh, dấu chấm đ ờng thẳng mô tả cho cạnh Mỗi cạnh đ c gắn nhãn biểu diễn cho phép toán t ơng ứng số thứ tự đỉnh đồ thị xâu t ơng ứng với ràng buộc Các biến xâu s1, s2 s3 xuất nh đỉnh S với đồ thị Ʊ = {trim, equals, concat} Phép toán trim sinh biến phụ s‘ đ c thêm vào S Tự 48 thân phép tốn cạnh (trim, s1, s‘) đ c gắn nhãn phần tử trim Ʊ nối đỉnh s1 với s‘ T ơng tự phép toán concat ràng buộc thứ sinh biến phụ s‖ cạnh (concat, s3, s2, s‖) Cuối hai phép toán equals t ơng ứng với hai cạnh lại Khi đồ thị xâu đ c xây dựng xong, đ c tiền xử lý theo hai cách: Xác định cách đơn giản ràng buộc khơng có giá trị thỏa mãn Thêm vào giá trị đ c sinh giải ràng buộc nguyên vào biểu thực ràng buộc đ ờng 3.1.3 Tiền xử lý Khi phát ràng buộc khơng có giá trị thỏa mãn, trình thực thi tránh đ c việc thời gian cho giải ràng buộc xâu Một kinh nghiệm loại bỏ cạnh equals khỏi đồ thị xâu Với ví dụ nh chuyển thành đồ thị xâu đ trên, đồ thị xâu đ c c đ a Hình 3.3 d ới Hình 3.3 Đồ thị sau loại bỏ phép tốn equals Và điều giúp nhanh chóng xác định tập ràng buộc đ c biểu diễn đồ thị xâu khơng có giá trị thỏa mãn Ví dụ (xem Hình 3.4) sau loại bỏ cạnh a đỉnh s1 tự nối với cạnh notEquals đ c hình b rõ ràng không tồn xâu thỏa mãn ràng buộc Hầu hết kinh nghiệm để giải với tr ờng h p phép toán số ví dụ: ràng buộc s1.concat(―xyz‖)=‖vwxyz‖ dẫn đến việc loại bỏ cạnh phức tạp thay đỉnh s1 xâu vw, ví dụ khác cho ràng buộc s1.startWith(―abc‖).chatAt(0) ‗a‘ không phù h p dễ dàng phát tình 49 hống phát sinh giai đoạn tiền xử lý, tránh đ c gọi giải ràng buộc xâu nhanh chóng trả giá trị false cho lời gọi Hình 3.4 Các ràng buộc không thỏa mãn sau loại bỏ phép toán equals 3.1.4 Sinh ràng buộc xâu Tr ớc ràng buộc đ c tạo ra, đỉnh đ c thêm vào đồ thị xâu Đối với đỉnh xâu Si S biến kiểu nguyên li Iđ c thêm vào để đại diện cho độ dài xâu Si Hình 3.5 rằng đỉnh đồ thị xâu Hình 3.3, đỉnh đ c nối với đỉnh xâu t ơng ứng nét đứt Các đỉnh có vai trò quan trọng, JPF Built-int giải ràng buộc kiểu nguyên phải tìm giá trị cho biến dòng Hình 3.1 sat=currentsolver(pc,sg) giá trị đ c đ a vào đồ thị xâu giải ràng buộc xâu sử dụng chúng, thấy phải cần thiết phải cập nhật chúng với ràng buộc Đối với đỉnh t ơng ứng với độ dài xâu li ràng buộc li>0 đ cạnh đ c thêm vào cho ràng buộc đ ờng Các ràng buộc khác dựa c bảng 3.1 Hình 3.5 Các đỉnh đại diện cho độ dài xâu đýợc bổ sung 50 Bảng 3.1 Xây dựng ràng buộc cho phép toán xâu Phép tốn Java Heper-edge Với ràng buộc cho đỉnh khơng xâu Si Ràng buộc li>0 S Sa.charAt(n) charAt,Sa,n,c la≥n Sa.concat(Sb) concat, Sa , Sb, Sx lx=la+lb Sa.indexOf(Sb) indexOf, Sa, Sb,x (x=-1)˅(la≥lb+x) Sa.lastIndexOf(Sb) lastIndexOf, Sa, Sb,x (x=-1)˅(la≥lb+x) Sa.subString(n,k) subString,Sa,n,k,Sx la=n+lx Sa.contains(Sb) contains,Sa,Sb la≥lb Giải ràng buộc xâu dựa ph ơng pháp sử dụng AUTOMATA Automata hữu hạn lựa chọn tự nhiên phù h p dùng cho biểu diễn xâu Ngôn ngữ Automata tập từ mà Automata đốn nhận t ơng đ ơng với tập biến xâu thỏa mãn thỏa mãn ràng buộc Các ràng buộc tự chúng t ơng đ ơng với toán tử Automata Giải ràng buộc dựa Automata đ Automata Mi đ đ c Hình 3.6 Trong đó, c xây dựng cho đỉnh Si đồ thị xâu, biến li c khởi tạo giá trị giải ràng buộc kiểu nguyên ngơn ngữ đốn nhận Automata đ c xây dựng dòng phải có độ dài cố định Automata khác đốn nhận đ c từ có độ dài khác Trong thuật tốn này, cạnh q trình xử lý Automata đ c sửa đổi lại để phản ánh tác động ràng buộc, chất sửa đổi phụ thuộc vào ràng buộc Ví dụ, cạnh (contains, Sa,Sb) t ơng ứng với ràng buộc Sa.contains(Sb) 51 Hình 3.6 Giải ràng buộc xâu dựa Automata Giả sử Ma,Mb hai Automata đại diện cho đỉnh Sa,Sb t ơng ứng, ta cập nhật lại cho hai Automata nh sau: Ma=Ma ([ ].Mb.[ ]); Mb=Mb substring(Ma,i,j) (i
- Xem thêm -

Xem thêm: NGHIÊN CỨU MỘT SỐ KỸ THUẬT SINH TEST CASE TỐT TRONG KIỂM THỬ PHẦN MỀM, NGHIÊN CỨU MỘT SỐ KỸ THUẬT SINH TEST CASE TỐT TRONG KIỂM THỬ PHẦN MỀM

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