The document discusses test driven development (TDD). It defines TDD and describes the TDD cycle of writing a test, code, and refactoring. It outlines different approaches to TDD like outside-in and inside-out. It discusses the benefits of TDD like aiding design, promoting refactoring, and instilling confidence. It also covers test smells, misconceptions about TDD, and tools used for TDD.