Testing functionalities of a software system is probably one of the most important things to do if you want to release a reliable application to your clients.
TDD (aka Test Driven Development) is a methodology where you create and develop unit tests before writing a single line of application logic. This strategy allows you to better understand the problem your app is solving, it gives you a more pragmatic and structured way to build a software component. It forces you to design and think to the solution in detail before coding it. And, most important, when you change something in your code, you can safely run your tests again and have an immediate result if your changes have affected the behavior of the component.
In this blog post, I'm explaining some practices I have used to test asynchronous networking code on Android: