Charting a Course Through Uncertain Environments: SEA Uses Past Problems to Avoid Future Failures

P. Moore, J. Cappos, P. Frankl, and T. Wies

Won Best Paper at the 30th IEEE International Symposium on Software Reliability Engineering

A common problem for developers is applications
exhibiting new bugs after deployment. Many of these bugs can
be traced to unexpected network, operating system, and file
system differences that cause program executions that were
successful in a development environment to fail once deployed.
Preventing these bugs is difficult because it is impractical to
test an application in every environment. Enter Simulating Environmental Anomalies (SEA), a technique that utilizes evidence
of one application’s failure in a given environment to generate
tests that can be applied to other applications, to see whether
they suffer from analogous faults. We
implemented a tool called CrashSimulator, which uses SEA, and
evaluated it against Linux applications selected from coreutils
and the Debian popularity contest. Our tests found a total of
63 bugs in 31 applications with effects including hangs, crashes,
data loss, and remote denial of service conditions.