Behavior-Driven Development

  • strict warning: Non-static method view::load() should not be called statically in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/views.module on line 906.
  • strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 744.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 607.
  • strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 607.
  • strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /hermes/walnaweb12a/b57/moo.greydragoncom/nodsw/sites/all/modules/views/handlers/ on line 159.
Leeland's picture

(moved from

I started poking at TDD (Test-Driven Development) a few years ago. I get really good at it, then I stop, then I get into again, then I stop and round and round I go.

I like TDD, it works, but there is a lot of set-up and "zero production time" involved around adding in TDD to existing work, or just for a new project. BTW I use TDD for Java, C, Python/Jython and BASH projects. Yes I have BASH projects, they are huge, they are deeply needed and no they do not translate well to Java... Python maybe I am currently working on moving an existing system from BASH to Jython.

This of course led me to some reading online, leading to Behavior-Driven Development (BDD) which is an evolution in the thinking behind Dave Astels and others. It pulls together parts of TDD and Domain-Driven Design into an integrated whole, making the relationship between these two powerful approaches to software development more evident. Dave Astels gave a good presentation on BDD at Google "Beyond Test Driven Development: Behavior Driven Development".

So is BDD good? Mostly it is just a renaming or refactoring of TDD. But I see how it can redirect TDD focus to improve things. Like Dave says if you are doing TDD 100% correctly it really isn't a major difference. But, rarely does any group of developers use TDD correctly. So perhaps adjusting the aim by changing the language is a good idea. I do know that BDD is getting a lot of blog time.

So is BDD important? I think yes. Everything in the computer world is based on people mental images of how they think it works. So if getting more people to have similar mental models running in the mouse wheels of their heads it is a big win. After all "Getting the words right" was the starting point for the development of BDD, and is still very much at its core, but the power of getting the words right has led to some very interesting insights and extrapolations on my own part that have helped me to better understand and solve complex problems.
So I guess it is true that it is more then just what you say, but how you say it too.

Check out the web site for more on BDD.

Thread Slivers eBook at Amazon