<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-36533086.post7973153048578917460..comments</id><updated>2011-12-13T13:02:41.121+01:00</updated><category term='LINQ'/><category term='Visual Studio'/><category term='ÖreDev'/><category term='Salvation Army'/><category term='TFS'/><category term='SpecFlow'/><category term='VB.NET'/><category term='Life of a consultant'/><category term='MSBuild'/><category term='Fun'/><category term='SOA'/><category term='ASP.NET MVC'/><category term='C#'/><category term='BrassBand'/><category term='Sprint Planner Helper'/><category term='Web Design'/><category term='TDD'/><category term='CQRS'/><category term='Agile'/><category term='WCF'/><category term='Euphonium'/><category term='BDD'/><category term='Kanban'/><category term='Scrum'/><category term='Tools'/><category term='NHibernate'/><category term='KanbanBoards'/><category term='Marcus private'/><category term='SpecificationByExample'/><category term='DDD'/><category term='.NET'/><title type='text'>Comments on marcusoft.net: What i learned from 'From User stories to Acceptan...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.marcusoft.net/feeds/7973153048578917460/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html'/><author><name>Marcus Hammarberg</name><uri>http://www.blogger.com/profile/12641801738629569831</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_TI0jeIedRFk/SaGe8YGEdII/AAAAAAAAABE/9Q4_un92yVI/S220/marcuseuff2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36533086.post-4160545745240492394</id><published>2011-12-13T13:02:41.121+01:00</published><updated>2011-12-13T13:02:41.121+01:00</updated><title type='text'>Hello Oliver, 

brrr - being referred to as &amp;quot;...</title><content type='html'>Hello Oliver, &lt;br /&gt;&lt;br /&gt;brrr - being referred to as &amp;quot;the one who shall settle our argument&amp;quot; feels scary. I&amp;#39;ll give you my point of view and you&amp;#39;ll two will have to fight it out. :)&lt;br /&gt;&lt;br /&gt;I think that you&amp;#39;re right in that the scenario only can &amp;quot;guarantee&amp;quot; what is in it&amp;#39;s context. &lt;br /&gt;&lt;br /&gt;One can also wonder if it&amp;#39;s feasible to write scenarios for every thinkable possibility...&lt;br /&gt;&lt;br /&gt;I like Gjoko&amp;#39;s definition &amp;quot;Key examples&amp;quot; which I interpret as being &amp;quot;enough to understand the key business rules&amp;quot;. So the specifications you write on this level should not (in my opinion) be test of every thinkable permutation, but rather examples that are representative for the business logic and understand how it behaves. &lt;br /&gt;&lt;br /&gt;You could of course write tests for all possible permutations (or maybe not but a lot of them :)) but I see no reason to automate that end-to-end. Most likely those permutations will be faster and easier to implement with the use of mock-objects and you setting up a known state and test against that. &lt;br /&gt;Examples of this is how a page is rendered, or advanced business logic and calculations etc. &lt;br /&gt;&lt;br /&gt;So, in my careful nature (:)), you are both right. But I think it&amp;#39;s better to focus the scenarios on the Key examples you need to understand the business rules.&lt;br /&gt;&lt;br /&gt;Well that&amp;#39;s my view on the matter</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/4160545745240492394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/4160545745240492394'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html?showComment=1323777761121#c4160545745240492394' title=''/><author><name>Marcus Hammarberg</name><uri>http://www.blogger.com/profile/12641801738629569831</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_TI0jeIedRFk/SaGe8YGEdII/AAAAAAAAABE/9Q4_un92yVI/S220/marcuseuff2.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1692699111'/></entry><entry><id>tag:blogger.com,1999:blog-36533086.post-1423584592676008300</id><published>2011-12-12T23:40:59.817+01:00</published><updated>2011-12-12T23:40:59.817+01:00</updated><title type='text'>Hi Marcus,

thanks very much for sharing your impr...</title><content type='html'>Hi Marcus,&lt;br /&gt;&lt;br /&gt;thanks very much for sharing your impressions from the workshop and all the advice you put together in your post. It was very inspiring to our team (teamaton.com) and we had a great spec writing session right the day after reading your post :-)&lt;br /&gt;&lt;br /&gt;Today, though, a tough question came up that my colleague and I were not able to answer for ourselves, even after almost an hour of lively discussion.&lt;br /&gt;&lt;br /&gt;Our problem is with the boundaries and responsibilities of a given feature and its scenarios. My colleague argued that writing a specification for a given feature should imply that there should be no more behavior than that specified in the scenarios for that feature and that the tests should guarantee that. I argued that a set of scenarios cannot possibly guarantee anything outside of its own scope - every scenario can&amp;#39;t even say anything about any other scenario in the given feature. For example, if we test the product page of our portal to contain certain elements, lets say a header and a picture, then in my opinion it does not imply that there can&amp;#39;t be other elements as well, e.g. a picture subtitle, unless I explicitly specify so, whereas my colleague argues that this should be implicit since otherwise we could produce a situation where all our scenarios would succeed but we would see something on the product page that was never meant to be there. This in turn would mean that we cannot rely 100% on our specifications to tell us if the current development state is ready to deploy. How do you approach this kind of problem?&lt;br /&gt;&lt;br /&gt;We would really appreciate your opinion on this hot topic!&lt;br /&gt;&lt;br /&gt;Cheers, Oliver</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/1423584592676008300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/1423584592676008300'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html?showComment=1323729659817#c1423584592676008300' title=''/><author><name>Oliver</name><uri>http://www.blogger.com/profile/06168851967658457497</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_e_CjR4Lliuc/TNqqRePZePI/AAAAAAAAABU/FG3dYwWzrvc/S220/o-square.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1091491337'/></entry><entry><id>tag:blogger.com,1999:blog-36533086.post-2330663522754126980</id><published>2011-12-12T23:39:12.968+01:00</published><updated>2011-12-12T23:39:12.968+01:00</updated><title type='text'></title><content type='html'>This comment has been removed by the author.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/2330663522754126980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/2330663522754126980'/><author><name>Oliver</name><uri>http://www.blogger.com/profile/06168851967658457497</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_e_CjR4Lliuc/TNqqRePZePI/AAAAAAAAABU/FG3dYwWzrvc/S220/o-square.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.contentRemoved' value='true'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1091491337'/></entry><entry><id>tag:blogger.com,1999:blog-36533086.post-7966059827862304327</id><published>2011-12-02T20:01:23.915+01:00</published><updated>2011-12-02T20:01:23.915+01:00</updated><title type='text'>Yes, absolutely! Thanks for the clarification :)</title><content type='html'>Yes, absolutely! Thanks for the clarification :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/7966059827862304327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/7966059827862304327'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html?showComment=1322852483915#c7966059827862304327' title=''/><author><name>Pawel Duda</name><uri>http://www.blogger.com/profile/03376986884496350112</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1416614806'/></entry><entry><id>tag:blogger.com,1999:blog-36533086.post-9054962289628492893</id><published>2011-12-01T11:08:20.837+01:00</published><updated>2011-12-01T11:08:20.837+01:00</updated><title type='text'>Hi Pawel -

When you write scenario or example you...</title><content type='html'>Hi Pawel -&lt;br /&gt;&lt;br /&gt;When you write scenario or example you want to write more than one example to show the different values and their expected results. &lt;br /&gt;&lt;br /&gt;But when should you stop? At 3? 4? 1000? 1001?&lt;br /&gt;&lt;br /&gt;That is a very hard question to answer in general terms as &amp;quot;it depends&amp;quot;. &lt;br /&gt;&lt;br /&gt;You should probably strive to have as few examples as possible and have them represent the different values that are interesting for the feature under test. &lt;br /&gt;&lt;br /&gt;So if the example is about people getting free delivery for 5 books then examples with 4 and 5 books might a good start. That shows that you don&amp;#39;t get free delivery for 4 books but do get free delivery with 5. That&amp;#39;s the boundary. &lt;br /&gt;&lt;br /&gt;But what can we more do? Can we &amp;quot;drill a hole&amp;quot; in the examples, break the knowledge they represent?&lt;br /&gt;&lt;br /&gt;Yes, maybe... What about something else than books? Let&amp;#39;s write an example with 1 CD. Should the customer get free delivery then? &amp;quot;No, it&amp;#39;s just for books&amp;quot; or maybe &amp;quot;Yes, it&amp;#39;s for CD&amp;#39;s and books&amp;quot;&lt;br /&gt;&lt;br /&gt;By using this technique we have not strengthen the examples and extended our knowledge. &lt;br /&gt;&lt;br /&gt;I hope this clarify this a bit</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/9054962289628492893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/9054962289628492893'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html?showComment=1322734100837#c9054962289628492893' title=''/><author><name>Marcus Hammarberg</name><uri>http://www.blogger.com/profile/12641801738629569831</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_TI0jeIedRFk/SaGe8YGEdII/AAAAAAAAABE/9Q4_un92yVI/S220/marcuseuff2.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1692699111'/></entry><entry><id>tag:blogger.com,1999:blog-36533086.post-5354969973070258625</id><published>2011-11-30T19:01:08.309+01:00</published><updated>2011-11-30T19:01:08.309+01:00</updated><title type='text'>Nice write-up! I wonder if you could explain a lit...</title><content type='html'>Nice write-up! I wonder if you could explain a little more on the concepts of &amp;#39;finding boundaries&amp;#39; and &amp;#39;breaking tests&amp;#39; (a.k.a. &amp;#39;finding holes in them&amp;#39;). Best greetings! :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/5354969973070258625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36533086/7973153048578917460/comments/default/5354969973070258625'/><link rel='alternate' type='text/html' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html?showComment=1322676068309#c5354969973070258625' title=''/><author><name>Pawel Duda</name><uri>http://www.blogger.com/profile/03376986884496350112</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.marcusoft.net/2011/11/what-i-learned-from-from-user-stories.html' ref='tag:blogger.com,1999:blog-36533086.post-7973153048578917460' source='http://www.blogger.com/feeds/36533086/posts/default/7973153048578917460' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1416614806'/></entry></feed>
