Testing as a Driver for Software Development
TDD
- Test-Driven, test-first design
- Tests must fail first, then pass
- Rapid feedback during the development process
- Enables developers to more aggressively refactor internal APIs
ATDD
- Takes TDD further by deriving tests from acceptance criteria as part of the system design process.
- These criteria define what the system is supposed to do, and tests are written before the relevant part of the app is developed.
BDD
- Refinement of TDD that focuses on the desired behavior of an application.
- Bridges users, testers, and developers.
- Test cases are written in a simple form of natural language, so stakeholders can understand what’s being tested, even if they don’t understand how it’s being tested.