1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Luận văn) phương pháp tự động sửa lỗi cho các chương trình java

78 1 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Quang Cường lu an n va p ie gh tn to PHƯƠNG PHÁP TỰ ĐỘNG SỬA LỖI CHO CÁC CHƯƠNG TRÌNH JAVA d oa nl w nf va an lu lm ul LUẬN VĂN THẠC SĨ Ngành: Khoa học máy tính z at nh oi z m co l gm @ HÀ NỘI - 2020 an Lu n va ac th si ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Quang Cường lu an n va PHƯƠNG PHÁP TỰ ĐỘNG SỬA LỖI CHO CÁC CHƯƠNG TRÌNH JAVA p ie gh tn to w Ngành: Khoa học máy tính Mã số: 60 48 01 01 d oa nl Chuyên ngành: Khoa học máy tính nf va an lu z at nh oi lm ul LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS Phạm Ngọc Hùng z m co l gm @ HÀ NỘI - 2020 an Lu n va ac th si VIETNAM NATIONAL UNIVERSITY, HA NOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY Bui Quang Cuong lu an n va p ie gh tn to A METHOD FOR AUTOMATED REPAIR OF ERRORS FOR JAVA PROGRAMS d oa nl w an lu nf va MASTER THESIS OF COMPUTER SCIENCE z at nh oi lm ul Major: Computer Science Supervisor: Assoc Prof., Dr Pham Ngoc Hung z m co l gm @ HANOI - 2020 an Lu n va ac th si i LỜI CAM ĐOAN Tôi xin cam đoan nghiên cứu phương pháp tự động sửa lỗi cho chương trình Java trình bày luận văn chưa nộp báo cáo luận văn trường Đại học Công nghệ - ĐHQGHN trường đại học khác Những tơi viết khơng chép từ tài liệu, không sử dụng kết người khác mà khơng trích dẫn cụ thể Tôi xin cam đoan công cụ tự động sửa lỗi cho chương trình Java tơi trình bày luận văn tự phát triển, không chép mã nguồn người khác Nếu sai tơi hồn tồn lu chịu trách nhiệm theo quy định trường Đại học Công nghệ - ĐHQGHN an va n Hà Nội, ngày 15 tháng 08 năm 2020 to p ie gh tn Học viên cao học d oa nl w Bùi Quang Cường nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si ii TÓM TẮT Các hệ thống phần mềm không ngừng phát triển theo lẽ tự nhiên để đáp ứng nhu cầu thay đổi liên tục từ khách hàng thị trường Tuy nhiên, thay đổi gây lỗi khiến cho chức có chương trình khơng hoạt động Những lỗi gọi lỗi hồi quy Sửa lỗi tự động (Automated Program Repair - APR) gần cho thấy tiềm lớn việc tự động sửa lỗi phần mềm Mặc dù với phát triển mạnh mẽ APR, có số kỹ thuật tập trung xử lý lỗi hồi quy Tuy nhiên, kỹ thuật lu chưa thực khai thác đầy đủ thơng tin có sẵn lịch sử phát triển phần an mềm (ví dụ: cập nhật gây lỗi, v.v.) để sửa lỗi hồi quy Hơn nữa, kỹ n va thuật không công bố công cụ cài đặt cho cộng đồng công cụ hạn chế xuất phương pháp sửa lỗi hồi quy cho chương trình Java cách khai thác tn to khó sử dụng để sửa lỗi thực tế Luận văn nhằm mục đích đề ie gh mở rộng phát gần lỗi hồi quy, ví dụ: mối tương quan p cập nhật tạo lỗi sửa lỗi Luận văn cài đặt lại cải tiến phương pháp sửa w lỗi hồi quy tự động cho chương trình C (Relifix) Từ đó, xây dựng hệ thống nl có tên LyFix, cho phép người dùng sửa lỗi hồi quy Java tự động cách tận d oa dụng nguyên liệu sửa lỗi mẫu sửa lỗi cụ thể học từ lịch sử phát triển lu phần mềm Tám mẫu sửa lỗi hồi quy, thuật toán sửa lỗi cài đặt lại dựa vào nf va an ý tưởng Relifix Ngoài ra, luận văn cài đặt thêm ba mẫu sửa lỗi hồi quy cho Java Luận văn thực thực nghiệm để so sánh khả sửa lỗi LyFix lm ul jRelifix (bản cài đặt Relifix cho Java) công cụ sửa lỗi tự động tốt (jGenProg, jMutRepair, TBar) tập liệu 51 lỗi hồi quy thực tế z at nh oi hệ thống phần mềm Java mã nguồn mở Kết cho thấy LyFix sinh vá thành cơng cho 56.8% lỗi có tập liệu tỉ lệ số vá xác 79.3% công cụ khác sửa lỗi tốt (TBar) với kết sinh vá 33.3% z l gm @ lỗi tỉ lệ vá 41.1% Từ khóa: tự động sửa lỗi chương trình, lỗi hồi quy, lịch sử phát triển phần mềm m co an Lu n va ac th si iii LỜI CẢM ƠN Đầu tiên quan trọng nhất, xin gửi lời cảm ơn trân trọng sâu sắc tới PGS TS Phạm Ngọc Hùng - người Thầy giáo trực tiếp hướng dẫn tận tình đóng góp ý kiến quý báu trình tơi học tập, nghiên cứu kinh nghiệm sống từ năm tháng tơi cịn sinh viên trường Đại học Công nghệ Thầy không ngần ngại cho phép hỗ trợ tự lựa chọn đề tài để thực luận văn Tôi xin gửi lời cảm ơn chân thành tới TS Bách Lê, TS Lê Quang Lộc, PGS TS Corina Pasareanu hướng dẫn hỗ trợ tơi nhiệt lu tình q trình thực luận văn Các anh cô động viên đưa an câu trả lời gợi ý tơi gặp khó khăn Các anh cô va chia sẻ nhiều kinh nghiệm quý báu nghiên cứu sống n học nhiều điều từ anh Xin cảm ơn ban tổ chức chương trình Google tn to Summer of Code 2020 Java PathFinder Team cho phép tài trợ kinh phí để ie gh thực đề tài luận văn Cơng trình tài trợ phần từ p đề tài KHCN cấp ĐHQGHN, Mã số đề tài: QG.19.24 Cuối cùng, xin cảm ơn lời động viên từ gia đình, người thân, bạn bè để giúp vững bước d oa nl w đường tương lai nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si iv Mục lục lu an 1.1 Mở đầu 1.2 Đóng góp 1.3 Bố cục luận văn n va Giới thiệu gh tn to Kiến thức tảng p ie Kiểm thử hồi quy lỗi hồi quy nl w Sửa lỗi chương trình tự động d oa 2.2 2.1 lu Xác định vị trí gây lỗi 2.2.2 Các phương pháp sửa lỗi tự động nf va an lm ul 12 Phương pháp sửa tự động lỗi hồi quy 16 3.1 Tổng quan phương pháp 16 3.2 Xác định cập nhật gây lỗi 17 3.3 Thu thập thông tin mã nguồn thay đổi nguyên liệu sửa lỗi 3.4 Các mẫu sửa lỗi 3.5 Xác định vị trí gây lỗi z at nh oi 2.2.1 z m co l gm @ 22 24 an Lu 33 n va ac th si v 3.6 Thuật toán sửa lỗi 34 Cài đặt công cụ thực nghiệm 40 4.1 Cài đặt công cụ 40 4.2 Thực nghiệm 42 4.2.1 Phương pháp thực nghiệm 43 4.2.2 Kết thực nghiệm thảo luận 46 lu an Kết luận 52 n va 54 ie gh tn to A Danh sách mẫu sửa lỗi 60 p Tài liệu tham khảo d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si vi Danh sách hình vẽ lu an Các chiến lược kiểm thử hồi quy 2.2 Các bước tiêu chuẩn kỹ thuật APR [27] 2.3 Số lượng công bố năm APR từ 1996 - 2019 2.4 Tổng quan xác định vị trí gây lỗi dựa phổ chương trình 10 2.5 Tổng quan kỹ thuật sửa lỗi [14] 13 n va 2.1 p ie gh tn to 3.1 Tổng quan phương pháp sửa tự động lỗi hồi quy 17 nl w Các cập nhật gây lỗi sửa lỗi Closure 31 [21] 3.3 Ví dụ minh họa tính độ đo nguyên liệu sửa lỗi câu lệnh nghi 18 d oa 3.2 an lu nf va ngờ lỗi lm ul 4.1 Kiến trúc công cụ sửa lỗi tự động LyFix 36 41 z at nh oi z m co l gm @ an Lu n va ac th si vii Danh sách bảng lu Nguyên liệu sửa lỗi mẫu sửa lỗi sử dụng 23 3.2 Các mẫu sửa lỗi cài đặt 24 4.1 Thống kê số liệu lỗi hồi quy 44 4.2 Thống kê số lượng hành động sửa lỗi liệu lỗi hồi quy 46 Kết sửa lỗi tập liệu lỗi hồi quy 47 an 3.1 n va gh tn to p ie 4.3 d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si 53 Chương Kết luận Với kết đạt được, thời gian luận văn thu thập thêm nhiều liệu lỗi hồi quy từ dự án mã nguồn mở Java khác Đây liệu giúp học giúp bổ sung vào công cụ thêm mẫu sửa lỗi mới, tăng khả sửa lỗi công cụ Một phương pháp để tăng tính hiệu sửa lỗi lựa chọn mẫu sửa lỗi nguyên liệu sửa lỗi phù hợp dựa ngữ cảnh Ví dụ: kỹ thuật xử lý ngơn ngữ tự nhiên áp dụng để hỗ trợ tách từ tên biến, phương thức thành phần mã nguồn tập nguyên liệu sửa lỗi câu lệnh ngữ cảnh khác vị trí nghi ngờ lỗi Từ đó, ta so sánh tương đồng nguyên liệu sửa lỗi ngữ cảnh để xếp hạng mức độ phù hợp nguyên liệu sửa lỗi so với vị trí lỗi Một thử thách lớn đối lu với tất kỹ thuật sửa lỗi tự động plausible patch - vá tạo an va cơng cụ sửa lỗi tự động, vượt qua tất ca kiểm thử nhiên không n phải vá Lí ca kiểm thử chưa cung cấp đầy đủ Để tn to xử lý vấn đề này, phương pháp sinh thêm ca kiểm thử hồi quy áp gh dụng Một cơng cụ tích hợp để thực nhiệm vụ p ie HyDiff [34] - cho phép phân tích khác biệt phiên chương trình dựa kiểm thử hộp xám mờ (greybox fuzzing) thực thi tượng trưng bóng (shadow d oa nl w symbolic execution) để từ sinh thêm liệu cho ca kiểm thử nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si 54 Phụ lục A Danh sách mẫu sửa lỗi lu an Dưới danh sách mẫu sửa lỗi hình thức hóa theo khn mẫu va n chuẩn chung Tất vị trí áp dụng mẫu sửa lỗi vị trí mà mã gh tn to nguồn thay đổi cập nhật gây lỗi p ie • RP1 Xóa (các) câu lệnh thêm nhầm - int a = buggy_method (); oa nl w - x = a + 1; Trong đó, hai câu lệnh thêm cập nhật gây lỗi d an lu nf va • RP2 Khơi phục câu lệnh thay đổi trở phiên trước Khôi phục câu lệnh vị trí gây lỗi về phiên trước xảy cập nhật gây lỗi + d eleted_s tatement ; RP2.2 Cập nhật lại câu lệnh - method ( arg2 ); z at nh oi lm ul RP2.1 Thêm lại câu lệnh bị xóa z gm @ + method ( arg1 ); Trong arg1 bị xóa arg2 thêm cập nhật gây lỗi m an Lu pivot_statement ; co - moved_statement ; l RP2.3 Di chuyển câu lệnh vị trí cũ n va ac th si Phụ lục A Danh sách mẫu sửa lỗi 55 + moved_statement ; Trong moved_statement bị di chuyển lên phía trước pivot_statement cập nhật gây lỗi • RP3 Hốn đổi câu lệnh thay đổi câu lệnh liền kề - buggy_statement ; pivot_statement ; + buggy_statement ; Trong đó, buggy_statement câu lệnh bị thay đổi cập nhật gây lu an lỗi pivot_statement câu lệnh liền kề, câu lệnh sau trước n va buggy_statement - if ( exp && new_exp ) { ie gh tn to • RP4 Phủ định điều kiện thêm p + if ( exp && ! new_exp ) { do_somthing ; oa nl w } d Trong đó, new_exp biểu thức điều kiện thêm vào cập nhật nf va an lu gây lỗi - is_number ( a ); + if ( is_number ( a )) { z at nh oi lm ul • RP5 Chuyển đổi câu lệnh thay đổi thành biểu thức điều kiện do_something ( a ); + } z gm @ Trong đó, is_number(a); câu lệnh lời gọi phương thức, trả giá trị có kiểu liệu boolean thay đổi cập nhật gây lỗi m an Lu RP5.1 co l • RP5 Thêm câu lệnh kiểm tra điều kiện n va ac th si Phụ lục A Danh sách mẫu sửa lỗi 56 - if ( exp ) { + if ( new_exp ) { do_something ; } RP5.2 + if ( new_exp ) { do_something ; + } RP5.3 lu an - TYPE a = f ( x ); va + TYPE a = DEFAULT_VALUE ; n + if ( new_exp ) { to + a = f ( x ); + } p ie gh tn do_something ; w Trong đó, new_exp biểu thức điều kiện từ tập nguyên liệu sửa lỗi DEFAULT_VALUE oa nl có giá trị dựa TYPE công thức đây: d    false , TYPE boolean      0 , TYPE kiểu liệu nguyên thủy khác DEFAULT_VALUE =  "" , TYPE String      null , TYPE kiểu liệu đối tượng khác an lu (A.1) nf va z at nh oi lm ul • RP6 Thêm biểu thức điều kiện vào câu lệnh điều kiện có sẵn RP6.1 m co RP6.2 l } gm do_something ; @ + if ( exp && new_exp ) { z - if ( exp ) { an Lu n va ac th si Phụ lục A Danh sách mẫu sửa lỗi 57 - if ( exp ) { + if ( exp && ! new_exp ) { do_something ; } RP6.3 - if ( exp ) { + if ( exp || new_exp ) { do_something ; } lu RP6.4 an va - if ( exp ) { n + if ( exp || ! new_exp ) { to do_something ; tn } ie gh p Trong đó, new_exp biểu thức điều kiện từ tập nguyên liệu sửa lỗi w oa nl • RP7 Thêm câu lệnh d pivot_statement ; an lu + c hanged_s tatement ; nf va Trong đó, changed_statement câu lệnh thay đổi cập nhật gây lỗi lm ul • RP8 Thêm khối try/catch cho câu lệnh thay đổi + try { chang ed_statem ent ; z at nh oi RP8.1 m co an Lu } catch ( SomeException e ) { l chang ed_statem ent ; gm try { @ RP8.2 z + } catch ( Throwable e ) {} n va ac th si Phụ lục A Danh sách mẫu sửa lỗi 58 h a n d l e _ s o m e _ e x c e p t i o n (); } + catch ( Throwable e ) {} Trong đó, changed_statement câu lệnh thay đổi cập nhật gây lỗi • RP9 Kiểm tra null RP9.1 + if ( obj != null ) { obj do_somthing (); lu + } an n va RP9.2 - if ( obj test ()) { to do_somthing ; gh tn + if ( obj != null && obj test ()) { p ie } RP9.3 nl w - if ( obj test ()) { oa d + if ( obj == null || obj test ()) { } nf va an lu do_somthing ; lm ul Trong đó, obj đối tượng bị thay đổi cập nhật gây lỗi RP10.1 Cập nhật đối số - obj method ( arg1 ); z at nh oi • RP10 Cập nhật lời gọi phương thức bị thay đổi z gm @ + obj method ( arg2 ); Trong đó, arg2 biến biểu thức từ tập nguyên liệu sửa lỗi m an Lu + obj method ( arg1 , arg2 ); co - obj method ( arg1 ); l RP10.2 Thêm đối đối số n va ac th si Phụ lục A Danh sách mẫu sửa lỗi 59 Trong đó, arg2 biến biểu thức từ tập nguyên liệu sửa lỗi RP10.3 Bỏ đối số - obj method ( arg1 , arg2 ); + obj method ( arg1 ); RP10.4 Cập nhật tên đối tượng - obj1 method ( arg1 ); + obj2 method ( arg1 ); Trong đó, obj2 đối tượng từ tập nguyên liệu sửa lỗi lu an n va p ie gh tn to d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si 60 Tài liệu tham khảo [1] Rui Abreu, Peter Zoeteweij, and Arjan J C van Gemund “An Evaluation of Similarity Coefficients for Software Fault Localization” In: Proceedings of the lu 12th Pacific Rim International Symposium on Dependable Computing PRDC ’06 an USA: IEEE Computer Society, 2006, 39–46 ISBN : 0769527248 DOI : 10.1109/ n va PRDC.2006.18 URL: https://doi.org/10.1109/PRDC.2006.18 tn to [2] Johannes Bader et al “Getafix: Learning to Fix Bugs Automatically” In: Proc ACM Program Lang 3.OOPSLA (Oct 2019) DOI : 10 1145 / 3360585 URL : p ie gh https://doi.org/10.1145/3360585 [3] Thomas Ball and Sriram K Rajamani “The SLAM Project: Debugging Sys- nl w tem Software via Static Analysis” In: Proceedings of the 29th ACM SIGPLAN- oa SIGACT Symposium on Principles of Programming Languages POPL ’02 Port- d land, Oregon: Association for Computing Machinery, 2002, 1–3 ISBN: 1581134509 lu 10 1145 / 503272 503274 URL : https : / / doi org / 10 1145 / 503272 nf va 503274 an DOI : lm ul [4] Marcel Bohme and Abhik Roychoudhury “CoREBench: Studying Complexity ¨ of Regression Errors” In: Proceedings of the 2014 International Symposium on z at nh oi Software Testing and Analysis ISSTA 2014 San Jose, CA, USA: Association for Computing Machinery, 2014, 105–115 ISBN : 9781450326452 DOI : 10 1145 / 2610384.2628058 URL: https://doi.org/10.1145/2610384.2628058 z @ [5] Johannes Bohnet, Stefan Voigt, and Jurgen Dollner Projecting code changes ă ă gm onto execution traces to support localization of recently introduced bugs” In: 978-1-60558-166-8 DOI : m 10.1145/1529282.1529378 ISBN : co and Sascha Ossowski ACM, 2009, pp 438–442 l Proceedings of the 24th Symposium on Applied Computing Ed by Sung Y Shin an Lu n va ac th si Tài liệu tham khảo 61 [6] William R Bush, Jonathan D Pincus, and David J Sielaff “A Static Analyzer for Finding Dynamic Programming Errors” In: Softw Pract Exper 30.7 (June 2000), 775–802 ISSN: 0038-0644 DOI: 10.1002/(SICI)1097-024X(200006)30: 7%3C775::AID- SPE309%3E3.0.CO;2- H URL : https://doi.org/10.1002/ (SICI)1097-024X(200006)30:7%3C775::AID-SPE309%3E3.0.CO;2-H [7] Kung Chen and Ju-Bing Chen “Aspect-Based Instrumentation for Locating Memory Leaks in Java Programs” In: Proceedings of the 31st Annual International Computer Software and Applications Conference - Volume 02 COMPSAC ’07 USA: IEEE Computer Society, 2007, 23–28 ISBN : 0769528708 DOI : 10.1109/ COMPSAC.2007.79 URL: https://doi.org/10.1109/COMPSAC.2007.79 lu an [8] Zimin Chen et al “SequenceR: Sequence-to-Sequence Learning for End-to- n va End Program Repair” In: IEEE Transaction on Software Engineering (2019) tn to [9] Daniel Costa et al “A Framework for Evaluating the Results of the SZZ Approach for Identifying Bug-Introducing Changes” In: IEEE Transactions on p ie gh Software Engineering PP (Oct 2016), pp 1–1 DOI: 10.1109/TSE.2016.2616306 [10] Vidroha Debroy and W Eric Wong “Using Mutation to Automatically Suggest nl w Fixes for Faulty Programs” In: Proceedings of the 2010 Third International Con- oa ference on Software Testing, Verification and Validation ICST ’10 USA: IEEE Com- d puter Society, 2010, 65–74 ISBN: 9780769539904 DOI: 10.1109/ICST.2010.66 lu https://doi.org/10.1109/ICST.2010.66 an URL : nf va [11] Emelie Engstrom ă and Per Runeson “A Qualitative Survey of Regression Test13792-1_3 DOI : 10.1007/978- 3- 642- z at nh oi lm ul ing Practices” In: vol 6156 June 2010, pp 3–16 [12] Ali Ghanbari, Samuel Benton, and Lingming Zhang “Practical Program Repair via Bytecode Mutation” In: Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis ISSTA 2019 Beijing, China: z https : / / doi org / 10 1145 / 3293882 m co l 3330559 URL : gm 10 1145 / 3293882 3330559 @ Association for Computing Machinery, 2019, 19–30 ISBN: 9781450362245 DOI: an Lu n va ac th si Tài liệu tham khảo 62 [13] Liang Gong et al “Interactive Fault Localization Leveraging Simple User Feedback” In: Proceedings of the 2012 IEEE International Conference on Software Maintenance (ICSM) ICSM ’12 USA: IEEE Computer Society, 2012, 67–76 9781467323130 DOI : 10.1109/ICSM.2012.6405255 URL : ISBN : https://doi.org/ 10.1109/ICSM.2012.6405255 [14] Claire Le Goues, Michael Pradel, and Abhik Roychoudhury “Automated Program Repair” In: Commun ACM 62.12 (Nov 2019), 56–65 DOI : ISSN : 0001-0782 10.1145/3318162 URL: https://doi.org/10.1145/3318162 [15] Hwa-You Hsu and Alessandro Orso “MINTS: A General Framework and Tool lu for Supporting Test-Suite Minimization” In: Proceedings of the 31st Interna- an tional Conference on Software Engineering ICSE ’09 USA: IEEE Computer So- n va ciety, 2009, 419–429 ISBN: 9781424434534 DOI: 10.1109/ICSE.2009.5070541 https://doi.org/10.1109/ICSE.2009.5070541 tn to URL : [16] “IEEE Standard for Software Maintenance” In: IEEE Std 1219-1998 (1998), p ie gh pp 1–56 [17] Jiajun Jiang et al “Shaping Program Repair Space with Existing Patches and nl w Similar Code” In: Proceedings of the 27th ACM SIGSOFT International Sympo- oa sium on Software Testing and Analysis ISSTA 2018 Amsterdam, Netherlands: d Association for Computing Machinery, 2018, 298–309 lu 10.1145/3213846.3213871 URL : 9781450356992 https://doi.org/10.1145/3213846 nf va 3213871 an DOI : ISBN : lm ul [18] James A Jones and Mary Jean Harrold “Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique” In: Proceedings of the 20th IEEE/ACM z at nh oi International Conference on Automated Software Engineering ASE ’05 Long Beach, CA, USA: Association for Computing Machinery, 2005, 273–282 ISBN: 1581139934 DOI : 10.1145/1101908.1101949 https://doi.org/10.1145/1101908 z 1101949 URL : m co l gm @ an Lu n va ac th si Tài liệu tham khảo 63 [19] James A Jones, Mary Jean Harrold, and John Stasko “Visualization of Test Information to Assist Fault Localization” In: Proceedings of the 24th International Conference on Software Engineering ICSE ’02 Orlando, Florida: Association for Computing Machinery, 2002, 467–477 ISBN : 158113472X DOI : 10 1145/581339.581397 URL: https://doi.org/10.1145/581339.581397 [20] James A Jones, Mary Jean Harrold, and John Stasko “Visualization of Test Information to Assist Fault Localization” In: Proceedings of the 24th International Conference on Software Engineering ICSE ’02 Orlando, Florida: Association for Computing Machinery, 2002, 467–477 ISBN : 158113472X DOI : 10 1145/581339.581397 URL: https://doi.org/10.1145/581339.581397 lu an [21] René Just, Darioush Jalali, and Michael D Ernst “Defects4J: A Database of n va Existing Faults to Enable Controlled Testing Studies for Java Programs” In: to Proceedings of the 2014 International Symposium on Software Testing and Analysis 437–440 ISBN : 9781450326452 DOI : 10.1145/2610384.2628055 URL : https: ie gh tn ISSTA 2014 San Jose, CA, USA: Association for Computing Machinery, 2014, p //doi.org/10.1145/2610384.2628055 w [22] Jung-Min Kim and Adam Porter “A History-Based Test Prioritization Tech- oa nl nique for Regression Testing in Resource Constrained Environments” In: Pro- d ceedings of the 24th International Conference on Software Engineering ICSE ’02 an lu Orlando, Florida: Association for Computing Machinery, 2002, 119–129 ISBN: 581339.581357 nf va 158113472X DOI: 10.1145/581339.581357 URL: https://doi.org/10.1145/ lm ul [23] B Korel, L H Tahat, and M Harman “Test prioritization using system mod2005, pp 559–568 z at nh oi els” In: 21st IEEE International Conference on Software Maintenance (ICSM’05) [24] Xuan-Bach D Le, David Lo, and Claire Le Goues “History Driven Program z Repair” In: IEEE 23rd International Conference on Software Analysis, Evolution gm @ and Reengineering (SANER) 2016 IEEE 2016 l [25] Andreas Leitner et al “Efficient Unit Test Case Minimization” In: Proceedings m co of the Twenty-Second IEEE/ACM International Conference on Automated Software an Lu n va ac th si Tài liệu tham khảo 64 Engineering ASE ’07 Atlanta, Georgia, USA: Association for Computing Machinery, 2007, 417–420 ISBN: 9781595938824 DOI: 10.1145/1321631.1321698 URL : https://doi.org/10.1145/1321631.1321698 [26] Z Li, M Harman, and R M Hierons “Search Algorithms for Regression Test Case Prioritization” In: IEEE Transactions on Software Engineering 33.4 (2007), pp 225–237 [27] Kui Liu et al “On the Efficiency of Test Suite based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs” In: Proceedings of the 42nd International Conference on Software Engineering ACM lu 2020 an [28] Kui Liu et al “TBar: Revisiting Template-Based Automated Program Repair” va n In: Proceedings of the 28th ACM SIGSOFT International Symposium on Software tn to Testing and Analysis ISSTA 2019 Beijing, China: Association for Computing Machinery, 2019, 31–42 ISBN: 9781450362245 DOI: 10.1145/3293882.3330577 https://doi.org/10.1145/3293882.3330577 p ie gh URL : [29] Fan Long, Peter Amidon, and Martin Rinard “Automatic Inference of Code nl w Transforms for Patch Generation” In: Proceedings of the 2017 11th Joint Meeting oa on Foundations of Software Engineering ESEC/FSE 2017 Paderborn, Germany: d Association for Computing Machinery, 2017, 727–739 lu 10.1145/3106237.3106253 URL : 9781450351058 https://doi.org/10.1145/3106237 nf va 3106253 an DOI : ISBN : lm ul [30] Fan Long and Martin Rinard “Automatic Patch Generation by Learning Correct Code” In: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Sympo- z at nh oi sium on Principles of Programming Languages POPL ’16 St Petersburg, FL, USA: Association for Computing Machinery, 2016, 298–312 DOI : 10.1145/2837614.2837617 9781450335492 https://doi.org/10.1145/2837614 z 2837617 URL : ISBN : @ gm [31] Fan Long and Martin Rinard “Staged Program Repair with Condition Syn- m co l thesis” In: Proceedings of the 2015 10th Joint Meeting on Foundations of Software an Lu n va ac th si Tài liệu tham khảo 65 Engineering ESEC/FSE 2015 Bergamo, Italy: Association for Computing Machinery, 2015, 166–178 ISBN: 9781450336758 DOI: 10.1145/2786805.2786811 URL : https://doi.org/10.1145/2786805.2786811 [32] Fernanda Madeiral et al “Bears: An Extensible Java Bug Benchmark for Automatic Program Repair Studies” In: Proceedings of the 26th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER ’19) 2019 URL : https://arxiv.org/abs/1901.06024 [33] Atif M Memon “Automatically Repairing Event Sequence-Based GUI Test Suites for Regression Testing” In: ACM Trans Softw Eng Methodol 18.2 (Nov lu 2008) ISSN : 1049-331X DOI : 10.1145/1416563.1416564 URL : https://doi an org/10.1145/1416563.1416564 va n [34] Yannic Noller et al “HyDiff: Hybrid Differential Software Analysis” In: ICSE tn to ’20 2020 Communications of the ACM 41 (May 1998), pp 81–86 DOI : 10.1145/274946 p ie gh [35] Akira Onoma et al “Regression Testing in an Industrial Environment” In: 274960 nl w [36] Kai Pan, Sunghun Kim, and E James Whitehead “Toward an Understanding oa of Bug Fix Patterns” In: Empirical Softw Engg 14.3 (June 2009), 286–315 ISSN: DOI : d 1382-3256 10.1007/s10664- 008- 9077- URL : https://doi.org/10 lu nf va an 1007/s10664-008-9077-5 [37] Manos Renieris and Steven P Reiss “Fault Localization with Nearest Neigh- lm ul bor Queries” In: Proceedings of the 18th IEEE International Conference on Automated Software Engineering ASE’03 Montreal, Quebec, Canada: IEEE Press, z at nh oi 2003, 30–39 ISBN: 0769520359 [38] G Rothermel et al “Prioritizing test cases for regression testing” In: IEEE Transactions on Software Engineering 27.10 (2001), pp 929–948 z @ [39] Gregg Rothermel and Mary Harrold “A Safe, Efficient Regression Test Selec- gm tion Technique” In: (Feb 2000) DOI: 10.1145/248233.248262 m co l an Lu n va ac th si Tài liệu tham khảo 66 [40] Nick Rutar, Christian B Almazan, and Jeffrey S Foster “A Comparison of Bug Finding Tools for Java” In: Proceedings of the 15th International Symposium on Software Reliability Engineering ISSRE ’04 USA: IEEE Computer Society, 2004, 245–256 ISBN : 0769522157 DOI : 10.1109/ISSRE.2004.1 URL : https: //doi.org/10.1109/ISSRE.2004.1 [41] V Mary Sumalatha and G S V Prasad Raju “Object Oriented Test Case Generation Technique using Genetic Algorithms” In: International Journal of Computer Applications 61 (2013), pp 20–26 [42] Shin Hwei Tan and Abhik Roychoudhury “Relifix: Automated Repair of Soft- lu ware Regressions” In: Proceedings of the 37th International Conference on Software an Engineering - Volume ICSE ’15 Florence, Italy: IEEE Press, 2015, 471–482 n va ISBN : 9781479919345 tn to [43] David A Tomassi et al “BugSwarm: Mining and Continuously Growing a Dataset of Reproducible Failures and Fixes” In: Proceedings of the 41st Interna- ie gh tional Conference on Software Engineering ICSE ’19 Montreal, Quebec, Canada: p IEEE Press, 2019, 339–349 DOI : 10 1109 / ICSE 2019 00048 URL : https : //doi.org/10.1109/ICSE.2019.00048 nl w oa [44] Jacek undefinedliwerski, Thomas Zimmermann, and Andreas Zeller “When d Do Changes Induce Fixes?” In: SIGSOFT Softw Eng Notes 30.4 (May 2005), 0163-5948 an ISSN : lu 1–5 DOI : 10 1145 / 1082983 1083147 URL : https : / / doi nf va org/10.1145/1082983.1083147 lm ul [45] Westley Weimer et al “Automatically Finding Patches Using Genetic Programming” In: Proceedings of the 31st International Conference on Software EngiDOI : z at nh oi neering ICSE ’09 USA: IEEE Computer Society, 2009, 364–374 ISBN: 9781424434534 10.1109/ICSE.2009.5070536 2009.5070536 URL : https://doi.org/10.1109/ICSE z @ [46] Ming Wen et al “Exploring and Exploiting the Correlations between Bug- gm Inducing and Bug-Fixing Commits” In: Proceedings of the 2019 27th ACM Joint l Meeting on European Software Engineering Conference and Symposium on the Foun- m co dations of Software Engineering ESEC/FSE 2019 Tallinn, Estonia: Association an Lu n va ac th si Tài liệu tham khảo 67 for Computing Machinery, 2019, 326–337 ISBN: 9781450355728 DOI: 10.1145/ 3338906.3338962 URL: https://doi.org/10.1145/3338906.3338962 [47] W E Wong et al “Test set size minimization and fault detection effectiveness: a case study in a space application” In: Proceedings Twenty-First Annual International Computer Software and Applications Conference (COMPSAC’97) 1997, pp 522–528 [48] W Eric Wong et al “A Survey on Software Fault Localization” In: IEEE Trans Softw Eng 42.8 (Aug 2016), 707–740 ISSN : 0098-5589 DOI : 10 1109 / TSE 2016.2521368 URL: https://doi.org/10.1109/TSE.2016.2521368 lu [49] Qi Xin and Steven P Reiss “Leveraging syntax-related code for automated an program repair” In: Proceedings of the 32nd IEEE/ACM International Conference va n on Automated Software Engineering (ASE) IEEE 2017, pp 660–670 ceedings of the 39th International Conference on Software Engineering ICSE ’17 Buenos Aires, Argentina: IEEE Press, 2017, 416–426 ISBN: 9781538638682 DOI: p ie gh tn to [50] Yingfei Xiong et al “Precise Condition Synthesis for Program Repair” In: Pro- 10.1109/ICSE.2017.45 URL: https://doi.org/10.1109/ICSE.2017.45 nl w [51] Jifeng Xuan et al “Nopol: Automatic Repair of Conditional Statement Bugs DOI : d oa in Java Programs” In: IEEE Transactions on Software Engineering (2016) 10.1109/TSE.2016.2560811 lu nf va an [52] Yih-Farn Chen, D S Rosenblum, and Kiem-Phong Vo “TESTTUBE: a system for selective regression testing” In: Proceedings of 16th International Conference lm ul on Software Engineering 1994, pp 211–220 z at nh oi [53] Shin Yoo and Mark Harman “Pareto Efficient Multi-Objective Test Case Selection” In: Proceedings of the 2007 International Symposium on Software Testing and Analysis ISSTA ’07 London, United Kingdom: Association for Computing Machinery, 2007, 140–150 ISBN : 9781595937346 DOI : 10.1145/1273463 z m co l gm @ 1273483 URL: https://doi.org/10.1145/1273463.1273483 an Lu n va ac th si

Ngày đăng: 24/07/2023, 09:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN