It is not Only About Control Dependent Nodes: Basic Block Coverage for Search-Based Crash Reproduction

Conference Paper (2020)
Author(s)

P. Derakhshanfar (TU Delft - Software Engineering)

Xavier Devroey (TU Delft - Software Engineering)

Andy Zaidman (TU Delft - Software Engineering)

Research Group
Software Engineering
Copyright
© 2020 P. Derakhshanfar, Xavier Devroey, A.E. Zaidman
DOI related publication
https://doi.org/10.1007/978-3-030-59762-7_4
More Info
expand_more
Publication Year
2020
Language
English
Copyright
© 2020 P. Derakhshanfar, Xavier Devroey, A.E. Zaidman
Research Group
Software Engineering
Bibliographical Note
Green Open Access added to TU Delft Institutional Repository ‘You share, we take care!’ – Taverne project https://www.openaccess.nl/en/you-share-we-take-care Otherwise as indicated in the copyright section: the publisher is the copyright holder of this work and the author uses the Dutch legislation to make this work public. @en
Pages (from-to)
42-57
ISBN (print)
978-3-030-59761-0
ISBN (electronic)
978-3-030-59762-7
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

Search-based techniques have been widely used for white-box test generation. Many of these approaches rely on the approach level and branch distance heuristics to guide the search process and generate test cases with high line and branch coverage. Despite the positive results achieved by these two heuristics, they only use the information related to the coverage of explicit branches (e.g., indicated by conditional and loop statements), but ignore potential implicit branchings within basic blocks of code. If such implicit branching happens at runtime (e.g., if an exception is thrown in a branchless-method), the existing fitness functions cannot guide the search process. To address this issue, we introduce a new secondary objective, called Basic Block Coverage (BBC), which takes into account the coverage level of relevant basic blocks in the control flow graph. We evaluated the impact of BBC on search-based crash reproduction because the implicit branches commonly occur when trying to reproduce a crash, and the search process needs to cover only a few basic blocks (i.e., blocks that are executed before crash happening). We combined BBC with existing fitness functions (namely STDistance and WeightedSum) and ran our evaluation on 124 hard-to-reproduce crashes. Our results show that BBC, in combination with STDistance and WeightedSum, reproduces 6 and 1 new crashes, respectively. BBC significantly decreases the time required to reproduce 26.6% and 13.7% of the crashes using STDistance and WeightedSum, respectively. For these crashes, BBC reduces the consumed time by 44.3% (for STDistance) and 40.6% (for WeightedSum) on average.

Files

Derakhshanfar2020_Chapter_ItIs... (pdf)
(pdf | 0.565 Mb)
- Embargo expired in 01-07-2022
License info not available