Test-driven development
Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only.
This is opposed to software development that allows software to be added that is not proven to meet requirements.
Description
The tests should be written before the functionality that is to be tested. This helps ensure that the application is written for testability, as the developers must consider how to test the application from the outset rather than adding it later. It also ensures that tests for every feature get written. Additionally, writing the tests first leads to a deeper and earlier understanding of the product requirements, ensures the effectiveness of the test code, and maintains a continual focus on software quality.
Each test case fails initially: This ensures that the test really works and can catch an error. Once this is shown, the underlying functionality can be implemented. This has led to the "test-driven development mantra", which is "red/green/refactor", where red means fail and green means pass. Test-driven development constantly repeats the steps of adding test cases that fail, passing them, and refactoring. Receiving the expected test results at each stage reinforces the developer's mental model of the code, boosts confidence and increases productivity.
Kent Beck, who is credited with having developed or 'rediscovered' the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.
Test-driven development is related to the test-first programming concepts of extreme programming, begun in 1999, but more recently has created more general interest in its own right.
See also
- Acceptance testing
- Behavior-driven development
- Continuous test-driven development
- Design by contract
- Inductive programming
- Integration testing
- List of software development philosophies
- List of unit testing frameworks
- Mock object
- Programming by example
- Sanity check
- Self-testing code
- Software testing
- Test case
- Transformation Priority Premise
- Unit testing
External links
- Test-driven development @ Wikipedia
- The Cycles of TDD by Robert C. Martin (17 December 2014)