<?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: It is not about writing tests, its about writing stories</title>
	<atom:link href="http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/feed/" rel="self" type="application/rss+xml" />
	<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/</link>
	<description>Testability Explorer</description>
	<lastBuildDate>Thu, 02 Sep 2010 04:05:01 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Neil Murphy</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1839</link>
		<dc:creator>Neil Murphy</dc:creator>
		<pubDate>Tue, 08 Sep 2009 21:24:57 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1839</guid>
		<description>When defining a user story you need to make it as implementation independent as possible so that your test cases then reflect the the business functionality you are building.  When you move into implementation design / build you then build further cases to reflect the implementation issues.  If you put implementation ahead of user issues as you apepar to advocate you will end up with a system the techies will love and the business will not use.

For the vast majority of business software being build from scratch this works fine.  It will fall down when the requirement itself is technical or you are faced with implementing on top of an existing system (eg modifying SAP).  

When implementing on an existing package requirements and hence test cases have to reflect the underlying technology in use, and its the role of the professional business analyst or solutions architect to help the business shape requirements so that they can be easily implemented in the pre-defined technology.

Its not difficult (conceptually) it becomes difficult due to people issues such as office politics, poor management and poor communications.</description>
		<content:encoded><![CDATA[<p>When defining a user story you need to make it as implementation independent as possible so that your test cases then reflect the the business functionality you are building.  When you move into implementation design / build you then build further cases to reflect the implementation issues.  If you put implementation ahead of user issues as you apepar to advocate you will end up with a system the techies will love and the business will not use.</p>
<p>For the vast majority of business software being build from scratch this works fine.  It will fall down when the requirement itself is technical or you are faced with implementing on top of an existing system (eg modifying SAP).  </p>
<p>When implementing on an existing package requirements and hence test cases have to reflect the underlying technology in use, and its the role of the professional business analyst or solutions architect to help the business shape requirements so that they can be easily implemented in the pre-defined technology.</p>
<p>Its not difficult (conceptually) it becomes difficult due to people issues such as office politics, poor management and poor communications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Itay Maman</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1829</link>
		<dc:creator>Itay Maman</dc:creator>
		<pubDate>Sat, 05 Sep 2009 08:23:26 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1829</guid>
		<description>Just read Elisabeth Hendrickson’s post about auto-generated rspec tests. The code that she published (http://github.com/ehendri/Ruby-Slider-Puzzle-Sample/tree/master) resonated with this post main theme.

Look for example at puzzle.rb and its tests in   	 puzzle_spec.rb. The primary functionality that puzzle class should supply is that of solving the puzzle. Yet, the tests are not focused on this functionality. Instead the tests examine the underlying decisions. 

On the one hand this may seem as testing impl. rather than functionality. On the other hand, you can literally see the TDD evolution of the class and get a sense of the particularities of the  algorithm without looking at the code, which is neat.</description>
		<content:encoded><![CDATA[<p>Just read Elisabeth Hendrickson’s post about auto-generated rspec tests. The code that she published (<a href="http://github.com/ehendri/Ruby-Slider-Puzzle-Sample/tree/master" rel="nofollow">http://github.com/ehendri/Ruby-Slider-Puzzle-Sample/tree/master</a>) resonated with this post main theme.</p>
<p>Look for example at puzzle.rb and its tests in   	 puzzle_spec.rb. The primary functionality that puzzle class should supply is that of solving the puzzle. Yet, the tests are not focused on this functionality. Instead the tests examine the underlying decisions. </p>
<p>On the one hand this may seem as testing impl. rather than functionality. On the other hand, you can literally see the TDD evolution of the class and get a sense of the particularities of the  algorithm without looking at the code, which is neat.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: misko</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1820</link>
		<dc:creator>misko</dc:creator>
		<pubDate>Thu, 03 Sep 2009 16:17:31 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1820</guid>
		<description>@Franco,

Like anything, you can do TDD wrong, but that does not mean you should not do it.</description>
		<content:encoded><![CDATA[<p>@Franco,</p>
<p>Like anything, you can do TDD wrong, but that does not mean you should not do it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: misko</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1818</link>
		<dc:creator>misko</dc:creator>
		<pubDate>Thu, 03 Sep 2009 16:16:20 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1818</guid>
		<description>@Damien,

What about duplicate content? They are both posted by me.</description>
		<content:encoded><![CDATA[<p>@Damien,</p>
<p>What about duplicate content? They are both posted by me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin Hunter</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1817</link>
		<dc:creator>Justin Hunter</dc:creator>
		<pubDate>Thu, 03 Sep 2009 16:01:37 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1817</guid>
		<description>Misko,

Very good post.  My most recent blog post has a similar theme.  I had a different take on what software testers can learn from manufacturing though.

My blog post is here:  http://hexawise.wordpress.com/2009/08/25/what-else-can-software-development-and-testing-learn-from-manufacturing-dont-forget-design-of-experiments/

There are more similarities than most people realize between manufacturing and software testing (and more lessons to be learned from proven manufacturing practices than most software testers realize) .  In manufacturing scenarios (such as making transmissions and engines), before a final design is arrived at, prototypes are constructed.  There is a science to creating as few prototypes as possible and learning as much as possible from each prototype.  The field is known as Design of Experiments and firms like Toyota and Ford have followed DoE principles for years.  The analogy in software development during this phase is Google&#039;s web site optimizer.  It allows developers of web apps to experiment with different layouts and learn (with as few &quot;prototypes&quot; as possible) which works best.  After the Design of Experiments prototyping is completed, the &quot;best product&quot; should be tested.  This step is not typically considered &quot;Testing&quot; by QA/Testing organizations, but the next lesson learned is...

Design of Experiments methods can also be used in QA / software testing.  With a goal of finding as many defects in as few test cases as possible, Design of Experiments-based test case identification methods (such as pair-wise, orthogonal array-based,  and n-wise approaches) have been proven to find more than twice as many defects per tester hour as standard, manual methods of test case identification.  Links to an IEEE article backing that statement up are included in my blog post.

- Justin</description>
		<content:encoded><![CDATA[<p>Misko,</p>
<p>Very good post.  My most recent blog post has a similar theme.  I had a different take on what software testers can learn from manufacturing though.</p>
<p>My blog post is here:  <a href="http://hexawise.wordpress.com/2009/08/25/what-else-can-software-development-and-testing-learn-from-manufacturing-dont-forget-design-of-experiments/" rel="nofollow">http://hexawise.wordpress.com/2009/08/25/what-else-can-software-development-and-testing-learn-from-manufacturing-dont-forget-design-of-experiments/</a></p>
<p>There are more similarities than most people realize between manufacturing and software testing (and more lessons to be learned from proven manufacturing practices than most software testers realize) .  In manufacturing scenarios (such as making transmissions and engines), before a final design is arrived at, prototypes are constructed.  There is a science to creating as few prototypes as possible and learning as much as possible from each prototype.  The field is known as Design of Experiments and firms like Toyota and Ford have followed DoE principles for years.  The analogy in software development during this phase is Google&#8217;s web site optimizer.  It allows developers of web apps to experiment with different layouts and learn (with as few &#8220;prototypes&#8221; as possible) which works best.  After the Design of Experiments prototyping is completed, the &#8220;best product&#8221; should be tested.  This step is not typically considered &#8220;Testing&#8221; by QA/Testing organizations, but the next lesson learned is&#8230;</p>
<p>Design of Experiments methods can also be used in QA / software testing.  With a goal of finding as many defects in as few test cases as possible, Design of Experiments-based test case identification methods (such as pair-wise, orthogonal array-based,  and n-wise approaches) have been proven to find more than twice as many defects per tester hour as standard, manual methods of test case identification.  Links to an IEEE article backing that statement up are included in my blog post.</p>
<p>- Justin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jake</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1816</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Thu, 03 Sep 2009 16:00:24 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1816</guid>
		<description>Using BDD techniques you can create tests that read like stories:

[Test]
public void ShouldSortOnDate()
{
	GivenSort(SortBy.DateDescending);
	WhenPresenterInitializes();
	ThenDateSortIs(SortDirection.Descending);
}

Hiding the implementation details in helper methods allows the tests to read like stories and gives the next person who comes to the tests the description of the behavior of the test prior to them needing to look at the nitty-gritty of the implementation details.</description>
		<content:encoded><![CDATA[<p>Using BDD techniques you can create tests that read like stories:</p>
<p>[Test]<br />
public void ShouldSortOnDate()<br />
{<br />
	GivenSort(SortBy.DateDescending);<br />
	WhenPresenterInitializes();<br />
	ThenDateSortIs(SortDirection.Descending);<br />
}</p>
<p>Hiding the implementation details in helper methods allows the tests to read like stories and gives the next person who comes to the tests the description of the behavior of the test prior to them needing to look at the nitty-gritty of the implementation details.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Franco Lombardo</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1813</link>
		<dc:creator>Franco Lombardo</dc:creator>
		<pubDate>Thu, 03 Sep 2009 07:36:25 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1813</guid>
		<description>Obviously writing test before the production code can lead to strongest test, nevertheless  lots of times  I saw TDD that produced brittle tests tied to particulars of the current implementation :-(</description>
		<content:encoded><![CDATA[<p>Obviously writing test before the production code can lead to strongest test, nevertheless  lots of times  I saw TDD that produced brittle tests tied to particulars of the current implementation <img src='http://misko.hevery.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Damien</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1812</link>
		<dc:creator>Damien</dc:creator>
		<pubDate>Thu, 03 Sep 2009 07:22:29 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1812</guid>
		<description>You work at Google. You should have heard about duplicate content no ?
http://googletesting.blogspot.com/2009/09/it-is-not-about-writing-tests-its-about.html</description>
		<content:encoded><![CDATA[<p>You work at Google. You should have heard about duplicate content no ?<br />
<a href="http://googletesting.blogspot.com/2009/09/it-is-not-about-writing-tests-its-about.html" rel="nofollow">http://googletesting.blogspot.com/2009/09/it-is-not-about-writing-tests-its-about.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joao Hornburg</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1807</link>
		<dc:creator>Joao Hornburg</dc:creator>
		<pubDate>Wed, 02 Sep 2009 21:12:02 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1807</guid>
		<description>Great post

I would apreciate some code examples of story-like tests</description>
		<content:encoded><![CDATA[<p>Great post</p>
<p>I would apreciate some code examples of story-like tests</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Itay Maman</title>
		<link>http://misko.hevery.com/2009/09/02/it-is-not-about-writing-tests-its-about-writing-stories/comment-page-1/#comment-1805</link>
		<dc:creator>Itay Maman</dc:creator>
		<pubDate>Wed, 02 Sep 2009 18:13:08 +0000</pubDate>
		<guid isPermaLink="false">http://misko.hevery.com/?p=553#comment-1805</guid>
		<description>Great post. 
It sheds light on a delicate issue that many programmers tend miss.</description>
		<content:encoded><![CDATA[<p>Great post.<br />
It sheds light on a delicate issue that many programmers tend miss.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
