It is expensive to test software. Many software houses usually use one tester for every developer. It is impossible for a tester to test all code paths with different input variables. Randoop (Random Tester for Object-Oriented Programs) generates unit tests using feedback-directed random test generation.
Randoop has created tests that find previously unknown errors even in widely-used libraries including Sun and IBM’s JDKs.
A .NET version of the tool was used internally by Microsoft. The tested a critical .NET component of the .NET architecture. The component had already been tested by 40 test engineers over five years, using manual testing and many automated testing techniques. The feedback-directed random testing tool found errors in the component that was missed in previous testing. The tool also led the test team to discover errors
in other testing and analysis tools, and deficiencies in previous best-practice guidelines for manual testing. A test Engineer working with existing methodologies finds an average of 20 errors per year. A test engineer using Randoop revealed more errors in 15 hours than he would
be expected to find in a year.(Pacheco et al, 2008)
A program can be viewed as a complex finite state machine. The testing strategy can be thought of as a random walk through the state space, searching for undefined states. (Miller et al, 1990)
There exist many software test generation techniques. It does not exists one test methodology that covers every error. Each tool and methodology complements one another.
Pacheco, C., Lahiri, S. K., and Ball, T. 2008. Finding errors in .net with feedback-directed random testing. In Proceedings of the 2008 international Symposium on Software Testing and Analysis (Seattle, WA, USA, July 20 – 24, 2008). ISSTA ’08. ACM, New York, NY, 87-96. DOI= http://doi.acm.org/10.1145/1390630.1390643
Miller, B. P., Fredriksen, L., and So, B. 1990. An empirical study of the reliability of UNIX utilities. Commun. ACM 33, 12 (Dec. 1990), 32-44. DOI= http://doi.acm.org/10.1145/96267.96279