Search-Based Crash Reproduction and Its Impact on Debugging

Research output: Contribution to journalArticleScientificpeer-review

17 Citations (Scopus)
418 Downloads (Pure)


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.

Original languageEnglish
Article number8502801
Pages (from-to)1294-1317
Number of pages24
JournalIEEE Transactions on Software Engineering
Issue number12
Publication statusPublished - 2020


  • Search-Based Software Testing
  • Genetic Algorithms
  • Automated Crash Reproduction
  • Empirical Software Engineering
  • empirical software engineering
  • Search-based software testing
  • genetic algorithms
  • automated crash reproduction


Dive into the research topics of 'Search-Based Crash Reproduction and Its Impact on Debugging'. Together they form a unique fingerprint.

Cite this