<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gojko Adzic</title>
	<atom:link href="http://gojko.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net</link>
	<description>Building software that matters</description>
	<lastBuildDate>Mon, 08 Mar 2010 02:41:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Generating JUnit XML output files from FitNesse</title>
		<link>http://gojko.net/2010/03/08/generating-junit-xml-output-files-from-fitnesse/</link>
		<comments>http://gojko.net/2010/03/08/generating-junit-xml-output-files-from-fitnesse/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 02:40:28 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[fitnesse]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://gojko.net/2010/03/08/generating-junit-xml-output-files-from-fitnesse/</guid>
		<description><![CDATA[I just pushed a small change to JUnit integration support for FitNesse to github; hopefully this should be merged with Uncle Bob&#8217;s master branch soon. The change enables you to output test run stats in Junit XML files, which can then be picked up by Hudson, TeamCity and other CI servers and integrated into their [...]]]></description>
			<content:encoded><![CDATA[<p>I just pushed a small change to JUnit integration support for FitNesse to github; hopefully this should be merged with Uncle Bob&#8217;s master branch soon. The change enables you to output test run stats in Junit XML files, which can then be picked up by Hudson, TeamCity and other CI servers and integrated into their test history statistics. </p>
<p>To enable this feature, override the default test listener in the JUnitHelper instance you use for test runs (third constructor argument), and supply a JUnitXMLTestListener instance passing the folder where you want the XML files in the constructor argument. For example:</p>
<pre>

 String htmlOutputDir=new File(System.getProperty("java.io.tmpdir"),
                                  "fitnesse").getAbsolutePath();
  String xmlOutputDir=new File(System.getProperty("java.io.tmpdir"),
                                   "fitnesse-xml").getAbsolutePath();
  String fitNesseRootDir=".";
  JUnitXMLTestListener xmlTestListener=new JUnitXMLTestListener(xmlOutputDir);
  JUnitHelper helper =
      new JUnitHelper(fitNesseRootDir,htmlOutputDir,xmlTestListener);
    helper.assertTestPasses(".....");
 </pre>
<p><br clear="all" /></p>
<p>Grab <a href="http://github.com/gojko/fitnesse/">the source from my github repository</a>. Also, check out <a href="http://github.com/gojko/fitnesse/blob/master/src/fitnesse/junit/JUnitXmlTestListenerIntegrationTest.java">the full example</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/03/08/generating-junit-xml-output-files-from-fitnesse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceptance testing best practices</title>
		<link>http://gojko.net/2010/03/03/acceptance-testing-best-practices/</link>
		<comments>http://gojko.net/2010/03/03/acceptance-testing-best-practices/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:50:14 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[acceptance testing]]></category>
		<category><![CDATA[fitnesse]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1655</guid>
		<description><![CDATA[Here&#8217;s a video from a joint workshop that David Evans,  Mike Scott and I organised yesterday at Skills Matter. We talked about strategies to get the most out of acceptance tests (especially with FitNesse) and organised a group workshop to review some good and bad examples of acceptance tests &#8211; taken from my Hands [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a video from a joint workshop that David Evans,  Mike Scott and I organised yesterday at Skills Matter. We talked about strategies to get the most out of acceptance tests (especially with FitNesse) and organised a group workshop to review some good and bad examples of acceptance tests &#8211; taken from my <a href="http://neuri.co.uk/training">Hands On Acceptance Testing</a> workshop.</p>
<p><object width="300px" height="279px"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9877071&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9877071&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="300px" height="279px"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/03/03/acceptance-testing-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are tools necessary for acceptance testing, or are they just evil?</title>
		<link>http://gojko.net/2010/03/01/are-tools-necessary-for-acceptance-testing-or-are-they-just-evil/</link>
		<comments>http://gojko.net/2010/03/01/are-tools-necessary-for-acceptance-testing-or-are-they-just-evil/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 08:05:47 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[acceptance testing]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile acceptance testing]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[fit]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1633</guid>
		<description><![CDATA[While doing research for my new book, I was very surprised to find out that Jim Shore gave up on acceptance testing. I use his &#8220;describe-demonstrate-develop&#8221; process description all the time in my workshops, so I guess I better stop doing that. Jim Shore wrote:
My experience with Fit and other agile acceptance testing tools is [...]]]></description>
			<content:encoded><![CDATA[<p>While doing research for my new book, I was very surprised to find out that <a href="http://jamesshore.com">Jim Shore gave up on acceptance testing</a>. I use his <a href="http://jamesshore.com/Blog/How-I-Use-Fit.html">&#8220;describe-demonstrate-develop&#8221; process description</a> all the time in <a href="http://neuri.co.uk/training">my workshops</a>, so I guess I better stop doing that. Jim Shore <a href="http://jamesshore.com/Blog/The-Problems-With-Acceptance-Testing.html">wrote</a>:</p>
<blockquote><p>My experience with Fit and other agile acceptance testing tools is that they cost more than they&#8217;re worth. There&#8217;s a lot of value in getting concrete examples from real customers and business experts; not so much value in using &#8220;natural language&#8221; tools like Fit and similar.</p></blockquote>
<p>The two failure patterns that Shore describes in <a href="http://jamesshore.com/Blog/The-Problems-With-Acceptance-Testing.html">his post</a> are falling back on testers to write everything and merging acceptance and integration tests. I&#8217;ve experienced both of these myself, and it seems that they are common in general. We discussed both during the <a href="http://gojko.net/2009/09/24/top-10-reasons-why-teams-fail-with-acceptance-testing/">top 10 ways to fail with acceptance testing</a> openspace session at <a href="/tag/citcon">CITCON</a>  Europe last year. However, there are good ways to solve both problems. <span id="more-1633"></span></p>
<p>I never really expected customers to write anything themselves, but I was relatively successful in persuading them to participate in <a href="http://www.acceptancetesting.info/key-ideas/specification-workshop">specification workshops</a> that led to examples which were then converted to acceptance tests later. Another idea I discovered while doing the research for my new book is discussing the key examples with customers and then going off to write detailed test pages, which then get verified by the customers. The third good idea is doing ad-hoc specification writing sessions when a developer needs information, by involving a tester and a business analyst. This is a lot less formal than a specification workshop and gives you similar benefits if you have all the knowledge in the room (or readily available) most of the time. </p>
<p>Not preserving acceptance tests as a separate group and mixing quick and slow tests is something that most people, at least according to my ongoing research, get burned with at some point but again teams learn from that and improve.</p>
<p>One of the biggest benefits from acceptance testing for me was that the teams finally get a source of information on what goes on in the system as reliable as the code itself. Without acceptance tests, code is the only thing you can really trust and any other documentation gets outdated very quickly. And such tests are much easier to read and understand than the code because they are on a higher level and in a natural language. Having a <a href="http://www.acceptancetesting.info/key-ideas/live-documentation">live specification</a> helps me quite a lot when change requests come in later. It also helps with handing over and taking over code. Acceptance tests stay relevant throughout the project because they are automated, and automated tests are kept up to date in order for them to pass. Automation, and consequently a tool, are necessary to get this benefit. With informal agreements and on-site reviews that Jim Shore describes, I guess something else needs to be in place to facilitate this. </p>
<p>I agree with Shore that it takes a while for the problems with tools such as FIT to surface, but I&#8217;m not sure whether that is tool related or not. Most people I spoke to so far said that it took them between six months and a year to discover that acceptance testing isn&#8217;t about the tools but about communication, and that the biggest benefit is in the examples as Shore wrote. A notable exception to six months to a year rule was <a href="http://lisacrispin.com/wordpress/">Lisa Crispin</a>&#8217;s team who generally started out knowing what they need (but that&#8217;s because she had done it before). Clear examples and improved communication are the biggest benefits of the process, but using a tool brings some additional nice benefits as well. A tool gives us an impartial measure of progress. <a href="http://codebetter.com/blogs/ian_cooper/">Ian Cooper</a> said during the interview for my new book that &#8220;the tool keeps developers honest&#8221;, and I can certainly relate to that. With tests that are evaluated by an impartial tool, &#8220;done&#8221; is really &#8220;what everyone agreed on&#8221;, not &#8220;almost done with just a few things to fill in tomorrow&#8221;. I&#8217;m not sure whether an on-site review is enough to guard against this completely.</p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/03/01/are-tools-necessary-for-acceptance-testing-or-are-they-just-evil/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>FitNesse clinic, March 2nd, London</title>
		<link>http://gojko.net/2010/02/12/fitnesse-clinic-march-2nd-london/</link>
		<comments>http://gojko.net/2010/02/12/fitnesse-clinic-march-2nd-london/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 19:13:14 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[fitnesse]]></category>

		<guid isPermaLink="false">http://gojko.net/2010/02/12/fitnesse-clinic-march-2nd-london/</guid>
		<description><![CDATA[On March 2nd, Dave Evans and I are running a FitNesse clinic in central London starting at 6:30 PM. This is a unique opportunity to get your FitNesse tests reviewed for free and get help with writing and maintaining FitNesse tests and suites. 
Dave and I will discuss some of the common pitfalls faced by [...]]]></description>
			<content:encoded><![CDATA[<p>On March 2nd, Dave Evans and I are running a FitNesse clinic in central London starting at 6:30 PM. This is a unique opportunity to get your FitNesse tests reviewed for free and get help with writing and maintaining FitNesse tests and suites. </p>
<p>Dave and I will discuss some of the common pitfalls faced by teams in getting to grips with Fitnesse. We will show examples of good and bad acceptance tests, illustrating how different styles of fixtures lend themselves to different types of tests. We also highlight some of the features of Fitnesse that allow you to keep your tests expressive, useful and easy to maintain.</p>
<p>Make this interactive and bring your own test examples to be discussed, critiqued and improved upon in a group workshop.</p>
<p>For more information and to register, see<br />
<a href="http://skillsmatter.com/podcast/agile-testing/david-evans-gojko-adzic-interactive-agile-acceptance-testing-clinic">http://skillsmatter.com/podcast/agile-testing/david-evans-gojko-adzic-interactive-agile-acceptance-testing-clinic</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/02/12/fitnesse-clinic-march-2nd-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Billboard over Moscow</title>
		<link>http://gojko.net/2010/02/10/the-billboard-over-moscow/</link>
		<comments>http://gojko.net/2010/02/10/the-billboard-over-moscow/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:37:16 +0000</pubDate>
		<dc:creator>gojko</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[accelinnova]]></category>
		<category><![CDATA[bsm]]></category>
		<category><![CDATA[moscow]]></category>
		<category><![CDATA[purpose alignment model]]></category>

		<guid isPermaLink="false">http://gojko.net/?p=1614</guid>
		<description><![CDATA[Effective prioritisation is key to delivering value with a software project. The MoSCoW model, splitting features into Must have, Should have, Could have and Would like (really Won&#8217;t have), theoretically does the trick. However, I found it very hard to apply in practice &#8211;  too many things end up in the Must category. I [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://gojko.s3.amazonaws.com/billboard.jpg" align="left" style="width:400px;border:1px solid black; margin:5px 5px 5px 5px" />Effective prioritisation is key to delivering value with a software project. <a href="http://en.wikipedia.org/wiki/MoSCoW_Method" target="_blank">The MoSCoW model</a>, splitting features into Must have, Should have, Could have and Would like (really Won&#8217;t have), theoretically does the trick. However, I found it very hard to apply in practice &#8211;  too many things end up in the Must category. I recently came across an alternative model that seems to solve that problem.<span id="more-1614"></span></p>
<p>The MoSCow model, at least when I tried to implement it, suffered from the <i>Priority 1 Paradox</i>: </p>
<blockquote><p>The more we ask customers to narrow down priority 1 features the more they&#8217;ll be scared to leave anything out of that category.</p></blockquote>
<p>The complaint is always the same: everything must be there &#8211; especially all the old functionality when replacing a legacy system. Prioritising so that most of the stuff ends up as &#8216;Must&#8217; pretty much defeats the point of the exercise.</p>
<p>I am currently reading <a target="_blank" href="http://www.amazon.com/gp/product/0321572882?ie=UTF8&#038;tag=swingwiki-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321572882">Stand Back and Deliver: Accelerating Business Agility</a><img src="http://www.assoc-amazon.com/e/ir?t=swingwiki-20&#038;l=as2&#038;o=1&#038;a=0321572882" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Niel Nickolaisen and colleagues from <a href="http://www.accelinnova.com/">Accelinova</a>. Among other interesting ideas, I found a real gem. This book advises aligning business processes (equally applicable to software features) along two axes: mission critical and market differentiation. Nickolaisens calls this the <a target="_blank" href="http://www.informit.com/articles/article.aspx?p=1384195&#038;seqNum=2">Purpose Alignment Model</a>:</p>
<p><img src="http://gojko.s3.amazonaws.com/pam.png" style="border:1px solid black; margin:5px 5px 5px 5px" /></p>
<p>In a case study, the authors describe a discussion with a stakeholder who claimed that their IP protection was a differentiating factor. The authors then asked the VP of sales &#8216;<i>When was the last time you sealed a deal by touting Lifebrands&#8217; excellence in IP protection? When was the last time you felt you should include the IP protection process in sales presentations and collateral?</i>&#8216; (pp 36) They also offer a simpler version of this rule of thumb as a <i>Billboard filter</i>: </p>
<blockquote><p>Would you put this feature on a billboard?</p></blockquote>
<p>If so, the feature is obviously differentiating and should be invested in. If not, this feature falls into the parity category at best. The introduction of the parity category which, as the authors repeatedly point out, holds mission-critical features which are not billboard material, seems as a great way to avoid the Priority 1 paradox. This is to intentionally avoid the feeling that anything not Priority 1 won&#8217;t be delivered. The system must have these things too offer a full service, but it just isn&#8217;t worth investing too much or being too creative there. Nickolaisen and co-authors suggest that the Parity category is where companies should apply industry best practices and streamline processing. </p>
<p>Overdoing it in this category might actually be damaging to the bottom line. In another case study, the authors describe a project to automate complicated pricing rules. After it was identified that complex pricing isn&#8217;t really billboard material, the project was completely turned on its head. Instead of implementing a complex rule engine, the pricing system was streamlined using industry best practices. It turned out that customers were actually happier with the new model, so simplifying a parity process increased  the revenue. This was possible because the stakeholders agreed that while the company must have an automated pricing system, it wasn&#8217;t a core differentiating factor.</p>
<p><a href="http://www.infoq.com/presentations/strategic-design-evans" target="_blank">Strategic design</a> ideas of Eric Evans also suggest some good guidelines what to do with such software: if the thing is available off the shelf (generic domains), buy it. If not, possibly get a third party to develop and maintain it. Evans calls these domains supporting, and they are prime candidates for outsourcing.</p>
<p><i>This article is part of my <a href="/tag/bsm">Building software that matters</a> series. <a href="/tag/bsm">See other articles here</a></i></p>
<p><b>Btw, I&#8217;ve created a <a target="_blank" href="http://groups.google.com/group/buildingsoftwarethatmatters">mailing list</a> for this topic so rather than commenting here, post your comments to the <a href="http://groups.google.com/group/buildingsoftwarethatmatters">Building Software That Matters</a> mailing list and let&#8217;s discuss them!</b> </p>
<p><i>Image credits:<a href="http://www.flickr.com/photos/ari/300233979/">Steve Rhodes</a></i></p>
]]></content:encoded>
			<wfw:commentRss>http://gojko.net/2010/02/10/the-billboard-over-moscow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.735 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-11 16:41:10 -->
