tags:

views:

193

answers:

3

What would you recommend to start learning and applying BDD on a casual game development studio?

+4  A: 

While I can't speak to using BDD specifically with games, I can't pass up the opportunity to introduce you to this excellent article:

http://www.code-magazine.com/article.aspx?quickid=0805061&page=1

One of my favorite overviews of BDD as a development methodology. Covers the process very well, and explains creating specifications via concern, context, and observations very nicely.

I also highly recommend using xUnit.NET and Moq as your testing platform (if you are lucky enough to be using .NET, that is). The following article provides an excellent specification-centric testing platform built on xUnit.NET, and follows the tennent of single-assertion-per-test-case very nicely:

http://iridescence.no/post/Extending-xUnit-with-a-Custom-ObservationAttribute-for-BDD-Style-Testing.aspx

jrista
+1 for the article.
Si Keep
+2  A: 

I think there are two aspects of BDD to consider if you want to use it. One part is "BDD is TDD done right", i.e. the way to learn TDD is not to think of it as writing tests first but to write behaviour/specifications first.

The second part is that BDD, as implemented in JBehave is a side that was long forgotten in the .Net community I think. Only recently NBehave implemented something similar to what JBehave is i.e. a way to have non-programmers writing the specifications (behaviours) for you. This only applies to pretty high level behaviours as user stories and scenarios so you can't do only this. You need the "first part BDD" and/or TDD too. The second type of BDD I describe is a complement to "regular TDD".

Cellfish
Thanks for pointing that out :)
Seth Illgard
+1  A: 

Depending on your language and learning preference:

The RSpec Book talks about BDD using Ruby, RSpec and Cucumber. It is an EXCELLENT source for learning about the Concentric circles of BDD.

jrista's link to Bellware's article in Code Magazine is another EXCELLENT resource.

Just remember that BDD is about describing requirements/specifications so succinctly that they are executable. Then write the code that satisfies that spec. Rinse and repeat.

Hope this helps. Lee

leebrandt
Certainly helps, thank you
Seth Illgard