TDD is an acronym for “Test Driven Development.” In the same vein, the B in BDD is “Behaviour.” At the core of both, they are both quality assurance buzzwords that translate to “build your tests first. Then build your software.” In project management terms, acceptance criteria is coded before the feature is built - allowing the tests to determine whether or not the feature is completed. While it may seem intuitive to “know what you are building first” it can be onerous in practice to translate this into software terms.
Test First Build Second
TDD means that when putting together a new feature you create tests that initially fail. They fail because you haven’t built the feature yet! The test acts as a yardstick you can use to measure your progress. Ideally, once the tests pass, you’re done. From there - start the next feature by writing new tests. Tests come first in the development process - hence, Test Driven Development.
Software Project Management
TDD has an obvious bonus when it comes to managing software projects. When properly done, you can bake the project requirements into your test suite! This means you can see the progress every time you run the tests. If 60% of your tests are passing, well you have an idea of how far along the project has developed. While an excellent reporting tool, using any metric as a hard number for management level decisions is suboptimal in most cases.
Incremental Process Adoption
TDD gives you an additional tool to provide quality code. It is not a silver bullet that will solve all your problems and adoption is as difficult as picking up any other new process. We have found the best way to successfully install a new process in any organization is to start small. Begin with simple unit tests. Graduate to integration testing, and then try building a feature with some basic TDD. We don’t guarantee it will change everything for you - but with proper dialogue between stakeholders it may give you a better insight into the health of your software projects!
Tap or click on these posts to navigate to the next or previous posts.
This post is part of a larger series. Tap or click on a post to view more in this series.