Some people refer to BDD as “TDD done right.” You can also think of BDD as “how we build the right thing” and TDD as “how we build the thing right.”
As we discussed in chapter 20, test-driven development (TDD) is an effective technique that uses unit tests to verify the code. Despite TDD’s clear benefits, its usual loop
[test, code, refactor, (repeat)]
can cause developers to lose the overall picture of the application’s business goals. The project may become larger and more complex, the number of unit tests will increase, and those tests will become harder to understand and maintain. The tests may also be strongly coupled with the implementation. They focus on the unit (the class or the method) that is tested, and the business goals may not be considered.