TY - GEN
T1 - Swarm testing
AU - Groce, Alex
AU - Zhang, Chaoqiang
AU - Eide, Eric
AU - Chen, Yang
AU - Regehr, John
PY - 2012
Y1 - 2012
N2 - Swarm testing is a novel and inexpensive way to improve the diversity of test cases generated during random testing. Increased diversity leads to improved coverage and fault detection. In swarm testing, the usual practice of potentially including all features in every test case is abandoned. Rather, a large "swarm" of randomly generated configurations, each of which omits some features, is used, with configurations receiving equal resources. We have identified two mechanisms by which feature omission leads to better exploration of a system's state space. First, some features actively prevent the system from executing interesting behaviors; e.g., "pop" calls may prevent a stack data structure from executing a bug in its overflow detection logic. Second, even when there is no active suppression of behaviors, test features compete for space in each test, limiting the depth to which logic driven by features can be explored. Experimental results show that swarm testing increases coverage and can improve fault detection dramatically; for example, in a week of testing it found 42% more distinct ways to crash a collection of C compilers than did the heavily hand-tuned default configuration of a random tester.
AB - Swarm testing is a novel and inexpensive way to improve the diversity of test cases generated during random testing. Increased diversity leads to improved coverage and fault detection. In swarm testing, the usual practice of potentially including all features in every test case is abandoned. Rather, a large "swarm" of randomly generated configurations, each of which omits some features, is used, with configurations receiving equal resources. We have identified two mechanisms by which feature omission leads to better exploration of a system's state space. First, some features actively prevent the system from executing interesting behaviors; e.g., "pop" calls may prevent a stack data structure from executing a bug in its overflow detection logic. Second, even when there is no active suppression of behaviors, test features compete for space in each test, limiting the depth to which logic driven by features can be explored. Experimental results show that swarm testing increases coverage and can improve fault detection dramatically; for example, in a week of testing it found 42% more distinct ways to crash a collection of C compilers than did the heavily hand-tuned default configuration of a random tester.
KW - Random testing
KW - configuration diversity
UR - http://www.scopus.com/inward/record.url?scp=84865280752&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84865280752&partnerID=8YFLogxK
U2 - 10.1145/04000800.2336763
DO - 10.1145/04000800.2336763
M3 - Conference contribution
AN - SCOPUS:84865280752
SN - 9781450314541
T3 - 2012 International Symposium on Software Testing and Analysis, ISSTA 2012 - Proceedings
SP - 78
EP - 88
BT - 2012 International Symposium on Software Testing and Analysis, ISSTA 2012 - Proceedings
T2 - 21st International Symposium on Software Testing and Analysis, ISSTA 2012
Y2 - 15 July 2012 through 20 July 2012
ER -