This article is a complete gem:

http://www.defmacro.org/ramblings/fp.html

That means that the only effect of evaluating a function is its return value and the only thing that affects the return value of a function is its arguments. This is a unit tester’s wet dream. [emphasis added -DB]