How accurate is Daikon?
The Daikon system examines the values computed during the target program’s execution, looking for patterns and relationships among those values. There are two potential problems: missing properties (false negatives), and spurious properties (false positives). False negatives are inevitable, because every tool has a grammar that limits what it can express. Daikon has a relatively simple and broadly applicable grammar. Users can extend it easily, by writing a Java class that satisfies an interface with four methods. False positives can also occur; the properties are not guaranteed to hold for every possible execution. As with any other dynamic (run-time) technique, such as testing, the results depend on the quality of the test suite. In practice, the results have proved to be quite accurate even with very modest test suites, thanks to statistical tests that weed out most false positives. And research has shown that the inaccuracies can help in improving test suites.