THESIS
2023
1 online resource (ix, 72 pages) : color illustrations
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 min...[
Read more ]
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
and 17. Our evaluation showed that a majority 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.
Post a Comment