Wednesday, February 22, 2006
AutoTest
There's been a lot of recent interest in AutoTest, an automatic software testing tool for Eiffel written by Andreas Leitner and Ilinca Ciupa as a research project at ETH.
The tool tests Eiffel code by repeatedly calling the code with input data that it has generated. If it finds that the precondition is met but the postcondition fails, then it has uncovered a bug.
Bertrand Meyer described the tool thus:
The tool tests Eiffel code by repeatedly calling the code with input data that it has generated. If it finds that the precondition is met but the postcondition fails, then it has uncovered a bug.
Bertrand Meyer described the tool thus:
AutoTest ... is a test generation tool that has the almost unique property of requiring no preparation of test data whatsoever. "Test While You Lunch" is the idea, and the slogan is "We Kick Bugs!". You submit to AutoTest a set of contract-equipped classes, and let it test them automatically, generating objects and routine calls according to its own criteria, and trying to defeat the contracts. More precisely, AutoTest tries to satisfy the preconditions -- trying a routine outside of its precondition is a waste of CPU cycles, even if it happens during lunch time -- and to break the postconditions. It's really push-button: you specify the classes and do nothing else, other than giving AutoTest time to plow through the haystack and find a few needles (bugs). It's incredibly effective, having for example succeeded for EiffelBase in finding (shame) a number of real bugs, heretofore unknown. It's the beauty of contracts that you don't have anything to do to get these results.Of course, this underscores the need to write good contracts.
Notice: users are responsible for their lunches.