Test-Driven Development, or TDD for short, is a tool, a mindset and a process which aids in the development of robust, SOLID-based, scalable code. It fosters a shift towards an implementation-agnostic codebase.
It is a tool that helps you work smart, by writing just enough code to make a test pass; a process that enables you to add value through the new features that you build, making sure that they won’t break the rest of your code; and a mindset that embodies ownership of your codebase through and through.
 
  
  
           
  
  
          The base of TDD is the Red-Green-Refactor cycle:
- You write the test, run it and it fails (Red) 
- You write just enough code to make it pass (Green) 
- You improve the code (Refactor) 
The idea behind it is that you build the functionality quickly and without risking the stability of the remaining codebase, and - once the test passes - you can refactor.
It is worth mentioning, however, that the purpose of TDD is not to increase test coverage - as with all things agile, quality wins over quantity. It is also not a single testing suite, used in a specific phase leading up to development: rather, it is production code. 
While we do, in essence, “gain” our unit test suite “for free”, the advantages of TDD extend far beyond code scalability: starting every functionality with a test leads to simplified interfaces and design, which is much more user-friendly and accessible by nature - not to mention, it makes it easier to implement and test for a range of accessibility features, which brings our product closer to a wider range of users.
Want to know more? Start with the links below:
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.
 
     
    
    
   
    
    
  