<?xml version="1.0" encoding="UTF-8"?>
<post>
  <body>&lt;h3&gt;Behavior Driven Development&lt;/h3&gt;

&lt;p&gt;Behavior Driven Development is specifying how your application should work, rather than verifying that it works.&lt;/p&gt;

&lt;p&gt;Technically speaking, there is not much difference between Test-Driven Development (TDD) and Behavior-Driven Development (BDD).  In his essay, &lt;a href="http://blog.daveastels.com/files/BDD_Intro.pdf"&gt;A New Look at Test-Driven Development&lt;/a&gt; Dave Astels illuminates the real difference between the two.  The difference is not a technical one, it is one of reference.&lt;/p&gt;

&lt;p&gt;Just as sociologists have postulated that the language we use to express the world around us directly affects the way we interpret it, the language we use to test applications directly affects the way we develop them.&lt;/p&gt;

&lt;p&gt;When building tests with methods that begin with 'test', we are structuring the interaction we have with our code to be a backwards relationship.  It doesn't matter if we write the test before we write the functionality, we are still &lt;i&gt;testing&lt;/i&gt; a &lt;i&gt;unit&lt;/i&gt; of functionality.  We are still verifying that something we did, did what it ought to do.
&lt;/p&gt;

&lt;p&gt;When building specifications with methods that begin with 'should' or 'should not', we are structuring the interaction we have with our code to be a forwards relationship.  We are not merely verifying classes and methods, we are thinking about and building facets of behavior.
&lt;/p&gt;

&lt;p&gt;Behaviour-Driven Development is about specification, not verification&lt;/p&gt;</body>
  <classification nil="true"></classification>
  <created-at type="datetime">2007-09-30T00:00:13Z</created-at>
  <id type="integer">3</id>
  <permalink>rspec-tutorial-part-1</permalink>
  <title>RSpec Tutorial Part 1</title>
  <updated-at type="datetime">2007-10-09T20:35:37Z</updated-at>
  <user-id type="integer">1</user-id>
</post>
