More about HKUST
Test Dependency Minimization for Java Programs
The Hong Kong University of Science and Technology Department of Computer Science and Engineering MPhil Thesis Defence Title: "Test Dependency Minimization for Java Programs" By Mr. Ching Hang MAK Abstract: Bug bisection is a common technique used to identify a revision that introduces a bug or indirectly fixes a bug, and often involves executing multiple revisions of a project to determine whether the bug is present within the revision. However, many legacy revisions often cannot be successfully compiled due to changes in the programming language, the standard library, or tools used in the compilation process, adding significant complexity and preventing automation in the bisection process. In this thesis, we introduce an approach to repair test cases of Java projects by performing dependency minimization. Our approach aims to remove classes and methods that are not required for the execution of one or more test cases. Unlike existing state-of-the-art techniques, our approach performs minimization at the source-level, which allows compile-time errors to be fixed. We also propose some optimizations that improve the precision of detecting reachability in a dynamic dispatch context. We evaluate our technique using subjects from Defects4J retargeted against Java 8, 11, and 17. Our evaluation showed that a number of subjects can be repaired solely by performing minimization, including replicating the test results of the original version. Furthermore, the proposed optimizations for the minimization technique is also shown to be useful, as a majority of subjects demonstrated an increase in precision after applying optimizations. This technique can also be adapted for use cases such as bug corpus creation, test case dependency minimization, and refactoring. Date: Tuesday, 23 May 2023 Time: 2:30pm - 4:30pm Venue: Room 5566 lifts 27/28 Committee Members: Prof. Shing-Chi Cheung (Supervisor) Dr. Lionel Parreaux (Chairperson) Dr. Desmond Tsoi **** ALL are Welcome ****