Thanks Kevin. I think BDD at the code level is certainly the natural evolution of TDD - it is like traditional TDD, but done in a more expressive manner. A lot of experienced TDD practitioners do this anyway (e.g. Uncle Bob Martin), but BDD really brings this focus on the idea of TDD as a design and documentation practice out into the open, and provides tooling to make it easier. In fact many newer languages (e.g. Scala and the newer Javascript frameworks) have default
unit testing libraries that are BDD-focused.