This document discusses test driven development (TDD) using the SOLID principles. It begins with an introduction of the presenter and agenda. It then discusses what makes a good design by avoiding rigidity, fragility, and immobility. It introduces TDD and the five SOLID principles - single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion. For each principle, it provides a before and after example and discusses how applying the principle can improve testing. The document concludes with next steps and a question period.