HATE: Modes of Operation
HATE can be used in either of two ways:
- In test mode HATE is used to confirm that the program being
tested gives precisely the results that are expected; this is intended
to support the testing of programs when a bug has been fixed or when
installing programs. (This is known as "regression testing" in some
computer science circles.) In this mode, HATE performs a similar task
to software such as the Free Software Foundation's Deja
Gnu package.
If you use HATE to apply regression tests, you are advised to stick to the following procedure when fixing bugs:
- First, devise a test that exercises the bug and add it to the program's test script.
- Run HATE on the test script to verify that the bug is exercised.
- Fix the bug.
- Run HATE on the test script again to confirm that the bug is no longer present -- and that your fix hasn't broken something that formerly worked.
- In evaluate mode HATE gathers statistical information over
a number of tests, summarizing the results after their completion. In
this mode, HATE may be used as an aid to characterizing the
performance of a program, and to enable different algorithms to be
compared in an objective way.
Although performance characterization is a discipline still in its infancy, it seems that the way to go is to produce several classes of input data and elavuate the algorithm over those classes. This yields more useful information than a haphazard collection of data. In computer vision, for example, the popular edge detector due to Canny is known to be good at finding edge segments, even under quite difficult conditions; it is also known to be poorer at locating corners than true corner detectors (e.g., Harris-Stevens, Wang-Brady). Hence, separate scripts that test a program on noisy edges and on noisy corners should be able to confirm this.