3 ms·
That's a load of crap. The best definition I've ever heard for BDD is "TDD done right". This is certainly what "BDD" started out as. The idea is that the langua
by swombat 16y ago
That's a load of crap. The best definition I've ever heard for BDD is "TDD done right". This is certainly what "BDD" started out as. The idea is that the language of typical testing frameworks doesn't encourage the right types of tests (i.e. testing behaviour rather than state), and so using a package that has the right vocabulary, you are more likely to do TDD right.
There is no significant difference between BDD and TDD other than that terminology, and most leading BDD proponents in the ruby community will refuse to set it in opposition with TDD. BDD is just a form of TDD, not some separate discipline. Defining BDD without mentioning its relationship to TDD is stupid.
- purp 16y agoBDD 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.
- silentbicycle 16y ago> 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.
- purp 16y ago... which is why you frequently hear BDD called "Agile Acceptance Testing"
- swombat 16y agoPerhaps 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.