<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Attempting to Demystify Behavior Driven Development</title>
	<atom:link href="http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/</link>
	<description>Tales from the field...</description>
	<lastBuildDate>Sat, 11 Feb 2012 08:43:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: james peckham</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-144</link>
		<dc:creator>james peckham</dc:creator>
		<pubDate>Sat, 18 Oct 2008 02:21:06 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-144</guid>
		<description>In a perfect world your BA knows what to test. In a perfect world your BA might sit down with you and spec out tests. In a perfect world you might have developers that are willing to write tests. Behave# is just another &#039;tool&#039; that requires maintenence from the already &quot;Too busy&quot; business units. Getting them to the table is hard enough, but now expect them to spec tests with you? I drink the agile kool aid but I&#039;ve just never had much luck in the real world with getting BAs to sit down and spec... let alone programmers.</description>
		<content:encoded><![CDATA[<p>In a perfect world your BA knows what to test. In a perfect world your BA might sit down with you and spec out tests. In a perfect world you might have developers that are willing to write tests. Behave# is just another &#8216;tool&#8217; that requires maintenence from the already &#8220;Too busy&#8221; business units. Getting them to the table is hard enough, but now expect them to spec tests with you? I drink the agile kool aid but I&#8217;ve just never had much luck in the real world with getting BAs to sit down and spec&#8230; let alone programmers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jimmy Bogard</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-143</link>
		<dc:creator>Jimmy Bogard</dc:creator>
		<pubDate>Tue, 22 Jul 2008 23:02:51 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-143</guid>
		<description>@Malcriadito

No. Producing the *right* software has nothing to do with an unlimited budget.

Engineering development practices are only one piece of a puzzle in profitability.  A solution can be TDD&#039;d to death, but if no one uses it, it&#039;s not a success.

But I&#039;ve seen plenty of projects fail because they collapse under their own weight, unable to change any more because no one knows 1) if the changes they make are right and 2) if they don&#039;t break anything with the change.  This software is still &quot;successful&quot; in terms of revenue, but is very expensive to change.

Our clients know what they want, after conversations and the 5 whys, which is what BDD is meant to drive out.  Stories + acceptance criteria give us the starting point.

On the other hand, I&#039;m curious how one team responsible for 20 projects has any success at all.  Humans are terrible at context switching.  Depends on your definition of &quot;project&quot; I guess.</description>
		<content:encoded><![CDATA[<p>@Malcriadito</p>
<p>No. Producing the *right* software has nothing to do with an unlimited budget.</p>
<p>Engineering development practices are only one piece of a puzzle in profitability.  A solution can be TDD&#8217;d to death, but if no one uses it, it&#8217;s not a success.</p>
<p>But I&#8217;ve seen plenty of projects fail because they collapse under their own weight, unable to change any more because no one knows 1) if the changes they make are right and 2) if they don&#8217;t break anything with the change.  This software is still &#8220;successful&#8221; in terms of revenue, but is very expensive to change.</p>
<p>Our clients know what they want, after conversations and the 5 whys, which is what BDD is meant to drive out.  Stories + acceptance criteria give us the starting point.</p>
<p>On the other hand, I&#8217;m curious how one team responsible for 20 projects has any success at all.  Humans are terrible at context switching.  Depends on your definition of &#8220;project&#8221; I guess.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Malcriadito</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-142</link>
		<dc:creator>Malcriadito</dc:creator>
		<pubDate>Tue, 22 Jul 2008 17:56:29 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-142</guid>
		<description>Doesn&#039;t this all apply if you have an unlimited budget on one project?

I&#039;ve never understood how one team responsible for 20 projects (that vary in size) can implement BDD or TDD and actually turn a profit. According to the Agile *experts* in my group - the client doesn&#039;t know what they want, so how do I define my tests?</description>
		<content:encoded><![CDATA[<p>Doesn&#8217;t this all apply if you have an unlimited budget on one project?</p>
<p>I&#8217;ve never understood how one team responsible for 20 projects (that vary in size) can implement BDD or TDD and actually turn a profit. According to the Agile *experts* in my group &#8211; the client doesn&#8217;t know what they want, so how do I define my tests?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-141</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Thu, 28 Feb 2008 16:58:28 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-141</guid>
		<description>@Rob
I&#039;ve the same questions, one frustrating thing about BDD is its all a big vague.</description>
		<content:encoded><![CDATA[<p>@Rob<br />
I&#8217;ve the same questions, one frustrating thing about BDD is its all a big vague.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Miles</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-140</link>
		<dc:creator>Rob Miles</dc:creator>
		<pubDate>Thu, 13 Dec 2007 10:24:31 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-140</guid>
		<description>How do mock objects fit into BDD?  The examples I&#039;ve seen (and from playing around with NBehave) seem to be very state-based in their assertions.  When the tests are around the interactions between objects how does that fit into a BDD framework?  Or am I missing the point?! :)</description>
		<content:encoded><![CDATA[<p>How do mock objects fit into BDD?  The examples I&#8217;ve seen (and from playing around with NBehave) seem to be very state-based in their assertions.  When the tests are around the interactions between objects how does that fit into a BDD framework?  Or am I missing the point?! <img src='http://lostechies.com/joeocampo/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-139</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Tue, 11 Sep 2007 18:24:46 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-139</guid>
		<description>Great article but I have a question. You say that DDD helps people come to the ephiphanie:

7. Behavior is about the interactions between components of the system and so the use of mocking is a fundamental to advanced TDD.

I&#039;m not sure what you meant by this. Do you mean mock the domain classes when testing higher layers, mocking one domain class when testing another or alternatively mocking other layers when testing the domain? None of these are shown in the examples, in fact they all seem to be using real domain objects.

Anyway I find the workflow you are discussing interesting, the collaboration between the business person (or someone bridging the technology and domain teams) and the developer seems sensible (though difficult to achieve).</description>
		<content:encoded><![CDATA[<p>Great article but I have a question. You say that DDD helps people come to the ephiphanie:</p>
<p>7. Behavior is about the interactions between components of the system and so the use of mocking is a fundamental to advanced TDD.</p>
<p>I&#8217;m not sure what you meant by this. Do you mean mock the domain classes when testing higher layers, mocking one domain class when testing another or alternatively mocking other layers when testing the domain? None of these are shown in the examples, in fact they all seem to be using real domain objects.</p>
<p>Anyway I find the workflow you are discussing interesting, the collaboration between the business person (or someone bridging the technology and domain teams) and the developer seems sensible (though difficult to achieve).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jdn</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-138</link>
		<dc:creator>jdn</dc:creator>
		<pubDate>Wed, 08 Aug 2007 02:20:30 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-138</guid>
		<description>&quot;Do not make it hard to internationalize the software if needed later&quot;

&quot;The software will be easy to use&quot;

I would say those are unimplementable contraints because the latter means nothing (&quot;easy to use&quot;...according to whom, when, where), and the former means nothing without knowing deep level implementation details that cannot be bridged simply by having a ubiquitous language.

They aren&#039;t testable at all that I can see.</description>
		<content:encoded><![CDATA[<p>&#8220;Do not make it hard to internationalize the software if needed later&#8221;</p>
<p>&#8220;The software will be easy to use&#8221;</p>
<p>I would say those are unimplementable contraints because the latter means nothing (&#8220;easy to use&#8221;&#8230;according to whom, when, where), and the former means nothing without knowing deep level implementation details that cannot be bridged simply by having a ubiquitous language.</p>
<p>They aren&#8217;t testable at all that I can see.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Ocampo</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-137</link>
		<dc:creator>Joe Ocampo</dc:creator>
		<pubDate>Wed, 08 Aug 2007 02:05:26 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-137</guid>
		<description>jdn

I believe Mike Cohn refers to your situation as Guiding Principle Cards

http://www.amazon.com/User-Stories-Applied-Development-Addison-Wesley/dp/0321205685/ref=pd_bxgy_b_img_b/002-2360359-6552835

Guiding Principals are the practice of annotating a story card with “GP” for any story that must be obeyed rather than directly implemented.  An example can be seen in the following examples

Other examples of constraints are:

•	Do not make it hard to internationalize the software if needed later.
•	The new system must use our existing order database.
•	The software must run on all versions of Windows.
•	The system will achieve uptime of 99.999%.
•	The software will be easy to use.

Even though guiding principal cards do not get estimated and scheduled into iterations like normal cards they are still useful.  Acceptance tests can be written to ensure the guiding principal is not violated.  Ideally the team would write this test during one of the first iterations (Spike) when there’s little chance of it being violated.  The team would then continue running the test as part of each subsequent iteration.  

I know this may not help your particular situation but it may set the stage for a talking point between the DBA and the business analyst early in the project.
</description>
		<content:encoded><![CDATA[<p>jdn</p>
<p>I believe Mike Cohn refers to your situation as Guiding Principle Cards</p>
<p><a href="http://www.amazon.com/User-Stories-Applied-Development-Addison-Wesley/dp/0321205685/ref=pd_bxgy_b_img_b/002-2360359-6552835" rel="nofollow">http://www.amazon.com/User-Stories-Applied-Development-Addison-Wesley/dp/0321205685/ref=pd_bxgy_b_img_b/002-2360359-6552835</a></p>
<p>Guiding Principals are the practice of annotating a story card with “GP” for any story that must be obeyed rather than directly implemented.  An example can be seen in the following examples</p>
<p>Other examples of constraints are:</p>
<p>•	Do not make it hard to internationalize the software if needed later.<br />
•	The new system must use our existing order database.<br />
•	The software must run on all versions of Windows.<br />
•	The system will achieve uptime of 99.999%.<br />
•	The software will be easy to use.</p>
<p>Even though guiding principal cards do not get estimated and scheduled into iterations like normal cards they are still useful.  Acceptance tests can be written to ensure the guiding principal is not violated.  Ideally the team would write this test during one of the first iterations (Spike) when there’s little chance of it being violated.  The team would then continue running the test as part of each subsequent iteration.  </p>
<p>I know this may not help your particular situation but it may set the stage for a talking point between the DBA and the business analyst early in the project.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Ocampo</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-136</link>
		<dc:creator>Joe Ocampo</dc:creator>
		<pubDate>Wed, 08 Aug 2007 01:50:58 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-136</guid>
		<description>J.B.

1.  Our goal is to synergize the acceptance testing framework into the actual codebase.  Within the code you should be able to now trace backwards through a reference tree to determine the origination point of why the class was created within the domain layer.  By imbedding the story authoring framework from within the unit test framework everyone in the team is focused on the same constructs.  I am not recommending replacing any existing unit testing framework, I am suggesting that we extend the unit test framework to be more encompassing of the intention of software as governed by the Story authorship.  Similar to how a mocking framework does not replace unit testing it just make it more expressive on the intention of behavior as the consuming class acts upon the mock object.

It’s important to note that these are not new concepts.  Rbehave is already doing this in the Ruby world.  Rbehave coupled with rspec is quiet powerful.

2.  I am never said it was going to be easy.  I did work with the BA after I wired the delegates, she simply extended the scenarios to adhere to new aspects of the assertion criteria such as boundary and negative testing.  She was curious about what the code did but it didn’t stop her from copy and pasting the other scenarios.  What she did find as a benefit was she accidently deleted one of the scenarios and went back in to the source code repository to roll back to the previous version.  She also liked how she could compare what she was about to check in with what she had done previously.  I will mention that I have tried this on two business analyst.  With the first one it immediately clicked.  The second however struggled the entire time.  I had to spend up to 3 times longer than the first individual mentoring her on how to use behave#.  Some people would say give up, I say bring it on!  I am going to hold a training session at the end of the next quarter to the department as a whole to gauge the general acceptance. 
</description>
		<content:encoded><![CDATA[<p>J.B.</p>
<p>1.  Our goal is to synergize the acceptance testing framework into the actual codebase.  Within the code you should be able to now trace backwards through a reference tree to determine the origination point of why the class was created within the domain layer.  By imbedding the story authoring framework from within the unit test framework everyone in the team is focused on the same constructs.  I am not recommending replacing any existing unit testing framework, I am suggesting that we extend the unit test framework to be more encompassing of the intention of software as governed by the Story authorship.  Similar to how a mocking framework does not replace unit testing it just make it more expressive on the intention of behavior as the consuming class acts upon the mock object.</p>
<p>It’s important to note that these are not new concepts.  Rbehave is already doing this in the Ruby world.  Rbehave coupled with rspec is quiet powerful.</p>
<p>2.  I am never said it was going to be easy.  I did work with the BA after I wired the delegates, she simply extended the scenarios to adhere to new aspects of the assertion criteria such as boundary and negative testing.  She was curious about what the code did but it didn’t stop her from copy and pasting the other scenarios.  What she did find as a benefit was she accidently deleted one of the scenarios and went back in to the source code repository to roll back to the previous version.  She also liked how she could compare what she was about to check in with what she had done previously.  I will mention that I have tried this on two business analyst.  With the first one it immediately clicked.  The second however struggled the entire time.  I had to spend up to 3 times longer than the first individual mentoring her on how to use behave#.  Some people would say give up, I say bring it on!  I am going to hold a training session at the end of the next quarter to the department as a whole to gauge the general acceptance. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J. B. Rainsberger</title>
		<link>http://lostechies.com/joeocampo/2007/08/07/attempting-to-demystify-behavior-driven-development/#comment-135</link>
		<dc:creator>J. B. Rainsberger</dc:creator>
		<pubDate>Wed, 08 Aug 2007 00:38:36 +0000</pubDate>
		<guid isPermaLink="false">/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx#comment-135</guid>
		<description>Two questions:

1. There&#039;s a reason to keep business tests and technical tests separate, so why do you think we can mix them together all of a sudden?

2. JSP tried to make programming look like HTML, and it failed miserably at meeting the objective of making non-programming web designers feel comfortable working with JSP. What makes you think that a business person will feel comfortable editing a Behave# test once a programmer has put in his delegates?
 
</description>
		<content:encoded><![CDATA[<p>Two questions:</p>
<p>1. There&#8217;s a reason to keep business tests and technical tests separate, so why do you think we can mix them together all of a sudden?</p>
<p>2. JSP tried to make programming look like HTML, and it failed miserably at meeting the objective of making non-programming web designers feel comfortable working with JSP. What makes you think that a business person will feel comfortable editing a Behave# test once a programmer has put in his delegates?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
