What are the characteristics of a good test driven development?