This document discusses definitions, principles, and best practices of test-driven development (TDD). It defines different types of TDD like test-oriented development, test-driven design, acceptance TDD, and developer TDD. The key principles of TDD discussed are red-green-refactor cycles, writing tests before code, and values like improved design, code quality, and maintenance. Guidelines around trustworthy, maintainable and readable unit tests are also provided.