1. An evolutionary approach to development based on writing a failing automated test before the functional code that makes the test pass. Once the code is written to pass the test, the cycle is then repeated, including refactoring the existing code to ensure a coherent cross-functional design. The goal of test-driven development is specification and not validation—to think through a design before code is written, to create clean code that always works. 2. An example of test-first development. See also refactoring, technical practices, test-first development.