ABSTRACT
Writing developer tests as software is built can provide peace of mind. As the software grows, running the tests can prove that everything still works as the developer envisioned it. But what about the behavior the developer failed to envision? Although verifying a few well-picked scenarios is often enough, experienced developers know bugs can often lurk even in well-tested code, when correct but untested inputs provoke obviously wrong responses. This leads to worry.
We suggest writing Theories alongside developer tests, to specify desired universal behaviors. We will demonstrate how writing theories affects test-driven development, how new features in JUnit can verify theories against hand-picked inputs, and how a new tool, Theory Explorer, can search for new inputs, leading to a new, less worrysome approach to development.
- Junit. http://junit.sourceforge.net.Google Scholar
- B. Meyer. Eiffel: the language. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1992. Google ScholarDigital Library
- C. Pacheco, S. K. Lahiri, M. D. Ernst, and T. Ball. Feedbackdirected random test generation. In ICSE '07, pages 75--84, Washington, DC, USA, 2007. IEEE Computer Society. Google ScholarDigital Library
- A. Software. Junit factory. http://www.junitfactory.org.Google Scholar
- N. Tillmann and W. Schulte. Parameterized unit tests. SIGSOFT Softw. Eng. Notes, 30(5):253--262, 2005. Google ScholarDigital Library
- W. Visser, C. S. Pǎsǎreanu, and S. Khurshid. Test input generation with java pathfinder. In ISSTA '04, pages 97--107, New York, NY, USA, 2004. ACM Press. Google ScholarDigital Library
Index Terms
- Theory-infected: or how i learned to stop worrying and love universal quantification
Recommendations
Parameterized unit testing: theory and practice
ICSE '10: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2Unit testing has been widely recognized as an important and valuable means of improving software reliability, as it exposes bugs early in the software development life cycle. However, manual unit testing is often tedious and insufficient. Testing tools ...
Using testing and JUnit across the curriculum
SIGCSE '05: Proceedings of the 36th SIGCSE technical symposium on Computer science educationWhile the usage of unit-testing frameworks such as JUnit has greatly increased over the last several years, it is not immediately apparent to students and instructors how to best use tools like JUnit and how to integrate testing across a computer ...
Teaching and training developer-testing techniques and tool support
OOPSLA '10: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionDeveloper testing is a type of testing where developers test their code as they write it, as opposed to testing done by a separate quality assurance organization. Developer testing has been widely recognized as an important and valuable means of ...
Comments