Friday, September 14, 2007

BDD and DDD

I've been following BDD, from a distance, for a while and was reading a couple of good articles about it, including one by AgileJoe and one by Dan North. Scott Bellware also has a lot of posts on BDD but they're mainly quite abstract, at this stage I'm more interested in people showing how BDD can work and how to do it well rather than hearing about how great it is but you may want to give them a look.

The idea interests me but I have reservations, which I wanted to write down.

Stories
Whilst BDD and TDD go well together I don't think that user stories are the right way to specify the expected domain behavior.

To me user stories are useful for getting the high level, almost workflow, related requirements and acceptance tests. These are supposed to be at a very high level and shouldn't have any details about the user interface or below.

In fact the information you gather from a user story is quite different from the information you need when defining a domain model and in some cases your users (who specify the user stories) may not be the people specifying the required behavior of the domain (the domain experts).

In his excellent book Mike Cohn describes this, including the fact that users can provide good user stories whilst its the domain expert you want to speak to when defining the domain model.

Anyway I'm thinking this is just terminology, Dan North does not really refer to the stories as user stories (though from my reading Scott Bellware does). For some reason if I just consider them as stories I'm far happier, though it is also worth noting that Dan points out that they can be user stories.

User Involvement
Personally I'm 100% convinced that where I work there is no chance of us getting our business experts to work with FIT or something like NBehave, and to be honest I'm not sure I like the idea of them having to specify their tests inside an IDE.

Conclusion
As usual, none. I like the idea and am going to look at it and the FIT style approach, to see what happens. StoryTeller in particular is another interesting piece of software and I'm not yet sure how it overlaps with BDD, particularly as some of the work on BDD is to try and blur the lines between different types of tests.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

4 comments:

  1. Anonymous7:39 pm

    Colin,

    *I* don't know where StoryTeller fits in right now. The goal of Fit testing is basically the same as the customer facing parts of BDD, but I'm thinking that the NBehave mechanics may be cleaner and easier in the long run for some sorts of tests. I'd still recommed Fit testing for scenarios that are easy to express as 2-dimensional examples.

    I'm going to flirt with adding some sort of NBehave runner for StoryTeller to be able to do both.

    Jeremy D. Miller

    ReplyDelete
  2. Ok, how did you find this blog entry so fast :)

    Anyway thanks for the comment and
    I can definitely see that what you are saying about FIT makes sense, in fact to me trying to turn something 2-dimensional into a list of NBehave stories might well prove messy.

    Having said that introducing BDD and FIT into the same project would seem to me to be a little confusing.

    ReplyDelete
  3. Does this help answer you questions?

    http://www.lostechies.com/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx
    http://www.lostechies.com/blogs/joe_ocampo/archive/2007/09/05/concerns-about-nbehave.aspx

    ReplyDelete
  4. They are both very useful but I must admit I've yet to read an end to end BDD example that really answered all my questions.

    I guess I need to sit down and actually try BDD with NBehave rather than reading about it, then come back with well formed questions! :)

    ReplyDelete