Thoughtful Machine Learning: A Test-Driven Approach