<?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 Pain Relief &#187; Tools</title>
	<atom:link href="http://agilepainrelief.com/notesfromatooluser/tools/feed" rel="self" type="application/rss+xml" />
	<link>http://agilepainrelief.com</link>
	<description>Best practices for your goals</description>
	<lastBuildDate>Tue, 09 Mar 2010 22:15:26 +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>Self Inflicted Agile Injuries</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/12/self-inflicted-agile-injuries.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/12/self-inflicted-agile-injuries.html#comments</comments>
		<pubDate>Sun, 20 Dec 2009 19:20:45 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/12/self-inflicted-agile-injuries/</guid>
		<description><![CDATA[ 
Offshoring is frequently promoted as a way to produce great products for far less money. So many software development companies boast about sending large amounts of their work to India or China to reduce costs. Unfortunately, in doing so they’re often reluctant to pay the price to create and maintain high-performance distributed teams.
Agile works [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/old/6a00d8341cc2cf53ef0120a76b6777970b-pi.png"><img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="/images/old/6a00d8341cc2cf53ef0120a76b67a8970b-pi.png" width="240" height="180" /></a> </p>
<p>Offshoring is frequently promoted as a way to produce great products for far less money. So many software development companies boast about sending large amounts of their work to India or China to reduce costs. Unfortunately, in doing so they’re often reluctant to pay the price to create and maintain high-performance distributed teams.</p>
<p>Agile works on the basis of a few simple principles:</p>
<ul>
<li><strong>Short Feedback Loops</strong>—which leads to iterations, TDD, … </li>
<li><strong>Radical Transparency</strong>—which leads to daily standup, demo/review, … </li>
<li><strong>Face-to-Face Communications</strong>—which leads to high trust, group problem solving, … </li>
<li><strong>Value</strong>—which leads to eliminating waste </li>
<li><strong>Continuous Improvement</strong>—which leads to retrospective, adoption of engineering practices </li>
</ul>
<p>Thinking back on every project that I’ve ever worked on (Agile or not), the quality of communications was a good predictor of success. So when we run distributed teams, there has to be a focus on making communications work.</p>
<p>At best, the typical approach to this problem is to buy web cams, fancy video- conferencing software, and conduct our meetings sitting in front of them. But that misses the point—these devices improve the quality of communications but not enough. They don’t build trust. To really build trust, you have to meet face to face for at least a week. Unfortunately, trust is weakened through the course of a year, so it has to be renewed. At a minimum, team members should visit each other twice a year.</p>
<p>So, if you really want to get a high-performing team—don’t underestimate the real costs. Be sure to budget for travel—a minimum of twice a year to build and maintain trust. Don’t shortchange your distributed teams.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/12/self-inflicted-agile-injuries.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Random Notes on Staying A Little Bit Organized</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/12/random-notes-on-staying-a-little-bit-organized.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/12/random-notes-on-staying-a-little-bit-organized.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 09:38:07 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/12/random-notes-on-staying-a-little-bit-organized/</guid>
		<description><![CDATA[ 
Almost exactly three years ago, I was trying to use David Allen’s &#34;Getting Things Done&#34; (GTD) system, and I wasn’t seeing the benefits he promised. In the end, I found that it just helped me thrash. I suspect the problem was more my focus than his system—but at end of the day, his approach [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mylifeorganized.net/" target="_blank"><img style="border-right-width: 0px; margin: 0px 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="/images/old/6a00d8341cc2cf53ef0128764604d6970c-pi.png" width="240" height="162" /></a> </p>
<p>Almost exactly three years ago, I was trying to use <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FGetting-Things-Done-Stress-Free-Productivity%2Fdp%2F0142000280%2Fsr%3D8-1%2Fqid%3D1171997282%3Fie%3DUTF8%26s%3Dbooks&amp;tag=notesfromatoo-20&amp;linkCode=ur2&amp;camp=17%20">David Allen’s &quot;Getting Things Done&quot;</a><a href="http://www.agilepainrelief.com/images/WindowsLiveWriter/RandomNotesonStayingALittleBitOrganized_A090/clip_image001.gif"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.agilepainrelief.com/images/WindowsLiveWriter/RandomNotesonStayingALittleBitOrganized_A090/clip_image001_thumb.gif" width="1" height="1" /></a> (GTD) system, and I wasn’t seeing the benefits he promised. In the end, I found that it just helped me thrash. I suspect the problem was more my focus than his system—but at end of the day, his approach just didn’t resonate with me.</p>
<p>Today, my system is a little closer to a hybrid of <a href="http://www.markforster.net/autofocus-system/">Mark Forester’s AutoFocus</a> and <a href="http://www.pomodorotechnique.com/">Francesco Cirillo’s Pomodoro Technique</a>. I still use <a href="http://www.mylifeorganized.net/">MLO</a> as my task manager but on a more granular level than I used to. Instead of slaving over MLO constantly, now I use it to help generate my list for the day. I use MLO to keep track of a large list of tasks. Mostly, I just use the outline to remind me of things I want to tackle. Every day I glance at the TODO view to make sure that there isn’t anything that is date sensitive that I’ve lost track of. Once it comes to committing to tasks for a particular day, I often use index cards using MLO, email, and anything else as inputs. At the end of a day (sometimes two), I take anything that remains in the card and put into MLO. Then I tear up the card, <i>which is probably the most fun part</i>.</p>
<p>Other habits:</p>
<ul>
<li>I sweep my tabs in Firefox every few days and move stuff to reading lists in MLO. </li>
<li>Once/Twice a week I go offline and go through my email. </li>
<li>Once a week I take some time to reflect—what is going well, what needs improvement, what do I&#160; have the energy to improve, and what one thing can I do next week to improve it. Aka a retrospective. <i>This is the hardest one to maintain—because you’re tempted to skip it and get more &quot;work&quot; done. Yet, it’s the most important because it drives real improvement.</i></li>
</ul>
<p>I use the Pomodoro Technique for the following:</p>
<ul>
<li>a reminder to stay on task </li>
<li>a way of doing a rough estimation every morning </li>
</ul>
<p>Also, on a two-monitor setup under Win7, I dock MLO on the far left and leave it in outline mode, where I can always see other things I want to do.</p>
<p>Other tools I use include <a href="http://www.thornsoft.com/index.htm">ClipMate Clipboard Extender</a> because it allows me handle more than one item in the clipboard and to clean (i.e., remove html, etc.).    </p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/12/random-notes-on-staying-a-little-bit-organized.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tool Vendors Reply to My Agile Challenge</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/11/tool-vendors-reply.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/11/tool-vendors-reply.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:39:16 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/11/tool-vendors-reply/</guid>
		<description><![CDATA[Last week I challenged Agile Tool Vendors, and the post got a little bit of attention. I received replies from Rally: How Agile is Rally?, Danube: How Agile is Danube?, and MicroTool: How We Use Agile to Develop Our Tools?.
In addition there were several comments with replies: Robert Dempsey:
CEO and Founder of Atlantic Dominion Solutions. [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right-width: 0px; margin: 0px 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="/images/old/6a00d8341cc2cf53ef0120a6b7de12970b-pi.png" width="240" height="160" />Last week I <a href="http://www.notesfromatooluser.com/2009/11/my-challenge-to-agile-tool-vendors.html">challenged Agile Tool Vendors</a>, and the post got a little bit of attention. I received replies from Rally: <a href="http://www.rallydev.com/engblog/2009/11/11/how-agile-is-rally/">How Agile is Rally?</a>, Danube: <a href="http://blogs.danube.com/how-agile-is-danube">How Agile is Danube?</a>, and MicroTool: <a href="http://www.microtool.de/blog/post/How-we-use-Agile-to-develop-our-tools.aspx">How We Use Agile to Develop Our Tools</a>?.</p>
<p>In addition there were several comments with replies: <a href="http://blog.adsdevshop.com/" target="_blank">Robert Dempsey</a>:</p>
<p>CEO and Founder of Atlantic Dominion Solutions. We developed Scrum&#8217;d: <a href="http://www.scrumd.com.">http://www.scrumd.com.</a> A great post and an excellent challenge. To answer your questions:</p>
<blockquote><p># Your Definition of Done</p>
<p>We define done for each user story. Acceptance criteria includes the behavior a user can expect from the app when using it, the workflow for the feature, that it needs to be tested (and how it will be tested), any validations that occur, and if there is documentation for the feature that it is updated.</p>
<p># Whether you use TDD? Or at least Unit Testing?</p>
<p>We do full TDD for all our stories. We didn’t start out that way, but now that we have a full test suite, we keep it that way. Also, if a bug is found, then a test needs to be written for that and the code fixed.</p>
<p># What do you do for Acceptance Testing?</p>
<p>We have staging servers set up for internal testing. We also have a few select customers that we let into our staging servers, and I show (in person) some of our current and potential clients the features to get their feedback as well. In addition, we use Get Satisfaction for our support site and ask that commentators who suggested features that we implement to check out the release and see if it’s what they wanted.</p>
<p># How often do you release?</p>
<p>This depends. We try to do monthly releases. Sometimes it’s longer, but typically it&#8217;s less. The release schedule really depends on the importance of features to our user community.</p>
<p># What did you learn in your last retrospective?</p>
<p>You don&#8217;t always get it right the first time, but anything you do release needs to work correctly. Also, continuous integration is a huge help as your product gets bigger, and of course, testing is an absolute necessity. We would rather delay a release to ensure quality than release stuff that won&#8217;t work.</p>
</blockquote>
<p><a href="http://www.tinypm.com">Marcin Niebudek</a> (creator of TinyPM)</p>
<blockquote><p>I like challenges, so&#8230;</p>
<p>Our DoD for stories:</p>
<ul>
<li>code meeting minimal requirements committed </li>
<li>unit tests passing </li>
<li>feature is working under FF, Chrome, and Opera </li>
<li>feature is working without any significant failures under IE </li>
<li>feature is tested and accepted by at least one team member that was not implementing the story </li>
</ul>
<p>Our DoD for release:</p>
<ul>
<li>WAR and .exe distros built successfully </li>
<li>all unit test passing </li>
<li>all functional bugs fixed </li>
<li>all UI bugs fixed or small UI bugs (mostly for IE) at least scheduled to be fixed </li>
<li>installation and upgrade documentation updated </li>
<li>installation tested on Windows and Linux </li>
<li>new features list updates at product web site </li>
</ul>
<p>Do we use TDD? Well, I would not say that because our coverage is not 100%, which means some of our code is not unit tested (glue code), but, yes, we do unit testing with &quot;test first&quot; style for all domain and business logic code, and we tend to shift into BDD style right now.</p>
<p>As our Product Owner is also an active developer, for acceptance testing, we tend to verify features within a team, as we have strong and common vision of a product within the team (see also acceptance in our DoD for stories). It’s a low ceremony process (as are all our processes in the team).</p>
<p>How often do we release? Every 2–3 months.</p>
<p>What have we learned from our last retrospective? That we need to shift into feature branches to be able to release small stories more often while the big ones are still in progress.</p>
<p>Do you see any flaws or warning signs in what I’ve posted here? Go on, say it… we’re always happy to improve…</p>
</blockquote>
<p>It would be fun to hear from Target Process, ThoughtWorks Mingle team, VersionOne, AgileBuddy, and anyone else I might have missed.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/11/tool-vendors-reply.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Quick Agile Links</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/11/quick-agile-links.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/11/quick-agile-links.html#comments</comments>
		<pubDate>Mon, 16 Nov 2009 16:18:14 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/11/quick-agile-links/</guid>
		<description><![CDATA[var dzone_url = &#39;[url]&#39;;var dzone_title = &#39;[title]&#39;;var dzone_blurb = &#39;[description]&#39;;var dzone_style = &#39;1&#39;;
An idea shamelessly stolen from O&#8217;Reilly Radar. Every week I will publish a short article with 4-6 relevant Agile links. I&#8217;m open to feedback on the frequency etc.
Given last weeks announcement from Jerry Weinberg, it seemed appropriate to kick of with a couple [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript">var dzone_url = &#39;[url]&#39;;</script><script type="text/javascript">var dzone_title = &#39;[title]&#39;;</script><script type="text/javascript">var dzone_blurb = &#39;[description]&#39;;</script><script type="text/javascript">var dzone_style = &#39;1&#39;;</script><script src="http://widgets.dzone.com/links/widgets/zoneit.js"></script></p>
<p>An idea shamelessly stolen from <a href="http://radar.oreilly.com/2009/11/four-short-links-16-november-2.html" target="_blank">O&rsquo;Reilly Radar</a>. Every week I will publish a short article with 4-6 relevant Agile links. I&rsquo;m open to feedback on the frequency etc.</p>
<p>Given last weeks <a href="http://www.caringbridge.org/visit/geraldmweinberg" target="_blank">announcement from Jerry Weinberg</a>, it seemed appropriate to kick of with a couple of items related to him:</p>
<ul>
<li>Jerry as &ldquo;<a href="http://www.nehrlich.com/blog/2009/11/10/jerry-weinberg/" target="_blank">freaking people Ninja</a>&rdquo; &#8211; Eric Nehrlich (the Unrepentant Generalist) reflects on a session at AYE with Jerry.</li>
<li>&ldquo;<a href="http://www.davewsmith.com/blog/?p=260" target="_blank">The View from Jerry&rsquo;s Shoulders</a>&rdquo; looks over his writing and comments on his many books. <em>While I like alot of Jerry&rsquo;s books I will admit that I&rsquo;ve found &ldquo;<a href="http://www.amazon.com/gp/product/0932633498?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0932633498">An Introduction to General Systems Thinking</a>&rdquo; a tough slog. I gather that <a href="http://www.amazon.com/gp/product/0385517254?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385517254">The Fifth Discipline: The Art &amp; Practice of The Learning Organization</a> (Peter Senge), maybe more to reading abilities. YMMV.</em></li>
</ul>
<p>The Scrum Alliance twittered about a new list: Scrum <a href="http://groups.google.com/group/scrumalliance">Alliance community discussion group</a>: &ldquo;All healthy discussion is welcome. Differences in opinion and thought are encouraged. Spam, abusive language and direct advertisements/attacks aimed at splintering the community&#8217;s energy are prohibited and violators will be warned/banned. Heated debate, differences of opinion, methods other than Scrum or desire for a different SA community group are all open topics. Please be respectful of each other and be mindful that email is often toneless and can therefore be easily taken wrong.&rdquo; <em>My take &ndash; this is a good place to discuss issues that would get you kicked off ScrumDev.</em><a href="http://blog.codecentric.de/en/2009/11/givenwhenthen-und-beispieltabellen-mit-dem-robot-framework/"><span style="font-weight: bold;"><br />
</span></a></p>
<p><a href="http://blog.codecentric.de/en/2009/11/givenwhenthen-und-beispieltabellen-mit-dem-robot-framework/">Given/When/Then And Example Tables Using the Robot Framework &ndash; </a>Shows how to BDD/ATDD style grammar&rsquo;s in <a href="http://robotframework.org/" target="_blank">RobotFramework</a>.</p>
<p><a href="http://www.agileway.com.br/2009/11/16/the-airplane-factory-game/" target="_blank">The Airplane Factory game</a>: &ldquo;The Airplane Factory Game is a simple game to introduce people to Agile and SCRUM. And also, it could be easily adapted to Lean, XP, etc. This article will explain briefly the game, showing the rules, some tips and results. Also, you will be able to download it&rdquo; <em>I&rsquo;ve not had a chance to try this game yet &ndash; but the premise does seem interesting.</em></p>
<p><em>Caveat Emptor &#8211; if you buy any of the books after clicking on my link I get 4% of the price. In all likelihood that means I might be able to afford a coffee or two.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/11/quick-agile-links.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Challenge to Agile Tool Vendors</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/11/my-challenge-to-agile-tool-vendors.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/11/my-challenge-to-agile-tool-vendors.html#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:10:30 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/11/my-challenge-to-agile-tool-vendors/</guid>
		<description><![CDATA[ I keep on seeing announcements for the next great Agile Task Tracking tool. I just saw one posted to Scrum Development where it&#8217;s author said: &#8220;I haven&#8217;t done much testing, so if you find a bug and want me to fix it let me know  &#8221;.
My reply: Congrats I&#8217;m sure you have an [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/old/6a00d8341cc2cf53ef0128756f8daf970c-pi.png"><img width="240" height="112" border="0" align="right" title="image" style="border: 0px none ; margin: 0px 0px 0px 5px; display: inline;" src="/images/old/6a00d8341cc2cf53ef0120a66e3ea7970b-pi.png" alt="image" /></a> I keep on seeing announcements for the next great Agile Task Tracking tool. I just saw one posted to <a target="_blank" href="http://groups.yahoo.com/group/scrumdevelopment/message/42645">Scrum Development</a> where it&rsquo;s author said: &ldquo;I haven&#8217;t done much testing, so if you find a bug and want me to fix it let me know <img src='http://agilepainrelief.com/site/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &rdquo;.</p>
<p>My reply: Congrats I&#8217;m sure you have an excellent application. I&#8217;m wondering if you see the irony &#8211; you&#8217;re posting to an Agile group and say that your app has hardly been tested? What is your definition of Done? Do you use TDD? At least Unit Testing? What was your approach to acceptance testing?</p>
<h4>My Promise</h4>
<p>Here is my promise to all of my future clients, I won&#8217;t show you an agile tool that wasn&#8217;t developed using Agile methods. From future tool suppliers I need to know:</p>
<ul>
<li>Your Definition of Done</li>
<li>Whether you use TDD? Or at least Unit Testing?</li>
<li>What do you do for Acceptance Testing?</li>
<li>How often do you release?</li>
<li>What did you learn in your last retrospective?</li>
<li>&#8230;.</li>
</ul>
<p>If you can&rsquo;t answer these questions I&rsquo;m not interested in your tool.</p>
<p><em>Update I mis-understood the author&#8217;s intent. He&#8217;s not releasing a tool, so much as testing the waters to see if there is any interest. For these purposes I think he did the right thing. I still stand behind the statement I would show a client a tool where the vendor couldn&#8217;t answer the above questions.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/11/my-challenge-to-agile-tool-vendors.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Code Smells -&gt; Refactoring -&gt; Unit Tests</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/11/code-smells-refactoring-unit-tests.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/11/code-smells-refactoring-unit-tests.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:07:30 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/11/code-smells-refactoring-unit-tests/</guid>
		<description><![CDATA[ Two weeks ago I gave an introductory tutorial on “From Code Smells to Unit Tests” (pdf) at Agile Tour Toronto (thanks to the organizers for a great conference). The slides presented an introduction to Technical Debt, SOLID Principles, The Sea of Complexity, Basic Code Smells, Refactoring and Unit Testing Basics, and Good Practices, Bad [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/old/6a00d8341cc2cf53ef0120a65019ff970b-pi.jpg"><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Striped Skunk - Mephitis mephitis" border="0" alt="Striped Skunk - Mephitis mephitis" align="left" src="/images/old/6a00d8341cc2cf53ef0120a6501a04970b-pi.jpg" width="240" height="240" /></a> Two weeks ago I gave an introductory tutorial on “<a href="http://tooluser.typepad.com/Code%20Smells%20to%20Unit%20Tests.pdf">From Code Smells to Unit Tests</a>” (pdf) at <a href="http://www.torontoagilecommunity.org/">Agile Tour Toronto</a> (thanks to the organizers for a great conference). The slides presented an introduction to Technical Debt, <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID Principles</a>, The Sea of Complexity, Basic Code Smells, Refactoring and Unit Testing Basics, and Good Practices, Bad Practices. As usual, the <a href="http://tooluser.typepad.com/Code%20Smells%20to%20Unit%20Tests.pdf">slides</a> were only taste of what was said. In the session, two elements didn’t work: First, I wasn’t expecting to have to explain <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID Principles</a>—I was caught off guard and was ill prepared. Second, the pair Refactoring Demo tanked. The plan was to invite audience members up to refactor Martin Fowler’s Movie Example (git hub <a href="http://github.com/mlevison/CodeSmells">browseable</a>, <a href="http://tooluser.typepad.com/Fowler%20Movie%20Refactoring.zip">zip file</a>) and <a href="http://agilepainrelief.com/images/old/6a00d8341cc2cf53ef0120a6a586ee970c-pi.jpg"></a></a>then they <a href="/images/old/6a00d8341cc2cf53ef0120a6a586ee970c-pi.jpg"><img style="border-right-width: 0px; margin: 5px 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Sea of Complexity" border="0" alt="Sea of Complexity" align="right" src="/images/old/6a00d8341cc2cf53ef0120a6501a07970b-pi.jpg" width="360" height="178" /></a>would make small improvements five minutes at a time.The goal was to help people <a href="http://www.notesfromatooluser.com/2009/11/learning-best-approaches-for-your-brain-slide-deck.html">integrate</a> what we had already covered in the seminar by doing it live. There has to be another way of providing an integration event. Basically, I would need to give the audience a way for experiencing refactoring for themselves.</p>
<p> <script type="text/javascript">var dzone_url = '[url]';</script><script type="text/javascript">var dzone_title = '[title]';</script><script type="text/javascript">var dzone_blurb = '[description]';</script><script type="text/javascript">var dzone_style = '1';</script><script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script>
<p>Please try the Movie Example (git hub <a href="http://github.com/mlevison/CodeSmells" target="_blank">browseable</a>, <a href="http://tooluser.typepad.com/Fowler%20Movie%20Refactoring.zip" target="_blank">zip file</a>) and see how far you can get with some simple refactorings.</p>
<p>References:</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/1933988274?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1933988274">The Art of Unit Testing: with Examples in .</a><a href="http://www.amazon.com/gp/product/1933988274?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1933988274">NET</a> (<a href="http://www.amazon.ca/gp/product/1933988274?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=1933988274">Amazon.ca</a>) – Roy Osherove (.NET and soon a Java version) </li>
<li><a href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201485672">Refactoring: Improving the Design of Existing </a><a href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201485672">Code</a> (<a href="http://www.amazon.ca/gp/product/0201485672?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0201485672">Amazon.ca</a>) – Martin Fowler </li>
<li><a href="http://www.amazon.com/gp/product/0321213351?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321213351">Refactoring to Patterns</a> (<a href="http://www.amazon.ca/gp/product/0321213351?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0321213351">Amazon.ca</a>) – Joshua Kerievsky </li>
<li><a href="http://www.amazon.com/gp/product/0131495054?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0131495054">xUnit</a><a href="http://www.amazon.com/gp/product/0131495054?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0131495054"> Test Patterns: Refactoring Test Code</a> (<a href="http://www.amazon.ca/gp/product/0131495054?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0131495054">Amazon.ca</a>) &#8211; Gerard Meszaros </li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%255F1%255F34%26y%3D0%26field-keywords%3Dpragmatic%2520unit%2520testing%2520in%2520c%2520with%2520nunit%25202nd%2520edition%26">Pragmatic Unit Testing in C# with </a><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%255F1%255F34%26y%3D0%26field-keywords%3Dpragmatic%2520unit%2520testing%2520in%2520c%2520with%2520nunit%25202nd%2520edition%26">NUnit</a>(<a href="http://www.amazon.ca/gp/product/0977616673?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0977616673">Amazon.ca</a>) – Andy Hunt and Dave Thomas </li>
<li><a href="http://www.amazon.com/gp/product/0974514012?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0974514012">Pragmatic Unit Testing in Java with </a><a href="http://www.amazon.com/gp/product/0974514012?ie=UTF8&amp;tag=notesfromatoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0974514012">JUnit</a> (<a href="http://www.amazon.ca/gp/product/0974514012?ie=UTF8&amp;tag=nofratous-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0974514012">Amazon.ca</a>) – Andy Hunt and Dave Thomas </li>
</ul>
<p>BTW <a href="http://david.koontz.name/home/Projects/Entries/2008/4/13_Photo_of_the_Day.html" target="_blank">David Koontz</a> did the hard work of typing in Martin Fowler’s Movie sample – I just modernized it (Java 1.2 –&gt; 1.6).</p>
<p><em>Caveat Emptor &#8211; if you buy any of the books after clicking on my link I get 4% of the price. In all likelihood that means I might be able to afford a coffee or two.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/11/code-smells-refactoring-unit-tests.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile 2009 Monday Conference Sessions that catch my attention</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/08/agile-2009-monday-conference-sessions-that-catch-my-attention.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/08/agile-2009-monday-conference-sessions-that-catch-my-attention.html#comments</comments>
		<pubDate>Thu, 20 Aug 2009 16:49:58 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile 200x Conferences]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/08/agile-2009-monday-conference-sessions-that-catch-my-attention/</guid>
		<description><![CDATA[Last year just before Agile2008 I wrote a series of posts about my the sessions I planned to attend. Last year was used to help coordinate a diverse group of IBMers. This year the audience is smaller: me.
Monday Morning
9:00–11:00:&#160; will likely be open jam time for me. Come find me there and let’s talk.
11:00–12:30
Kanban adoption [...]]]></description>
			<content:encoded><![CDATA[<p>Last year just before <a href="http://www.notesfromatooluser.com/2008/07/agile-2008-tuesday-conference-sessions-i-want-to-attend-or.html">Agile2008</a> <a href="http://www.notesfromatooluser.com/2008/07/agile-2008-wednesday-conference-sessions-to-attend.html">I wrote a series</a> <a href="http://www.notesfromatooluser.com/2008/07/agile-2008-thursday-and-friday-sessions-to-attend.html">of posts about my the sessions</a> I planned to attend. Last year was used to help coordinate a diverse group of IBMers. This year the audience is smaller: me.</p>
<p><strong>Monday Morning</strong></p>
<p>9:00–11:00:&#160; will likely be open jam time for me. Come find me there and let’s talk.</p>
<p>11:00–12:30</p>
<p><a href="http://agile2009.agilealliance.org/node/2232">Kanban adoption at Software Engineering Professionals (SEP)</a> Chris Shinkle (45 minutes) – “In 2004, SEP tried adopting Agile practices. However, Agile failed to have the desired lasting impact across the entire organization. Things changed in 2007, when SEP implemented Kanban for the first time.”</p>
<p><a href="http://agile2009.agilealliance.org/node/2001">The Agile Playground</a> Tobias Mayer (90 minutes) – “Agility in Action… This session will introduce five interactive games that a facilitator can add to their toolkit for team and management training. The games all illustrate the principles and dynamics that support Agility. The rationale for this session is that people learn best by embodying the learning, rather than just receiving knowledge at a head level. All participants will be immersed in the games; there are no observers. At the end of the session the participants will have a set of games they can introduce into their own organization to enhance their own Agile adoption process.” From my own recent experience: <a href="http://www.notesfromatooluser.com/2009/08/learning-the-best-approaches-for-your-brain.html">Learning: the Best Approaches for Your Brain</a>, I can say that games are a very useful way to integrate knowledge. </p>
<p><a href="http://agile2009.agilealliance.org/node/480">Using the Agile Testing Quadrants to Plan Your Testing Efforts</a> Janet Gregory (90 minutes) – “Different testing approaches are needed because quality has many aspects besides functional requirements, such as making sure the code is reliable and secure. How do you know you’ve done the kinds of testing and quality processes are necessary for your product, especially on an agile project?”</p>
<p><strong>My choice</strong>: Tobias “Agile Playground” <em>Caveat: Tobias said he wants at least 16–24 for this workshop, so please don’t overwhelm him based on my recommendation.</em></p>
<p><strong>Monday Afternoon</strong></p>
<p>14:00–15:30</p>
<p>Help! Already too many amazing options. First a bunch of experience reports:</p>
<p><a href="http://agile2009.agilealliance.org/node/2272">Enterprise Agile Transformation: The Two Year Wall</a> Chuck Maples; <a href="http://agile2009.agilealliance.org/node/2844">Weaponized Scrum</a> Michael Marchi; <a href="http://agile2009.agilealliance.org/node/284">Accidental Adoption – The Story of Scrum at Amazon.com</a> Alan Atlas; <a href="http://agile2009.agilealliance.org/node/811">The Amazing Team Race – A Team-Based Agile Adoption</a> Gabino Roche, Jr., Belkis Vasquez; <a href="http://agile2009.agilealliance.org/node/145">The Covert Agilist</a> Ken Howard; <a href="http://agile2009.agilealliance.org/node/3030">Descending from the Architect&#8217;s Ivory Tower</a> Andrew Rendell. I’m interested in all of these, but they have some stiff competition:</p>
<p>In the end, it’s coming down to three options:</p>
<p><a href="http://agile2009.agilealliance.org/node/1209">When it just *has* to work: Agile Development in Safety-Critical Environments</a> Brian Shoemaker, Nancy Van Schooenderwoert</p>
<p><a href="http://agile2009.agilealliance.org/node/1809">What Does an Agile Coach Do?</a> Liz Sedley, Rachel Davies – <em>They’ve just written the book on the subject.</em></p>
<p><a href="http://agile2009.agilealliance.org/node/705">Creating Agile Simulations and Games for Coaches and Consultants</a> Elisabeth Hendrickson, Chris Sims (3 hours). This one is on the Manifesting Stage, for which I was a reviewer, and I championed the presentation. I love the idea of learning how to create games. <em>I’m really hoping that Elisabeth and Chris distill their knowledge into an InfoQ article.</em></p>
<p><strong>My choice</strong>: I’m torn between Rachel and Liz—What Does an Agile Coach Do? I’ve got to work on this a bit myself <em>and </em>Creating Agile Simulations and Games.</p>
<p>16:00–17:30 <em>I may be meeting with Linda in this time slot, so I will play this one by ear.</em></p>
<p><a href="http://agile2009.agilealliance.org/node/2341">Team Start-up: one of the first Agile Adoption activities</a> Lyssa Adkins (90 minutes): “Starting up an Agile team is one of the first things you might be asked to do when a company wants to “go Agile.” What do you need to know before starting up a team? In the start-up, how much do teams need to know about Agile before they “go”? What do they need to know about each other…what the project is all about…who they will become as a team? These and other questions are answered as we walk through good ways to start-up Agile teams.”</p>
<p><a href="http://agile2009.agilealliance.org/node/517">Giving and receiving effective feedback</a> Elizabeth Keogh (45 minutes) – “Find out why we give personal feedback, how to provide effective feedback, what makes feedback ineffective and how to deal with poorly phrased feedback. Learning what makes feedback effective helps you to seek your own feedback and improve, whilst being able to support the people around you.”—echoes of “<a href="http://www.notesfromatooluser.com/2009/06/giving-an-taking-design-criticism-with-rebecca-wirfs-brock.html">Giving an Taking Design Criticism with Rebecca Wirfs-Brock</a>”</p>
<p><a href="http://agile2009.agilealliance.org/node/1194">10 Temptations of an Agile Coach (new or experienced)</a> Stevie Borne (45 minutes): “Regardless of your coaching experience, there are a wide variety of temptations you can fall into that affect the quality of your coaching”</p>
<p><a href="http://agile2009.agilealliance.org/node/3070">Effective code reviews in agile teams</a> Wojciech Seliga, Slawomir Ginter – I was tempted by this one, but as I read the description it feels a bit like a vendor talk. “<em><s>The session includes a demo on how Atlassian Crucible integrated with leading IDEs via Atlassian IDE Connector facilitates the whole process</s></em><s>”&#160; Not interested. <em>To be clear I like Atlassian and their tools, but it feels like the talk has less value without their tools $$$. </em></s><em>See the exchange in the comments below.</em></p>
<p><strong>My Choice:</strong> Team Start-up: one of the first Agile Adoption activities—Lyssa Adkins</p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/08/agile-2009-monday-conference-sessions-that-catch-my-attention.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Urlseek.vmn.net or the Evil that is Hidden in Toolbars</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/03/urlseekvmnnet-or-the-evil-that-is-hidden-in-toolbars.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/03/urlseekvmnnet-or-the-evil-that-is-hidden-in-toolbars.html#comments</comments>
		<pubDate>Tue, 31 Mar 2009 14:28:25 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/03/urlseekvmnnet-or-the-evil-that-is-hidden-in-toolbars/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I need to capture the output of a program in the form of a PDF. A few minutes googling led me to <a href="http://sourceforge.net/projects/pdfcreator/">PDF Creator</a> (hosted at SourceForge). The application itself is great however when you install it a toolbar is bundled with it pdfforge. You don’t get an option its simply installed on your behalf – as ‘benefit’. The worst parts of the license agreement are below:</p>
<p><span id="more-137"></span></p>
<blockquote><p>1.1 Rights You Grant to Spigot.   <br />By installing the Toolbar on your computer, you expressly authorize and request Spigot to:    <br />a) act as your search agent to conduct inquiries on your behalf using Spigot&#8217;s search engine and technologies and partners&#8217; sites, and collect relevant information and display it to you;    <br />b) take actions Spigot deems appropriate to provide the Toolbar to you and to act on your behalf in obtaining information from partners and displaying that to you;    <br />c) read and interpret your search requests and results on certain sites and use this information to conduct searches on your behalf, offer alternative results and to personalize The Toolbar for you;    <br />…</p>
<p>f) modify your Microsoft Internet Explorer and/or Mozilla Firefox browser settings for the default search engine, address bar search, &#8220;DNS error&#8221; page, &#8220;404 error&#8221; page, and new tab page to facilitate more informative responses as determined by The Toolbar;   <br />…</p>
</blockquote>
<p>The real offender here is stealing 404 error pages. At my current client my wireless internet connection is sometimes less than perfect and when I ‘404’ errors I was redirected to Urlseek’s obnoxious website (sorry I won’t link to this crap). Some digging proves that you can uninstall the toolbar separately from the PDF creator, but even so this is low underhanded and unpleasant. In addition I suspect Sourceforge would be a little unhappy to hear that this nastiness is hosted on their site.</p>
<p>If you enjoyed this post, <a href="http://www.notesfromatooluser.com/2006/01/get_notes_from_.html">subscribe</a> now to get free updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/03/urlseekvmnnet-or-the-evil-that-is-hidden-in-toolbars.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Functional/Acceptance Test Tools for Web Apps</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2009/02/functionalacceptance-test-tools-for-web-apps.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2009/02/functionalacceptance-test-tools-for-web-apps.html#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:46:32 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2009/02/functionalacceptance-test-tools-for-web-apps/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>I used to be rich client guy, but my current client is building web apps and so all of a sudden I&#39;m a web app guy. Now I wish I’d paid more attention in the past. For my penance I promise to document whatever I learn on the forthcoming Agile Tools Functional Test Wiki (i.e. the wiki that we discussed last year at the AA-FTT meeting before A2008).  </p>
<p>My client is building an ASP .NET application and we&#39;re trying to decide how to test it. The issues I have to deal with:</p>
<ul>
<li>The two QA people have no coding experience so any tool that requires significant coding will require more development support. </li>
<li>The application will be run in IE on the IIS webserver. No other combinations need be tested. </li>
<li>The application is really a document creation and management system. Once the documents have been created and approved they&#39;re submitted to an outside system. </li>
</ul>
<p><span id="more-139"></span></p>
<p>My discoveries so far (via this list and the opensourcetesting.com) and some follow-up questions  <br /><strong>Tools</strong>:</p>
<ul>
<li><a href="http://seleniumhq.org/" target="_blank">Selenium</a> seems to be written about the most although some users complain about slowness and less than intuitive api. </li>
<li><a href="http://watin.sourceforge.net/" target="_blank">Watin</a> (now supports firefox) api seems to be well liked &#8211; but assertions have to be written in manually i.e. in code. </li>
<li><a href="http://www.apodora.org/">Apodora</a> &#8211; never heard of this tool before. From Open Source Testing: &quot;Apodora is a framework/tool for automating functional testing of web applications. It provides the user with programmatic control of the web browser allowing them to interact directly with the browser&#39;s user interface. It uses a database backend in order to remember how to find your html elements. This also makes your scripts easier to maintain.&quot; </li>
<li>FitNesse .NET &#8211; not entire convinced that the application is well suited to FitNesse style tests. But the team will make the decision. I really think I need to read chunks of <a href="http://gojko.net/fitnesse/book/" target="_blank">Gojko&#39;s first book</a> before passing any real judegement. </li>
<li><a href="http://webtest.canoo.com/webtest/manual/WebTestHome.html" target="_blank">Canoo WebTests</a> &#8211; xml may be hard for customers and non programmers to write. Am I missing the point? </li>
<li><a href="http://www.concordion.org/" target="_blank">Concordian</a> – seems like a clever idea that will create a lot of work for developers. </li>
</ul>
<p><strong>Frameworks/IDEs</strong></p>
<ul>
<li><a href="http://code.google.com/p/robotframework/" target="_blank">Robot Framework</a> &#8211; “Robot Framework is a generic keyword-driven test automation framework for acceptance level testing and acceptance test-driven development (ATDD). It has an easy-to-use tabular syntax for creating test cases and its testing capabilities can be extended by test libraries implemented either with Python or Java. Users can also create new keywords from existing ones using the same simple syntax that is used for creating test cases.” </li>
<li><a href="http://cubictest.openqa.org/" target="_blank">CubicTest</a> – an Eclipse Based IDE for Selenium, promises “…It makes web tests faster and easier to write, and provides abstractions to make tests more robust and reusable.” </li>
<li><a href="http://storytestiq.solutionsiq.com/wiki/Main_Page" target="_blank">StoryTestIQ</a> &#8211; “STIQ is a mashup of <a href="http://www.openqa.org/selenium-core">Selenium</a> and <a href="http://www.fitnesse.org">FitNesse</a>. It is &quot;wiki-ized&quot; Selenium with widgets and features that make it easier to write and organize Selenium tests.” </li>
</ul>
<p><strong>Questions</strong></p>
<p>Selenium </p>
<ul>
<li>Are the problems with Selenium slowness, need to insert delays after entering text and less than intitutive api real? (http://adamesterline.com/2007/04/23/watin-watir-and-selenium-reviewed/, <a href="http://www.testdrivendeveloper.com/2008/07/22/ComparingWatiNAndSeleniumForUITesting.aspx">http://www.testdrivendeveloper.com/2008/07/22/ComparingWatiNAndSeleniumForUITesting.aspx</a>, <a href="http://hammett.castleproject.org/?p=120" title="http://hammett.castleproject.org/?p=120">http://hammett.castleproject.org/?p=120</a>, ). </li>
<li>Do you spend more time debugging the tests than finding real problems? </li>
<li>Is Jay on the money is his positioning of Selenium: <a href="http://blog.jayfields.com/2008/07/immaturity-of-in-browser-testing.html" title="http://blog.jayfields.com/2008/07/immaturity-of-in-browser-testing.html">http://blog.jayfields.com/2008/07/immaturity-of-in-browser-testing.html</a> “Selenium is best used by developers or testers when testing the most valuable (to the business) <a href="http://en.wikipedia.org/wiki/Happy_path">happy paths of</a> a Javascript heavy web application that must function in several browsers” </li>
</ul>
<p>Watin</p>
<ul>
<li>Does it support dialogs now? </li>
<li>Does it suffer the same slowness problems as Selenium? </li>
<li>Is it as hard to use with IE as Selenium can be? </li>
<li>Is it compatible with Robot Framework? </li>
</ul>
<p>If you’re using Selenium are you using any wrapper framework/IDE?</p>
<p>If you enjoyed this post, <a href="http://www.notesfromatooluser.com/2006/01/get_notes_from_.html">subscribe</a> now to get free updates.</p>
<p>If you want to bring Mark into your organization for Training, Coaching or<br />
Consulting please visit the corporate site: <a href="http://theagileconsortium.com/" target="_blank">The Agile<br />
Consortium</a>.</p>
</p>
<p><script type="text/javascript">&lt;!--
google_ad_client = &quot;pub-5369880749076561&quot;;
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = &quot;728x90_as&quot;;
google_ad_type = &quot;text_image&quot;;
google_ad_channel = &quot;&quot;;
//--&gt;
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">&amp;nbsp;</script></p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2009/02/functionalacceptance-test-tools-for-web-apps.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Unit Testing in JavaScript</title>
		<link>http://agilepainrelief.com/notesfromatooluser/2008/11/unit-testing-in-javascript.html</link>
		<comments>http://agilepainrelief.com/notesfromatooluser/2008/11/unit-testing-in-javascript.html#comments</comments>
		<pubDate>Tue, 25 Nov 2008 17:11:25 +0000</pubDate>
		<dc:creator>Mark Levison</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://agilepainrelief.com/2008/11/unit-testing-in-javascript/</guid>
		<description><![CDATA[Last week a colleague asked for my help finding better unit test tools for Java Script. He&#8217;s done some digging on the state of the art with JavaScript unit tests and finds the whole lot wanting. His discoveries:




Tool
Pros
Cons


Jsunit: we already use it for some of our js code.


can be invoked from an ant build file
launches [...]]]></description>
			<content:encoded><![CDATA[<p>Last week a colleague asked for my help finding better unit test tools for Java Script. He&#8217;s done some digging on the state of the art with JavaScript unit tests and finds the whole lot wanting. His discoveries:</p>
<p><span id="more-149"></span></p>
<table width="736" cellspacing="0" cellpadding="2" border="2">
<tbody>
<tr>
<td width="133" valign="top"><strong>Tool</strong></td>
<td width="233" valign="top"><strong>Pros</strong></td>
<td width="367" valign="top"><strong>Cons</strong></td>
</tr>
<tr>
<td width="133" valign="top"><strong><a href="http://www.jsunit.net/">Jsunit</a></strong>: we already use it for some of our js code.</td>
<td width="233" valign="top">
<ul>
<li>can be invoked from an ant build file</li>
<li>launches browser to run the tests</li>
<li>eclipse plug-in</li>
<li><a target="_blank" href="http://tech.groups.yahoo.com/group/jsunit/">Mailing list</a> is still active</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>launches browser to run the tests</li>
<li>Does not support js file to write the unit test code: it has to embedded inside a html file</li>
<li>it has not be updated for a couple of years<em>&nbsp; &#8211; while there hasn&#8217;t been a release changes have been made to the source repository (perhaps minor) in the past year.</em></li>
</ul>
</td>
</tr>
<tr>
<td width="133" valign="top"><a href="http://code.google.com/p/rhinounit/">rhinounit</a></td>
<td width="233" valign="top">
<ul>
<li>ant driven</li>
<li>supports js file</li>
<li>very simple to use</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>Simulation of JavaScript engine: not advanced enough to support our code: I tried to run test code working with jsunit: I encountered issue when loading our common JavaScript files.</li>
</ul>
</td>
</tr>
<tr>
<td width="134" valign="top"><a href="http://www.thefrontside.net/crosscheck">crosscheck</a>: Note: Crosscheck wasn&#8217;t tested with any code.</td>
<td width="233" valign="top">
<ul>
<li>Can invoked from ant build file</li>
<li>Simulates real browser behaviour</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>Simulation of JavaScript engine from a limited number of browser versions.</li>
<li>No activity for 2 years: it does not support versions 2.x nor 3.x from Firefox.</li>
</ul>
</td>
</tr>
<tr>
<td width="134" valign="top"><a href="http://code.google.com/p/jsspec/">jsspec</a></td>
<td width="233" valign="top">
<ul>
<li>Runs on actual browser</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>JavaScript only framework: cannot be called from ant build file</li>
</ul>
</td>
</tr>
<tr>
<td width="134" valign="top"><a target="_blank" href="http://github.com/visionmedia/jspec/tree/master">jspec</a> (no website &#8211; just a source tree)</td>
<td width="233" valign="top">
<ul>
<li>Runs on actual browser</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>Does not seem to support our code:&nbsp; I tried to run test code running with js unit: I encountered issue when loading our common JavaScript files.</li>
<li>JavaScript only framework: cannot be called from ant build file</li>
</ul>
</td>
</tr>
<tr>
<td width="134" valign="top"><a href="http://pivotallabs.com/users/nick/blog/articles/455-better-javascript-testing-through-screwunit">Screw.unit</a> (<a href="http://github.com/nkallen/screw-unit/tree/master">docs</a>) Note: Not tested but it is very similar to jsspec and jspec.</td>
<td width="233" valign="top">
<ul>
<li>Runs on actual browser</li>
</ul>
</td>
<td width="367" valign="top">
<ul>
<li>JavaScript only framework: cannot be called from ant build file</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="/images/old/6a00d8341cc2cf53ef01053622bad4970c-pi.png"><img width="240" height="186" border="0" align="right" style="border: 0px none ; margin: 0px 0px 5px 5px;" src="/images/old/6a00d8341cc2cf53ef0105361a2ea0970b-pi.png" alt="image" /></a>So it seems to him that Jsunit is the only choice we have. It is not perfect though because it does not provide an easy way to apply&nbsp; the TDD process for the following reasons:</p>
<ul>
<li>It does not provide a simple and integrated way to run JavaScript unit test</li>
<li>It forces you to write the unit tests in a html file instead of a .js file.</li>
<li>It forces you to have a local installation of the jsunit framework in order to avoid absolute hard coded path to reference js unit files.</li>
</ul>
<p>As a consequence, you have to switch back and forth from you IDE and all the browsers we want to support while &quot;TDDing&quot; in JavaScript. It is feasible but doesn&#8217;t seem very effective.</p>
<p>I tried asking about this on <a target="_blank" href="http://stackoverflow.com/questions/300855/looking-for-a-better-unit-test-tool-for-javascript">StackOverflow</a> generated some interesting answers:</p>
<ul>
<li>Look at <a href="http://dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/d-o-h-unit-testing">the Dojo Object Harness (DOH) unit test framework</a> which is pretty much framework independent harness for JavaScript unit testing and doesn&#8217;t have any Dojo dependencies. I found a very good description of it at <a href="http://blog.medryx.org/2008/06/08/dojo-doh-unit-testing/">Medrix Observations: Dojo D.O.H. Unit Testing</a>. Interestingly we have at least one team (Yvon&#8217;s) that is experimenting with Dojo. (<em>got several recommendations for this</em>)</li>
<li>Apparently <a target="_blank" href="http://mochikit.com/">MochiKit</a> &#8211; yet another library has a framework called <a target="_blank" href="http://blog.leosoto.com/2008/10/interesting-open-source-surprises.html">SimpleTest</a> buried inside it.</li>
<li><a target="_blank" href="http://developer.yahoo.com/yui/yuitest/">Yahoo Unit</a> &#8211; a standalone tool from Yahoo.</li>
</ul>
<p>Asking on the <a target="_blank" href="http://tech.groups.yahoo.com/group/testdrivendevelopment">Test Driven Mailing</a> List got another batch of answers:</p>
<ul>
<li><a target="_blank" href="http://docs.jquery.com/QUnit">QUnit</a> from jQuery (<em>got several recommendations for this</em>)</li>
<li><a target="_blank" href="http://jsmock.sourceforge.net/">Mocking tool</a> for JavaScript</li>
<li>Use GWT and do all your work in Java</li>
</ul>
<p>In addition two people didn&#8217;t answer the question directly but instead sent my in the direction of some books:</p>
<ul>
<li><a target="_blank" href="http://www.manning.com/resig/">Secrets of the JavaScript Ninja</a> by the project lead for jQuery (which will have a chapter on Unit Testing)</li>
</ul>
<h4>Conclusions</h4>
<p>There isn&#8217;t one good place to ask JavaScript/Unit Testing questions. The best so far seems <a target="_blank" href="http://stackoverflow.com/questions/tagged/javascript">StackOverflow.com</a> seems to be the only real option.</p>
<p>Of the Unit Test Frameworks the real options seem to be:</p>
<ul>
<li><a target="_blank" href="http://www.jsunit.net/">JSunit</a></li>
<li><a href="http://dojotoolkit.org/book/dojo-book-0-9/part-4-meta-dojo/d-o-h-unit-testing">The Dojo Object Harness (DOH) unit test framework</a></li>
<li><a target="_blank" href="http://docs.jquery.com/QUnit">QUnit</a> from jQuery</li>
<li>YUI Test: see <a target="_blank" href="http://sites.google.com/site/tedhusted/posts/yui-test---the-new-kid-on-block">YUI Test &#8211; The New Kid on Block</a></li>
</ul>
<p>I also did some digging for Mock Frameworks and have only come up with a list of tools:</p>
<ul>
<li><a target="_blank" href="http://jsmock.sourceforge.net/">JSMock</a> &#8211; JSMock provides expectation recording and matching, and has the ability to return, throw, and stub on object method calls</li>
<li><a target="_blank" href="http://boss.bekk.no/display/BOSS/Jack">Jack</a> &#8211; The project aims to help developers write short and readable JavaScript tests.</li>
<li><a target="_blank" href="http://johanneslink.net/projects/mockme.html">MockMe</a> &#8211; written because of <a target="_blank" href="http://blog.johanneslink.net/2008/08/08/ajax-travelogue-part-6-mocking-in-javascript/">Johanne&#8217;s</a> <a target="_blank" href="http://blog.johanneslink.net/2008/08/09/ajax-travelogue-part-7-mockme/">dissatisfaction</a> with other JavaScript Mock tools.</li>
<li><a target="_blank" href="http://code.google.com/p/qmock/">QMock</a> &#8211; very new</li>
</ul>
<p>There is some good writing that will give you a flavour of TDD with Javascript:</p>
<ul>
<li><a target="_blank" href="http://www.slideshare.net/jlink/agile08-test-driven-ajax">Test Driven AJAX</a> a presentation from Agile 2008 (long but through)</li>
<li><a href="http://www.pathf.com/blogs/2006/11/tdd_and_javascr/">TDD and Javascript with JsMock</a></li>
<li><a target="_blank" href="http://www.testdrivenjavascript.com/Practice/5.aspx">Test Driven Javascript</a></li>
<li><a href="http://ajaxian.com/archives/tdd-and-javascript-with-jsmock">TDD and Javascript with JsMock</a></li>
</ul>
<p>Best ongoing sources: <a target="_blank" href="http://www.pathf.com/blogs/tag/test-driven-development/">Pathfinder Blog</a> and <a target="_blank" href="http://ajaxian.com/by/topic/testing">Ajaxian</a> seem to be good reading.</p>
<p>What tools did I miss? Are there any good JavaScript mailing lists where the participants discuss TDD?</p>
]]></content:encoded>
			<wfw:commentRss>http://agilepainrelief.com/notesfromatooluser/2008/11/unit-testing-in-javascript.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
