Modern software systems are increasingly
configurable. While this has many benefits, it also makes some software
engineering tasks, such as software testing, much harder. This is because, in
theory, unique errors could be hiding in any configuration, and, therefore, every
configuration may need to undergo expensive testing. As this is generally infeasible,
developers need cost-effective technique for selecting which specific
configurations they will test. One popular selection approach is combinatorial
interaction testing (CIT), where the developer selects a strength $t$ and then
computes a covering array (a set of configurations) in which all $t$-way
combinations of configuration option settings appear at least once. In prior
work, we demonstrated several limitations of the CIT approach. In particular,
we found that a given system’s effective configuration space—the minimal set of
configurations needed to achieve a specific goal—could comprise only a tiny
subset of the system’s full configuration space. We also found that effective
configuration space may not be well approximated by $t$-way covering arrays.
Based on these insights we have developed an algorithm called interaction tree
discovery (iTree). iTree is an iterative learning algorithm that efficiently
searches for a small set of configurations that closely approximates a system’s
effective configuration space. On the each iteration in iTree tests the system
on a small sample of carefully chosen configurations, monitors the system’s
behaviors, and then applies machine learning techniques to discover which
combinations of option settings are potentially responsible for any newly
observed behaviors. This information is used in the next iteration to pick a
new sample of configurations that are likely to reveal further new behaviors.
In prior work, we presented an initial version of iTree and performed an
initial evaluation with promising results. This paper presents an improved
iTree algorithm in greater detail. The key improvements are based on our use of
composite proto-interactions a construct that improves iTree’s ability to
correctly learn key configuration option combinations, which in turn
significantly improves iTree’s running time, without sacrificing effectiveness.
Finally, the paper presents a detailed evaluation of the improved iTree
algorithm by comparing the coverage it achieves versus that of covering arrays
and randomly generated configuration sets, including a significantly expanded
scalability evaluation with the $sim$1M-LOC MySQL. Our results strongly suggest
that the improved iTree algorithm is highly scalable and can identify a high-coverage
test set of configurations more effectively than existing methods.
No comments:
Post a Comment