freeCodeCamp/guide/english/agile/test-driven-development/index.md

37 lines
2.1 KiB
Markdown

---
title: Test Driven Development
---
## Test Driven Development
Test Driven Development (TDD) is one of Agile Software Development approaches. It is based on the concept that
> you must write a test case for your code even before you write the code
With TDD, the unit test is written first with a test that fails, you then write the code that will execute and allow the unit test to pass. Overall TDD saves time spent performing unit tests and other similar tests since test creation is developed before the code has even been written.
Test Driven Development is essentially comprised of 4 steps:
- Write a test case that fails (Red)
- Write the code to satisfy the test case
- Run the test case again confirming test passes (Green)
- Refactor the code as per typical standards (Refactor)
These steps follow the principle of Red-Green-Refactor. The Red-Green steps ensure that you write the simplest code possible to solve the problem while the last step makes sure that the code that you write is up to typical coding standards.
Each new feature of your system should follow the steps above.
![tdd flow](http://www.agiledata.org/images/tddSteps.jpg)
<!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds -->
#### More Information:
<!-- Please add any articles you think might be helpful to read before writing the article -->
Agile Data's <a href='http://agiledata.org/essays/tdd.html' target='_blank' rel='nofollow'>Introduction to TDD</a>
Wiki on <a href='https://en.wikipedia.org/wiki/Test-driven_development' target='_blank' rel='nofollow'>TDD</a>
Martin Fowler <a href='https://martinfowler.com/articles/is-tdd-dead/' target='_blank' rel='nofollow'>Is TDD Dead?</a>
(A series of recorded conversations on the subject)
Kent Beck's book <a href='https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530' target='_blank' rel='nofollow'>Test Driven Development by Example</a>
Uncle Bob's <a href='http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html' target='_blank' rel='nofollow'>The Cycles of TDD</a>