I got a very well formulated email from Jose Samonte the other day. He asked me about some resources on BDD and where to start learning about it. As I think this is a great question and I’ve struggled and read a lot before I got a grip on BDD I thought I post my answer publicly.
It all started with a blog post by Dan North; Introducing BDD. It provides some context on where the ideas came from and is a good read. While you’re there you should read “What’s in a story” – that article is equally good and provides a great background and understanding.
Learn from others
Now that we know the background and history we should go on. Much of the early work (and current to be honest) of the BDD was done on other platforms than .NET. So I’ve read a lot from the Ruby community, Java community and other platforms and languages.
One of the best books I’ve read on BDD is The RSpec book – that introduces the thinking behind BDD in Ruby land. It also introduces Cucumber which is a tool that have had great influence on the BDD development and has been ported to other platforms. SpecFlow is such a port on the .NET platform.
The Cucumber site is littered with loads of information, web casts and articles that I have found useful. Check out Cuke TV for example.
Casts and posts
Other stuff I’ve learned from are (in no particular order):
- The excellent book Growing Object Oriented Systems Guided by Tests (or GOOS for short)
- This web cast by Rob Conery
- This blog post by Steven Sandersson
- The excellent wiki on Gherkin (the language used by Cucumber)
- Loads of stuff on Gojko Adzic’s site
- Reading and contributing to the SpecFlow source code on GitHub. I especially like the FeatureTests that are using SpecFlow itself
I know that this a bit (!!) SpecFlow heavy but that’s how I’ve learned about these concepts. Please feel free to use another tool if you like. Raconteur looks cool, if you ask me.
If I have forgot something important or useful, please let me know.
Jose – I hope this help. Thanks for giving me the opportunity to write these links down.