<?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>Agile at Work &#187; Acceptance Testing</title>
	<atom:link href="http://www.agileatwork.com/tag/acceptance-testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileatwork.com</link>
	<description>by Michael Valenty</description>
	<lastBuildDate>Sat, 10 Sep 2011 14:35:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Definition of Done</title>
		<link>http://www.agileatwork.com/definition-of-done/</link>
		<comments>http://www.agileatwork.com/definition-of-done/#comments</comments>
		<pubDate>Sat, 30 May 2009 18:21:08 +0000</pubDate>
		<dc:creator>Michael Valenty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Acceptance Testing]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Technical Debt]]></category>

		<guid isPermaLink="false">http://blog.agileatwork.com/definition-of-done/</guid>
		<description><![CDATA[“If you don&#8217;t know where you are going, you will wind up somewhere else.” – Yogi Berra

When asked how a project is going, most programmers will offer one of two discreet responses. It’s either “I just started looking at the code” or “I’m done, I just need to clean up a few things.” Upon further [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>“If you don&#8217;t know where you are going, you will wind up somewhere else.” – Yogi Berra</p>
</blockquote>
<p>When asked how a project is going, most programmers will offer one of two discreet responses. It’s either “I just started looking at the code” or “I’m done, I just need to clean up a few things.” Upon further investigation, I have found that done means the hard part has been figured out and there is usually an IDE output window or a funky test web page running on localhost that can demonstrate this status.</p>
<p>The problem is that the <em>hard part</em> is really the <em>fun part</em>, and the <em>actual hart part</em> is the “…I just need to clean up a few things.” So, to remind me and the rest of the team what done means, we have the following definition posted prominently on the wall.</p>
<p><strong>1) Unit Tested</strong></p>
<p>This doesn’t need much of an explanation, but having a formal definition posted on the wall is a good reminder for a team new to unit testing.</p>
<p>Unit testing by itself is important, but the real boost comes from using a CI server. We use <a href="http://www.jetbrains.com/teamcity/">TeamCity</a> for our .NET projects and <a href="http://phpundercontrol.org/">phpUnderControl</a> for php projects.</p>
<p><strong>2) Acceptance Tested</strong></p>
<p>For our team, acceptance testing means that we deploy our new code to a demo server and write <a href="http://seleniumhq.org/">Selenium</a> tests for it. We export the selenium tests as <a href="http://www.phpunit.de/">phpUnit</a> fixtures that <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a> will run whenever our svn repository is updated. Before the selenium tests are run, we need to update our demo server, so we have CruiseControl call <i>http://ourdemoserver.com/svn-update.php</i> first.</p>
<p><strong>3) Packaged For Deployment</strong></p>
<p>For our .NET projects, we use a homegrown tool for packaging and deploying. It can stop/start IIS register/unregister COM+ objects and rollback across a farm. For php projects, we simply hand roll a zip file and use some lightweight scripts to unpack the files on the server with rollback ability.</p>
<p><strong>4) No Increased Technical Debt</strong></p>
<p>I ask myself if this code is going to be an asset that makes us stronger and able to respond more quickly to future business opportunities, or is it going to be a fragile liability that I will need to carefully tip-toe around 30 seconds after it’s deployed.</p>
<p>Just like a parent thinks their kid is the cutest kid ever, it can be hard to look at your own work when you’ve got your head wrapped around it and come to terms with the fact that you’re about to deploy some legacy code. I usually grab a coworker and walk through things while paying close attention to <a href="http://www.osnews.com/story/19266/WTFs_m">the only valid measurement of code quality</a>.</p>
<p><img title="wtfm" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="471" alt="wtfm" src="http://blog.agileatwork.com/wp-content/uploads/2009/05/wtfm.jpg" width="500" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileatwork.com/definition-of-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

