A software development approach where tests are written before the code that needs to be developed, ensuring that the software meets its requirements from the outset.