Search-Based Crash Reproduction and Its Impact on Debugging

Journal Article (2020)
Author(s)

M. Soltani (TU Delft - Software Engineering)

Annibale Panichella (TU Delft - Software Engineering)

A van Deursen (TU Delft - Software Technology)

Research Group
Software Engineering
Copyright
© 2020 M. Soltani, A. Panichella, A. van Deursen
DOI related publication
https://doi.org/10.1109/TSE.2018.2877664
More Info
expand_more
Publication Year
2020
Language
English
Copyright
© 2020 M. Soltani, A. Panichella, A. van Deursen
Research Group
Software Engineering
Issue number
12
Volume number
46
Pages (from-to)
1294-1317
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Software systems fail. These failures are often reported to issue tracking systems, where they are prioritized and assigned to responsible developers to be investigated. When developers debug software, they need to reproduce the reported failure in order to verify whether their fix actually prevents the failure from happening again. Since manually reproducing each failure could be a complex task, several automated techniques have been proposed to tackle this problem. Despite showing advancements in this area, the proposed techniques showed various types of limitations. In this paper, we present EvoCrash, a new approach to automated crash reproduction based on a novel evolutionary algorithm, called Guided Genetic Algorithm (GGA). We report on our empirical study on using EvoCrash to reproduce 54 real-world crashes, as well as the results of a controlled experiment, involving human participants, to assess the impact of EvoCrash tests in debugging. Based on our results, EvoCrash outperforms state-of-the-art techniques in crash reproduction and uncovers failures that are undetected by classical coverage-based unit test generation tools. In addition, we observed that using EvoCrash helps developers provide fixes more often and take less time when debugging, compared to developers debugging and fixing code without using EvoCrash tests.

Files

08502801.pdf
(pdf | 2.38 Mb)
License info not available