Test-Driven Development (TDDO is commonly recommended because it makes for good design, helping one create well encapsulated, decoupled production code. It also provides documentation for production code and minimizes regression issues and makes bugs easy to diagnose and fix.
What is rarely discussed is the fact that a test driven codebase exhibits patterns and smells in test code just like it does in its domain code. These test smells are as useful in identifying quality issues as are, say, violation of the law of Demeter in domain code. This talk covers some of the common patterns and smells that a test driven codebase exhibits and their implications.