Test-driven Development (TDD)


Test-Driven Development (TDD) is a software development methodology where tests are written before the code that needs to be tested. This approach involves a repetitive cycle of writing a test for a new functionality, producing the minimal code to pass the test, and then refactoring the code to meet acceptable standards. The TDD process is often summarized by the mantra "Red-Green-Refactor."

In the first step, "Red," a test is written and run, which should fail because the functionality is not yet implemented. In the "Green" phase, the simplest code necessary to pass the test is written. Finally, during "Refactor," the code is cleaned up and optimized while ensuring that all tests still pass.

TDD offers several advantages. It ensures that the codebase is continuously tested, reducing the number of bugs and improving code quality. It also encourages developers to think through the design and requirements before writing the actual code, leading to more modular and maintainable software.

Furthermore, TDD provides a clear measure of progress through passing tests and serves as documentation for the code. This method fosters a disciplined approach to coding, where features are built incrementally and verified continuously, ultimately leading to more reliable and robust software development.

TDD usually refers to code level unit testing with acceptance test driven development (ATDD) and behaviour driven development (BDD) referring to similar 'test-first' approaches with higher level tests.

Resources

Uncle Bob demoed TDD in front of life audience. A fun video to watch.

Have you heard or believed in any of these? Let's hear what an expert TDD practitioner and teacher has to say about these myths.
An insightful article that connects five essential technical topics crucial for successfully delivering an exceptional product - technical debt, refactoring, pair and mob programming, TDD and BDD, and continuous integration (CI).