My relationship with the unit tests in my code changes over time. Like my good friend Brian asserts, in the beginning of a project, they are a great design tool. If a bug gets reported, they become a debugging tool. When I do a release, they are an automated validation tool. If I don't write the tests robustly enough, they become a big headache. When I've return to a forgotten corner of an application, they become my documentation tool.