Behavior-Driven Development (BDD) is a really powerful tool that helps us build robust, value-based software. You can sometimes hear detractors say that it brings a lot of complexity and leads to long tests difficult to maintain. Let’s take stock of what BDD really is, by determining anti-patterns and best practices.
Great article Julien. Regarding TDD being a bottom-up approach, I am not sure I agree. I have been using TDD mostly as top-down, it helps me to plan and architect the solution. I think the greatest benefit of BDD is bridging the gap between business language and developer language. It gives you a specification of behavior in a natural language that you can run.
It’s true that this is not a 100% bottom-up approach, I also like to say that the last ‘D’ of TDD can stand for design. What I tried to show is the complementarity of those approaches, what I meant is TDD is designing from the method, the class or the component where BDD is transversal and can challenge the choices you can make with TDD.