Thoughtful Machine Learning (A Test-Driven Approach)