TDD can sound like the simple solution to all your problems, promising a comprehensive test suite and high-quality code that basically writes itself. But test-driving a complex app can be a daunting task in practice. At Moonpig we now use TDD every day, but it took time, effort and discipline to overcome the challenges that we faced along the way.

Are you struggling with TDD? Have you tried it with simple algorithmic problems but can’t figure out how to approach a complex app? Or perhaps you’re keen to try it but you need to convince the rest of your team. Or you’re just new to the whole idea and are trying to figure out where to start.

In this talk we’ll start by covering the core concepts of TDD, how to get started, and look at a few common mistakes. We’ll discuss different approaches to TDD and highlight Android-specific patterns that have worked well for us in practice. Finally, we’ll look at how we purposefully designed our architecture to foster and maintain a culture of test-driven development from the core of our app – and how you can too.