Theories in Practice: Easy-to-Write Specifications that Catch Bugs
Author(s)
Saff, David; Boshernitsan, Marat; Ernst, Michael D.
DownloadMIT-CSAIL-TR-2008-002.pdf (239.4Kb)
Additional downloads
Other Contributors
Program Analysis
Advisor
Michael Ernst
Metadata
Show full item recordAbstract
Automated testing during development helps ensure that software works according to the test suite. Traditional test suites verify a few well-picked scenarios or example inputs. However, such example-based testing does not uncover errors in legal inputs that the test writer overlooked. We propose theory-based testing as an adjunct to example-based testing. A theory generalizes a (possibly infinite) set of example-based tests. A theory is an assertion that should be true for any data, and it can be exercised by human-chosen data or by automatic data generation. A theory is expressed in an ordinary programming language, it is easy for developers to use (often even easier than example-based testing), and it serves as a lightweight form of specification. Six case studies demonstrate the utility of theories that generalize existing tests to prevent bugs, clarify intentions, and reveal design problems.
Date issued
2008-01-14Other identifiers
MIT-CSAIL-TR-2008-002
Keywords
JUnit, testing, partial specification