|
ABSTRACT
Although unit tests are recognized as an important tool in software development, programmers prefer to write code, rather than unit tests. Despite the emergence of tools like JUnit which automate part of the process, unit testing remains a time-consuming, resource-intensive, and not particularly appealing activity.This paper introduces a new development method, called Contract Driven Development. This development method is based on a novel mechanism that extracts test cases from failure-producing runs that the programmers trigger. It exploits actions that developers perform anyway as part of their normal process of writing code. Thus, it takes the task of writing unit tests off the developers' shoulders, while still taking advantage of their knowledge of the intended semantics and structure of the code. The approach is based on the presence of contracts in code, which act as the oracle of the test cases. The test cases are extracted completely automatically, are run in the background, and can easily be maintained over versions. The tool implementing this methodology is called Cdd and is available both in binary and in source form.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Jtest. Parasoft Corporation. http://www.parasoft.com/.
|
| |
2
|
ARSLAN, V., EUGSTER, P., NIENALTOWSKI, P., AND VAUCOULEUR, S. SCOOP - concurrency made easy. Dependable Systems: Software, Computing, Networks (2006).
|
 |
3
|
M. Balcer , W. Hasling , T. Ostrand, Automatic generation of test scripts from formal test specifications, Proceedings of the ACM SIGSOFT '89 third symposium on Software testing, analysis, and verification, p.210-218, December 13-15, 1989, Key West, Florida, United States
|
 |
4
|
|
 |
5
|
|
 |
6
|
|
| |
7
|
FELDMAN, Y. A. Extreme design by contract. In Fourth Int'l Conf. Extreme Programming and Agile Processes in Software Engineering (XP 2003) (2003), Springer Verlag, pp. 261--270.
|
| |
8
|
GARGANTINI, A. Using model checking to generate fault detecting tests. In Tests and Proofs (TAP 2007). Proceedings (2007), Y. Gurevich and B. Meyer, Eds., Lecture Notes in Computer Science, Springer.
|
 |
9
|
|
 |
10
|
|
| |
11
|
|
| |
12
|
|
| |
13
|
MEYER, B., CIUPA, I., LEITNER, A., AND LIU, L. L. Automatic testing of object-oriented software. In Proceedings of SOFSEM 2007 (Current Trends in Theory and Practice of Computer Science) (2007), J. van Leeuwen, Ed., Lecture Notes in Computer Science, Springer-Verlag.
|
| |
14
|
|
| |
15
|
ORIAT, C. Jartege: a tool for random generation of unit tests for Java classes. Tech. Rep. RR-1069-I, Centre National de la Recherche Scientifique, Institut National Polytechnique de Grenoble, Universitáté Joseph Fourier Grenoble I, June 2004.
|
 |
16
|
|
 |
17
|
|
 |
18
|
|
| |
19
|
OSTROFF, J. S., MAKALSKY, D., AND PAIGE, R. F. Agile specification-driven development. In XP (2004), J. Eckstein and H. Baumeister, Eds., vol. 3092 of Lecture Notes in Computer Science, Springer, pp. 104--112.
|
| |
20
|
PACHECO, C., AND ERNST, M. D. Eclat: Automatic generation and classification of test inputs. In ECOOP 2005 - Object-Oriented Programming, 19th European Conference (Glasgow, Scotland, July 25-29, 2005).
|
 |
21
|
|
 |
22
|
|
 |
23
|
|
| |
24
|
XIE, T., MARINOV, D., SCHULTE, W., AND NOTKIN, D. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In Proceedings of the 11th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 05) (April 2005), pp. 365--381.
|
|