Shadow of a Doubt: Testing for Divergences Between Software Versions
File(s)shadow-icse16.pdf (420.62 KB)
Accepted version
Author(s)
Palikareva, H
Kuchta, T
Cadar, C
Type
Conference Paper
Abstract
While developers are aware of the importance of comprehensively
testing patches, the large effort involved in coming up
with relevant test cases means that such testing rarely happens
in practice. Furthermore, even when test cases are
written to cover the patch, they often exercise the same behaviour
in the old and the new version of the code.
In this paper, we present a symbolic execution-based technique
that is designed to generate test inputs that cover the
new program behaviours introduced by a patch. The technique
works by executing both the old and the new version
in the same symbolic execution instance, with the old version
shadowing the new one. During this combined shadow
execution, whenever a branch point is reached where the
old and the new version diverge, we generate a test case
exercising the divergence and comprehensively test the new
behaviours of the new version.
We evaluate our technique on the Coreutils patches from
the CoREBench suite of regression bugs, and show that it
is able to generate test inputs that exercise newly added
behaviours and expose some of the regression bugs.
testing patches, the large effort involved in coming up
with relevant test cases means that such testing rarely happens
in practice. Furthermore, even when test cases are
written to cover the patch, they often exercise the same behaviour
in the old and the new version of the code.
In this paper, we present a symbolic execution-based technique
that is designed to generate test inputs that cover the
new program behaviours introduced by a patch. The technique
works by executing both the old and the new version
in the same symbolic execution instance, with the old version
shadowing the new one. During this combined shadow
execution, whenever a branch point is reached where the
old and the new version diverge, we generate a test case
exercising the divergence and comprehensively test the new
behaviours of the new version.
We evaluate our technique on the Coreutils patches from
the CoREBench suite of regression bugs, and show that it
is able to generate test inputs that exercise newly added
behaviours and expose some of the regression bugs.
Date Issued
2016-05-14
Date Acceptance
2015-12-15
Citation
2016
Publisher
ACM
Copyright Statement
© ACM, 2016. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is forthcoming.
Sponsor
Engineering & Physical Science Research Council (EPSRC)
Engineering & Physical Science Research Council (EPSRC)
Grant Number
EP/J00636X/1
EP/L002795/1
Source
International Conference on Software Engineering
Publication Status
Accepted
Start Date
2016-05-14
Finish Date
2016-05-22
Coverage Spatial
Austin, TX USA