How specific do I get in BDD scenarios?

Posted by CodeSpelunker on Stack Overflow See other posts from Stack Overflow or by CodeSpelunker
Published on 2012-10-04T03:34:24Z Indexed on 2012/10/04 3:37 UTC
Read the original article Hit count: 84

Filed under:
|

Take two different ways of stating the same behavior.

Option A:

Given a customer has 50 items in their shopping cart
When they check out
Then they will receive a 10% discount on their order

Option B:

Given a customer has a high volume of items in their shopping cart
When they check out
Then they will receive a high volume discount on their order

The former is far more specific. If someone has some question about exactly when a customer gets a high volume discount or how much to give them, reading this scenario makes it very clear. Serving the purposes of documenting the behavior, it's about as specific as it can be, although any change in those values will require changing the scenario.

The second is more generalized and doesn't have the clarity of the first. Automating it would require incorporating the values "50" and "10" in the step implementations. On the other hand, the scenario captures the core business need: a high volume customer gets a discount. If we later decide to use "40" and "15", the scenario doesn't have to change because the core business need hasn't really changed (though the step implementation would). Also, the term "high volume customer" communicates something about why we're giving them the discount.

So, which is better? Rather, under what circumstances should I favor the former or the latter?

© Stack Overflow or respective owner

Related posts about bdd

Related posts about acceptance-testing