<?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>What Happens If I... &#187; Agile 2009</title>
	<atom:link href="http://blog.arlim.org/tag/agile-2009/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.arlim.org</link>
	<description>Kim Wallmark's Technical Wanderings</description>
	<lastBuildDate>Tue, 20 Jul 2010 05:45:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>If it hurts, kill something</title>
		<link>http://blog.arlim.org/2009/09/13/if-it-hurts-kill-something/</link>
		<comments>http://blog.arlim.org/2009/09/13/if-it-hurts-kill-something/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 02:58:15 +0000</pubDate>
		<dc:creator>Kim Wallmark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile 2009]]></category>
		<category><![CDATA[end-to-end tests]]></category>

		<guid isPermaLink="false">http://blog.arlim.org/?p=64</guid>
		<description><![CDATA[Two weeks ago at Agile 2009 Jim Shore and Arlo Belshee led an open-ended discussion session on end-to-end tests and how to get rid of them. Part of this session was lightning talks based on small-group discussion. This is a refinement of the lightning talk I gave. A lot of teams have a legacy test [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago at Agile 2009 Jim Shore and Arlo Belshee led an open-ended discussion session on end-to-end tests and how to get rid of them.  Part of this session was lightning talks based on small-group discussion.  This is a refinement of the lightning talk I gave.</p>
<blockquote><p>A lot of teams have a legacy test codebase to match their legacy code codebase.  Part of the solution to end-to-end testing for them is to find ways to whittle down their existing end-to-end tests.  Wholesale deletion is possible, but emotionally/politically difficult.  I propose piecewise deletion, starting with the most important areas.</p>
<p>Whenever an end-to-end test bites you &#8212; there&#8217;s a false positive, six hundred tests fail because you change one method, or you can&#8217;t change an assumption because too many tests call it &#8212; kill something that&#8217;s part of the problem.  Sometimes it&#8217;ll be obvious what to change: if this end-to-end test is failing for no good reason, remove it.  Sometimes it&#8217;ll be harder.  Instead of determining the exact right thing to remove, remove <em>something</em> and keep going.  Remove a helper method and the tests that use it.  Remove a test hook from the production code and the tests that use it.</p>
<p>If you keep repeating this action, you&#8217;ll slash away at the test code that causes the most problems.  This may mean that you have no tests left for some areas of the code.  That&#8217;s a valuable exposure of information: this code is so problematic that worthwhile tests cannot be written for it.  Now you know where to concentrate your refactoring and rewriting efforts.</p></blockquote>
<p>The original talk was focused on end-to-end tests, but I think this is a broader tool.  Whenever you have code that is a never-ending source of trouble and pain, start treating it more roughly.  Eradicate some of the mess each time you walk through the code, even if you don&#8217;t know where the absolute worst spots are.  There&#8217;s no sense in using laproscopic surgery on a leg that&#8217;s dead to the knee.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arlim.org/2009/09/13/if-it-hurts-kill-something/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

