AutoTest is a tool for fully automatic testing of contract-equipped Eiffel classes. At the start of this project, AutoTest supported two strategies for test case generation: a random one and one for adaptive random testing. AutoTest allows the seemless integration of automated and manually-written tests. The main goal of this project was to implement new strategies for making
the automatic testing process more accurate and effective, trying to take advantage
of the user's knowledge contained in manual tests. The automatic tests attempt to
reproduce as much as possible the distribution of inputs for the manual tests, while
selecting representative test cases from the whole input space. Automatic tests need
to be diverse in order to be effective. They also need to be close to the manual tests,
which contain information about the system under test. Our strategies try to reconcile
these two apparently opposite requirements.