Failure Avoidance in Configurable Systems Through Feature Locality
Brady J. Garvin, Myra B. Cohen, Matthew B. Dwyer
Supplementary Data -- Failure Avoidance in Configurable Systems, in Assurances for Self-Adaptive Systems LNCS 7740, p.266--296, 2013.
Abstract
Despite the best efforts of software engineers, faults still escape into deployed software. Developers need time to prepare and distribute fixes, and in the interim, deployments must either avoid failures or endure their consequences. Self-adaptive systems---systems that adapt to changes -- --internally, in requirements, and in a dynamic environment---can often handle these challenges automatically, depending on the nature of the failures. Those self-adaptive systems where functional features can be added or removed also constitute configurable systems. Configurable software is known to suffer from failures that appear only under certain feature combinations, and these failures are particularly challenging for testers, who must find suitable configurations as well as inputs to detect them. However, these elusive failures seem well suited for avoidance by self-adaptation. We need only find an alternative configuration that precludes the failure without derailing the current use case. This work investigates that possibility, along with some further conjectures: that the failures that are sensitive to a system's configuration depend on similar feature combinations---a phenomenon we call feature-locality---that this locality can be combined with historical data to predict failure-prone configurations and reconfiguration workarounds, and that these workarounds rarely lead the system out of one failure and into another. In a case study on 128 failures reported against released versions of an open source configurable system, and 16 failures discovered through a state-of-the-art testing tool, plus several thousand tests cases, we find evidence to support all of these hypotheses.
GCC Feature Model
This is an XML representation of the GCC feature model used for our analysis.
Bug List
CSmith Test Cases
We generated 1024 CSmith test cases. These are the test cases used in our experiments.
Links to Torture Test Suites
The torture test suites can be found here in the gcc svn repository here. We include both the browsable directory and the svn links for downloading the artifacts.
Schedule of Bug Releases
The schedule of bug releases used in our experiments.
Acknowledgments
This work is supported in part by the National Science Foundation through awards CNS-0720654, CCF-0747009, CCF-0915526, and CFDA-47.076, by the Air Force Office of Scientific Research through awards FA9550-09-1-0129, FA9550-09-1-0687 and FA9550-10-1-0406. Any opinions, findings, conclusions, or recommendations expressed in this material are those of the authors and do not necessarily reflect the position or policy of NSF or the AFOSR.