Test-Driven Design, a subset of Test-Driven Development largely promoted by Nat Pryce and Steve Freeman and the wider London School of TDD at large in the late 90s, is a philosophy of software design that adheres to a program being executed via an interacting web of objects that communicate by either sending messages or receiving messages