+@section Testing LilyPond
+
+@html
+<a name="testing"></a>
+@end html
+
+LilyPond comes with an extensive suite that excercises the entire
+program. This suite can be used to automatically check the impact of a
+change. This is done as follows
+
+@example
+ make test-baseline
+ @emph{## apply your changes, compile}
+ make check
+@end example
+
+This will leave an HTML page @file{out/test-results/index.html}. This
+page shows all the important differences that your change introduced,
+whether in the layout, MIDI, performance or error reporting.
+
+To rerun tests, use
+
+@example
+ make test-redo @emph{## redo files differing from baseline}
+ make test-clean @emph{## remove all test results}
+@end example
+
+@noindent
+and then run @code{make check} again.
+
+For tracking memory usage as part of this test, you will need GUILE
+CVS; especially the following patch:
+@uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.9-gcstats.patch}.
+
+For checking the coverage of the test suite, do the following
+
+@example
+ ./buildscripts/build-coverage.sh
+ @emph{# uncovered files, least covered first}
+ python ./buildscripts/coverage.py --summary out-cov/*.cc
+ @emph{# consecutive uncovered lines, longest first}
+ python ./buildscripts/coverage.py --uncovered out-cov/*.cc
+@end example