Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
1,14 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA PHẠM HỒNG LONG KẾT HỢP CÁC PHƯƠNG PHÁP SINH MẪU THỬ TỰ ĐỘNG VÀ KHOANH VÙNG LỖI TRONG KIỂM THỬ PHẦN MỀM Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng năm 2014 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM Cán hướng dẫn khoa học: PGS TS Quản Thành Thơ Cán chấm nhận xét 1: TS Nguyễn Chánh Thành Cán chấm nhận xét 2: TS Nguyễn Thanh Hiên Luận văn thạc sĩ bảo vệ Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 17 tháng 07 năm 2014 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: GS TS Phan Thị Tươi PGS TS Quản Thành Thơ TS Bùi Hoài Thắng TS Nguyễn Chánh Thành TS Nguyễn Thanh Hiên Xác nhận Chủ tịch Hội đồng đánh giá LV Trưởng Khoa quản lý chuyên ngành sau luận văn sửa chữa (nếu có) CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA KH&KTMT ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Phạm Hồng Long MSHV: 12073123 Ngày, tháng, năm sinh: 17/01/1989 Nơi sinh: Bình Dương Chun ngành: Khoa học máy tính Mã số : 60.48.01 I TÊN ĐỀ TÀI: Kết hợp phương pháp sinh mẫu thử tự động khoanh vùng lỗi kiểm thử phần mềm II NHIỆM VỤ VÀ NỘI DUNG: Khảo sát phương pháp sinh mẫu thử tự động phương pháp khoanh vùng lỗi khác nhau, để xem mẫu thử phương pháp sinh mẫu thử tự động sinh có phù hợp để sử dụng với phương pháp khoanh vùng lỗi hay không III NGÀY GIAO NHIỆM VỤ : 24/06/2013 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 23/05/2014 V CÁN BỘ HƯỚNG DẪN: PGS TS Quản Thành Thơ Tp HCM, ngày 23 tháng năm 2014 CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) TRƯỞNG KHOA KH&KTMT (Họ tên chữ ký) Ghi chú: Học viên phải đóng tờ nhiệm vụ vào trang tập thuyết minh LV Lời cảm ơn Tôi xin gửi lời cảm ơn sâu sắc đến Phó giáo sư Tiến sĩ Quản Thành Thơ, người thầy nhiệt tình hướng dẫn để tơi hồn thành luận văn Tôi muốn gửi lời cảm ơn đến Tiến sĩ Nguyễn Hứa Phùng, người dẫn dắt bước đường nghiên cứu khoa học Bên cạnh đó, tơi biết ơn thầy cô trường Đại học Bách Khoa thành phố Hồ Chí Minh kiến thức q báu họ truyền dạy Cuối cùng, xin cảm ơn gia đình bạn bè, người ln bên tơi suốt năm qua i Tóm tắt Phần mềm ngày đóng vai trị quan trọng đời sống Điều dẫn đến yêu cầu phần mềm phải kiểm thử nghiêm ngặt trước đưa vào sử dụng Tuy vậy, trình kiểm thử phần mềm thủ công lại phức tạp Tương tự, phần mềm bị lỗi, việc tìm vị trí lỗi mã nguồn việc không đơn giản Để trợ giúp cho trình kiểm thử sửa lỗi phần mềm, có hai hướng nghiên cứu quan trọng sinh mẫu thử tự động khoanh vùng lỗi Trong khứ, hai hướng nghiên cứu thường xem xét cách độc lập Luận văn dựa vào phương pháp thực nghiệm tiến hành khảo sát khả kết hợp phương pháp sinh mẫu thử tự động phương pháp khoanh vùng lỗi, với mục tiêu bước đầu tạo nên cầu nối hai hướng nghiên cứu ii Abstract Software plays an increasingly important role in our lives This leads to the requirements that software must be strictly tested before being used However, the manual software testing process is very complex Similarly, if the software fails, locating errors in the source code is not a simple task at all To assist the testing as well as fixing processes, there are two important research directions called automatic test cases generation and fault localization In the past, these two research directions are often considered independently This thesis is based on empirical methods to survey the ability of combining automatic test case generation methods and fault localization methods, with the initial goal of building a bridge between these two research directions iii Lời cam đoan Tôi xin cam đoan ngoại trừ phần ghi rõ tham khảo báo cáo này, tất cơng việc khác hồn thành tơi cơng việc chưa trình bày tài liệu khác Phạm Hồng Long iv Mục lục Lời cảm ơn i Tóm tắt ii Abstract iii Lời cam đoan iv Mục lục v Danh mục hình vii Danh mục bảng viii Giới thiệu 1.1 Tổng quan vấn đề 1.2 Mục tiêu đề tài 1.3 Giới hạn đề tài 1.4 Đóng góp đề tài 1.5 Cơng việc liên quan 1.6 Cấu trúc luận văn Sinh mẫu thử tự động 2.1 Kiểm thử hộp đen kiểm thử hộp trắng 2.2 Kiểm thử dòng điều khiển 2.3 Sinh mẫu thử phương pháp tìm kiếm 2.4 Các kỹ thuật tìm kiếm 2.4.1 Tìm kiếm ngẫu nhiên 2.4.2 Tìm kiếm giải thuật leo đồi đơn giản 2.4.3 Tìm kiếm giải thuật leo đồi dốc 2.4.4 Tìm kiếm giải thuật tơi luyện mơ 2.4.5 Tìm kiếm giải thuật di truyền 2.4.6 Ví dụ 2.5 Sinh mẫu thử phương pháp giải ràng buộc 2.6 Thảo luận v 1 9 10 12 13 14 14 14 15 15 16 17 18 vi Mục lục Khoanh vùng lỗi 3.1 Khoanh vùng lỗi dựa 3.2 Khoanh vùng lỗi dựa 3.3 Khoanh vùng lỗi dựa 3.4 Thảo luận mơ hình chứng minh phổ 20 20 21 22 27 Phương pháp tiến hành 28 4.1 Mơ hình thực 28 4.2 Một số chi tiết thực 30 Kết thí nghiệm 5.1 Chương trình thí nghiệm 5.2 Kết thí nghiệm 5.2.1 Tính trị tuyệt đối 5.2.2 Kiểm tra 5.2.3 Kiểm tra tính chẵn lẻ 5.2.4 Kiểm tra số nguyên tố 5.2.5 Tính giai thừa 5.2.6 Tính tổng số chẵn 5.2.7 Tìm số lớn 5.2.8 Kiểm tra hai số 5.2.9 Tính số nghiệm phương 5.2.10 Kiểm tra tam giác 5.3 Nhận xét tổng hợp 33 33 34 35 36 37 38 40 41 42 44 45 47 48 Trang web hỗ trợ học lập trình 6.1 Động lực phát triển 6.2 Mơ hình trang web 6.3 Hoạt động trang web 50 50 50 52 Kết luận 7.1 Tổng kết 7.2 Công việc tương lai 7.2.1 Khoanh vùng lỗi thích ứng 7.2.2 Tăng khả tương tác trang web 55 55 56 56 57 Tài liệu tham khảo trình bậc hai 58 Danh mục hình 4.1 Mơ hình đề xuất 29 6.1 6.2 6.3 6.4 6.5 6.6 Mơ hình trang web gồm nhân tố module Giao diện tập trang web Giao diện lập trình trang web Giao diện trang web giải Giao diện trang web giải sai (sử dụng module Fault Localization) Giao diện trang web giải sai (sử dụng module Group Testing) vii 50 53 53 53 54 54 Chương Kết thí nghiệm Giải thuật tìm kiếm Ngẫu nhiên Leo đồi đơn giản Leo đồi dốc Tôi luyện mô Di truyền 48 Tarantula 4 Ochiai 4 Jaccard 4 Bảng 5.43: Số thành phần cần kiểm tra phiên Tri3 Giải thuật tìm kiếm Ngẫu nhiên Leo đồi đơn giản Leo đồi dốc Tôi luyện mô Di truyền Tarantula 4 Ochiai 4 Jaccard 4 Bảng 5.44: Số thành phần cần kiểm tra phiên Tri4 5.3 Nhận xét tổng hợp Căn vào kết thu thập ta có số nhận xét sau: • Về thời gian sinh mẫu thử phương pháp sinh mẫu thử tự động: – Trong đa phần trường hợp, phương pháp ngẫu nhiên cho kết nhanh nhất, phương pháp di truyền Ba phương pháp cịn lại có thời gian tương đương Tuy trường hợp đường thực thi chương trình có điều kiện đặc biệt phức tạp tốn Tìm số nghiệm phương trình bậc hai, Kiểm tra tam giác hay phiên Prime3 toán Kiểm tra số nguyên tố, phương pháp luyện mô cho kết chậm hai phương pháp leo đồi đơn giản leo đồi dốc – Có số ngoại lệ cho kết luận trên, chương trình Tính giai thừa Tính tổng số chẵn Chúng tơi đốn ngun nhân chương trình có vịng lặp q trình chạy mơ vịng lặp ảnh hưởng đến thời gian sinh mẫu thử phương pháp • Về độ phù hợp mẫu thử với phương pháp khoanh vùng lỗi: – Trong chương trình đem thử nghiệm, có nhiều chương trình điều kiện đường thực thi đơn giản (chẳng hạn chương trình Tìm trị tuyệt đối), điều dẫn đến phương pháp gần sinh mẫu thử có chất lượng ngang kết áp dụng mẫu thử cho phương pháp khoanh vùng lỗi tương đương Chương Kết thí nghiệm 49 – Tuy vậy, chương trình mà đường thực thi có điều kiện phức tạp, mẫu thử phương pháp leo đồi đơn giản, leo đồi dốc luyện mơ sinh có chất lượng tốt so với hai phương pháp lại Điều thể qua nhiều phiên chương trình khác (các phiên Zero1, Zero2, Zero3, Eq1, Eq2, Eq3 phương pháp ngẫu nhiên sinh mẫu thử có chất lượng nhất; điều tương tự xảy phiên Root1, Root2, Root4, Root5, Tri1, Tri2, Tri3, Tri4 phương pháp ngẫu nhiên phương pháp di truyền) Đặc biệt phiên Root1, Root2, Root4, Root5 phương pháp luyện mô cho kết tốt hẳn tất phương pháp khác – Ngoài ra, mẫu thử, số phiên chương trình cho thấy hai phương pháp Ochiai Jaccard cho kết tốt so với phương pháp Tarantula (Abs1, Zero1, Even1, Lar1, Eq1) Chương Trang web hỗ trợ học lập trình 6.1 Động lực phát triển Kinh nghiệm giảng dạy cho thấy kỹ lập trình đạt sinh viên trải qua rèn luyện thực tế với lượng lớn tập khác Để hỗ trợ sinh viên luyện tập cách hiệu địi hỏi phải có chế đánh giá xác giải sinh viên Theo phương pháp giáo dục truyền thống, việc đánh giá hoàn toàn phụ thuộc vào giảng viên Nói cách khác, giảng viên phải đọc mã nguồn, thiết kế mẫu thử, để đưa nhận định chương trình sinh viên Tuy vậy, việc đọc hiểu mã nguồn công việc dễ sai sót tốn nhiều thời gian Vì vậy, phương pháp không hiệu số lượng sinh viên tăng lên cao Để giải triệt để vấn đề này, phương pháp tốt xây dựng hệ thống đánh giá giải sinh viên cách tự động Một hệ thống giảm bớt nhiều công sức cho giảng viên giúp sinh viên chủ động việc rèn luyện kỹ lập trình Dựa động lực này, xây dựng nên trang web có khả phân tích chương trình sinh viên, cho biết chương trình hay sai so với đặc tả, cung cấp phản ví dụ câu lệnh đáng nghi ngờ cần thiết 6.2 Mơ hình trang web Hình 6.1 miêu tả mơ hình trang web gồm hai nhân tố (actor ) Teacher Learner Vai trị nhân tố hệ thống sau: • Teacher: Nhân tố Teacher mơ tả vai trị người giảng viên hệ thống Ở đây, giảng viên có nhiệm vụ tạo tập cho trang web cung cấp 50 Chương Trang web hỗ trợ học lập trình 51 Hình 6.1: Mơ hình trang web gồm nhân tố module thiết lập cần thiết khác, chẳng hạn đặc tả chương trình (gồm tiền điều kiện hậu điều kiện) cần thực dạng ngơn ngữ hình thức (formal language), chương trình lời giải, • Learner: Nhân tố Learner mơ tả vai trị sinh viên sử dụng hệ thống Khi đăng nhập vào trang web, sinh viên chọn giải tập số tập mà giảng viên soạn sẵn Việc lập trình nộp giải thực giao diện trang web Sau nộp bài, sinh viên nhận phản hồi trang web giải Các module trang web bao gồm: Web-based Interactive System, Intermediate Representation Transformation, Problem Description and Solution, Correctness Proving, Model Checking, Test Cases Generator, Simulator, Fault Localization Group Testing Chức module sau: • Web-based Interactive System: Module đóng vai trị giao diện trang web để giao tiếp với sinh viên • Intermediate Representation Transformation: Module có nhiệm vụ phân tích chương trình sinh viên biến đổi thành dạng trung gian cú pháp trừu tượng (abstract syntax tree) để sử dụng cho bước Chương Trang web hỗ trợ học lập trình 52 • Problem Decription and Solution: Đây module lưu trữ toàn nội dung tập, giải hệ thống giảng viên cung cấp Các thông tin module khác sử dụng để thực thi cơng việc • Correctness Proving: Module sử dụng phương pháp hình thức (formal method ) gọi theorem proving để chứng minh tính đắn chương trình Hiểu cách đơn giản, phương pháp mã hóa phần tiền điều kiện, hậu điều kiện mã nguồn chương trình thành biểu thức luận lý dựa vào biểu thức luận lý để đưa kết luận chương trình • Model Checking: Vai trị module qt qua tồn giá trị đầu vào chương trình tìm phản ví dụ khiến cho chương trình vi phạm đặc tả yêu cầu Bản thân model checking tên phương pháp hình thức khác tương tự theorem proving • Test Cases Generator: Module có khả sinh mẫu thử tự động để sử dụng bước khoanh vùng lỗi Phương pháp sinh mẫu thử tự động dùng module phương pháp nêu [13] Mục 2.5 Ở chương trình cần kiểm thử chương trình sinh viên, giải giảng viên xem chương trình kiểm thử • Simulator: Đây module sử dụng để chạy mơ chương trình với mẫu thử thu thập thông tin cần thiết lần thực thi để sử dụng cho bước khoanh vùng lỗi • Fault Localization: Module sử dụng phương pháp khoanh vùng lỗi khảo sát luận văn (Tarantula, Ochiai, Jaccard) để tạo bảng xếp hạng khả gây lỗi câu lệnh chương trình Sinh viên tùy ý chọn phương pháp khoanh vùng lỗi sử dụng để phân tích Ngồi module có thêm số phương pháp khoanh vùng lỗi khác xây dựng dựa kết hợp phương pháp khoanh vùng lỗi dựa phổ phương pháp slicing Ý tưởng dùng phương pháp slicing để loại bỏ bớt câu lệnh không làm ảnh hưởng đến kết đầu ứng với mẫu thử Những thơng tin số lượng mẫu thử đúng, số lượng mẫu thử sai cập nhật câu lệnh không bị loại bỏ [20, 25, 26] • Group Testing: Đây module thực phương pháp kiểm thử nhóm nêu [20, 21] Mục 3.3 Để đơn giản, thông tin trả module bảng xếp hạng khả gây lỗi câu lệnh chương trình mà nhóm câu lệnh có khả gây lỗi cao ứng với kết thực thi mẫu thử Chương Trang web hỗ trợ học lập trình 53 Mơ hình thực thành trang web thật công sức nhiều hệ thành viên nhóm nghiên cứu SAVE sử dụng sinh viên khoa Khoa học Kỹ thuật Máy tính trường Đại học Bách Khoa thành phố Hồ Chí Minh 6.3 Hoạt động trang web Mỗi lần sinh viên sử dụng trang web toàn hệ thống hoạt động theo trình tự sau: Đầu tiên trang web lên danh sách tập có sẵn hệ thống (Hình 6.2) Sinh viên chọn giải tập số Sau sinh viên chọn tập, trang web chuyển sang giao diện cho phép sinh viên tiến hành lập trình nộp giải (Hình 6.3) Lúc này, giải sinh viên sau biến đổi thành dạng trung gian phân tích module Correctness Proving Nếu giải theo đặc tả, trang web thị kết cho sinh viên Hình 6.4 Trường hợp giải sai, module Model Checking tiến hành phân tích chương trình để phản ví dụ đường thực thi dẫn đến lỗi sai ứng với phản ví dụ Bên cạnh đó, module Test Case Generation, Simulation, Fault Localization sử dụng để đưa bảng xếp hạng độ nghi ngờ cho thành phần chương trình Tồn thơng tin hai module Model Checking Fault Localization phân tích hiển thị cho sinh viên Hình 6.5 Trong trường hợp sinh viên sử dụng module Group Testing để tìm lỗi, kết hiển thị Hình 6.6 Hình 6.2: Giao diện tập trang web Với trang web trên, tin sinh viên dễ dàng sử dụng để chủ động rèn luyện kỹ lập trình cách hiệu quả, đồng thời cơng sức giảng viên giảm đáng kể Chương Trang web hỗ trợ học lập trình Hình 6.3: Giao diện lập trình trang web Hình 6.4: Giao diện trang web giải 54 Chương Trang web hỗ trợ học lập trình Hình 6.5: Giao diện trang web giải sai (sử dụng module Fault Localization) Hình 6.6: Giao diện trang web giải sai (sử dụng module Group Testing) 55 Chương Kết luận 7.1 Tổng kết Trong bối cảnh nay, phần mềm ngày đóng vai trò quan trọng đời sống, yêu cầu độ tin cậy phần mềm ngày nghiêm ngặt Để đáp ứng yêu cầu này, sinh mẫu thử tự động khoanh vùng lỗi hướng nghiên cứu quan trọng nhận nhiều ý Đề tài tiến hành nhằm khảo sát khả kết hợp hai hướng nghiên cứu Trong đề tài, khảo sát năm phương pháp tìm kiếm để sinh mẫu thử tự động ba phương pháp khoanh vùng lỗi dựa phổ thực thi Thí nghiệm tiến hành với 34 phiên mười chương trình khác Những kết mà đề tài thu phù hợp với số cơng việc trước dự đốn từ lý thuyết Qua đề tài, hi vọng tạo cầu nối hai lĩnh vực xem quan trọng lĩnh vực công nghệ phần mềm Bên cạnh đó, phần đề tài dùng việc xây dựng nên sản phẩm thực tế, trang web hỗ trợ việc học lập trình cho sinh viên ngành Máy tính Sản phẩm giúp đáp ứng nhu cầu môi trường hỗ trợ việc rèn luyện khả lập trình cách linh hoạt cho sinh viên Trang web bao gồm nhiều tập khác có khả cho sinh viên tiến hành lập trình, nộp giải, phân tích tính sai giải, đưa phản ví dụ lỗi sai có Với trang web, sinh viên chủ động việc học mình, bên cạnh giúp giảm nhiều công sức thời gian cho giảng viên 56 Chương Kết luận 7.2 57 Công việc tương lai Đáng tiếc thời gian có hạn, việc khảo sát dừng lại phương pháp đơn giản chưa sâu vào khảo sát phương pháp phức tạp Chương trình thí nghiệm đơn giản chưa phải chương trình thực tế dùng cơng nghiệp Để đạt mục tiêu lâu dài đề xuất khung kiểm thử phần mềm với kết hợp tốt hai lĩnh vực, việc khảo sát sâu cần thiết Điều thực đề tài tương lai Ngoài ra, phương pháp khoanh vùng lỗi trang web xây dựng phát triển dựa ý tưởng đây: 7.2.1 Khoanh vùng lỗi thích ứng Việc kết hợp phương pháp sinh mẫu thử tự động phương pháp khoanh vùng lỗi phát triển theo hướng khác khoanh vùng lỗi thích ứng (adaptive fault localization) Ý tưởng hướng nghiên cứu sau: Giả sử có đường thực thi sai, ta cố gắng sinh mẫu thử cho kiểm tra riêng rẽ thành phần đường thực thi sai ban đầu với số lượng mẫu thử Ví dụ 7.1 Giả sử có chương trình sau với lỗi điều kiện S0 S3 độc lập nhau: 1: int foo() 2: { 3: if S0 4: S1 5: else 6: S2 7: if S3 8: S4 9: else 10: S5 11: } Đồng thời, giả sử chương trình sai với mẫu thử qua {S0, S1, S3, S4} Mẫu thử ứng với việc hai nhánh điều kiện có kết True Muốn biết thành phần thành phần gây lỗi, ta sinh mẫu thử True điều kiện đầu False điều kiện thứ hai Nếu mẫu thử thứ hai sai, lỗi sai có khả Chương Kết luận 58 nằm nhánh True điều kiện Nếu mẫu thử thứ hai đúng, lỗi sai có khả nằm nhánh True điều kiện thứ hai Để thực phương pháp vừa nêu, tốt có cách sinh mẫu thử cho điều khiển mẫu thử qua thành phần mong muốn Hiện cơng cụ Java Pathfinder [27] làm điều Ở Việt Nam, nhóm nghiên cứu Tiến sĩ Trương Anh Hồng thuộc Khoa Cơng nghệ thơng tin, trường Đại học Công nghệ, Đại học Quốc gia Hà Nội có nhiều kinh nghiệm việc sử dụng cơng cụ chúng tơi có ý định hợp tác với nhóm nghiên cứu để khảo sát hướng phát triển 7.2.2 Tăng khả tương tác trang web Trang web xây dựng cải tiến cách thêm vào khả tiếp nhận phản hồi từ phía người dùng Giả sử sau kiểm tra một vài thành phần cho đáng nghi ngờ theo bảng xếp hạng hệ thống đưa ra, sinh viên phát thành phần thực chất khơng có lỗi phản hồi hệ thống, hệ thống dựa vào thơng tin để tính tốn lại bảng xếp hạng cho thành phần chưa kiểm tra Việc tính tốn lại làm thay đổi trật tự thành phần chưa kiểm tra so với trật tự ban đầu Ý tưởng đề cập đến [28] Các tác giả đề xuất hai luật khác để tính tốn lại bảng xếp hạng dựa thông tin phản hồi người dùng Các luật đề xuất thí nghiệm chứng minh có hiệu việc cải thiện khả khoanh vùng lỗi Tài liệu tham khảo [1] Christel Baier, Joost-Pieter Katoen, et al Principles of model checking MIT press Cambridge, 2008 [2] Glenford J Myers, Corey Sandler, and Tom Badgett The art of software testing John Wiley & Sons, 2011 [3] Lars Vogel Eclipse IDE: Java programming, debugging, unit testing, task management and Git version control with Eclipse Lars Vogel, 2013 [4] Debugging in visual studio URL http://msdn.microsoft.com/en-us/library/ sc65sadd.aspx Accessed: 2014-06-22 [5] Netbeans ide features - debugger and profiler URL https://netbeans.org/ features/java/debugger.html Accessed: 2014-06-22 [6] Benoit Baudry, Franck Fleurey, and Yves Le Traon Improving test suites for efficient fault localization In Proceedings of the 28th international conference on Software engineering, pages 82–91 ACM, 2006 [7] Shay Artzi, Julian Dolby, Frank Tip, and Marco Pistoia Directed test generation for effective fault localization In Proceedings of the 19th international symposium on Software testing and analysis, pages 49–60 ACM, 2010 [8] Bogdan Korel Automated software test data generation Software Engineering, IEEE Transactions on, 16(8):870–879, 1990 [9] Phil McMinn Search-based software test data generation: a survey Software testing, Verification and reliability, 14(2):105–156, 2004 [10] Patrice Godefroid, Nils Klarlund, and Koushik Sen Dart: directed automated random testing In ACM Sigplan Notices, volume 40, pages 213–223 ACM, 2005 [11] Leonardo De Moura and Nikolaj Bjørner Z3: An efficient smt solver In Tools and Algorithms for the Construction and Analysis of Systems, pages 337–340 Springer, 2008 59 60 Tài liệu tham khảo [12] Andreas Dolzmann and Thomas Sturm Redlog: Computer algebra meets computer logic Acm Sigsam Bulletin, 31(2):2–9, 1997 [13] Anh D Le, Tho T Quan, Nguyen T Huynh, Phung H Nguyen, and Nhat-Van Le Combined constraint-based analysis for efficient software regression detection in evolving programs In Software and Data Technologies, pages 108–120 Springer, 2013 [14] Rui Abreu, Peter Zoeteweij, and Arjan JC van Gemund An observation-based model for fault localization In Proceedings of the 2008 international workshop on dynamic analysis: held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2008), pages 64–70 ACM, 2008 [15] Rui Abreu, Peter Zoeteweij, and Arjan JC Van Gemund Spectrum-based multiple fault localization In Automated Software Engineering, 2009 ASE’09 24th IEEE/ACM International Conference on, pages 88–99 IEEE, 2009 [16] Manu Jose and Rupak Majumdar Cause clue clauses: error localization using maximum satisfiability In ACM SIGPLAN Notices, volume 46, pages 437–446 ACM, 2011 [17] Evren Ermis, Martin Schă af, and Thomas Wies Error invariants In FM 2012: Formal Methods, pages 187–201 Springer, 2012 [18] Jă urgen Christ, Evren Ermis, Martin Schăaf, and Thomas Wies Flow-sensitive fault localization In Verification, Model Checking, and Abstract Interpretation, pages 189–208 Springer, 2013 [19] Manos Renieres and Steven P Reiss Fault localization with nearest neighbor queries In Automated Software Engineering, 2003 Proceedings 18th IEEE International Conference on, pages 30–39 IEEE, 2003 [20] Long H PHAM, Giang V TRINH, Mai H DINH, Nam P MAI, Tho T QUAN, and Hung Q NGO Assisting students in finding bugs and their locations in programming solutions International Journal of Quality Assurance in Engineering and Technology Education (IJQAETE), 3(2), 2014 (accepted) [21] Long H Pham, Nam P Mai, Mai H Dinh, Tho T Quan, and Hung Q Ngo Assisting students in finding their own bugs in programming exercises using verification and group testing techniques In Proceedings of the 2nd International Engineering and Technology Education Conference (IETEC’13), 2013 Tài liệu tham khảo 61 [22] James A Jones and Mary Jean Harrold Empirical evaluation of the tarantula automatic fault-localization technique In Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering, pages 273–282 ACM, 2005 [23] Rui Abreu, Peter Zoeteweij, and Arjan JC Van Gemund On the accuracy of spectrum-based fault localization In Testing: Academic and Industrial Conference Practice and Research Techniques-MUTATION, 2007 TAICPART-MUTATION 2007, pages 89–98 IEEE, 2007 [24] Mike Y Chen, Emre Kiciman, Eugene Fratkin, Armando Fox, and Eric Brewer Pinpoint: Problem determination in large, dynamic internet services In Dependable Systems and Networks, 2002 DSN 2002 Proceedings International Conference on, pages 595–604 IEEE, 2002 [25] Wanzhi Wen, Bixin Li, Xiaobing Sun, and Jiakai Li Program slicing spectrumbased software fault localization In SEKE, pages 213–218, 2011 [26] Xiangyu Zhang, Haifeng He, Neelam Gupta, and Rajiv Gupta Experimental evaluation of using dynamic slices for fault location In Proceedings of the sixth international symposium on Automated analysis-driven debugging, pages 33–42 ACM, 2005 [27] Willem Visser, Corina S Pasareanu, and Sarfraz Khurshid Test input generation with java pathfinder ACM SIGSOFT Software Engineering Notes, 29(4):97–107, 2004 [28] Liang Gong, David Lo, Lingxiao Jiang, and Hongyu Zhang Interactive fault localization leveraging simple user feedback In Software Maintenance (ICSM), 2012 28th IEEE International Conference on, pages 67–76 IEEE, 2012 LÝ LỊCH TRÍCH NGANG Họ tên: Phạm Hồng Long Ngày sinh: 17/01/1989 Nơi sinh: Bình Dương Địa liên lạc: Số 7, Khu tập thể Điện lực, phường Chánh Nghĩa, thành phố Thủ Dầu Một, tỉnh Bình Dương Q TRÌNH ĐÀO TẠO: 2007 – 2012: Sinh viên trường Đại học Bách Khoa thành phố Hồ Chí Minh 2012 – 2014: Học viên cao học trường Đại học Bách Khoa thành phố Hồ Chí Minh Q TRÌNH CÔNG TÁC: 10/2012 – nay: Nghên cứu viên Khoa Khoa học Kỹ thuật Máy tính, trường Đại học Bách Khoa thành phố Hồ Chí Minh ... Khảo sát phương pháp sinh mẫu thử tự động phương pháp khoanh vùng lỗi khác nhau, để xem mẫu thử phương pháp sinh mẫu thử tự động sinh có phù hợp để sử dụng với phương pháp khoanh vùng lỗi hay... chương trình có lỗi Sau áp dụng phương pháp sinh mẫu thử tự động chương trình để tạo mẫu thử khác Những mẫu thử với kết thực thi chúng chương trình trở thành đầu vào cho phương pháp khoanh vùng lỗi. .. thử tự động 2.1 Kiểm thử hộp đen kiểm thử hộp trắng Như trình bày Chương 1, kiểm thử phần mềm bước quan trọng quy trình phát triển phần mềm Trong lĩnh vực kiểm thử phần mềm, phương pháp kiểm thử