Search-based crash reproduction using behavioural model seeding

Pouria Derakhshanfar, Xavier DEVROEY, Gilles Perrouin, Andy Zaidman, Arie van Deursen

Research output: Contribution to journalArticle

22 Downloads (Pure)

Abstract

Search-based crash reproduction approaches assist developers during debugging by generating a test case, which reproduces a crash given its stack trace. One of the fundamental steps of this approach is creating objects needed to trigger the crash. One way to overcome this limitation is seeding: using information about the application during the search process. With seeding, the existing usages of classes can be used in the search process to produce realistic sequences of method calls, which create the required objects. In this study, we introduce behavioural model seeding: a new seeding method that learns class usages from both the system under test and existing test cases. Learned usages are then synthesized in a behavioural model (state machine). Then, this model serves to guide the evolutionary process. To assess behavioural model seeding, we evaluate it against test seeding (the state-of-the-art technique for seeding realistic objects) and no seeding (without seeding any class usage). For this evaluation, we use a benchmark of 122 hard-to-reproduce crashes stemming from six open-source projects. Our results indicate that behavioural model seeding outperforms both test seeding and no seeding by a minimum of 6% without any notable negative impact on efficiency.

Original languageEnglish
Article numbere1733
JournalSoftware Testing, Verification and Reliability
Volume30
Issue number3
Early online date12 Apr 2020
DOIs
Publication statusPublished - 1 May 2020

Keywords

  • crash reproduction
  • search-based software testing
  • seed learning

Datasets

Replication package of "Search-based Crash Reproduction using Behavioral Model Seeding"

Derakhshanfar, P. (Creator), DEVROEY, X. (Creator), PERROUIN, G. (Creator), Zaidman, A. (Creator) & van Deursen, A. (Creator), Zenodo, 18 Apr 2020

Dataset

Cite this