Hacker News new | ask | show | jobs
by purp 5687 days ago
BDD means testing that you've delivered what the customer asked for. User stories expressed as test. This is like the architect's rendering of a building; it expresses and implies certain desired qualities.

TDD means testing that you've implemented a system which has all the significant qualities you expected. It intends to prove that the system does all of the right things and none of the wrong things on the way to delivering what the customer asked for. This is more like the blueprint of the building, making all significant details explicit.

You could practice BDD without TDD, though I've yet to see someone choose to. You can practice TDD without BDD, which I've seen many people do.

1 comments

> BDD means testing that you've delivered what the customer asked for.

No, that's "Acceptance testing", and doing it without TDD is actually quite common.

... which is why you frequently hear BDD called "Agile Acceptance Testing"
Perhaps by later practitioners of BDD who have no idea what they're talking about...

RSpec itself is in fact driven by the BDD ideas - adapting the language to make "doing the right thing" easier, and focusing on testing behaviour rather than state. RSpec has little or nothing to do with acceptance testing. It is thoroughly a unit testing tool.