<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Adam Goucher</title>
	
	<link>http://adam.goucher.ca</link>
	<description>Quality through Innovation</description>
	<lastBuildDate>Tue, 07 Sep 2010 19:11:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AdamGoucher" /><feedburner:info uri="adamgoucher" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>New things to steal from the Japanese</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/VCIdTXgl9Zc/</link>
		<comments>http://adam.goucher.ca/?p=1571#comments</comments>
		<pubDate>Tue, 07 Sep 2010 19:11:21 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1571</guid>
		<description><![CDATA[It is a long tradition in the software world to &#8216;borrow&#8217; things from Japan and apply them in North America. Lean? Kanban? Shu Ha Ri? All come from the other side of the Pacific. And in most cases I would say the &#8216;experts&#8217; espousing them don&#8217;t really have the right to. Sure, they know the [...]]]></description>
			<content:encoded><![CDATA[<p>It is a long tradition in the software world to &#8216;borrow&#8217; things from Japan and apply them in North America. Lean? Kanban? Shu Ha Ri? All come from the other side of the Pacific. And in most cases I would say the &#8216;experts&#8217; espousing them don&#8217;t really have the right to. Sure, they know the &#8216;concept&#8217; and the &#8216;actions&#8217; but do they really, <i>really</i> understand the cultural underpinnings that lead to them?<br />
<br />
So along these lines, I&#8217;m going to start stealing from the Japanese. Here are my credentials&#8230;</p>
<ul>
<li>I did Karate for eight weeks</li>
<li>My friends in highschool were ninjas</li>
<li>I did Kendo for a year</li>
<li>I have seen hundreds (and hundreds) of hours of Anime</li>
<li>My son now takes Karate so I&#8217;m hanging out at a dojo again (if only in the lobby)</li>
</ul>
<p>
Infinitely qualified, see?<br />
<br />
First, I think we should steal the <a href="http://en.wikipedia.org/wiki/Japanese_tea_ceremony">Tea Ceremony</a> for its ceremony and presentation. Specifically designed rooms, lots of steps in specific order, repeatability and lots of history make it a fantastic specimen.<br />
<br />
Oh.<br />
<br />
Wait.<br />
<br />
The Factory School already got to it.<br />
<br />
Next then let&#8217;s steal Anime, or more specifically its <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/AnimeTropes?from=Main.AnimeTrope">Tropes</a>. But let&#8217;s steal in a sensible way. Rather than apply things directly, each of these should be considered heuristic. And some of these are almost designed to baffle management. Imagine seeing &#8216;Quivering Eyes&#8217; or &#8216;Snot Bubble&#8217; or &#8216;Idiot Crows&#8217; in a status update on the techniques used on a project. Priceless!<br />
<br />
When I first thought of this post, I&#8217;m sure I had something on <a href="http://en.wikipedia.org/wiki/Japanese_garden">Japanese Gardens</a> but can&#8217;t remember what, so that is left to the reader.<br />
<br />
The final thing to steal is the notion of <a href="http://en.wikipedia.org/wiki/Shinbutsu_shugo">Shinbutsu shugo</a> which is the <i>syncretism of Shinto and Buddhism</i>. In a testing context, there is Agile, Context-Driven, ATDD/BDD and Artistic camps. Each has its own priests and followers which get involved in religious debates. But the reconciliation and idea sharing is important regardless of religious differences. And now we can give a Japanese name for it.<br />
<br />
And if we&#8217;re really good, we&#8217;ll mispronounce it.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/VCIdTXgl9Zc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1571</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1571&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-things-to-steal-from-the-japanese</feedburner:origLink></item>
		<item>
		<title>Coaching with Questions</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/1Jw61HUPsUI/</link>
		<comments>http://adam.goucher.ca/?p=1566#comments</comments>
		<pubDate>Tue, 24 Aug 2010 04:04:06 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1566</guid>
		<description><![CDATA[I was in California this week partly for a client meeting and partly for a Selenium Developer Meetup and had half a day to kill so figured What the heck, I&#8217;ll go hang out at Agilistry. And look! There is a workshop called Coaching with Questions. So much the better!. (I likely would have gone [...]]]></description>
			<content:encoded><![CDATA[<p>I was in California this week partly for a client meeting and partly for a Selenium Developer Meetup and had half a day to kill so figured <i>What the heck, I&#8217;ll go hang out at <a href="http://agilistry.com">Agilistry</a>. And look! There is a workshop called <a href="http://agilistry.com/events/coaching-with-questions/">Coaching with Questions</a>. So much the better!</i>. (I likely would have gone regardless.)<br />
<br />
&#8216;Coaching with Questions&#8217; ended up being one of those &#8216;experiential&#8217; workshops that the/us Agile kids like to have; in this case it was <a href="http://dhemery">Dale Emery</a> who was facilitating. And though I really dislike the &#8216;experience&#8217; of them live, this one makes me think I should really participate in more. (Not sure if I&#8217;m quite ready for PSL yet though, but again, I&#8217;m pretty sure I should be signing myself for it based on not thinking I am ready for it.)<br />
<br />
The first exercise we did ended up producing a list of reasons why someone might want to as a particular question, but end up asking a different one.</p>
<ul>
<li>New information</li>
<li>Question was answered by previous question</li>
<li>Something wasn&#8217;t clear</li>
<li>Did not yet hear the current state of whatever is causing the questioning</li>
<li>Inquire about the expectations for the questioning [in order to frame further questions]</li>
<li>Separate the larger problem from the smaller, personal problem</li>
<li>Alignment with the questioners model</li>
<li>To confirm some conclusions that are being reached</li>
</ul>
<p>
The second exercise was done in small groups and was a conversation between two people but where the &#8216;coach&#8217; could only ask questions. Its safe to say that section was incredibly useful to me as <a href="http://testobsessed.com/">Elizabeth Hendrickson</a> was my coach and my hand-wavey, nebulous question was nicely morphed into a big bundle of other questions (and fears that I had nicely put into boxes &#8212; aren&#8217;t that what boxes for?!!?) that I needed to be facing. (See, told you I both needing PSL and am consciously avoiding it.) Had I been paired with someone else I&#8217;m not sure how much I would have gotten from it, but she has some situational background knowledge and I trust her so it worked fantastic (I think &#8212; and its my blog post). On reflection I think I even forgot there was an &#8216;observer&#8217; who was watching the conversation.<br />
<br />
After each debrief was discussion in which I wrote done the/my key items.</p>
<ul>
<li>Part of coaching is inviting the client to think</li>
<li>Don&#8217;t assume you understand the concerns of the person answering your questions</li>
<li>Businesses tend to do things for three reasons: to increase revenue, decrease cost or make a strategic change</li>
<li>An important part of coaching is permission. And that permission is tentative and always up for renegotiation</li>
<li>A useful question &#8211; Are my questions useful?</li>
<li>A context-free one &#8211; What question haven&#8217;t I asked you?</li>
<li>The biggest value a coach / consultant can bring to a situation is ignorance</li>
<li>Coaching is about helping to put pieces together</li>
<li>You can&#8217;t help but advise people with your questioning since the very act of asking a question has context and background around <i>why</i> you asked that particular question at the particular time</li>
<li>Part of what we bring to a coaching assignment is out models of the universe</li>
<li>If something is important, it will come up again</li>
<li>A question I think I first heard Jerry Weinberg say (to Adam White) &#8211; If you did know the answer, what would it be?</li>
<li><a href="http://cwd.dhemery.com/2004/08/tsop/">Possibility Boundaries</a></li>
<li>It is best to ask for explicit permission if you are unsure whether you have it for a line of inquiry</li>
<li>A <i>shift</i> (in tone of voice, energy of speaker, body language)usually means some <i>something</i></li>
</ul>
<p>
Coaching with Questions felt kinda &#8217;5 whys&#8217;-ish at times, but its actually much more than that with the key word being &#8216;coaching&#8217;. I think &#8217;5 whys&#8217; is more of a focusing tool for a specific issue than the sorts of things a well done thread of questioning can provide.  I&#8217;d have no problem recommending this to other coaches / consultants &#8212; especially ones who are just starting out.<br />
<br />
Oh, and Dale provided handouts at the end. I <i>really</i> need to start doing handouts. </p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/1Jw61HUPsUI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1566</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1566&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=coaching-with-questions</feedburner:origLink></item>
		<item>
		<title>‘Beecause’ is a heuristic</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/PEkJjj5YHV4/</link>
		<comments>http://adam.goucher.ca/?p=1561#comments</comments>
		<pubDate>Fri, 20 Aug 2010 13:01:34 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1561</guid>
		<description><![CDATA[Within a 10 minute timespan I read two completely unrelated articles that, in passing, said the same thing which is something that should be paid attention to. The first was in Canadian Thoroughbred (my wife is a race official) on decreasing field sizes at race tracks. Field sizes at racetracks is a lagging economic indicator [...]]]></description>
			<content:encoded><![CDATA[<p>Within a 10 minute timespan I read two completely unrelated articles that, in passing, said the same thing which is something that should be paid attention to.<br />
<br />
The first was in <a href="http://www.horse-canada.com/?page_id=71">Canadian Thoroughbred</a> (my wife is a race official) on decreasing field sizes at race tracks. Field sizes at racetracks is a lagging economic indicator in that it takes 2 years at least between conception and racetrack for a horse with most being fully productive in the winners circle at a 3. And so now we are starting to see the effects of the economy on horse breeding as there has been a 20% drop in mares bred since 2006.<br />
<br />
But to say that there are less horses in the starting gate <i>because</i> there is a 20% drop in breeding accurate. Not quite; &#8216;because&#8217; is a heuristic which means it is fallible. Here is an important part of the article.<br />
<br />
<i>In my opinion, there simply have not been enough owners who have wanted to race those horses, as the economics of operating a racing stable in most jurisdictions have become more challenging, and the overall economy as cause the type of individual who might invest in racing to cut back on their discretionary spending.</i><br />
<br />
So yes, the economy is involved, but not in the way you might think.<br />
<br />
The other article was in <a href="http://www.canadianbusiness.com/markets/commodities/article.jsp?content=20100913_10016_10016">Canadian Business about beekeeping</a>. There was lots of stuff on Colony Collapse Disorder, etc. and how &#8216;less bees means higher food cost.&#8217; Except this part of a paragraph stood out.<br />
<br />
<i>&#8220;To be honest,&#8221; says Melhim, &#8220;we’re talking about the disappearing of beekeepers more than we’re talking about [the disappearing of] honeybees.&#8221; As smaller operations fold, fewer commercial beekeepers are managing more colonies—and shouldering more financial risk. &#8220;It’s not very sustainable,&#8221; says Jeff Pettis, head of the Beltsville, Md., Bee Research Laboratory of the U.S. Department of Agriculture (USDA).</i><br />
<br />
So the big risk to the food system is not <i>because</i> of CCD, but the commercialization of beekeeping itself.<br />
<br />
Which means we now need to add &#8216;because&#8217; to our list of words that trigger further investigation upon hearing them. As if we didn&#8217;t have enough stuff on our plate already&#8230;</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/PEkJjj5YHV4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1561</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1561&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=beecause-is-a-heuristic</feedburner:origLink></item>
		<item>
		<title>Introverts</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/DblnhLEV854/</link>
		<comments>http://adam.goucher.ca/?p=1559#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:01:03 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1559</guid>
		<description><![CDATA[Canadian Business&#8217; &#8216;Performance&#8217; article for the August 16 dead tree issue is An introvert&#8217;s guide to schmoozing (though curiously it is Networking online). It starts out with a mention of Myers-Briggs types as its basis for defining what an introvert is and then goes from there. According to a University of Iowa study on brain [...]]]></description>
			<content:encoded><![CDATA[<p>Canadian Business&#8217; &#8216;Performance&#8217; article for the August 16 dead tree issue is <a href="http://www.canadianbusiness.com/managing/employees/article.jsp?content=20100816_10027_10027">An introvert&#8217;s guide to schmoozing</a> (though curiously it is Networking online). It starts out with a mention of <a href="http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator">Myers-Briggs types</a> as its basis for defining what an introvert is and then goes from there.<br />
</p>
<ul>
<li>According to a University of Iowa study on brain activity led by physiological psychologist Debra L. Johnson, introvert brains show more activity in areas dealing with learning and planning, while extrovert brains are more active in regions that control sensory processes, like watching and listening. This might explain why an extrovert is stimulated more by external forces, namely other people, and introverts are happy in their own head.</li>
<li>Her advice: stay true to your nature and use those “quiet ways” to get ahead.</li>
<li>“It&#8217;s not about interacting with 50 people. It&#8217;s making connections with primary individuals, and introverts are better at that.”</li>
<li>“introverts are generally patient, good listeners — and the key to client services is you have to listen.”</li>
</ul>
<p>
Introverts in MBTI is interesting in that I seem to have in my head that a lot of testers I know have said they are introverts. Not sure if there is causation or correlation there, but it is interesting. (For the curious, I am likely <a href="http://en.wikipedia.org/wiki/INTJ">INTJ</a> if the mighty Internets interpret things correctly.)</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/DblnhLEV854" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1559</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1559&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=introverts</feedburner:origLink></item>
		<item>
		<title>Amber Mac on using a consultant well</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/hWJBHh8_568/</link>
		<comments>http://adam.goucher.ca/?p=1557#comments</comments>
		<pubDate>Wed, 18 Aug 2010 13:00:31 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1557</guid>
		<description><![CDATA[(Yes, I have a stack of Canadian Business articles to write about&#8230;) Amber MacArthur is a bit of a social media powerhouse around here (ok, that might be a bit of an understatement) and part of that role involves doing the circuit to pimp her new book. In a Canadian Business interview with her she [...]]]></description>
			<content:encoded><![CDATA[<p>(Yes, I have a stack of Canadian Business articles to write about&#8230;)<br />
<br />
<a href="http://www.ambermac.com/">Amber MacArthur</a> is a bit of a social media powerhouse around here (ok, that might be a bit of an understatement) and part of that role involves doing the circuit to pimp her new book. In a <a href="http://www.canadianbusiness.com/technology/trends/article.jsp?content=20100913_10019_10019&#038;page=1">Canadian Business interview with her</a> she discusses how to hire, and best make use of, a social media consultant. (Which for the record I think is right up there with SEO consultant&#8230;)<br />
<br />
<i>I’m not a big fan of using an agency or consultant who will do all of the work for you. The best way to get up to speed with what’s happening in social media is to work with that person for a couple months to develop a strategic plan — what you’re going to do, what kind of schedule you need in place — and make use of their experience and their advice. But eventually you should run your own social-media initiative. There are lots of big agencies managing social media for companies, and that’s not always very authentic. To have the most authentic voice in social media, you want to have someone inside the company who is the face of your organization online.</i><br />
<br />
Exactly.<br />
<br />
This is the same for any sort of consulting work be it something as fuzzy as social media or technical like Selenium.<br />
<br />
See also a description of how <a href="http://exampler.com/consulting.html">Brian Marick prefers to consult</a> paying keen attention to the second last point &#8211; it is the most important one.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/hWJBHh8_568" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1557</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1557&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=amber-mac-on-using-a-consultant-well</feedburner:origLink></item>
		<item>
		<title>Chain Gang</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/YqV7fpREr6k/</link>
		<comments>http://adam.goucher.ca/?p=1553#comments</comments>
		<pubDate>Tue, 17 Aug 2010 10:58:46 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1553</guid>
		<description><![CDATA[I&#8217;m starting to quite look forward to the articles Richard Branson has in each issue of Canadian Business. They&#8217;re only one page, but crisp writing that has a quick nugget of wisdom with tales from his own life as an example. Now that I am a consultant and dealing with clients directly (or as a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting to quite look forward to the articles Richard Branson has in each issue of Canadian Business. They&#8217;re only one page, but crisp writing that has a quick nugget of wisdom with tales from his own life as an example.<br />
<br />
Now that I am a consultant and dealing with clients directly (or as a sub-contractor for a larger organization) creating customer loyalty is immensely important so <a href="http://www.canadianbusiness.com/after_hours/opinions/article.jsp?content=20100913_10003_10003">Weak links in the chain of good service</a> was timely.<br />
</p>
<ul>
<li>Delivering good customer service requires that a front-line worker receive supportive assistance from an entire network of co-workers—in effect, a chain reaction of teamwork, one that is consistent from beginning to end. And when it comes to helping a customer, the chain of assistance is only as strong as its weakest link.</li>
<li>But going the extra mile builds massive customer loyalty and brand-enhancing benefits.</li>
<li>While fiscal accountability is important, especially when an outlay of cash is involved, there will always be occasions when an asterisk needs to be marked on the balance sheet.</li>
<li>No company can train its front-end people to handle every situation, but you can strive to create an environment in which they feel at ease &#8220;doing as they would be done by.&#8221;</li>
<li>Good customer service on the shop floor begins at the very top. If your senior people don’t get it, even the strongest links further down the line can become compromised, as the story shows.</li>
</ul>
<p>
Surprise! Culture is important!<br />
<br />
Just because you are <i>technically</i> not obligated contractually to fix a bug in a third-party open source package your company relies on, this is the &#8216;extra mile&#8217; that he mentions in the article.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/YqV7fpREr6k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1553</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1553&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=chain-gang</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Summary</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/RcQUKKZXo7Q/</link>
		<comments>http://adam.goucher.ca/?p=1548#comments</comments>
		<pubDate>Fri, 13 Aug 2010 08:41:10 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1548</guid>
		<description><![CDATA[My talk at this year&#8217;s Agile conference ended 13 hours ago and I&#8217;m now sitting in front of the ticketing counter waiting for someone to give me a boarding pass home which seems like a good time to post my slides and such. Agile Test Case Management The slides themselves, as usual, are not much [...]]]></description>
			<content:encoded><![CDATA[<p>My talk at this year&#8217;s Agile conference ended 13 hours ago and I&#8217;m now sitting in front of the ticketing counter waiting for someone to give me a boarding pass home which seems like a good time to post my slides and such.<br />
</p>
<div style="width:425px" id="__ss_4959402"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/agoucher/agile-test-case-management" title="Agile Test Case Management">Agile Test Case Management</a></strong><object id="__sse4959402" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=atcm-100813032620-phpapp01&#038;stripped_title=agile-test-case-management" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4959402" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=atcm-100813032620-phpapp01&#038;stripped_title=agile-test-case-management" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>
The slides themselves, as usual, are not much value without me talking along side them, but here is also the content that made up what I was trying to communicate.<br />
</p>
<ul>
<li><a href="http://adam.goucher.ca/?p=1514">Checklists</a></li>
<li><a href="http://adam.goucher.ca/?p=1518">Mindmaps</a></li>
<li><a href="http://adam.goucher.ca/?p=1522">Session Charters</a></li>
<li><a href="http://adam.goucher.ca/?p=1526">Specifications and Executable Specifications</a></li>
<li><a href="http://adam.goucher.ca/?p=1530">Common &#8216;Stuff&#8217;</a></li>
<li><a href="http://adam.goucher.ca/?p=1533">Management</a></li>
<li><a href="http://adam.goucher.ca/?p=1536">The &#8216;Wiki Way&#8217;</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/RcQUKKZXo7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1548</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1548&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-summary</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – The Wiki Way</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/_knEP2APHI8/</link>
		<comments>http://adam.goucher.ca/?p=1536#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:54:57 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1536</guid>
		<description><![CDATA[This pattern of forgetting things is getting dangerous (T minus 32 hours). One thing that I wanted to suggest is that storing your checklists, etc. in a wiki is also &#8216;acceptable&#8217; from an Agile perspective. Ideally you want them right there with the source code, but a wiki has the advantage of being in the [...]]]></description>
			<content:encoded><![CDATA[<p>This pattern of forgetting things is getting dangerous (T minus 32 hours). One thing that I wanted to suggest is that storing your checklists, etc. in a wiki is also &#8216;acceptable&#8217; from an Agile perspective. Ideally you want them right there with the source code, but a wiki has the advantage of being in the browser. And everyone has seen wikipedia by this point so is has at least heard of the concept of editing content.<br />
<br />
If you are going to go down the wiki route, you need to make sure that it, at bare minimum, tracks revisions of edits and can disable anonymous edits (for auditing purposes).<br />
<br />
You also want to provide templates for people to use when creating specifically purposed pages. The last thing you want is having 3 or 4 people each doing somethings slightly differently. (Thanks for <a href="http://marlenacompton.com/">Marlena</a> for that tip.)<br />
<br />
&#8216;Gardening&#8217; is the common term for cleaning up the wiki and time needs to be allocated to do it. Most often when gardening you are looking at adjusting the links between pages and the tags to find them. On this subject <a href="http://chrismcmahonsblog.blogspot.com/">Chris</a> says<br />
<br />
<i>Links and tags are devices by which to organize related information.  The scheme by which you organize the information is up to you, but links and tags are how you manage the organization itself.</i><br />
<br />
Chris also reminded me of something you want to consider with <i>all</i> your infrastructure choices &#8211; integration. Check whether your wiki has an API, and if so, start to wire them together.<br />
<br />
Both Chris and <a href="http://xndev.blogspot.com/">Matt</a> reminded me to mention that Fitnesse (one of the table-based BDD/ATDD tools) is really just a highly optimized wiki. (Random trivia &#8211; the Selenese syntax that Selenium-IDE uses was also a fork of FIT so has wiki heritage.)<br />
<br />
Now what else have I forgotten in this series&#8230;</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/_knEP2APHI8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1536</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1536&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-the-wiki-way</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Management</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/JKOCDI43c-8/</link>
		<comments>http://adam.goucher.ca/?p=1533#comments</comments>
		<pubDate>Wed, 11 Aug 2010 01:31:12 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1533</guid>
		<description><![CDATA[I was about to call it a wrap on this series and realized I have skimped on the actual management part. Whoops. So here it is&#8230; I guess there should be some definition of what I mean by management. It breaks down into three different categories: When/What to run Who ran it What was the [...]]]></description>
			<content:encoded><![CDATA[<p>I was about to call it a wrap on this series and realized I have skimped on the actual management part. Whoops. So here it is&#8230;<br />
<br />
I guess there should be some definition of what <i>I</i> mean by management. It breaks down into three different categories:</p>
<ul>
<li>When/What to run</li>
<li>Who ran it</li>
<li>What was the result</li>
</ul>
<p>
Let&#8217;s try and tackle each of them.<br />
<br />
When and What to run is the classic testing problem. You cannot run <i>every single</i> test case for the hold system. It is mathematically impossible. Up against such odds, you do what you always do; you use your judgement and experience of what has changed and therefore the risks of those changes and run the tests that best address those risks.<br />
<br />
The specifics of how you find particular tests is also up to you but I have seen them organized by&#8230;</p>
<ul>
<li><i>File Name</i> &#8211; This is the <a href="http://en.wikipedia.org/wiki/Hungarian_notation">Hungarian Notation</a> of test cases. This is human readable true, but requires a human to categorize and group. Well, I suppose you could make monster filenames but that is unwieldy.</li>
<li><i>Directory</i> &#8211; This strategy relies on the where a test is in a directory tree as to what it describes. This is a strategy I have used quite a bit as it is both human and machine parseable, but is falls down if you want to mix organizational metaphors (functionality vs. user vs. module)</li>
<li><i>Tags</i> &#8211; This is something that I haven&#8217;t made use of yet, but want to. Remember that everything we produce (except for the visual stuff like mindmaps) is just raw text. This means it can be parsed with a quickie script. So why not put a line is there that just says <i>Tags: registration admin security</i> or similar that captures the intent of the test. Images and other formats can embed this sort of information as well &#8212; it just means your locator script is a bit more complicated. (And fun to write!)</li>
</ul>
<p>
Or, better still, you combine all three of these.<br />
<br />
Who ran it and when it was run are more interesting challenges. I find that most if not all of these examples of Agile Test Cases work best if you involve dead trees. As in print them out. But I never made the leap from being able to take notes in a different window while testing in another without losing flow. The original SBTM paper suggested that your notes should be just in raw text so anything in there could also be parsed by some tools. In either event, what you want to do indicate whatever you need to clear an audit on the test case. One one project we printed out the mindmap and initialed with a check or x beside each node and the date. And then the artifact has to be returned to version control (likely with a different name to allow for easy test case reuse). If it is from a dead tree, then it needs to be scanned and captured much along the lines of how some teams will design on the whiteboard then take a picture of it.<br />
<br />
But truth be told, I recycle the paper when I am done with it. Why? Well, partly because I don&#8217;t do stuff in a regulated environment so don&#8217;t need to archive it. But also because a key attribute of Agile is <i>Trust</i>. If I say that I tested something then that is actually enough.<br />
<br />
But as with <i>everything</i>, how <i>you</i> manage your tests is entirely dependent on <i>your</i> needs. Not mine. Or anyone else&#8217;s.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/JKOCDI43c-8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1533</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1533&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-management</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Commonalities</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/iGRuhO2X2-I/</link>
		<comments>http://adam.goucher.ca/?p=1530#comments</comments>
		<pubDate>Wed, 11 Aug 2010 00:22:13 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1530</guid>
		<description><![CDATA[So what makes a system/means of managing test cases &#8216;Agile&#8217;? It depends of course. Marketing teams certainly try through the use of smoke-and-mirrors to make their products Agile &#8230; and sometimes that works. But to me, there is a barrier to entry. Version Controllable &#8211; When I am coaching new test teams, I use the [...]]]></description>
			<content:encoded><![CDATA[<p>So what makes a system/means of managing test cases &#8216;Agile&#8217;? It depends of course. Marketing teams certainly try through the use of smoke-and-mirrors to make their products Agile &#8230; and sometimes that works. But to me, there is a barrier to entry.<br />
</p>
<ul>
<li><i>Version Controllable</i> &#8211; When I am coaching new test teams, I use the phrase &#8216;If it has value, then it is versioned. If it does not have value, it does not get created&#8217;. You need to version for (at least) two reasons; to compare between two versions and to know what is the &#8216;golden&#8217; copy of whatever you are using for test cases</li>
<li><i>Natural Language</i> &#8211; Test cases should be made by humans and consumable by humans. That does not mean that that a machine cannot also consume it (such as in the Executable Specifications context).</li>
<li><i>Text</i> &#8211; Application source code is <i>just</i> text, so why not your test cases as well. They are just as important. But the big thing is that it does not need to be fancy. The facts, and just the facts as it were. It does not need to be underlined, bolded, multi-sized etc. This means you don not need to use MS Word, etc. as the editor. Heck, you don&#8217;t really even need to use HTML (unless you are using something like Fitnesse which uses that as it&#8217;s storage means).  The loophole around this when it is something visual (like a mindmap or screenshot)</li>
<li><i>No Fluff, Just Stuff</i> &#8211; This is a general comment, but I&#8217;ll put it here anyways. You do not need to have version data in your test cases &#8212; that is what version control is for. You also do not need an executive summary, or a definition section, etc.</li.
<li><i>Brain On</i> &#8211; Testing is a sapient activity; it is <i>brain on</i>. If the person executing the case can do it without turning on their brain, then it is too limiting. Automated Acceptance Tests and Exploratory Testing are parts of Agile testing; rote script execution is not.</li>
</ul>
<p>
Of course, these are all heuristic. There are absolutely situations where each of these attributes are false, but I think those are few-ish and far-ish between.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/iGRuhO2X2-I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1530</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1530&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-commonalities</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Specifications and Executable Specifications</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/XPUYQB6ev9s/</link>
		<comments>http://adam.goucher.ca/?p=1526#comments</comments>
		<pubDate>Tue, 10 Aug 2010 22:16:26 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1526</guid>
		<description><![CDATA[Long gone are the relative safe topics from the first three posts in this series and we&#8217;re well into realm of dangerous with Specification and their automated compatriots, Executable Specifications. Speci-what? Executable who? Exactly. Both of these are tenants of Agile but are only just starting to cross over from the realm of the &#8216;cool [...]]]></description>
			<content:encoded><![CDATA[<p>Long gone are the relative safe topics from the first three posts in this series and we&#8217;re well into realm of dangerous with Specification and their automated compatriots, Executable Specifications. Speci-what? Executable who? Exactly. Both of these are tenants of Agile but are only just starting to cross over from the realm of the &#8216;cool kids&#8217; and into the near-mainstream.<br />
<br />
So what is an Specification? I&#8217;m labelling it as a concise, natural language description of an desired behaviour [of your application]. Once it is automated it becomes and Executable.<br />
<br />
Notice the word behaviour. These are central to BDD (Behaviour Driven Development) and ATDD (Acceptance Test Driven Development) which appear to be the same thing, but invented on different sides of the Atlantic. But just like with SBTM, the whole flow of BDD/ATDD is out of scope and I&#8217;m interested <i>just</i> in the specifications themselves.<br />
<br />
So.<br />
<br />
I&#8217;ve got lots of notes from talking to lots of people, so here is the dump of them. Hopefully something will arise from it.<br />
</p>
<ul>
<li>There is no &#8216;right&#8217; or &#8216;wrong&#8217; way to write these, though some tools enforce a particular way</li>
<li>A large part of why you develop specifications is to get everyone talking and agreeing that <i>this</i> is what we are building</li>
<li>It is important to agree upon, and correctly use, the various verbs and nouns</li>
<li>Specification do not describe the implementation, only the desired end result</li>
<li>And so are at the domain level, not the UI level</li>
<li>A Goal will be solved by n stories, and those stories will have y specifications</li>
<li>Two common ways of constructing these are Tables (Fitnesse) and Declarative (GWT)</li>
<li>But if those don&#8217;t work for you, create your own</li>
<li>The tester / automator does not get to change the specification once it has been created (without business approval of the new specification)</li>
<li>It is a value/ROI judgment that determines whether a specification is automated or not</li>
<li>Bug it is <i>highly</i> desirable to do so</li>
<li>Which requires certain strategies sometimes (see <a href="http://testing2010.gerardm.com/">Agile Test Automation Strategy For the Non-technical</a> for some of them)</li>
<li>Specifications is a synonym for Example</li>
</ul>
<p>
The exercise for this one is going to likely be to use the GWT format to create a series of possible specifications for a story. What that story is exactly is tbd.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/XPUYQB6ev9s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1526</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1526&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-specifications-and-executable-specifications</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Session Sheets</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/HXQipc67uCU/</link>
		<comments>http://adam.goucher.ca/?p=1522#comments</comments>
		<pubDate>Tue, 10 Aug 2010 22:14:01 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1522</guid>
		<description><![CDATA[In the ongoing series of posts on Agile Test Case Management (which is pronounced &#8216;figure out things for my talk on Thursday&#8217;) I am now heading onto slightly shakier ground with Session Sheets. Session Sheets are the tracking method of proposed in Jon Bach&#8217;s paper Session-Based Test Management. SBTM itself is a much larger discussion [...]]]></description>
			<content:encoded><![CDATA[<p>In the ongoing series of posts on Agile Test Case Management (which is pronounced &#8216;figure out things for my talk on Thursday&#8217;) I am now heading onto slightly shakier ground with Session Sheets. Session Sheets are the tracking method of proposed in Jon Bach&#8217;s paper <a href="http://satisfice.com/articles/sbtm.pdf">Session-Based Test Management</a>. SBTM itself is a much larger discussion and one that is beyond scope here. What <i>is</i> in scope is the sheets themselves as they are, according to Jon, the <i>magic ingredient</i> of SBTM.<br />
<br />
Sheets themselves are&#8230;</p>
<ul>
<li>plain text (not .doc &#8212; that is a binary format)</li>
<li>tagged for categorization and organization</li>
<li>machine readable</li>
<li>stored in revision control</li>
<li>highly customized to the team and context</li>
</ul>
<p>
That could describe, well, almost anything. And it is <i>supposed</i> to; you are doing it wrong if you don&#8217;t tailor it to your environment. But what distinguishes a &#8216;good&#8217; sheet and a &#8216;bad&#8217; sheet. Again, beauty is thin the eye of the beholder and the devil is in the details &#8211; or rather in the charter. A session&#8217;s charter is what guides the testing and provides the mission. If you get the charter &#8216;wrong&#8217;, then everything else is as well.<br />
<br />
The key thing, to me, is the detail of the charter. A good charter guides the tester, but does not direct. The Agile community is used to thinking in this stepped-back manner from dealing with user stories but it is mind-bending to new people or those still in a waterfall-ish environment.<br />
<br />
According to <a href="http://amibug.com/mission.asp">Rob Sabourin</a> at Star East 2010 a charter is&#8230;</p>
<ul>
<li>under 160 character</li>
<li>statement of mission</li>
<li>ties to purpose</li>
<li>focuses work</li>
<li>confirms understanding</li>
<li>delineates scope</li>
</ul>
<p>
Also from Rob and Jon are a list of &#8216;types&#8217; of charters.</p>
<ul>
<li><i>Discovery</i> &#8211; searching for broad knowledge</li>
<li><i>Capability</i> &#8211; typically starts with &#8216;Confirm&#8230;&#8217;</li>
<li><i>Failure Modes</i> &#8211; what could break</li>
<li><i>Quality Factors</i> &#8211; the &#8216;ilities&#8217;</li>
<li><i>Usage Scenarios</i> &#8211; happy, sad, evil</li>
<li><i>Creative Ideas</i> &#8211; soap opera testing</li>
<li><i>States</i></li>
<li><i>Data</i></li>
<li><i>Environments</i></li>
<li><i>White Box</i></li>
<li>And a myriad of different domain specific ideas</li>
</ul>
<p>This list shouldn&#8217;t be considered definitive or complete, but should help guide and mould your thinking of charters. A well SBTM&#8217;d (yes, using it as a verb) product will have a mix of each. But again, the mix will change from group-to-group and project-to-project.<br />
<br />
As an activity for this, I&#8217;m planning on &#8216;borrowing&#8217; Rob&#8217;s idea of a charter contest &#8212; but without the contest part. Basically it will be a create-and-share each type of charter. Lots of practice &#8212; I have lots of chart paper and crayons.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/HXQipc67uCU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1522</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1522&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-session-sheets</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Mindmaps</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/mKhO77Mlx5I/</link>
		<comments>http://adam.goucher.ca/?p=1518#comments</comments>
		<pubDate>Mon, 09 Aug 2010 00:41:09 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1518</guid>
		<description><![CDATA[This is second post in the series that will eventually turn into a my Agile talk. It also the easiest one to cheat on as I&#8217;ve more or less already written it. You see, mindmaps as a test case management system was 1/3 of my chapter in Beautiful Testing and since it the chapters are [...]]]></description>
			<content:encoded><![CDATA[<p>This is second post in the series that will eventually turn into a my Agile talk. It also the easiest one to cheat on as I&#8217;ve more or less already written it. You see, mindmaps as a test case management system was 1/3 of my chapter in <a href="http://www.amazon.com/Beautiful-Testing-Professionals-Software-Practice/dp/0596159811">Beautiful Testing</a> and since it the chapters are under Creative commons I can <a href="http://adam.goucher.ca/beautiful_testing/Beautiful_Testing_ch17_Goucher.pdf">link to it directly</a>.<br />
<br />
But for the lazy&#8230;<br />
</p>
<ul>
<li>Provide a concise, visual means of tracking test ideas</li>
<li>Are the secret way the testing cabal keeps track of things; not bullets or essays.</li>
<li>Show only the <i>what</i> of testing, not the <i>how</i></li>
<li>As you think of new things, add them</li>
<li>Standard &#8216;brainstorming&#8217; rules apply: anything can be added, those some will be pruned later</li>
<li>One strategy that has worked for me is each person does a different &#8216;feature&#8217; in isolation, then the group expands it</li>
<li>Projecting mindmaps onto a whiteboard is pure win</li>
<li>Unfortunately, the formats are usually binary or formatting which means diff&#8217;ing versions is near impossible</li>
<li>If auditability is really a concern you can print out the map and initial beside the end node with the date saying the result</li>
</ul>
<p>
The exercise for this one is going to be, unsurprisingly, to create a testing mindmap. And then we&#8217;ll compare them to see which ideas different groups come up with.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/mKhO77Mlx5I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1518</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1518&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-mindmaps</feedburner:origLink></item>
		<item>
		<title>Agile Test Case Management – Checklists</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/3vGGAQXbEKE/</link>
		<comments>http://adam.goucher.ca/?p=1514#comments</comments>
		<pubDate>Sun, 08 Aug 2010 12:37:53 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile2010 atcm]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1514</guid>
		<description><![CDATA[My session this year at Agile is on &#8216;Agile Test Case Management&#8217; which looks at the various ways we can manage test cases without needing to have the ridicuouls amount of never read, took too long to think of, highly constraining documentation that is found on too many non-Agile projects. (And I&#8217;m sure on some [...]]]></description>
			<content:encoded><![CDATA[<p>My session this year at Agile is on &#8216;Agile Test Case Management&#8217; which looks at the various ways we can manage test cases <i>without</i> needing to have the ridicuouls amount of never read, took too long to think of, highly constraining documentation that is found on too many non-Agile projects. (And I&#8217;m sure on some &#8216;Agile&#8217; ones as well.) This is the first of a series of posts as I explore my thoughts on them. (Yes, I know it is only five days from the talk time and I&#8217;m just starting&#8230;)<br />
</p>
<ul>
<li>Most testers use checklists to organize their thoughts. Don&#8217;t believe me? Look at their desk. It is covered with notes to themselves about current and future test ideas. Calling those notes a checklist is just a giving it a nicer name</li>
<li>Checklists are not new; other professions have been using them for years. And years. (And years.)</li>
<li>Like say &#8216;law&#8217; and &#8216;psychology&#8217; (all taken from Cem&#8217;s paper below)
<ul>
<li>Use them as aids to critical thinking in the moment, rather than as directives to be followed.</li>
<li>Myth: A script acts as &#8220;training wheels&#8221; for the new tester to learn the application domain, the program itself and how to test it. (This is a hard myth to accept and rebuff &#8212; I still have trouble with it.)</li>
<li>Students learn (and transfer) better when they discover concepts, rather than by being told them</li>
<li>Adults benefit from activity-based and discovery-based styles</li>
<li>A script specifies
<ul>
<li>test entry conditions</li>
<li>test operations</li>
<li>expected results</li>
<li>comparisons the human or machine should make</li>
</ul>
</li>
<li>It is not about just what to ask, it is <i>why</i></li>
<li>Data Collection checklists..
<ul>
<li>help you prepare</li>
<li>are broader than needed</li>
<li>are used in the context relevant order (not in preparation order)</li>
</ul>
</li>
<li>The smart checklist designer(s):
<ul>
<li>captures test-relevant information</li>
<li>and organizes it into lists</li>
<li>list items are often annotated</li>
</ul>
</li>
<li>Lawyers use checklists and predesigned forms, but <i>customization</i> is seen as a fundamental requirement of professionalism</li>
<li>lists are reminders, not scripts</li>
</ul>
</li>
<li>Atul Gawande turned an article in the New Yorker on checklists in medicine into a whole book on the subject.
<ul>
<li>The average patient required a hundred and seventy-eight individual actions per day</li>
<li>Generalist vs. super-specialist</li>
<li>But what if experience is not enough? Enter the checklist</li>
<li>Nurses have always had their ways of nudging a doctor into doing the right thing, ranging from the gentle reminder (“Um, did you forget to put on your mask, doctor?”) to more forceful methods (I’ve had a nurse bodycheck me when she thought I hadn’t put enough drapes on a patient). &#8211; See also my post on <a href="http://adam.goucher.ca/?p=1507">Mitigated Speech</a></li>
<li>The researchers found that simply having the doctors and nurses in the I.C.U. <i>make their own</i> checklists for what they thought should be done each day improved the consistency of care to the point that, within a few weeks, the average length of patient stay in intensive care dropped by half.</li>
<li>Two main benefits
<ul>
<li>Help with memory recall, especially with mundane matters that are easily overlooked in patients undergoing more drastic events</li>
<li>make explicit the minimum, expected steps in complex processes</li>
</ul>
</li>
<li>Checklists can also bring to light organizational problems that only management can address properly</li>
</ul>
</li>
<li>In my experience, the best checklists (for testing)
<ul>
<li>Focus on a specific idea</li>
<li>Contain heuristics and mnemonics</li>
<li>Prod, but don&#8217;t bully towards the desired action</li>
<li>Can be used by anyone &#8212; and will have slightly different results (which is a Good Thing)</li>
<li>Can contain very specific items if warranted</li>
<li>Are tailored to the environment / task</li>
</ul>
</li>
</ul>
<p>
Since this is at Agile and the prevailing way of learning is action, there will be two activities associated with checklists. The first is to create a checklist on how to test something (tbd) before &#8212; and then revist it after I ramble a bit. The second will be to create a testing mnemonic (because I really like them).<br />
<br />
Resources:</p>
<ul>
<li><a href="http://kaner.com/pdfs/ValueOfChecklists.pdf">The Value of Checklists and the Danger of Scripts: What Legal Training Suggests for Testers</a> &#8211; Cem Kaner, J.D., Ph.D.</li>
<li><a href="http://www.newyorker.com/reporting/2007/12/10/071210fa_fact_gawande?currentPage=all">The Checklist</a> &#8211; Atul Gawande</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/3vGGAQXbEKE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1514</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1514&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=agile-test-case-management-checklists</feedburner:origLink></item>
		<item>
		<title>Kathy Sierra at Business of Software 2009</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/NnhsKol91gg/</link>
		<comments>http://adam.goucher.ca/?p=1510#comments</comments>
		<pubDate>Fri, 16 Jul 2010 18:45:44 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1510</guid>
		<description><![CDATA[The Business of Software Conference is increasingly demanding attention on my &#8216;I think I could learn a lot from&#8217; list. So it was not that surprising that the recording of Kathy Sierra&#8217;s talk from the 2009 version caught my eye. And continued to hone my opinion of how businesses should be run and my orientation [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.businessofsoftware.org/">Business of Software Conference</a> is increasingly demanding attention on my &#8216;I think I could learn a lot from&#8217; list. So it was not that surprising that the recording of Kathy Sierra&#8217;s talk from the 2009 version caught my eye. And continued to hone my opinion of how businesses should be run and my orientation towards certain details when testing.<br />
<br />
<embed src="http://blip.tv/play/AYHNtX0C" type="application/x-shockwave-flash" width="480" height="350" allowscriptaccess="always" allowfullscreen="true"></embed><br />
</p>
<ul>
<li>&#8216;Get Lucky&#8217; is not a business model</li>
<li>Which is better?
<ul>
<li>Their product is awesome</li>
<li>Their service is awesome</li>
<li>Their company is awesome</li>
</ul>
<p>  It&#8217;s actually a trick question. The right answer is <i>I&#8217;m</i> awesome</li>
<li>People with passion&#8230;
<ul>
<li>Show off</li>
<li>Learn</li>
<li>Continuously improve</li>
<li>Spend time</li>
<li>Spend money</li>
<li>Evangelize</li>
<li>Elevate the meaning</li>
<li>Connect</li>
</ul>
</li>
<li>Its not about the tools, its about what the tool enables</li>
<li>Don&#8217;t sell me, teach me and I&#8217;ll sell myself</li>
<li>I don&#8217;t want to be an expert at the camera, i want to be an expert in photography</li>
<li><b>Don&#8217;t make a better [x], make a better [user of x]</b></li>
<li><b>Don&#8217;t make a killer app, make a killer user</b></li>
<li>Focus on what the user does, not what you do</li>
<li>What [bigger cooler thing] is enabled</li>
<li><b>Make the right thing easy and the wrong thing difficult</b></li>
<li>10 years vs 1 year repeated 10 times</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/NnhsKol91gg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1510</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1510&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=kathy-sierra-at-business-of-software-2009</feedburner:origLink></item>
		<item>
		<title>TWST6 – Mitigated Speech</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/pvM0h7YT9u8/</link>
		<comments>http://adam.goucher.ca/?p=1507#comments</comments>
		<pubDate>Fri, 16 Jul 2010 02:54:18 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1507</guid>
		<description><![CDATA[TWST is the Toronto Workshop on Software Testing and is, well, a workshop on software testing in Toronto hosted annually by Fiona Charles and Michael Bolton. This year Fiona posted this as a focusing topic: I&#8217;m really interested in how we report on testing to project stakeholders. Do we use narratives, graphics, metrics, or a [...]]]></description>
			<content:encoded><![CDATA[<p>TWST is the Toronto Workshop on Software Testing and is, well, a workshop on software testing in Toronto hosted annually by <a href="http://www.quality-intelligence.com/">Fiona Charles</a> and <a href="http://developsense.com">Michael Bolton</a>.<br />
<br />
This year Fiona posted this as a focusing topic:<br />
<br />
<i>I&#8217;m really interested in how we report on testing to project stakeholders.<br />
<br />
Do we use narratives, graphics, metrics, or a combination? How do we decide which is most appropriate for the context?<br />
<br />
There&#8217;s often a dichotomy between how/what we want to report (and believe we should) and how managers and others expect us to report. How do we resolve the differences to everyone&#8217;s satisfaction &#8212; or at least acceptance?</i><br />
<br />
I had no idea what I was going to talk about that would generate discussion, until I listened to Malcolm Gladwell&#8217;s <a href="http://www.amazon.ca/exec/obidos/ASIN/0316017922/adamgoucher-20/">Outliers</a>. You know, the book about the 10 000 hour rule for excellence. Except that rule is chapter 2 &#8212; and that it. There is <i>so</i> much more to it, including the notion of <a href="http://en.wikipedia.org/wiki/Mitigated_Speech">Mitigated Speech</a>. That to me was the most important part of the book. And I think fits (loosely) to the topic of TWST this year.<br />
</p>
<div style="width:425px" id="__ss_4768261"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/agoucher/mitigation-4768261" title="Mitigation">Mitigation</a></strong><object id="__sse4768261" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mitigation-100715211507-phpapp02&#038;stripped_title=mitigation-4768261" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4768261" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mitigation-100715211507-phpapp02&#038;stripped_title=mitigation-4768261" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>
Let&#8217;s start with a definition (according to Gladwell) of mitigated speech.<br />
<br />
<i>Any attempt to downplay or sugarcoat the meaning of what is being said</i><br />
<br />
How often do we see this when communicating our quality related information to stakeholders who are not going to like what they are going to hear.<br />
<br />
In Outliers, Gladwell makes heavy use of the research contained in the paper <a href="http://www.lcc.gatech.edu/~fischer/AIAA99.pdf">Cultural Diversity and Crew Communication</a> to analyze the communications of a well known plane crash.<br />
<br />
So what are the levels of mitigation?</p>
<ul>
<li><i>Command</i> &#8211; This is all about <a href="http://www.geert-hofstede.com/">Power Distance</a>. How do you perceive and relate to your superiors? Your culture&#8217;s PDI has a lot to do with that.</li>
<li><i>Team Obligation Statement</i> &#8211; Reduces the power distance in the relationship as it includes but the receiver and the sender in the action.</li>
<li><i>Team Suggestion</i> &#8211; Equal power distance and implies full evolvement of both receiver and sender.</li>
<li><i>Query</i> &#8211; A concession that the sender is not in charge, and is phrased as a question</li>
<li><i>Preference</i> &#8211; Possible preferred actions presented in terms of <i>I think</i> or <i>I feel</i></li>
<li><i>Hint</i> &#8211; Are a reminder to some previous goal but don&#8217;t directly suggest the actual action the sender is hoping for. In fact could result in a different action.</li>
</ul>
<p>
Note that nowhere is there an indictment of any of these mitigation levels. The trick is to know what they are, when you are using which level &#8212; and whether it is appropriate at that particular context.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/pvM0h7YT9u8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1507</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1507&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=twst6-mitigated-speech</feedburner:origLink></item>
		<item>
		<title>Seth Godin since my birthday</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/bqCFnR5LRoY/</link>
		<comments>http://adam.goucher.ca/?p=1502#comments</comments>
		<pubDate>Fri, 16 Jul 2010 01:22:33 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1502</guid>
		<description><![CDATA[I&#8217;m in a carb coma right now thanks to Melt, so going to indulge a bit of Seth Godin fanboy-ism by going through the 74 posts I haven&#8217;t looked at since my birthday and pick out the interesting bits. I&#8217;m sure there was other things of value in there, but these popped out. (Again, carb [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in a carb coma right now thanks to <a href="http://www.meltbarandgrilled.com/">Melt</a>, so going to indulge a bit of Seth Godin fanboy-ism by going through the 74 posts I haven&#8217;t looked at since my birthday and pick out the interesting bits. I&#8217;m sure there was other things of value in there, but these popped out. (Again, carb coma.)<br />
<br />
I&#8217;ve talked about the 1000 fan thing before, <a href="http://sethgodin.typepad.com/seths_blog/2010/05/the-circles-no-more-strangers.html">The circles (no more strangers)</a> has a fantastic chart to illustrate the stages to True Fans. And some ideas around it.<br />
<br />
<a href="http://sethgodin.typepad.com/seths_blog/2010/05/multiple-dumbnesses.html">Multiple dumbnesses</a> makes reference to Howard Gardner&#8217;s <a href="http://en.wikipedia.org/wiki/Multiple_intelligences">Theory of Multiple Intelligences</a>. Not sure how to use it, but its interesting.<br />
<br />
Apparently Seth has a lot of voices in his head &#8212; which he has categorized in <a href="http://sethgodin.typepad.com/seths_blog/2010/06/is-this-noise-inside-my-head-bothering-you.html">Is this noise inside my head bothering you?</a>. These would make a good first batch of personas to test as.<br />
<br />
And in <a href="http://sethgodin.typepad.com/seths_blog/2010/06/archetypes-at-work.html">Archetypes at work</a> has another list that could be similarly used.<br />
<br />
<i>Play a new game, not the older game but faster.</i> Kinda sum things up. (via <a href="http://sethgodin.typepad.com/seths_blog/2010/06/a-car-is-not-merely-a-faster-horse.html">A car is not merely a faster horse</a>)</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/bqCFnR5LRoY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1502</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1502&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=seth-godin-since-my-birthday</feedburner:origLink></item>
		<item>
		<title>The Essential Engineer</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/P1SgH3KcR6s/</link>
		<comments>http://adam.goucher.ca/?p=1499#comments</comments>
		<pubDate>Thu, 08 Jul 2010 13:52:33 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1499</guid>
		<description><![CDATA[The product development world has long been divided along &#8216;developer&#8217; and &#8216;tester&#8217; lines. Agile has show that the divide is not useful (in most cases), but that is secondary to the point of this post. Harry Petroski was on IT Conversations to promote his book The Essential Engineer and talked about another divide between scientists [...]]]></description>
			<content:encoded><![CDATA[<p>The product development world has long been divided along &#8216;developer&#8217; and &#8216;tester&#8217; lines. Agile has show that the divide is not useful (in most cases), but that is secondary to the point of this post. Harry Petroski was <a href="http://itc.conversationsnetwork.org/shows/detail4443.html">on IT Conversations</a> to promote his book <a href="http://www.amazon.ca/Essential-Engineer-Science-Global-Problems/dp/0307272451">The Essential Engineer</a> and talked about another divide between scientists and engineers. The parallels are striking.<br />
</p>
<ul>
<li>Scientists seek knowledge and/or understanding &#8211; <i>Testers?</i></li>
<li>Engineers are looking to solve a problem &#8212; that is usually stated before hand &#8211; <i>Developers?</i></li>
<li>Science and engineering are inexplicably linked &#8211; <i>see Agile</i>
<li>One can drive the other &#8211; <i>Feedback loops</i></li>
<li>An underlying problem is that scientists have better status than engineering &#8211; <i>compare the salaries between developers and testers recently?</i></li>
<li>Engineering is more than just &#8216;applied science&#8217; &#8212; things just aren&#8217;t that simple &#8211; <i>testing is more than just &#8216;finding bugs&#8217;</i></li>
<li>Maintenance will inevitably cost more than initial development</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/P1SgH3KcR6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1499</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1499&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-essential-engineer</feedburner:origLink></item>
		<item>
		<title>Motivated Magazine – Summer 2010</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/akDUV9bMpeY/</link>
		<comments>http://adam.goucher.ca/?p=1495#comments</comments>
		<pubDate>Sun, 04 Jul 2010 21:00:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1495</guid>
		<description><![CDATA[I was getting a drink for the train ride home when a giant cover of Seth Godin got my glance on the shelf. Seth is an interesting figure and the magazine was titled MOTIVATED (yes, in caps) so I picked it up. Here are the parts that testers will (or should) care about. General Observations [...]]]></description>
			<content:encoded><![CDATA[<p>I was getting a drink for the train ride home when a giant cover of <a href="FINDME">Seth Godin</a> got my glance on the shelf. Seth is an interesting figure and the magazine was titled <a href="http://motivatedonline.com">MOTIVATED</a> (yes, in caps) so I picked it up. Here are the parts that testers will (or should) care about.<br />
<br />
<b>General Observations</b></p>
<ul>
<li>The editor&#8217;s email address uses the magazine&#8217;s publisher&#8217;s domain, not the magazine&#8217;s. That, to me, is a breach of the consistency heuristic.</li>
<li>Definitely a Canadian magazine; will need to expand its advertising if it wants to survive I think</li>
<li>Ironically, there was nothing new in the Seth Godin interview which was word-wise one of the smaller articles in the issue &#8212; though it did succeed in getting me to buy it</li>
<li>The Naked Consulting article was eye-opening enough to more than make up for it</li>
</ul>
<p>
<b>Watch Me! Audacity without Ego</b></p>
<ul>
<li>Audacity creates businesses, and art, and world ranked athletes</li>
<li>Audacity is breathtakingly beautiful in her internal confidence; Ego seeks external recognition and often offensive.</li>
<li>It can be very lonely when we choose to be audacious excuse culturally we&#8217;ve thoughtlessly accepted the notion that we shouldn&#8217;t challenge the status quo, that there are certain ways of doing things that there&#8217;s an order that needs to be followed while on the journey toward success.</li>
</ul>
<p>
<b>Life is a Rollercoaster, not a Rocking Chair</b></p>
<ul>
<li><a href="http://www.mileshilton-barber.com">Miles Hilton-Barber</a> is truly an amazing person. Attention conference organizers &#8211; <i>this</i> is the type of person you get for you&#8217;re keynote. Who cares if he doesn&#8217;t have experience with testing or development? He has worlds more experience in other things that analogies could be drawn to.</li>
<li>&#8230;are meaningful not because they&#8217;re record-setting &#8220;firsts&#8221;, but because I set another challenge for myself and I did it!</li>
<li><i>Only he who is willing to risk going too far will discover how far it is possible to go</i> &#8211; T.S. Elliot</li>
<li>You an keep going long after you think you can&#8217;t</li>
<li>&#8230;the quality of our lives is often determined by circumstances, but b our response to them</li>
<li>Fulfillment is achieved by working toward dreams and focusing on the thing you can do, not the things you can&#8217;t</li>
<li>Louis Braille was blinded at the age of three, playing with a spike instrument. Many years later he invented the Braille alphabet, going back to millions of blind people the ability to read once again. Do you know what he used to make the raise dots on the paper? The very same spike instrument that blinded him!</li>
<li>The basic lie plan I often refer t is: Dream, Decide, Plan and Persevere</li>
</ul>
<p>
<b>Boldly Conquer Your Speaking Fears</b></p>
<ul>
<li>It takes commitment and practice to be a great speaker. But above all, it requires confidence, boldness and audacity.</li>
<li>Great speakers aren&#8217;t born; they evolve. They get better over time because they practice much more frequently and much harder than everybody else.</li>
<li>&#8230;in addition to practice, they carried a vision of themselves as outstanding communicators. Great speakers visualized themselves electrifying their audiences, even when they had very little experience in public speaking</li>
<li>It all started in her imagination and a crystal clear picture of what she wanted to accomplish. For many peopled, confidence does not come easily but if you see yourself succeeding long enough, soon you&#8217;ll believe it and you&#8217;ll radiate the boldness of a winner.</li>
<li.He created a vision for himself so powerful that nobody could stop it from happening. It was only a matter of time before his vision became a reality</li>
<li>When you change the way you see yourself as a speaker, what you audience see will also change.</li>
</ul>
<p>
<b>7 Steps to Taking Centre Stage</b></p>
<ul>
<li><i>Passion</i> &#8211; Passion makes you want to get up early and get to work. Passion gives you the energy to work harder and longer than anyone. But you also have to feed your fans&#8217; passions</li>
<li><i>Knowledge</i> &#8211; Keeping up with your industry and the world around you not only keeps your mind sharp but also gives you the ability to recognize trends and opportunities before anyone else.</li>
<li><i>Networking</i> &#8211; Networking is about forming relationships and finding ways to work together on any number of projects.</li>
<li><i>Marketing</i> &#8211; You should always have something to leave behind whether it&#8217;s a business card or some other item</li>
<li><i>Organization</i> &#8211; I have a plan. I know what I&#8217; going to say. I&#8217;ve done my research, searching facts and figured. I have contingency plans, extra batteries, and my presentation on flash cards as well as on the computer. Any my list goes on. When you have a plan and you&#8217;ve organized, I guarantee you&#8217;ll have more confidence at whatever it is you do.</li>
<li><i>Appreciation</i> &#8211; No matter how big or small your organization is, never underestimate the importance and the power of saying thank you.</li>
<li><i>Fun</i> &#8211; Remember to enjoy the ride</li>
</ul>
<p>
<b>The Brand Within</b></p>
<ul>
<li>A brand is a collection of perceptions in the mind of the consumer</li>
<li>Success in business, or in our personal lives, will always comes down to the connection we have with others</li>
<li>Some branding principles: differentiation, core values and purpose, knowing your consumer, production great products and providing superior customer service, consistently delivering on your promise</li>
<li>He&#8217;s not perfect, but no brand is</li>
<li>Building your own personal brand takes time</li>
<li>Nothing happens by chance</li>
<li>5 steps to branding you: identify your core values, create a mission statement, know your customers, create a positive brand experience, be yourself</li>
<li>5 ways to derail your brand: disconnect between you and how others perceive you, poor judgement in ethics or morals, inconsistency in behaviour, not aligned with organization values, strategy, or goals, competency and skill set</li>
</ul>
<p>
<b>Let Your Light Outshine You Fear</b></p>
<ul>
<li>Name your heart&#8217;s desire &#8211; Get clear with what you desire</li>
<li>Inner/outer alignment &#8211; Someone living in alignment emits a glow of authenticity, powerful upward movement, and innovation</li>
<li>Holy boldness &#8211; Driven by our mission, we walk over hot coals to do what we have to do</li>
<li>Courage in spite of fear</li>
<li>Commit to a crazy idea &#8211; Within those wild ideas will be the diamond of you next best step</li>
</ul>
<p>
<b>The Merits of Naked Consulting</b></p>
<ul>
<li>This was a reprint of an article that <a href="http://www.businessweek.com/managing/content/feb2010/ca20100219_514312.htm">appeared in the February 2010 issue of Business Week</a></li>
<li>The essence of naked consulting is that clients are more interested in candor, humility, and transparency than they are in confidence, authority, and perfection. That&#8217;s not to say that competence is irrelevant; clients need to know that we have the knowledge and experience to help them. But once we&#8217;ve reached that level, the best way to differentiate ourselves from the competition—not to mention help a client implement our recommendations—is to be vulnerable with them.</li>
<li>Vulnerability is the opposite of, well, invulnerability. It&#8217;s about honesty and authenticity. And it&#8217;s about overcoming the understandable fears that cause us to say and do things that hurt our relationships with clients</li>
<li>What does being naked mean in practice? Naked consultants confront clients (kindly) with difficult information and perspectives, even if the client might not like what he or she hears. Naked consultants also admit their weaknesses and willingly acknowledge their mistakes. They ask potentially dumb questions and make potentially dumb suggestions, because if asking those questions or suggestions might help their clients, it is worth doing.</li>
<li>Even before landing a client, naked consultants will demonstrate vulnerability and take risks. They will give away their best ideas and start consulting to the prospective client during a sales call. In fact, they&#8217;ll do no real selling at all, foregoing that activity in order to find a way to help a potential client even if the business never actually become a real, paying one.</li>
<li>Three way to &#8220;consult naked&#8221; starting today:
<ul>
<li>Confront clients (kindly) with difficult information and perspectives, even if the client might not like hearing it</li>
<li>Admit your weaknesses and willingly acknowledge your mistakes.</li>
<li>Ask potentially dumb questions, and make potentially dub suggestions, because if asking those questions or suggestions might help your clients, then it is worth doing.</li>
</ul>
</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/akDUV9bMpeY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1495</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1495&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=motivated-magazine-summer-2010</feedburner:origLink></item>
		<item>
		<title>Investment Modeling a Software Tester’s Perspective</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/PEpyHzsWv14/</link>
		<comments>http://adam.goucher.ca/?p=1492#comments</comments>
		<pubDate>Wed, 30 Jun 2010 03:53:35 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1492</guid>
		<description><![CDATA[Cem Kaner was at TASSQ this evening to talk about applying test techniques to the evaluation of the models we build into software, to help us decide whether we are building the right thing, to address validation and accreditation of software instead of burying our heads in verification. And he did, though in going into [...]]]></description>
			<content:encoded><![CDATA[<p>Cem Kaner was at <a href="http://www.tassq.org">TASSQ</a> this evening to talk <i>about applying test techniques to the evaluation of the models we build into software, to help us decide whether we are building the right thing, to address validation and accreditation of software instead of burying our heads in verification.</i> And he did, though in going into the meeting I had focused on the sentences before and after that one which mentioned &#8216;automated exploratory testing&#8217; which, as an automation consulting tester I was keenly interested in hearing Cem&#8217;s thoughts on the topic. So with that in mind I thought this was the poorest (personally) of the talks I have seen him deliver. Until that is, <a href="http://www.staqs.com/">Paul Carvalho</a> phrased it as a case study, as an experience report. With that frame of reference, it was an excellent talk which showcased in depth, methodical test probing of various financial models in a way only someone with his training and background could provide. Here are my notes.<br />
</p>
<ul>
<li>There are green bananas and ripe bananas and rotten bananas and big banana and little bananas. But by and large, a banana is a banana &#8212; on commodity level software testing. The lesson is <i>don&#8217;t be a banana</i> &#8212; though a preferred alternative fruit was not provided</li>
<li>There are a number of levels of testing; five that fit on the slide are
<ol>
<li>checking</li>
<li>basic exploration</li>
<li>systemic variation</li>
<li>business value</li>
<li>expert investigation</li>
</ol>
<p>
I first interpreted this as a linear progression, but as he described them it appears as it was more 1, 2, then people tend to specialize in either 3, 4 or 5.</li>
<li>The last three in the list allows a tester to &#8216;earn their keep&#8217;</li>
<li>The decision to automate a regression test is a matter of economics, not principle</li>
<li>Automation is a starting point to say it is ready to test, not that it is ready to ship</li>
<li>The most important slide from the deck I think was on the seven risks to any model.
<ol>
<li>model &#8211; the model is theoretically incorrect</li>
<li>characterization &#8211; the model is correct, the spec is wrong</li>
<li>comprehension &#8211; we misunderstood the model. our code accurately implements the wrong model</li>
<li>implementation &#8211; our code inaccurately reflects our intent</li>
<li>execution / environmental &#8211; platform too slow, volume issues, etc</li>
<li>tool &#8211; the test tool misleads</li>
<li>scope &#8211; the model is properly developed but it is not appropriate to today&#8217;s circumstances</li>
</ol>
</li>
<li>Implementation is the easiest to find and the least business value</li>
<li>Computer programs are solutions to people&#8217;s problems</li>
<li>If you understand the subject matter of the business and use that expertise in test design then you have true business value</li>
<li>There is skill in empirical research that we have as testers that can be applied to any area that uses software. and that software is just a representation of a human model</li>
<li>Focus your work on answering the questions you are trying to get answered rather than supporting your automation</li>
</ul>
<p>
Even with the correct context likely in place for the presentation, I have two complaints; both minor in the grand scheme of things.</p>
<ul>
<li>In his &#8216;opening rant against regression testing&#8217; he said <i>as agile development has gradually failed</i>. Maybe it is because part of what I do is agile coaching-ish, but I felt it came off wrong and detracted from his point.</li>
<li>The slides are terrible. I mean, they are <i>loaded</i> with information, but they are massively overloaded. The deck is not the presentation, the presenter (Cem in this case) is the presentation. Had it been anyone less trained and practiced in public speaking they could have just read from the slides and been coherent. Of course, I get the opposite complaint about by decks so lets call it a wash.</li>
</ul>
<p>
The title page of the deck mentioned that he will be doing a presentation as a keynote at this year&#8217;s <a href="http://conferences.associationforsoftwaretesting.org/CAST2010">CAST</a> which seems like a good enough excuse to plug it. I won&#8217;t be there as my wife is at a conference in Alabama at the same time and then it is a Agile the following week, but it should be good. (As always.)</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/PEpyHzsWv14" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1492</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1492&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=investment-modeling-a-software-testers-perspective</feedburner:origLink></item>
		<item>
		<title>Creating a Nolan Ryan Culture</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/KrmLV9kFLxk/</link>
		<comments>http://adam.goucher.ca/?p=1489#comments</comments>
		<pubDate>Sat, 26 Jun 2010 02:35:59 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1489</guid>
		<description><![CDATA[Nolan Ryan pitched in a different era, where pitchers were not on pitch counts and were not &#8216;coddled&#8217;. For the non-baseball readers, a pitch count is just that &#8212; the number of pitches thrown, and when a magic number (usually around 100) is reached the pitcher is pulled regardless of whether they still have command [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Nolan_Ryan">Nolan Ryan</a> pitched in a different era, where pitchers were not on pitch counts and were not &#8216;coddled&#8217;. For the non-baseball readers, a pitch count is just that &#8212; the number of pitches thrown, and when a magic number (usually around 100) is reached the pitcher is pulled regardless of whether they still have command and strength to remain. During his career as a pitcher he threw 222 complete games and worked hard to stay in form. Well, he is now the president of the Texas Rangers and is re-instilling that sense of work ethic to the team. This change is documented in the May 24, 2010 Sports Illustrated in <i>Nolan Ryan&#8217;s Crusade</i> &#8212; the contents of which I can&#8217;t find on the SI website.<br />
<br />
But here are the interesting parts that apply to testing and culture (painstakingly typed out even).<br />
</p>
<ul>
<li>What&#8217;s wrong with pitchers today? For one thing, they don&#8217;t learn to think for themselves anymore. Coaches started calling all the pitches in high schools and colleges. How do they know, sitting on the bench, what the guy on the mound has confidence in?</li>
<li>Pitchers have been pampered. I&#8217;d go to spring training, and al they&#8221;d do was throw on the side. Now how in the world do you learn how a hitter&#8217;s going to react to your pitches without a hitter in there?</li>
<li>Today a quality start is six innings. What&#8217;s quality about that?</li>
<li>Their ceiling has been lowered. It&#8217;s up to us to jack it back up</li>
<li>Texas hurlers have embraced Ryan&#8217;s challenge to raise their expectations and take ownership over their starts.</li>
<li>Backing away from a pitcher&#8217;s limits too far doesn&#8217;t make a pitcher less vulnerable; it makes him more vulnerable. And pushing the envelope, while it may lead to a catastrophic event, is more likely to enhance the pitcher&#8217;s durability than to destroy it.</li>
<li>&#8230;on the first day of spring training last year Maddux stood in front of his pitchers and said, &#8220;Pith counts are limits. You have no limits.&#8221;</li>
<li>The Rangers instead believe that not all 100-pitch games are created equal. Some are more stressful on the arm than others, and if the pitcher is cruising late in the game, there&#8217;s no reason to hive him the hook.</li>
<li>Ryan ordered that pitchers throw live batting practice to hitters from Day One of spring training &#8212; a routine almost unheard of in Big League camps&#8230;</li>
<li>They were the first team willing to think outside the box and now they&#8217;ve started a chain reaction</li>
<li>It is important to have people who are willing to make a commitment</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/KrmLV9kFLxk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1489</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1489&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=creating-a-nolan-ryan-culture</feedburner:origLink></item>
		<item>
		<title>Going narrower to get wider</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/C5IlpL6BB_U/</link>
		<comments>http://adam.goucher.ca/?p=1483#comments</comments>
		<pubDate>Sun, 13 Jun 2010 19:55:30 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1483</guid>
		<description><![CDATA[This blog has been running for about 4.5 years (and over 3 different locations) and until now it made sense to have all topics under the umbrella of &#8216;The Brand of Adam&#8217; (feel free to read that with lots of echo). But now that I&#8217;m part of the core Selenium team as well as a [...]]]></description>
			<content:encoded><![CDATA[<p>This blog has been running for about 4.5 years (and over 3 different locations) and until now it made sense to have all topics under the umbrella of &#8216;The Brand of Adam&#8217; (feel free to read that with lots of echo). But now that I&#8217;m part of the core Selenium team as well as a <a href="http://element34.ca">Selenium consultant</a> its time for a bit narrower focus here, to hit a much larger audience overall. So here is the new plan.<br />
</p>
<ul>
<li><i><a href="http://adam.goucher.ca">adam.goucher.ca</a></i> &#8211; This will be &#8216;testing&#8217; focused with the usual book reviews, podcast summaries and other things I think people interested in testing mind find useful.</li>
<li><i><a href="http://element34.ca">element34.ca</a></i> &#8211; This is my &#8216;work&#8217; site and will be catching anything dealing with Selenium. Which kinda makes sense since I now make my living off of Selenium and want potential clients to go to that site.</li>
<li><i><a href="http://seleniumhq.wordpress.com">seleniumhq.wordpress.com</a></i> &#8211; This is the &#8216;official&#8217; blog of the Selenium project and I&#8217;m going to start posting the <i>Smattering of Selenium</i> content there so it can reach more than just those who have stumbled upon my blog.</li>
</ul>
<p>
I think this split better serves the [core] audiences of the content better, and in the long run might actually expose it to more people.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/C5IlpL6BB_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1483</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1483&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=going-narrower-to-get-wider</feedburner:origLink></item>
		<item>
		<title>If you really must write your Selenium framework in Java…</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/xPgDTH9TBzw/</link>
		<comments>http://adam.goucher.ca/?p=1481#comments</comments>
		<pubDate>Wed, 09 Jun 2010 02:05:17 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1481</guid>
		<description><![CDATA[First, why? Just because your application is written in Java does not mean you have to write your Selenium framework in it. JRuby or Jython are far better options for you. But let&#8217;s say you are determined to do it, what are some things you need to keep in mind? Here are two that I [...]]]></description>
			<content:encoded><![CDATA[<p>First, why? Just because your application is written in Java does <b>not</b> mean you have to write your Selenium framework in it. JRuby or Jython are far better options for you. But let&#8217;s say you are determined to do it, what are some things you need to keep in mind? Here are two that I have encountered this week.<br />
</p>
<h3>Properties Files</h3>
<p>
Java&#8217;s native method for configuration information is the <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html">java.util.properties</a> class. So if you are going to pass information into your framework, and let&#8217;s face it, its a framework so you will, use properties files. Not Excel, csv, yaml or some crazy propriety format. Use properties. Not only is it built into the language but it is a text format so can be checked into version control (and diff&#8217;ed, etc.).<br />
</p>
<h3>getResourceAsStream</h3>
<p>
This builds off of the first point. <i>Do not put paths into your code!</i> Java has this thing called the classpath. You know, that thing that tells the JVM where to look for things &#8212; like properties files! Conveniently enough, you can parse a properties file as a stream from a file that was located in the classpath.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">ca.element34.flyingmonkey.environment</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.InputStream</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Properties</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.log4j.Logger</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ReadEnvironment <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">static</span> Logger log4j <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ca.element34.flyingmonkey.environment.ReadEnvironment&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Properties</span> ReadEnvironment<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">Properties</span> environmentProps <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Properties</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">InputStream</span> is <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getClass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getResourceAsStream</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/environment.properties&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    environmentProps.<span style="color: #006633;">load</span><span style="color: #009900;">&#40;</span>is<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    log4j.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span>environmentProps<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> environmentProps<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>
Some things to keep in mind with this:</p>
<ul>
<li>The directory that contains the environment.properties file needs to be in the classpath. Don&#8217;t put the file itself in the classpath. You have no idea how many times I made that mistake when I was at HP&#8230;</li>
<li>You need to have the leading / in the filename. Without it, the package hierarchy is searched and not the classpath</li>
<li>You will likely have a number of environments that your framework needs to interact with, so have an environment.properties.development, an environment.properties.staging, an evironment.properties.production, etc. But don&#8217;t have checked in an actual environment.properties file. Instead, create a symlink to the file on the local machine.</li>
</ul>
<p>
Part of my role as a Selenium Consultant is to dive into a team&#8217;s code and spot things that will likely hurt them in the long run. My typical technique is to run the framework on a platform they are not using &#8212; it should work. And when it doesn&#8217;t, these two tricks will go a long way in moving it a lot closer to working.<br />
<br />
And this isn&#8217;t to pick on just Java. Python and Ruby have similar native tricks for accomplishing this as well.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/xPgDTH9TBzw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1481</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1481&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=if-you-really-must-write-your-selenium-framework-in-java</feedburner:origLink></item>
		<item>
		<title>Selenium and YUI buttons</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/92s6oc0rwP8/</link>
		<comments>http://adam.goucher.ca/?p=1478#comments</comments>
		<pubDate>Thu, 27 May 2010 12:24:44 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1478</guid>
		<description><![CDATA[Q: When is a button not a button? A: When it is a YUI button Selenium, at its core, deals with HTML things stored in the DOM. And does a pretty good job at it. But things start to get confusing when the people creating the page start to get fancy and use third-party widgets [...]]]></description>
			<content:encoded><![CDATA[<p>Q: When is a button not a button?<br />
<br />
A: When it is a YUI button<br />
<br />
Selenium, at its core, deals with HTML things stored in the DOM. And does a pretty good job at it. But things start to get confusing when the people creating the page start to get fancy and use third-party widgets like those provided by <a href="http://developer.yahoo.com/yui/">YUI</a>. This post is about how to fake your way through Se automation when you encounter YUI controls, specifically a <a href="http://developer.yahoo.com/yui/button/">YUI Button</a>.<br />
<br />
The big thing to understand is that YUI buttons are not buttons (to the browser), they are in fact just blobs of JS that happen to look like a button. When you &#8216;click&#8217; on one, a callback is fired to execute another bit of JS to make it look like you click did something. Ahhh, AJAXy goodness.<br />
<br />
But because there is nothing happening at the DOM level, we need to simulate both the &#8216;click&#8217; and the subsequent action. For example, here is a helper function I wrote to deal with a &#8216;checkbox&#8217; type YUI button for a client.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> enable_bubbles<span style="color: black;">&#40;</span>se<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> se.<span style="color: black;">is_element_present</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;//span[@id='PinBalloonSelector']&quot;</span><span style="color: black;">&#41;</span>:
        se.<span style="color: black;">get_eval</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;window.ShowBalloonButton.set('checked', true)&quot;</span><span style="color: black;">&#41;</span>
        se.<span style="color: black;">get_eval</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;window.PersistBalloonPinMode()&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
    se.<span style="color: black;">wait_for_condition</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;selenium.isElementPresent(<span style="color: #000099; font-weight: bold;">\&quot;</span>//div[@id='balloonContentDiv']/div<span style="color: #000099; font-weight: bold;">\&quot;</span>)&quot;</span>, <span style="color: #483d8b;">&quot;60000&quot;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>
Important things to note:</p>
<ul>
<li>YUI buttons are children of the window object so start your hunt there</li>
<li>To &#8216;click&#8217; the box on you set the attribute &#8216;checked&#8217; to true. Setting to false &#8216;unclicks&#8217; it</li>
<li>After the click you need to call the JS function that would normally be triggered as we&#8217;re sneaking operations in under-the-hood</li>
<li>Because all of this is happening in JS, you need to use the get_eval variant that your binding provides</li>
</ul>
<p>
That took me well over a day to figure out, so I figure someone else has likely run into issues where Se-IDE has recorded a button interaction one way but on playback or export it didn&#8217;t work <i>because the button isn&#8217;t an HTML button, it is a YUI button</i>.<br />
<br />
So who wants to write a plugin for Se-IDE that deals with YUI controls properly? <img src='http://adam.goucher.ca/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/92s6oc0rwP8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1478</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1478&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=selenium-and-yui-buttons</feedburner:origLink></item>
		<item>
		<title>SeConf2010 – The Survey Results</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/k-a_XGVrL7Q/</link>
		<comments>http://adam.goucher.ca/?p=1475#comments</comments>
		<pubDate>Wed, 26 May 2010 13:54:35 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1475</guid>
		<description><![CDATA[I&#8217;ve been bandying around the idea of what I would like to attend in terms of a Se event, but figured I would see how out of touch I am with others through a quick survey. As of this morning there were 45 responses to it, which is in itself pretty telling since I announced [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been bandying around the idea of what <i>I</i> would like to attend in terms of a Se event, but figured I would see how out of touch I am with others through a quick survey.<br />
<br />
As of this morning there were 45 responses to it, which is in itself pretty telling since I announced it on&#8230;</p>
<ul>
<li>Twitter and between my followers who use Se and the RT&#8217;s it got hit an audience of I would guess ~ 150 &#8211; 200</li>
<li>the selenium-users mailing list which has 1736 members</li>
<li>the selenium-developers mailing list which has 308 members</li>
<li>IRC which usually sits between 30 &#8211; 50 these days</li>
</ul>
<p>
Overall an overwhelming lack of interest to the survey was shown. And yet, meetups like the San Francisco Selenium Meetup get ~ 100 people once a month so there appears to be a market for geeking out over Se.<br />
<br />
The first question was about location, and to be honest, I have no idea how to interpret this other than <i>What&#8217;s wrong with Toronto?</i>.<br />
<br />
<img src="http://adam.goucher.ca/wordpress/wp-content/uploads/2010/05/seconf1.png" /><br />
<br />
Well, it is not really a shock that Silicon Valley got the most votes given the community legwork Sauce Labs has done already. The high Maybe response to Chicago is a positive though (as I like it a lot better than the valley). But Chicago in November is likely not the easiest sell. Maybe we should have it in Cozumel; Sun, Sand, Selenium!<br />
<br />
The next question was on length. The format wasn&#8217;t an option (single track) just the length.<br />
<br />
<img src="http://adam.goucher.ca/wordpress/wp-content/uploads/2010/05/seconf2.png" /><br />
<br />
Useful, but I think 2 days content + 1 day tutorial is <i>right</i> answer as it is long enough to provide a mix of content <i>and</i> be able to justify travel. A one-day conference, that isn&#8217;t intended to just be a regional one, is just an extended meetup.<br />
<br />
The third question confirmed a lot of what I thought it would, and means I&#8217;ll I have to convince a bunch of the Se2 kids to come speak.<br />
<br />
<img src="http://adam.goucher.ca/wordpress/wp-content/uploads/2010/05/seconf3.png" /><br />
<br />
The trick, as with any one-track one is to make the speakers diverse enough to not bore the entire audience all the time on topic they don&#8217;t understand or don&#8217;t care about.<br />
<br />
The last non-free form question was the whole cost thing which was interesting, if not really useful information. Conference pricing is often done on a backwards basis in that you get all your fixed costs figured out, subtract your sponsorships (paid and/or expected) and then you arrive at a number. And then pray you don&#8217;t lose your shirt.<br />
<br />
<img src="http://adam.goucher.ca/wordpress/wp-content/uploads/2010/05/seconf4.png" /><br />
<br />
I suspect if I put down $75 as the lowest amount, it would have been the most. I&#8217;m guessing that the $200 roughly maps to the &#8217;1 day&#8217; length of question 2, so doubling that to 2 days is $400 which is close to $500 and combined have the overwhelming total (all but one) then things are in agreement with what I had hoped for. SeConf would not be a huge production like Star and so wouldn&#8217;t need to charge as much. I would actually consider it a failure if we had to charge more than $500 for the conference. Tutorials, as is the common model, would be extra.<br />
<br />
The final question was just a text box which resulted in lots of <i>how come you didn&#8217;t pick my city?</i> type responses.<br />
<br />
I&#8217;ve still not wavered from the idea that there should be a dedicated Selenium Conference this year. Though we&#8217;re getting perilously close to being too late to have one this year given lead times on facilities and speaker travel planning. Especially if I am the driving force / organizer of it. I know <i>exactly</i> when and where the 2011 should be, but thats getting the cart in front of the horse somewhat. I may just have it in Toronto, survey results be damned; as someone pointed out yesterday, the trick is to have it happen this year. We can make it a huge success next year.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/k-a_XGVrL7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1475</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1475&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=seconf2010-the-survey-results</feedburner:origLink></item>
		<item>
		<title>Shop Class as Testcraft</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/X3AaZDNDo8s/</link>
		<comments>http://adam.goucher.ca/?p=1471#comments</comments>
		<pubDate>Sun, 23 May 2010 02:46:44 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1471</guid>
		<description><![CDATA[In his book, Shop Class as Soulcraft, Matthew Crawford makes the argument that the trades, the so-called blue collar occupations, have been intentionally sidelined and belittled by North American society. And we are worse for it. I picked it up at the bookstore on a whim since the cover had a motorcycle on it and [...]]]></description>
			<content:encoded><![CDATA[<p>In his book, <a href="http://www.amazon.ca/exec/obidos/ASIN/0143117467/adamgoucher-20/">Shop Class as Soulcraft</a>, Matthew Crawford makes the argument that the trades, the so-called blue collar occupations, have been intentionally sidelined and belittled by North American society. And we are worse for it. I picked it up at the bookstore on a whim since the cover had a motorcycle on it and had &#8216;craft&#8217; in the title; two things I am currently interested in. While reading it I felt the familiar sense of deja-vu as it relates to the testing field right now and we think there is lots to be applied from the plight of electricians and plumbers in terms of our field.<br />
<br />
<b>A System of Rules</b><br />
<br />
Testing is, at its heart, the application of a series of rules. True testers realize that this, but also know that the set of rules is ever changing based on a myriad of factors. Compare the professional tester&#8217;s mental process to that of a repairman using the following quotes from Chapter 1<br />
</p>
<ul>
<li>The repairman has to begin each job by getting outside his own head and noticing things; he has to look carefully and listen to the ailing machine</li>
<li>Knowing what kind of problem you have on hand means knowing what features of the situation can be ignored</li>
<li>A realistic solution must include ad hoc constraints known only through practice</li>
<li>Creativity is knowing what to do when the rules run out or there are no rules in the first place</li>
</ul>
<p>
All of these illustrate the importance of practice, knowledge and desire to do the job effectively. To treat it as a Craftsman would any other task. Unfortunately the number of people who treat testing as a Craft is small, though vocal. The testing world is experiencing something similar to what highschool education did in the 90s with the elimination of shop classes in place of computer labs. What schools turn out now are people who know the &#8216;why&#8217; of things rather than the &#8216;how&#8217;. Or as stated by the executive director of the California Agricultural Teachers&#8217; Association<br />
<br />
<i>We have a generation of students that can answer questions on standardized tests, know factoids, but they can&#8217;t do anything</i><br />
<br />
If we swap &#8216;testers&#8217; for &#8216;students&#8217; in that statement you have a very generalized view of what is happening in the Standardization and Certification camps. That&#8217;s great that you know the definition of a testing task, but do you know how to do it, when to do it, and more importantly, when not to do it?<br />
<br />
The focus on standardization in the testing world is also partly the cause of the mass offshoring of testing in recent years. If a task can be broken into a series of finite, distinct rules, then the task is able to be delivered globally. Not only that, but according to MIT economist Frank Levy, there is a <i>downward pressure on wages for jobs based on rules.</i><br />
<br />
The way forward then is to treat Testing as Craft, to be delivered by people who take pride in the application of learned skill and knowledge and not as an assembly-line like task where the testers are easily replaceable cogs.<br />
<br />
<b>Old bikes don&#8217;t flatter you, they educate you</b><br />
<br />
Crawford is by day a motorcycle repair person and is constantly confronted by new problems, scenarios and indeed contexts. He says quite clearly that &#8220;Old bikes don&#8217;t flatter you, they educate you&#8221; and then to show that discovery is not limited only to bike maintenance he quotes Iris Murdoch about learning a new language<br />
<br />
<i>My work is a progressive revelation of something which exists independently of me.</i><br />
<br />
Software systems educate us daily, if not hourly as they reveal themselves to our inquiries. How effectively they educate us is largely dependent on how well we prepare ourselves for the eduction. Philosopher Albert Borgmann has the idea of Focal Practice which is the decided, regular and normally communal devotion to a focal thing.<br />
<br />
Focal Practice has existed in pockets of the Testing Community for awhile though under many different names. Testing Games, Katas, Dojos and now the Weekend Testing events are all examples of Focal Practice. And seeking them out and participation in are signs of someone who wants to master the craft of testing.<br />
<br />
<b>A Series of Masters</b><br />
<br />
In the trades, the accepted way of learning is to apprentice at the side of a Master. They offer a model to follow and pass along their accumulated knowledge. Crawford recounts his education as a &#8216;gearhead&#8217; in his his teens and early twenties; all of which was informal and outside of the traditional school system. And was utterly important towards his education of the craft.<br />
<br />
<i>Now I saw it. Countless times since that day, a more experienced mechanic has pointed out to me something that was right in front of my face, but which I lacked the knowledge to see. It is an uncanny experience; the raw sensual data reaching my eye before and after are the same, but without the pertinent framework of meaning, the features in question are invisible. Once they have been pointed out, it seems impossible that I should not have seen them before.</i><br />
<br />
The testing craft needs to develop more of these situations where the awareness lights turn on, never to turn off again. Not only through the treatment of testing as a craft, but through continued analysis of ourselves as it relates to the problem at hand. One of the big evolutions the Agile movement brought was the periodic reflection of how the process was working at a team level through retrospectives. Crawford speaks on the singular with metacognition which is thinking about your thinking. Or as he describes it<br />
<br />
<i>It is what you do when you top for a moment in your pursuit of a solution, and wonder whether your understanding of the problem is adequate.</i><br />
<br />
Is my context [still] correct? Am I on mission? It is the mission I think I was on before?<br />
<br />
Another important role of the Master is to allow for learning opportunities through safe failure. Failure is something that has been removed from modern learning. Especially education based on books and theoretical discussion than from hands-on doing. Would you want a plumber redoing your bathroom who has worked under someone with years of experience or who memorized a book and wrote a multiple choice test? Now think about whose hands your software is in.<br />
<br />
<b>Tacit Knowledge</b><br />
<br />
So what makes someone a Master? I would think it has a large part to do with the accumulation ,and ability to recall, a substantial body of Tacit Knowledge. This is what <a href="http://www.amazon.ca/exec/obidos/ASIN/0316010669/adamgoucher-20/">Blink</a> by Malcolm Gladwell focuses on and its inclusion in another work lends more credence to the idea.<br />
<br />
Just as firefighters will often leave a building just before it collapses &#8212; not because it looks like it will collapse, but because it doesn&#8217;t look &#8216;normal&#8217; based upon their years of experience, a Tester can find bugs not because they are obvious, but because something doesn&#8217;t look right on the screen in front of them.<br />
<br />
Just having the tacit knowledge is not enough though. They have to be able, and willing, to pass along that knowledge which has to be done on a human-to-human basis as it is too complex to capture algorithmically.<br />
<br />
<b>&#8216;Manual&#8217; Testers</b><br />
<br />
It is trendy to pour disdain on both people who practice manual testing and indeed the very notion of it much along the way the trade of plumbing has been dumbed down to the image of a slovenly character with their butt hanging out of the back of their ill fitting pants. The trades used to be something to aspire to and commanded respect, now they are the subject of jokes and ridicule. Is Testing destined to go down that same route? I hope not. But if it is to escape such a fate we need to stand up against bad testing education and practices and bring the pride and ethic to it that a Craftsman brings to their work.<br />
<br />
<b>Impressions of <i>Shop Class as Soulcraft</i></b><br />
<br />
This is not a testing book. Instead it is a reverent look at a way of life that is under attack in a systemic manner. Though sometimes preachy, if you are interested in reading about someone&#8217;s journey from being a kid who liked cars that went fast to someone who fixes motorcycles for a living and how that can relate to testing then this book is a nice quick read for you. I&#8217;m going to say now that it won&#8217;t be one of the most important books for testers of the year, but it opened my eyes to a couple new concepts and reinforced some others and for that it was well worth the money.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/X3AaZDNDo8s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1471</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1471&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=shop-class-as-testcraft</feedburner:origLink></item>
		<item>
		<title>Assert vs. Verify in Se-RC</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/v5Rp-66b2Xs/</link>
		<comments>http://adam.goucher.ca/?p=1467#comments</comments>
		<pubDate>Fri, 21 May 2010 03:07:41 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1467</guid>
		<description><![CDATA[So in Se there is the notion of a Assert and a Verify. To recap, when an Assert fails, then the script stops immediately and goes to the teardown function. A Verify will ultimately fail the script, but the test will continue. In Se-IDE the commands make the syntax very obvious but it is less [...]]]></description>
			<content:encoded><![CDATA[<p>So in Se there is the notion of a Assert and a Verify. To recap, when an Assert fails, then the script stops immediately and goes to the teardown function. A Verify will ultimately fail the script, but the test will continue.<br />
<br />
In Se-IDE the commands make the syntax very obvious but it is less so in Se-RC. Here is a python example to illustrate how to use both.<br />
</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">unittest</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> assertExample<span style="color: black;">&#40;</span><span style="color: #dc143c;">unittest</span>.<span style="color: black;">TestCase</span><span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> setUp<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">verificationErrors</span> = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">selenium</span> = selenium<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;localhost&quot;</span>, <span style="color: #ff4500;">4444</span>, <span style="color: #483d8b;">&quot;*chrome&quot;</span>, <span style="color: #483d8b;">&quot;http://you.site/&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">selenium</span>.<span style="color: black;">start</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">wait_for_page_to_load</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;10000&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> testSomething<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
      se = <span style="color: #008000;">self</span>.<span style="color: black;">selenium</span>
      se.<span style="color: black;">assertEqual</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Login&quot;</span>, se.<span style="color: black;">get_title</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">try</span>:
          <span style="color: #008000;">self</span>.<span style="color: black;">assertEqual</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Please login&quot;</span>, se.<span style="color: black;">is_element_present</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;welcome_message&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
      <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">AssertionError</span>, e:
          <span style="color: #008000;">self</span>.<span style="color: black;">verificationErrors</span>.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>e<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> tearDown<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">selenium</span>.<span style="color: black;">stop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">assertEqual</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>, <span style="color: #008000;">self</span>.<span style="color: black;">verificationErrors</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #dc143c;">unittest</span>.<span style="color: black;">main</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>
First let&#8217;s look at the Assert. In line 14 of the above example I&#8217;m using a common pattern of Asserting upon page load that I am on the correct page. If the title is not exactly <i>Login</i>, then the script will end and the tearDown function will execute. The rationale here is that if the script has taken you to a page that you are not expecting, then the rest of the script&#8217;s results will be suspect &#8212; if able to continue at all.<br />
<br />
Lines 15 &#8211; 18 are the Verify. Notice how it still is based on an Assert provided by unittest, but we are catching the AssertionError that gets thrown on failure. This prevents the script from running and allows us to track the failure to the list that was created on line 6. The list contents are what will determine whether a test passes (empty) or fails (non-empty) which is done in the tearDown (line 22).<br />
<br />
Is this the only place to use an Assert or Verify? Of course not, its just a common one. I also use Asserts when something is critical to the purpose of the script (the pass / fail criteria) or when something is worthy of extra special attention. The trick is to use both in a way that makes sense for your application and scripts.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/v5Rp-66b2Xs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1467</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1467&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=assert-vs-verify-in-se-rc</feedburner:origLink></item>
		<item>
		<title>May SFSE Meetup</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/TVFS635cy6E/</link>
		<comments>http://adam.goucher.ca/?p=1466#comments</comments>
		<pubDate>Thu, 20 May 2010 06:16:45 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1466</guid>
		<description><![CDATA[Tonight was the May San Francisco Selenium Meetup and since I was in town I put on my combination Selenium-IDE Maintainer and Sauce Labs hat to schmooze. The main even featured two presentations, the first by two Mozilla automation folks who talked about their testing rig. Some takeaways&#8230; They mentioned they use custom firefox profiles [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight was the May <a href="http://www.meetup.com/seleniumsanfrancisco/calendar/13311788/">San Francisco Selenium Meetup</a> and since I was in town I put on my combination Selenium-IDE Maintainer and Sauce Labs hat to schmooze.<br />
<br />
The main even featured two presentations, the first by two Mozilla automation folks who talked about their testing rig. Some takeaways&#8230;<br />
</p>
<ul>
<li>They mentioned they use custom firefox profiles for their tests to get around self-signed certificate problems. This is one of my great Se pet peeves. DON&#8217;T USE SELF-SIGNED CERTIFICATES IN TEST! Actually, unless you are using certificate based authentication, don&#8217;t turn on SSL <i>at all</i> in test. And if you, really, really, really think you need SSL in test (you don&#8217;t&#8230;) then use a real, issued by a trusted CA certificate. Oh, and custom firefox profiles are a good idea in general anyways as it gives you complete control over the environment (prefs.js is your friend)</li>
<li>The coolest thing about their whole rig was that it was controlled by a bot you interact with on irc. Outstanding!</li>
<li>They also created a central module (they use Python) which had all their object locators in it. Not really Element-UI and not really GUI-Map, but it seems to work. Se itself should think about how to support this pattern in a clean, well-documented manner&#8230;</li>
<li>XPath as a pretty deserving reputation for being slow as a locator strategy, but seeing XPath in a script <i>is not a bug</i>. XPath is ridiculously powerful. Bad XPath is a bug, but bad anything is a bug. Good, robust XPath is a good way to access an object.</li>
</ul>
<p>
After Mozilla was Linked-In&#8217;s turn to show off their Page Object based testing framework. I also have some notes / opinions on it too.</p>
<ul>
<li>Their setup method had <i>@env = Environment.new</i> which is a nice object to be carrying around. I don&#8217;t know what was in Environment, but I suspect I&#8217;ll be stealing the concept. Or re-stealing I guess as I did something similar 4 or 5 years ago in an old framework but stopped doing it for some reason.</li>
<li>Using the <i>link</i> locator strategy fails when testing across locales. Duh! Why didn&#8217;t I realize that before now?</li>
<li>The whole framework seemed over-engineered. This was only the send Page Object one I had seen, but that seems to be a pattern. Abstraction is absolutely necessary for success, but to what end?</li>
<li>What was cool as a result of all this effort was there was no direct Selenium commands in the scripts.</li>
<li>Jason [Huggins] did some like code review during the talk which provided another key thing to remember when writing scripts and that is to let specific tools do what is better when appropriate. For instance, rather than looping through a list of XPath elements in Selenium (slow), hand off the page source to Beautiful Soup or Nokogiri whose sole purpose of existing is to do that stuff (fast)</li>
</ul>
<p>
One final bit of trivia. The meetup was held at the Mozilla (as in makers of Firefox browser) offices in Mountain View. That same building housed the first offices of Netscape &#8212; which of course died a slow painful death and whose source code formed the basis of Firefox. What goes around comes around&#8230;</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/TVFS635cy6E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1466</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1466&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=may-sfse-meetup</feedburner:origLink></item>
		<item>
		<title>Discovery Testing</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/vFo9aBf2WCU/</link>
		<comments>http://adam.goucher.ca/?p=1465#comments</comments>
		<pubDate>Wed, 19 May 2010 14:19:07 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1465</guid>
		<description><![CDATA[This week&#8217;s Writing Excuses is on Discovery Writing. I&#8217;m a discovery writer so it was important on that level, but one thing stood out that was important for testers too. The 1/4 mark is the one to really worry about because that is where the freedom starts to disappear because you have written so much [...]]]></description>
			<content:encoded><![CDATA[<p>This week&#8217;s Writing Excuses is on <a href="http://www.writingexcuses.com/2010/05/16/writing-excuses-4-19-discovery-writing-2/">Discovery Writing</a>. I&#8217;m a discovery writer so it was important on that level, but one thing stood out that was important for testers too.<br />
<br />
<i>The 1/4 mark is the one to really worry about because that is where the freedom starts to disappear because you have written so much and you realize that everything else i write from here on out has to take into account all the stuff i have already written. I can&#8217;t destroy the setting and the characters I have already done&#8230;</i><br />
<br />
Do we need to coin the phrase Discovery Testing? I&#8217;m not sure what the full definition would be, but I suspect it would differ from Exploratory testing in how much detail and discipline is used when following up items. And perhaps the lack of a charter as illustrated by this quote that was used on the podcast:<br />
<br />
<i>Writing serialized fiction is like jumping out of an airplane with a needle and thread and hoping you’ll have sewn a parachute before you hit the ground</i> &#8211; Neil Gaiman<br />
<br />
Swap out &#8216;Writing serialized fiction&#8217; with &#8216;Discovery testing&#8217; and I think you have the idea.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/vFo9aBf2WCU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1465</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1465&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=discovery-testing</feedburner:origLink></item>
		<item>
		<title>Why Do You Test?</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/rArU_WgoT4E/</link>
		<comments>http://adam.goucher.ca/?p=1463#comments</comments>
		<pubDate>Tue, 18 May 2010 00:53:35 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1463</guid>
		<description><![CDATA[MX Performance Magazine has an article in the May, 2010 edition comparing the Canadian Tire Nascar Series, the Parts Canada Superbike Series and CMRC Motocross. The thing that struck me from it was not the actual series differences (which is outwardly pretty obvious), but the why the pro teams do it. Nascar &#8211; act as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mxpmag.com/">MX Performance Magazine</a> has an article in the May, 2010 edition comparing the Canadian Tire Nascar Series, the Parts Canada Superbike Series and CMRC Motocross. The thing that struck me from it was not the actual series differences (which is outwardly pretty obvious), but the <i>why</i> the pro teams do it.<br />
</p>
<ul>
<li><i>Nascar</i> &#8211; act as a feeder series to the main Nascar series</li>
<li><i>Superbike</i> &#8211; says one insider &#8211; &#8216;These sports are stupidly expensive at this level, and we do what we do strictly for the tertiary benefits&#8217;</li>
<li><i>Motocross</i> &#8211; to move product for the sponsors; what wins on Sunday sells on Monday (incidentally, my bike will be <a href="http://www.ktm.com">orange</a> for that reason)</li>
</ul>
<p>
Understand <i>why</i> a team exists will put all of its activities in to their proper scope and priority. Misunderstanding it will result in (potentially lots) of wasted money.<br />
<br />
The same thing with testing. If you don&#8217;t know the <i>why</i> of what you doing, then you are not testing, you are just flipping switches.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/rArU_WgoT4E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1463</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1463&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=why-do-you-test</feedburner:origLink></item>
		<item>
		<title>I blame James</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/3Y88YhdZMIk/</link>
		<comments>http://adam.goucher.ca/?p=1461#comments</comments>
		<pubDate>Sun, 16 May 2010 21:01:08 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1461</guid>
		<description><![CDATA[I&#8217;ve had the two ideas contained in this post kicking about for a bit and in James&#8217; most recent blog he says Next week it will be exactly 23 years since I first became a full-time software tester, and nearly 17 years since the first time I stood up at a conference and pointed out [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had the two ideas contained in this post kicking about for a bit and in James&#8217; most <i>recent blog</i> he says<br />
<br />
<i>Next week it will be exactly 23 years since I first became a full-time software tester, and nearly 17 years since the first time I stood up at a conference and pointed out the absurdity of &#8220;traditional&#8221; testing methods.</i><br />
<br />
which is a fantastic setup for both of them.<br />
<br />
And that is, while I&#8217;ve been a full-time software tester for ~ 12 years I became a <i>professional</i> software tester at some point during Monday, August 29, 2005. That day is notable not only for hurricane Katrina ripping through New Orleans, but because that is when took RST (and met James as a result). So everything I have accomplished or done since then can be traced to those three days.<br />
<br />
It was this eye-opening that I heard from several people at Star which inspired them to be a better tester but start writing and talking about testing. But it also goes further than that as people have told me that they talk and write about testing because <i>I</i> write and talk about it.<br />
<br />
This network effect is extremely powerful, but it turns out that while I blame James for what I have become, it doesn&#8217;t start with him. I would guess that it actually goes back to Jerry [Weinberg]. So in effect I should blame Jerry, but since I have only met him once I&#8217;ll stick to blaming James.<br />
<br />
Now in no means is James the only one to directly blame, though he is the catalyst, as Michael [Bolton] has directly done a lot to shape the outcome. But, to me, let&#8217;s call them &#8216;primary influences&#8217;. And let&#8217;s say that I am a primary influence to someone else, and them in turn to someone else.<br />
<br />
Let&#8217;s also accept and acknowledge that influence is a two-way street which means people further away from the origin can still influence at it. See James&#8217; Star keynote with its 5 minute discussion of <a href="http://blog.testyredhead.com/">Lanette</a> as Exhibit A of this.<br />
<br />
Confused yet?<br />
<br />
Here&#8217;s a video.<br />
<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/aCQx9U6awFw&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/aCQx9U6awFw&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object><br />
<br />
The video is talking about the dimensions of space and time, but it works well-ish for influence also.<br />
<br />
Note: blame throughout this post is used <i>very</i> tongue-in-cheek.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/3Y88YhdZMIk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1461</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1461&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=i-blame-james</feedburner:origLink></item>
		<item>
		<title>Insights, not just information</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/IPPJ3L7jDkM/</link>
		<comments>http://adam.goucher.ca/?p=1459#comments</comments>
		<pubDate>Fri, 14 May 2010 12:14:34 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1459</guid>
		<description><![CDATA[Canadian Business magazine had their Investor 500 issue recently which they bill as &#8216;a guide to the market&#8217;. The Editor&#8217;s Letter tackles head on the notion of its continued relevance in today&#8217;s information age. &#8230;we are not in the information business, we&#8217;re in the insight business. Information is the 10-ton slab of coal. Cheap, ubiquitous [...]]]></description>
			<content:encoded><![CDATA[<p>Canadian Business magazine had their <i>Investor 500</i> issue recently which they bill as  &#8216;a guide to the market&#8217;. The <a href="http://www.canadianbusiness.com/after_hours/opinions/article.jsp?content=20100524_10001_10001">Editor&#8217;s Letter</a> tackles head on the notion of its continued relevance in today&#8217;s information age.<br />
<br />
<i>&#8230;we are not in the information business, we&#8217;re in the insight business. Information is the 10-ton slab of coal. Cheap, ubiquitous and useful only to a point. Insight is the rough diamond trapped somewhere inside. We&#8217;re living in a world that is inundated with coal, which only serves to reinforce the value of the diamonds.</i><br />
<br />
&#8216;Information&#8217; is one of the words I pick up on when going through articles since, as testers, our job is to provide <i>quality related information</i>. But is that really a good enough definition in light of the coal/diamond metaphor? I&#8217;m tempted to lean towards no and that we should be attempting to provide <i>quality related insight</i> to the stakeholders instead.<br />
<br />
Anyone can provide information (bugs, crashes, feelings), but it takes training, dedication and experience to be able to provide insight.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/IPPJ3L7jDkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1459</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1459&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=insights-not-just-information</feedburner:origLink></item>
		<item>
		<title>The Selenium-IDE 1.x plugin API (Part 11) – Exporting New Commands</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/HvCsvBk38WI/</link>
		<comments>http://adam.goucher.ca/?p=1456#comments</comments>
		<pubDate>Wed, 12 May 2010 15:01:46 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1456</guid>
		<description><![CDATA[Back in Part 4 of this series, Extending the Selenium API I showed how to use addPluginProvidedUserExtension method to add new commands to Se-IDE. As a result of some real-world usage, a bit of a bug (well, more of an unimplemented feature technically) was discovered. And that was the exporting of the script to one [...]]]></description>
			<content:encoded><![CDATA[<p>Back in Part 4 of this series, <a href="http://adam.goucher.ca/?p=1348">Extending the Selenium API</a> I showed how to use addPluginProvidedUserExtension method to add new commands to Se-IDE. As a result of some real-world usage, a bit of a bug (well, more of an unimplemented feature technically) was discovered. And that was the exporting of the script to one of the supported RC languages. Something that has now been solved.<br />
<br />
So what has changed? Well, if your added functionality applies only to Se-IDE (such as random, or goto or anything else done better in the RC language) then nothing; you still only provide the URL to your JS as the first, and only argument. If you want it exported though, there is an optional second argument to specify.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;?</span>xml version<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;1.0&quot;</span><span style="color: #339933;">?&gt;</span>
<span style="color: #339933;">&lt;?</span>xml<span style="color: #339933;">-</span>stylesheet href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;chrome://global/skin/&quot;</span> type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/css&quot;</span><span style="color: #339933;">?&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;</span>overlay id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;preflight_extension_loader_overlay&quot;</span>
         xmlns<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&quot;</span>
         xmlns<span style="color: #339933;">:</span>html<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.w3.org/1999/xhtml&quot;</span><span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;application/x-javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;chrome://selenium-ide/content/api.js&quot;</span><span style="color: #339933;">/&gt;</span>
    <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;application/x-javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;chrome://preflight/content/preflight.js&quot;</span><span style="color: #339933;">/&gt;</span>
    <span style="color: #339933;">&lt;</span>html<span style="color: #339933;">:</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;application/javascript&quot;</span><span style="color: #339933;">&gt;</span>
        ide_api <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> API<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        ide_api.<span style="color: #660066;">addPluginProvidedUserExtension</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;chrome://preflight/content/extensions/extension-random.js&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;chrome://preflight/content/extensions/extension-random.xml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">:</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>overlay<span style="color: #339933;">&gt;</span></pre></div></div>

<p>
Yes, sorry. That is an XML file that needs to be provided. I could have completely rewritten things to not take XML, but the existing code expected it and working is better than pretty more often than not. Here is the format of that XML.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;apidoc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;function</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;randomString&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;options&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>type and length separated by a pipe. type can be alpha, number or alphanumeric<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;var&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>variable to store random string<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;comment<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Generates a random string of specified type and length<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/comment<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/function<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/apidoc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>
Now the astute readers will notice that the information contained in that xml looks suspiciously like that which is is the Reference tab of the Se-IDE. And you would be correct. But that is also the source of another bug that has yet to be addressed: if you want to have your functionality appear in the reference box, it will also be exported via the Se-RC formatters.<br />
<br />
This new functionality will be available in the version 1.0.7 of Se-IDE which should be out in the next week.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/HvCsvBk38WI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1456</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1456&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-selenium-ide-1-x-plugin-api-part-11-%25e2%2580%2593-exporting-new-commands</feedburner:origLink></item>
		<item>
		<title>All Solutions Have a Problem</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/y0Mmsv942C8/</link>
		<comments>http://adam.goucher.ca/?p=1455#comments</comments>
		<pubDate>Wed, 12 May 2010 12:23:06 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1455</guid>
		<description><![CDATA[Yesterday on twitter I put out automation can help you do better testing, or it can help you do poor testing faster as a bit of a vent around a problem I&#8217;ve been having the last couple days. And it might have gone no further than a sarcastic quip except for an article in the [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday on twitter I put out <i>automation can help you do better testing, or it can help you do poor testing faster</i> as a bit of a vent around a problem I&#8217;ve been having the last couple days. And it might have gone no further than a sarcastic quip except for an article in the paper today talking about how all solutions have problems, and not just the normal, cheery, all problems have solutions.<br />
<br />
Part of being a tester is being cynical. Or as I&#8217;ve pointed out a couple times, the difference between a cynic and a realist is spelling.<br />
<br />
Its only about 1/4 of a page long, so <a href="http://www.nationalpost.com/story.html?id=3015506">go read it now</a>, but here are the choice quotes.<br />
</p>
<ul>
<li>Yesterday&#8217;s solutions appear on the front page of the paper as today&#8217;s problems.</li>
<li>For a solution to metamorphose into a problem it first has to work. Solutions that don&#8217;t work fade away, like Esperanto. The solutions that haunt us are the ones that function well</li>
<li>Problems are reincarnated solutions. One could say that problems get second leases on life as solutions, or solutions get second leases on life as problems</li>
<li>A solution is something that substitutes itself for the problem it has eliminated</li>
<li>There are no solutions, only replacements of one problem with another. This doesn&#8217;t mean that all problems are equal, only that all problems are problems. The best we can hope for is that our solutions will be problems we prefer to the problems they have replaced.</li>
<li>Some replacement problems are more manageable than their predecessor problems and therefore they&#8217;re easier to mistake for solutions.</li>
</ul>
<p>
So how does this relate to testing? Two things very clearly jump out at me.<br />
<br />
First is the whole notion of automation. Testing was slow so lets put an army of machines to work! Seems like an excellent idea on the front of it, until you get tools that allow for quick, but horrible testing.<br />
<br />
The second is information overload and the use of Metrics. Yes, the modern software development project has a lot of information to juggle and using algorithms to help navigate it is a good idea. Except when taken to the extreme and entire courses of action are determined by math and not by humans making rational tradeoffs and decisions. Just ask the quants on Wall Street how well that worked in the last decade.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/y0Mmsv942C8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1455</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1455&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=all-solutions-have-a-problem</feedburner:origLink></item>
		<item>
		<title>Desire Paths</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/htn3IzH0W7A/</link>
		<comments>http://adam.goucher.ca/?p=1452#comments</comments>
		<pubDate>Sun, 09 May 2010 21:45:09 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1452</guid>
		<description><![CDATA[I was listening to a podcast recently (which one doesn&#8217;t matter this time) and they mentioned a university which put down a big expanse of grass down between two buildings &#8212; and did not put any paths through it. Instead what they did was wait for students to wear paths where they walked constantly and [...]]]></description>
			<content:encoded><![CDATA[<p>I was listening to a podcast recently (which one doesn&#8217;t matter this time) and they mentioned a university which put down a big expanse of grass down between two buildings &#8212; and did not put any paths through it. Instead what they did was wait for students to wear paths where they walked constantly and then put the &#8216;proper&#8217; paths there.<br />
<br />
It turns out that the school in question was the University of Oregon and this was documented in <a href="http://www.amazon.ca/exec/obidos/ASIN/0195018249/adamgoucher-20/">The Oregon Experiment</a> and the idea of having people first tread where they want the paths to be is called <a href="http://en.wikipedia.org/wiki/Desire_path">Desire Paths</a>. Desire Paths have been replicated elsewhere which lead Larry Wall to once say:<br />
<br />
<i>When they first built the University of California at Irvine they just put the buildings in. They did not put any sidewalks, they just planted grass. The next year, they came back and put the sidewalks where the trails were in the grass. Perl is just that kind of language. It is not designed from first principles. Perl is those sidewalks in the grass.</i><br />
<br />
I&#8217;m actually a bit amazed that it took me to hear about Desire Paths as they seem the perfect metaphor for Iterative development processes. The application is the untrodden field and with each sprint the paths created by the small, incremental feature development and acceptance slowly gain more permanence and become the final means to get from point A to point B.<br />
<br />
Landscapers/planners who utilize Desire Paths in their work don&#8217;t pretend to have the conceit of knowing how their customers will <i>really</i> use their designs. Agile shops also don&#8217;t hold that conceit, not being able to predict the future; of the product, of the market, of the economy, of &#8230;<br />
<br />
So put Desire Paths into the toolbox of teaching methods. For me, this was a <i>huge</i> find (and further solidifies my argument that the big learning for the craft will come from outside Testing). Hopefully it will be for you too.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/htn3IzH0W7A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1452</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1452&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=desire-paths</feedburner:origLink></item>
		<item>
		<title>The next wave of learning</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/pJ43hd3R840/</link>
		<comments>http://adam.goucher.ca/?p=1448#comments</comments>
		<pubDate>Mon, 03 May 2010 03:35:24 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1448</guid>
		<description><![CDATA[I&#8217;m quite convinced that the next ideas that revolutionize testing will not come from the relatively insulated world of testing itself. Instead, they will come from likely unrelated fields and be ported to testing. The biggest example of this right now is likely the notion of testing as a big-c Craft with the notions of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m quite convinced that the next ideas that revolutionize testing will not come from the relatively insulated world of testing itself. Instead, they will come from likely unrelated fields and be ported to testing. The biggest example of this right now is likely the notion of testing as a big-c Craft with the notions of Apprenticeship, Journeymen and Masters.<br />
<br />
Following up on this theory I strolled over to some adjacent conferences while and Star East and picked up what loot I could from them, including&#8230;<br />
<br />
<a href="http://halldale.com/cat">The Journal for Civil Aviation Training</a></p>
<ul>
<li>There are three types of training: initial, transition, recurring</li>
<li><i>Although [air traffic] controllers do not need a college degree to be hired; it helps.</i> &#8211; Ah ha! Another industry that is confused about the value of formal education.</li>
<li><i>Fatigue Science</i> and defect rates is a post-graduate paper waiting to be written</li>
<li>Leadership in the cockpit (by the Captain) is a top issue for regulators currently. I think part of the testing world is in good shape from a leadership perspective, but it needs to keep spreading.</li>
<li>There is a spooky reliance on &#8216;intelligent automation&#8217; in the next batch of planes. Where is today&#8217;s test automation [in general] on the intelligent / dumb-as-rocks scale?</li>
<li>Training for the Embraer Phenom series jet is <i>tailored</i> to the pilots current experience, skills and deficiencies emphasizing certain parts over others depending. Nice! Tailored training is what will separate the next wave of coaches from the rest of the pack.</li>
<li>The laughable &#8216;security theatre&#8217; that one goes through at airports is recognized as such by people in the industry. And yet it persists. When does &#8216;testing theatre&#8217; or &#8216;quality theatre&#8217; enter the lexicon?</li>
<li>Powerpoint training <i>lacks context, interactivity, instructional design and graphic design</i>. Hear hear! Powerpoint should <i>support</i> the training, not be the training.</li>
<li>Four steps to alter attitude through training: motivate the learner, help the learner diagnose their challenges, empower the learner with knowledge to overcome challenges, reinforce the learning</li>
<li>In a show report from the &#8216;Aerospace &amp; Defence Training Show&#8217; in Dubai, the following bullets are identified as challenges.
<ul>
<li>Out-of-date checks, which do not address the threats of modern aircraft operations</li>
<li>Training and checking for events, which are extremely rare</li>
<li>Making best use of limited and expensive training resources to ensure quality training is delivered at affordable prices</li>
<li>Combatting increased dependence on automation</li>
<li>Incorporating meaning CRM training into training programs</li>
</ul>
</li>
<li>In the same keynote were some solutions being implemented to address these, including
<ul>
<li>Using evidence based training via recognized programmes, which address legacy training and checking issues</li>
<li>Use the considerable data available worldwide to enhance training and make it relevant and appropriate for individual airlines</li>
<li>Review possible solutions to address the degradation of manual handling skills &#8211; <i>The what?!?!</i></li>
<li>Acknowledging the fact that the 21st century does not mean training has to be wholly technologically driven &#8211; we can and must learn from the past</li>
</ul>
</li>
</ul>
<p>
<a href="http://www.laranews.net">Low-Fare &amp; Regional Airlines</a></p>
<ul>
<li>The proposed legislation &#8230; may be a solution in search of a problem</li>
<li><i>Hours [of flight time] is no longer a predictor of competence. It is true that to go through all of the things you need to become a proficient pilot, it does add p to a certain number of hours. But what the industry has to get its arms around is having the right kind of training in the right environment to produce a highly proficient, skilled, safe pilot</i> &#8211; Ummm, certifications and boot-camps anyone?</li>
<li><i>It is going to become ever more important to tailor the training for the environment in which the pilot will operate</i> &#8211; Hey, again with the tailored training. A trend from another industry that could be borrowed?</li>
<li>Same article &#8211; <i>Effectively, what we did was mould our training around the student, instead of making the student fit into our training programmes</i></li>
</ul>
<p>
<a href="http://www.divorcemag.com/">Divorce Magazine</a></p>
<ul>
<li>So the url on the magazine is http://www.divorcemagazine.com but it redirects to http://www.divorcemag.com/. Dead-tree hand not know what the electronic one is doing?</li>
<li>This is actually a consumer magazine rather than lawyer-focused which is where the interesting bits would be</li>
</ul>
<p>
There was also <i>The Essential Marketing Guide For Family Lawyers</i>, but its big and has lots of content &#8212; just like this post, so it will have to wait.<br />
<br />
And with that, your mission from now on fellow conference goers is to crash the other conferences that are going on in the same facility as your conference and get their niche publications. They are the mine from which the next gold nugget will be found.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/pJ43hd3R840" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1448</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1448&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-next-wave-of-learning</feedburner:origLink></item>
		<item>
		<title>The Many Hats of a Tester</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/jJd_-OuXLM4/</link>
		<comments>http://adam.goucher.ca/?p=1444#comments</comments>
		<pubDate>Mon, 03 May 2010 01:35:20 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1444</guid>
		<description><![CDATA[This year&#8217;s Star East was the first one I had attended and I got to speak there; which is a pretty big deal as it is one of, if not the, most well known stops on the testing speaking circuit. (Thanks Lee!) My session was a reprise of the Hats Art Show that I did [...]]]></description>
			<content:encoded><![CDATA[<p>This year&#8217;s Star East was the first one I had attended <i>and</i> I got to speak there; which is a pretty big deal as it is one of, if not the, most well known stops on the testing speaking circuit. (Thanks Lee!) My session was a reprise of the Hats Art Show that I did at last year&#8217;s Agile conference (<a href="http://adam.goucher.ca/?p=1192">results</a>, <a href="http://adam.goucher.ca/?p=1204">analysis</a>), but what made it interesting is that the demographics between the two conferences are <i>very</i> different.<br />
<br />
I think what I want to do now is run this workshop in India, Europe, Google and Microsoft and see what the results are like on an even larger sample size &#8212; but throwing in cultural issues into the mix as well.<br />
</p>
<div style="width:425px" id="__ss_3943155"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/agoucher/the-many-hats-of-a-tester" title="The Many Hats of a Tester">The Many Hats of a Tester</a></strong><object id="__sse3943155" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adamgoucher-themanyhatsofatester-100502200839-phpapp01&#038;stripped_title=the-many-hats-of-a-tester" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3943155" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adamgoucher-themanyhatsofatester-100502200839-phpapp01&#038;stripped_title=the-many-hats-of-a-tester" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/agoucher">Adam Goucher</a>.</div>
</div>
<p>
My observations from this round:</p>
<ul>
<li>A <i>Detective</i> variant was still the top hat from the group</li>
<li>Firefighter was also right near the top of both lists. I continue to think that the people wearing this hat need to have a think about why they wear it and do some corporate structural changing.</li>
<li>There was significantly more of what I will call &#8216;old school&#8217; type hats with the Star East crowd. Things like &#8216;Soldier&#8217;, &#8216;Defender&#8217;, &#8216;Victim&#8217; and &#8216;Spy&#8217; all, to me, reflect the sort of us-versus-them, command-and-control quality police that still exists in too many organizations. But it was to see whether this would happen, as I thought it would, that the workshop was held</li>
<li>The teams that people split into tended to be far more insular than at Agile with very little conversation happening between teams. And when the Art was on the walls, few wanted to move things around for better groupings.</li>
<li>There were still Hats on the wall that had no stickers on them to indicate that someone wore it</li>
<li>I&#8217;m quite happy that Teacher came in second, and Coach in fifth. Aside from the Detective type ones, I think those are important ones every tester should strive for.</li>
<li>Bottleneck really frightens me. Even more so than Firefighter. As someone who does a bit of agile coaching, I&#8217;d be looking at removing that hat from the organization as quickly as possible.</li>
<li>The hats I listed at the beginning to illustrate the concept were not listed.</li>
<li>Some teams did just a list of hats, other just the name, others drew the hat and yet others coloured it in (I gave them crayons)</li>
</ul>
<p>
Full Results:</p>
<ul>
<li><i>Sherlock Holmes</i> &#8211; 30</li>
<li><i>Teacher</i> &#8211; 25</li>
<li><i>Firefighter</i> &#8211; 23</li>
<li><i>Bottleneck</i> &#8211; 22</li>
<li><i>Coach</i> &#8211; 19</li>
<li><i>Houdini</i> &#8211; 16</li>
<li><i>Soldier</i> &#8211; 16</li>
<li><i>Product Support</i> &#8211; 15</li>
<li><i>Liaison</i> &#8211; 15</li>
<li><i>Diplomat</i> &#8211; 13</li>
<li><i>Collaborator (which was a princess hat&#8230;)</i> &#8211; 11</li>
<li><i>Translator</i> &#8211; 10</li>
<li><i>Battered</i> &#8211; 10</li>
<li><i>Pioneer</i> &#8211; 10</li>
<li><i>Hard Hat (to fend criticism)</i> &#8211; 8</li>
<li><i>Chef (a little of this and a little of that)</i> &#8211; 8</li>
<li><i>Scapegoat</i> &#8211; 8</li>
<li><i>Defender</i> &#8211; 8</li>
<li><i>Traffic Cop</i> &#8211; 8</li>
<li><i>Victim</i> &#8211; 7</li>
<li><i>Hero</i> &#8211; 7</li>
<li><i>Butcher</i> &#8211; 6</li>
<li><i>Psychologist</i> &#8211; 6</li>
<li><i>Advisor</i> &#8211; 6</li>
<li><i>Wishful Thinking (a crown in a thought bubble that says &#8220;Its good to be the king&#8221;)</i> &#8211; 6</li>
<li><i>Chef (What? You never bribed the devs with cookies? How else can you make them write unit tests?)</i> &#8211; 6</li>
<li><i>Reporter</i> &#8211; 6</li>
<li><i>Doctor/Nurse</i> &#8211; 5</li>
<li><i>The developers were late getting the material for your hat so we cam&#8217;t show it yet. Do you mind telling me what you think of the above anyways? (was a &#8216;?&#8217;)</i> &#8211; 5</li>
<li><i>Mediator</i> &#8211; 5</li>
<li><i>Team Player</i> &#8211; 4</li>
<li><i>Chef (cooking up test automation)</i> &#8211; 4</li>
<li><i>Keeper of Hats Hat</i> &#8211; 4</li>
<li><i>Spy</i> &#8211; 4</li>
<li><i>Chemist (person who does experiments)</i> &#8211; 3</li>
<li><i>Wizard</i> &#8211; 3</li>
<li><i>Referee</i> &#8211; 3</li>
<li><i>Planner</i> &#8211; 3</li>
<li><i>Guardian</i> &#8211; 2</li>
<li><i>Happy</i> &#8211; 2</li>
<li><i>Hard Hat (construction)</i> &#8211; 2</li>
<li><i>Parent (which appears to be a halo)</i> &#8211; 2</li>
<li><i>Celebration Planner</i> &#8211; 2</li>
<li><i>Lawyer</i> &#8211; 2</li>
<li><i>Clown</i> &#8211; 2</li>
<li><i>Psychic</i> &#8211; 2</li>
<li><i>Viking</i> &#8211; 2</li>
<li><i>Navigator</i> &#8211; 2</li>
<li><i>Author</i> &#8211; 2</li>
<li><i>Warrior</i> &#8211; 1</li>
<li><i>Invisible (things are going well)</i> &#8211; 1</li>
<li><i>Bandit</i> &#8211; 1</li>
<li><i>Fun</i> &#8211; 1</li>
<li><i>Witch/Dominatrix (shared a card so not sure where the star should be applied)</i> &#8211; 1</li>
<li><i>Conductor</i> &#8211; 1</li>
<li><i>Farmer</i> &#8211; 1</li>
<li><i>Judge</i> &#8211; 1</li>
<li><i>Timekeeper</i> &#8211; 1</li>
<li><i>Doctor</i> &#8211; 1</li>
<li><i>Pilot</i> &#8211; 1</li>
<li><i>Weaver</i> &#8211; 1</li>
<li><i>Swimmer</i> &#8211; 0</li>
<li><i>Dunce</i> &#8211; 0</li>
<li><i>Debugger</i> &#8211; 0</li>
<li><i>Reference Builder</i> &#8211; 0</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/jJd_-OuXLM4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1444</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1444&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-many-hats-of-a-tester</feedburner:origLink></item>
		<item>
		<title>Testing Inspiration When You Least Expect It</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/spHTHRAMCys/</link>
		<comments>http://adam.goucher.ca/?p=1438#comments</comments>
		<pubDate>Sun, 02 May 2010 15:44:24 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1438</guid>
		<description><![CDATA[I was honoured to be invited as the speaker for the April dinner meeting of TASSQ. While the audience was small (only around 25 people I think), I had a lot of fun doing it and think it can get added to my stable of re-usable talks (though on-demand performances of it will be missing [...]]]></description>
			<content:encoded><![CDATA[<p>I was honoured to be invited as the speaker for the April dinner meeting of <a href="http://www.tassq.org">TASSQ</a>. While the audience was small (only around 25 people I think), I had a lot of fun doing it and think it can get added to my stable of re-usable talks (though on-demand performances of it will be missing the props I use for it).<br />
</p>
<div style="width:425px" id="__ss_3746983"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/agoucher/testing-inspiration" title="Testing inspiration">Testing inspiration</a></strong><object id="__sse3746983" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testinginspiration-100416060108-phpapp02&#038;rel=0&#038;stripped_title=testing-inspiration" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3746983" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testinginspiration-100416060108-phpapp02&#038;rel=0&#038;stripped_title=testing-inspiration" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/agoucher">Adam Goucher</a>.</div>
</div>
<p>
The gist of the talk is that the biggest inspiration we can have as testers comes not from blogs, or courses, or even other <i>experts</i>, but from living our lives. It is said that you really, really, know a language when you don&#8217;t do the mental flip to your first language, translate it, then speak; you just speak. The same thing happens with testers as well. You know you have truly become a tester when you see testing all around you, and not just at your desk between 9 and 5.<br />
<br />
The first half of the talk relates how being a house league lacrosse coach has helped me be a better test team lead using strikingly similar approaches to skill development, planning, stakeholder management and efficiency improvements. This is essentially the same talk that I gave at CAST 2008. There is no blog post on it specifically, but I did <a href="http://adam.goucher.ca/papers/AdamGoucher-KidsInArmor.doc">write a paper</a> on it.<br />
<br />
The middle section is all about the lessons I&#8217;ve learned about testing from fixing both my washing machine and dryer. I never wrote up the washing machine story, but did with <a href="http://adam.goucher.ca/?p=389">the dryer tale</a>.<br />
<br />
The final section is about how we have too much stuff and so I needed to build a shed in the backyard to hold it all. Again, this was documented at the time on the blog <a href="http://adam.goucher.ca/?p=343">here</a> and <a href="http://adam.goucher.ca/?p=351">here</a>.<br />
<br />
The talk wraps up with the reiteration of the theme, which is that <i>Testers Notice Stuff</i>. We truly do &#8212; often to the detriment to the non-testers around us. Just ask your non-tester friends how much &#8216;fun&#8217; it is to watch a movie around you.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/spHTHRAMCys" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1438</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1438&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=testing-inspiration-when-you-least-expect-it</feedburner:origLink></item>
		<item>
		<title>The Buccaneer Tester: Winning Your Reputation</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/NIA0VXF7yYw/</link>
		<comments>http://adam.goucher.ca/?p=1435#comments</comments>
		<pubDate>Sun, 02 May 2010 14:59:46 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1435</guid>
		<description><![CDATA[Surprisingly, or perhaps not so, the keynotes at Star East this year were pretty good overall. Too often at conferences you get preached to subtly sales pitched during them but James, Elisabeth and Alan all did wonderfully. Alas, for the latter two I didn&#8217;t take notes as I was already familiar-ish with the content. Here [...]]]></description>
			<content:encoded><![CDATA[<p>Surprisingly, or perhaps not so, the keynotes at Star East this year were pretty good overall. Too often at conferences you get preached to subtly sales pitched during them but <a href="http://www.satisfice.com">James</a>, <a href="http://www.testobsessed.com">Elisabeth</a> and <a href="http://www.angryweasel.com">Alan</a> all did wonderfully. Alas, for the latter two I didn&#8217;t take notes as I was already familiar-ish with the content. Here though is the write-up for James&#8217; keynote.<br />
</p>
<ul>
<li>Steve McQueen, Consulting Software Tester<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/M37VOKIaDUw&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/M37VOKIaDUw&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></li>
<li>If you want to test really well, you need to ferret out the underlying dynamics and principles</li>
<li>There is no navy that is going to save me. Its just me and my band of friends.</li>
<li>Think about what makes you unique</li>
<li>Thing that lead to self-development and earning reputation
<ul>
<li>Project experiences</li>
<li>Writing</li>
<li>Teaching</li>
<li>Speaking</li>
<li>Innovation</li>
<li>Vision</li>
<li>Study</li>
</ul>
</li>
<li>You earn reputation <i>if</i> you don&#8217;t keep it secret</li>
<li>Are you a buccaneer scholar?
<ul>
<li>You live free &#8211; have independence, seek first hand knowledge, self directed learning</li>
<li>You hunt ideas &#8211; are an explorer, driven by curiosity, intrigued by puzzles, dared by complexity</li>
<li>You win your place in the world of thinkers &#8211; earned credibility, earned reputation, you have constructed yourself</li>
</ul>
</li>
<li>Key components to being successful
<ul>
<li>Reputation</li>
<li>Portfolio</li>
<li>Performance</li>
</ul>
</li>
<li>You are not a commodity; don&#8217;t act like one</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/NIA0VXF7yYw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1435</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1435&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-buccaneer-tester-winning-your-reputation</feedburner:origLink></item>
		<item>
		<title>A Smattering of Selenium #15</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/HbVDLsUiW-E/</link>
		<comments>http://adam.goucher.ca/?p=1427#comments</comments>
		<pubDate>Sun, 18 Apr 2010 22:49:29 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1427</guid>
		<description><![CDATA[I&#8217;m in San Francisco for a couple days, and so had to clear out some tabs before getting on the plane. Here&#8217;s what I thought was interesting. Tellurium is another wrapper around Selenium. Looks like it has a couple things that we could borrow back. Why Selenium and Rspec? describes how to use RSpec with [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in San Francisco for a couple days, and so had to clear out some tabs before getting on the plane. Here&#8217;s what I thought was interesting.<br />
</p>
<ul>
<li><a href="http://code.google.com/p/aost/">Tellurium</a> is another wrapper around Selenium. Looks like it has a couple things that we could borrow back.</li>
<li><a href="http://www.lostechies.com/blogs/stgillen/archive/2010/04/15/why-selenium-and-rspec.aspx">Why Selenium and Rspec?</a> describes how to use RSpec with Selenium and how to involve both people who can code, and those who cannot.</li>
<li>If you are writing Se tests, then you should also be running them under CI. <a href="http://jlorenzen.blogspot.com/2010/04/thoughts-on-fowlers-continuous.html">Thoughts on Fowler&#8217;s Continuous Integration</a> is a nice, quick tour through the [one of] the more important papers on the topic. Good review to some, necessary primer for others.</li>
<li>Looks like the &#8216;Se in the cloud&#8217; space is about to get more crowded with <a href="http://regressr.com/app/home">regressr</a> coming out of stealth mode soon. (Where is my invite?)</li>
<li>There is also <a href="http://www.seleniumshots.com">Selenium Shots</a> which looks like it is a custom Grid which will send you screen shots of what your page renders like in different browsers. I found out about them through their <a href="http://github.com/kylejginavan/selenium_shots">gem</a></li>
<li>Another gem that crossed my path was <a href="http://github.com/ngty/cross-stub">Cross-stub</a> which attempts to solve <i>Existing mocking/stubbing frameworks support only stubbing in the current process. This is OK most of the time. However, when running cucumber integration test suite in non-webrat mode, these in-process stubbing frameworks simply doesn’t help.</i> Or something.</li>
<li>Want to run your Webrat, Polonium or JSUnit tests in the Sauce Labs OnDemand cloud? You could use the <a href="http://github.com/pivotal/saucelabs-adapter">Saucelabs-adaptor</a> gem that the folks at Pivotal have created.</li>
<li>Gojko discusses <a href="http://gojko.net/2010/04/13/how-to-implement-ui-testing-without-shooting-yourself-in-the-foot-2/">How to implement UI testing without shooting yourself in the foot</a></li>
<li>Alister Scott, a Watir core developer, talks a bit about the future of <a href="http://watirmelon.com/2010/04/10/watir-selenium-webdriver/">Watir, Selenium &amp; WebDriver</a></li>
<li>Kevin wastes no time rebooting the Se-Grid project by <a href="http://seleniumhq.wordpress.com/2010/04/13/selenium-grid-1-0-6-released/">releasing Se-Grid 1.0.6</a> which is primarily a bug fix release.</li>
<li><a href="http://www.testuff.com">Testuff</a> is &#8216;on-demand software test management&#8217;. I haven&#8217;t needed to use it, but they now <a href="http://www.testuff.com/help/automation-tools#selenium">have an integration with Se-IDE</a>. Of course, what they should do is make it an Se-IDE plugin, but&#8230;</li>
<li>If you are using Se and Zope2, then <a href="http://seleniumhq.wordpress.com/2010/04/13/selenium-grid-1-0-6-released">Zelenium</a> might be of interest. Or might not. Your call.</li>
<li>Aaron (after some prompting) ruminates on <a href="http://fijiaaron.wordpress.com/2010/04/07/smart-or-dumb-page-objects/">Smart or Dumb Page Objects</a>.</li>
<li>I&#8217;ve never heard of the <a href="http://en.wikipedia.org/wiki/ZK_(framework)">ZK Framework</a>, but if you use it then you can run Se tests against it with <a href="http://code.google.com/p/zk-ztl/">zk-ztl</a></li>
<li>Speed of execution, and the need for increasing it are constant topics in the Se community. Here is one solution that uses Rake &#8211; <a href="http://devver.net/blog/2010/04/speeding-up-multi-browser-selenium-testing-using-concurrenc/">Speeding up multi-browser Selenium Testing using concurrency</a></li>
<li>Kevin&#8217;s (as in the new maintainer of Se-Grid) day job is Mogotest which is where he posted a tutorial on <a href="http://mogotest.com/blog/2010/04/13/how-to-accept-self-signed-ssl-certificates-in-selenium">How to Accept Self-Signed SSL Certificates in Selenium</a>. Again, just say no to self-signed certificates in test, and this problem doesn&#8217;t happen.</li>
<li>Love RSpec and Se? You could try the <a href="http://github.com/stgillen/selenium-rspec-dsl">selenium-rspec-dsl</a> gem. Looks like its brand spankin&#8217; new.</li>
<li>I love the <a href="http://faker.rubyforge.org/">Faker gem</a> when automating in Ruby/Rails. There is now a <a href="http://github.com/slashdotdash/faker-cs">C# (3.5 SP1) port</a> of it.</li>
<li>For a client I need to look at controlling things <i>of</i> the browser, not <i>in</i> the browser. Here are some of the links I&#8217;ve collected on the subject. First, there is <a href="http://qtp-help.blogspot.com/2009/07/selenium-handle-dialogs.html">Selenium &#8211; Handle Dialogs</a> which uses <a href="http://www.autoitscript.com/autoit3/index.shtml"AutoIT</a>. And an alternate solution is <a href="http://www.linux.com/archive/feed/50847">Automating Windows with Autohotkey</a>. For people on the Mac there is<a href="http://automator.us/leopard/index.html">Automator</a>. But unfortunately if you are Linux then you are out of luck due to lack of standard windowing systems.</li>
<li>Synchronizing when an AJAX request is finished can sometimes be a pain. Here is <a href="http://blogs.nuxeo.com/dev/2009/03/selenium-ajax-requests.html">a solution if you are using Ajax4JSF or RichFaces</a></li>
<li>The introduction to <a href="http://mintdigital.github.com/pyrite/">Pyrite</a> pretty much says it all: <i>We found Cucumber to be awesome, but no one was reading the features. We found Webrat to be fantastic, but way too complex for what we wanted. So, we made Pyrite &#8211; a few selenium-client methods wrapped up in a readable way.</i></li>
<li>Frames can be a bitch. <a href="http://www.testingexcellence.com/accessing-iframe-data-with-selenium-rc ">Accessing IFRAME Data with Selenium RC</a> tries to limit the pain</li>
<li><a href="http://ironruby.codeplex.com/releases/view/25901">IronRuby has gone 1.0</a>. If you are a .NET shop, <i>stop</i> creating your scripts in C# and start using IronRuby. As in immediately &#8212; if not sooner. (Well, you could also use IronPython, but thats not newsworthy this round.)</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/HbVDLsUiW-E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1427</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1427&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-smattering-of-selenium-15</feedburner:origLink></item>
		<item>
		<title>An Update</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/dOOvj9vJS5E/</link>
		<comments>http://adam.goucher.ca/?p=1426#comments</comments>
		<pubDate>Wed, 07 Apr 2010 13:58:22 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1426</guid>
		<description><![CDATA[It has been a fair while since I did an update post about the goings-on in my world so somewhat looks back as well as forward. Beautiful Testing &#8211; Last October my first book, Beautiful Testing, was published. Element 34 &#8211; I parted ways with Zerofootprint at the end of the year and have started [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a fair while since I did an update post about the goings-on in my world so somewhat looks back as well as forward.<br />
</p>
<ul>
<li><i>Beautiful Testing</i> &#8211; Last October my first book, <a href="http://www.amazon.ca/exec/obidos/ASIN/0596159811/adamgoucher-20/">Beautiful Testing</a>, was published.</li>
<li><i>Element 34</i> &#8211; I parted ways with Zerofootprint at the end of the year and have started my own Selenium consultancy / coaching / micro-isv, <a href="http://element34.ca">Element 34</a>. I&#8217;m booked solid for the next couple months, but ping me anyways; I&#8217;m happy to chat about Se and Testing at length. In the future, Selenium postings will go to that site and this one will remain general testing.</li>
<li><i>Se-IDE</i> &#8211; I&#8217;m now a core team member for the Selenium project, specifically focused on Se-IDE. The main goal for Se-IDE this year is to get plugin support sufficiently robust so new features and abilities are done through plugins rather than change the core.</li>
<li><i>Selenium Book</i> &#8211; I started to write a book on Selenium for one of the major tech publishers, but we&#8217;ve mutually shelved the project after work scheduled conflicted with producing it. Hopefully we&#8217;ll renew it towards the end of the year.</li>
<li><i>TASSQ</i> &#8211; Last week I spoke at the March <a href="http://www.tassq.org">TASSQ</a> dinner meeting. Slides and notes will be posted over the next couple days</li>
<li><i>Targeting Quality</i> &#8211; I&#8217;ll be speaking at this year&#8217;s <a href="http://www.kwsqa.org/conference/">Targeting Quality</a> conference on April 21st about how to succeed with Selenium</li>
<li><i>Star East</i> &#8211; The week after Targeting Quality I&#8217;ll be at Star East for a ridiculously busy conference schedule. On the Wednesday I&#8217;ll be doing another version of my Testing Hats Art Show immediately followed by a Beautiful Testing book signing. On Thursday I&#8217;ll be part of the Test Automation table at lunch to field questions on Selenium and &#8216;automating checks and facilitating testing&#8217; then later in the afternoon you can book 1-on-1 time with me as part of a meet-the-speaker program. At some point I hope to attend a session or two &#8212; or maybe just hold court in a central area somewhere. Oh. And if you haven&#8217;t booked your spot at Star East yet, I have discount codes.</li>
<li><i>Agile 2010</i> &#8211; Acceptance notices went out last week and I&#8217;ll be speaking at this year&#8217;s Agile conference in Nashville in August about managing test cases in an Agile-ish manner.</li>
</ul>
<p>
In other words, learning a lot about being self-employed and being a consultant as well as speaking fairly regularly. In a perfect world I would speak somewhere once a month; May, June and July is still open.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/dOOvj9vJS5E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1426</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1426&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=an-update</feedburner:origLink></item>
		<item>
		<title>A Smattering of Selenium #14</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/tiFzqlmi34k/</link>
		<comments>http://adam.goucher.ca/?p=1422#comments</comments>
		<pubDate>Mon, 05 Apr 2010 00:49:28 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1422</guid>
		<description><![CDATA[Not many links this time, but still some important stuff. Kevin detailed how to hack SnapsIE to take full page or full canvas screenshots Speaking of Kevin, he was anointed as the new maintainer of Se-Grid. Congrats! Dawn announced that Selenesse .NET is go! Jim&#8217;s application likes to warm up before having automation applied to [...]]]></description>
			<content:encoded><![CDATA[<p>Not many links this time, but still some important stuff.<br />
</p>
<ul>
<li>Kevin detailed how to <a href="http://nirvdrum.com/2010/03/25/how-to-take-full-page-or-full-canvas-screenshots-in-windows.html">hack SnapsIE to take full page or full canvas screenshots</a></li>
<li>Speaking of Kevin, he was anointed as <a href="http://ph7spot.com/blog/new-selenium-grid-maintainer">the new maintainer of Se-Grid</a>. Congrats!</li>
<li>Dawn announced that <a hef="http://www.passionatetester.com/2010/03/selenesse-dotnet-is-go.html">Selenesse .NET is go!</a></li>
<li>Jim&#8217;s application likes to warm up before having automation applied to it and he shows <a href="http://frazzleddad.blogspot.com/2010/03/warming-up-sites-before-running.html">how to use NUnit&#8217;s SetUpFixture</a> to do it</li>
<li>A lot of people don&#8217;t evolve their testing beyond Se-IDE and make use of the -htmlSuite option of Se-RC. If you are one of them, then <a href="http://oshyn.com/_blog/Software_Development/post/Hudson-Selenium-Test-Suite/">how to run htmlsuites in Hudson</a> is an important article for you.</li>
<li>In the fall I did a presentation on how to succeed with web automation; the <a href="http://agile.dzone.com/videos/start-success-web-automation">video is now online</a>. I haven&#8217;t watched it, nor intend to, but so far I&#8217;ve had positive feedback. (Oh, and I <a href="http://adam.goucher.ca/?p=1287">posted the slides earlier</a> but they are Lessig-ish so don&#8217;t worry about them too too much.)</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/tiFzqlmi34k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1422</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1422&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-smattering-of-selenium-14</feedburner:origLink></item>
		<item>
		<title>Five Months of ‘The Startup Success Podcast’</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/RupsaNP-SLk/</link>
		<comments>http://adam.goucher.ca/?p=1416#comments</comments>
		<pubDate>Mon, 22 Mar 2010 02:35:57 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1416</guid>
		<description><![CDATA[Somewhere during the Adam-relentlessly-over-schedules-himself plan, I got behind in listening to The Startup Success Podcast. In the past three weeks I&#8217;ve dug myself out of that hole (though I notice there is a new episode in iTunes now) so here are notes from the ones from mid October 2009 to last week. Derek Sivers, CDBaby [...]]]></description>
			<content:encoded><![CDATA[<p>Somewhere during the Adam-relentlessly-over-schedules-himself plan, I got behind in listening to <a href="http://startuppodcast.wordpress.com">The Startup Success Podcast</a>. In the past three weeks I&#8217;ve dug myself out of that hole (though I notice there is a new episode in iTunes now) so here are notes from the ones from mid October 2009 to last week.<br />
</p>
<h3><a href="http://startuppodcast.wordpress.com/2009/10/07/show-40-derek-sivers-cdbaby-and-muckwork/">Derek Sivers, CDBaby and MuckWork</a></h3>
<ul>
<li>Only do what only you can do</li>
<li>You have to do everything you can to <i>not</i> take people out of the questions</li>
<li>But you need the right people</li>
<li>People should <i>freak out</i> about your startup idea or you should get a new idea</li>
</ul>
<p></p>
<h3><a href=http://startuppodcast.wordpress.com/2009/11/02/show-43-renn-vara-snp-communications/">Renn Vara, SNP Communications</a></h3>
<ul>
<li>Just tell the truth</li>
<li>Be ready for your own success</li>
<li>Transparency is the direction things are going</li>
<li>If you find your leader&#8217;s communication strategy in the legal, marketing or public relations departments, then it will fail</li>
<li>In crisis, go to trust. Fast!</li>
<li>People will forgive quickly if you admit error. They don&#8217;t want to feel like you are hedging</li>
<li>But sometimes it makes sense to <i>not</i> communicate</li>
<li>Or if there is a leak for instance, maybe you want to get even further ahead of the story. Jump out and go way beyond the leak with even more information.</li>
<li>If I am not who I say I am, I am in deep trouble</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2009/11/16/show-45-backing-up-your-code-startup-coworking-in-seattle/">Renn Vara, SNP Communications</a></h3>
<ul>
<li>People pay for products, not ideas</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/01/06/show-50-2010-predictions-and-authordeveloper-wally-mcclure/">2010 Predictions and author, developer Wally McClure</a></h3>
<ul>
<li>Thou shalt not think that the mobile device is a scaled down desktop</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/01/13/show-51-scientistco-founder-mark-juras/">Scientist/co-founder Mark Juras</a></h3>
<ul>
<li>Build not the smallest chunk they are willing to use, but the smallest chunk they are willing to pay for</li>
<li>Sometimes you have to market the idea space before you can market your product</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/01/20/show-52-sramana-mitra-on-positioning-your-startup/">Sramana Mitra on Positioning your Startup</a></h3>
<ul>
<li>Target people with a specific problem, not a generic solution</li>
<li>Don&#8217;t be a solution looking for a problem</li>
<li>What unfair market advantages do you have individually / as a team? Exploit them.</li>
<li>Having the right questions is important to finding the right answer</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/02/10/show-55-david-allen-startups-and-getting-things-done/">David Allen, Startups, and Getting Things Done</a></h3>
<ul>
<li>There are only two types of problems: we don&#8217;t know how to do what we want and we don&#8217;t know what we want</li>
<li>The secret of GTD is to figure out the next discrete actionable item</li>
</ul>
<p></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/02/17/show-56-carl-erickson-atomic-object/">Carl Erickson, Atomic Object</a></h3>
<p>You should just listen to this one start-to-finish. I know Carl and he is <i>super</i> smart. AO is one of the companies I would love to hang out at for awhile if I had a chance to.</p>
<ul>
<li>If you say you don&#8217;t have the time to test, it is ironically a sign that now is exactly the time you need to be testing</li>
<li>&#8216;Teams of two&#8217; is sometimes more culturally acceptable than &#8216;pair programming&#8217;</li>
<li>Pair programming is a risk reduction strategy.</li>
<li>You don&#8217;t have to &#8216;pair&#8217; all the time, but solo code beside each other so conversations can still happen.</li>
<li>The intersection of my ignorance and your ignorance is pretty small</li>
<li>Sometimes its easier to show an ugly baby and make it prettier with feedback</li>
<li>A startup is more than just an interesting idea, its a hell of a lot of execution and the people (of course)</li>
</ul>
<p><br/></p>
<h3><a href="http://startuppodcast.wordpress.com/2010/02/25/show-57-seth-godin-on-linchpins-and-startups/">Seth Godin on Linchpins and Startups</a></h3>
<p>No bullets here other than I&#8217;m in the midst of a lengthy Seth Godin fanboy phase so you should just listen to the whole episode for yourself.<br />
</p>
<h3><a href="http://startuppodcast.wordpress.com/2010/03/04/show-58-greg-jones-bookkeeping-express/">Greg Jones, Bookkeeping Express</a></h3>
<ul>
<li>Outsource the things you don&#8217;t want to do</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/RupsaNP-SLk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1416</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1416&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=five-months-of-the-startup-success-podcast</feedburner:origLink></item>
		<item>
		<title>Selenium and Printing</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/il8KBwT9HaM/</link>
		<comments>http://adam.goucher.ca/?p=1411#comments</comments>
		<pubDate>Mon, 22 Mar 2010 02:05:41 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1411</guid>
		<description><![CDATA[One of my Se clients is a SAAS Point of Sale system and as such, printing receipts is embedded into their application. Unfortunately, Se knows how to handle things in the browsers but not things of the browser. Print dialogs and such fall into the latter category. In this care we&#8217;re in the fortunate situation [...]]]></description>
			<content:encoded><![CDATA[<p>One of my <a href="http://shopkeep.com/">Se clients</a> is a SAAS Point of Sale system and as such, printing receipts is embedded into their application. Unfortunately, Se knows how to handle things <i>in</i> the browsers but not things <i>of</i> the browser. Print dialogs and such fall into the latter category.<br />
<br />
In this care we&#8217;re in the fortunate situation of using completely controlling the environment on the client site and can pull some tricks to make the problem of printing go away. For now, we&#8217;re only talking about Firefox on Windows (XP).<br />
<br />
The first thing to do is install a Virtual Printer. There are a couple available, but I was pressed for time to find a solution and didn&#8217;t want to buy a commercial one so used <a href="http://www.mabuse.de/tech-vprinter.mhtml">VPrinter</a>. I named it <i>Virtual Printer</i> which both describes it and is neutral enough that I could swap it out for another and not have to change any other aspects of the scripting environment &#8212; which is of course and important consideration.<br />
<br />
Next I needed to tell Se, or more correctly the browser the Se scripts are running in about the printer. And a few other things around printing.<br />
<br />
To this I started to use a custom Firefox profile for the scripts. This process is documented all over the place online (the magic search term is &#8216;firefoxProfileTemplate&#8217;) so I&#8217;ll skip it. But, what you want to do is take the profile a little bit further by creating a prefs.js in the profile which has the following:<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">user_pref<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;print.printer&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Virtual Printer&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
user_pref<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;print.always_print_silent&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
user_pref<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;print.show_print_progress&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
These preferences for curiosity sake are part of the tweaks normally used to put Firefox into &#8216;kiosk mode&#8217; and there are all sorts of interesting things to be discovered once you start exploring that.<br />
<br />
Anyways, one thing I am not yet doing is checking the actual &#8216;printed&#8217; values, so the VPrinter one might not be the best in that situation but since I am using Se-RC, any Virtual Printer that produces hackable output could be used in its place.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/il8KBwT9HaM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1411</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1411&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=selenium-and-printing</feedburner:origLink></item>
		<item>
		<title>A Smattering of Selenium #13</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/q1Qq225W0zM/</link>
		<comments>http://adam.goucher.ca/?p=1407#comments</comments>
		<pubDate>Mon, 22 Mar 2010 01:39:43 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1407</guid>
		<description><![CDATA[I&#8217;m at a client site this week, so should likely close all the browser windows I have hanging around which means its time for another Smattering of Selenium. Look snazzy with your Se tests running automagically with Hudson propaganda-wear! This is from August, but I don&#8217;t think I&#8217;ve linked to it yet. It appears to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at a client site this week, so should likely close all the browser windows I have hanging around which means its time for another Smattering of Selenium.</p>
<ul>
<li>Look snazzy with your Se tests running automagically with <a href="http://www.cafepress.com/hudson_ci">Hudson propaganda-wear!</a></li>
<li>This is from August, but I don&#8217;t think I&#8217;ve linked to it yet. It appears to be from a SF Se Meetup and features Dante Briones talking about <i>Page Object Model for Selenium Scripting</i>.<br />
<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="348" id="viddler_e4dbb158"><param name="movie" value="http://www.viddler.com/simple/e4dbb158/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/simple/e4dbb158/" width="437" height="348" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler_e4dbb158"></embed></object></li>
<li>Hot to use <a href="http://amalkov.blogspot.com/2010/03/fitnesseslimselenium-tandem.html">Fitnesse + SLIM + Selenium in tandem</a></li>
<li>Selenium got accepted as a <a href="http://google-opensource.blogspot.com/2010/03/meet-your-mentors-announcing-accepted.html">Google Summer of Code Mentoring Organization</a></li>
<li>Aaron Evans details <a href="http://fijiaaron.wordpress.com/2010/03/16/getting-past-untrusted-connections-on-self-signed-ssl-certs-using-selenium/">get past untrusted HTTPS connections with Selenium</a>. I maintain that the simplest thing to do is just not use HTTPS at all or spend the money to get a trusted certificate.</li>
<li><a href="http://log4p.com/2010/03/16/selenium2-from-scalatest/">Se2 with Scalatest</a></li>
<li>Se with Cold Fusion using MxUnit framework via <a href="http://cf-bill.blogspot.com/2010/02/seleniummx-selenium-mxunit-framework.html">SeleniumMx</a></li>
<li><a href="http://www.eviltester.com/index.php/2010/02/26/automated-web-testing-with-selenium-tutorial/">Selenium Simplified</a> which is the first book out on Selenium (that I know of) is now in beta.</li>
<li>If you are using Selenese tests with CI, here is a page on <a href="http://cf-bill.blogspot.com/2010/02/selenium-and-cruise-control-gotcha-and.html">merging the result files</a></li>
<li>Got NTLM? Dawn Cannan does, but explains <a href="http://www.passionatetester.com/2010/03/how-to-handle-windows-authentication.html">how to handle windows authentication popups in Se-RC</a></li>
<li>I feel like I have linked to this already, but even if I have it is worth a re-link; Sai Venkatakrishnan explains <a href="http://developer-in-test.blogspot.com/2009/09/functional-test-suite-in-c-or-java-why.html">why not using a scripting language for Se tests is dumb</a>. OK, so that isn&#8217;t his exact messaging, but I&#8217;ll take it further than he does to make a point.</li>
<li>Dale Emery brings some automation theory to the table with his <a href="http://cwd.dhemery.com/2010/03/layers/">Four Layers in Automated Tests</a></li>
<li><a href="http://robertnyman.com/firefinder/">Firefinder</a> is a plugin for Firefox which can find stuff via their CSS selector. Could be a handy thing to have if you have to run scripts against IE and don&#8217;t want to pay the XPath tax</li>
<li>If you are using NAnt then you might care about <a href="http://invalidlogic.com/2010/03/12/selenium-server-in-nant">[Starting and Stopping the] Selenium Server in NAnt</a></li>
<li>And if you are using Java, then here is more of the same: <a href="http://www.testingexcellence.com/how-to-start-selenium-server-with-java-code/">How to Start Selenium Server with Java Code</a>. (Also serves as a good example of how poorly formatted code is hard to read)</li>
<li><a href="http://code.google.com/p/selenium4j/">selenium4j</a> appears to be converting Selenese scripts to Se2 (Java). Cool, but it pains me as someone involved in Se to see efforts outside of the project to add functionality that should be part of it. Join the Se dev community! To the best of my knowledge we don&#8217;t bite.</li>
<li><a href="http://agiletester.blogspot.com/2010/02/rquery.html">rquery</a> <i>extends selenium-webdriver by injecting jQuery into the browser, to expose the jQuery traversal API (including CSS 3 and jQuery’s custom extensions) to Ruby</i>. Ummm, ya, what he said.</li>
<li>Some more automation theory, this time on <a href="http://www.casualmiracles.com/blog/2010/03/04/writing-maintainable-acceptance-tests/">Writing Maintainable Acceptance Tests</a></li>
<li>Convert your Selenese scripts to SimpleTest using <a href="http://drupal.org/project/simpletest_selenium">this converter</a></li>
<li>There is now an official Se-Grid plugin for Hudson; see <a href="http://weblogs.java.net/blog/2009/05/16/hudson-selenium-grid-plugin">blog announcement</a> and <a href="http://wiki.hudson-ci.org/display/HUDSON/Selenium+Plugin">plugin page</a></li>
<li>Interested in how someone like the mighty Goog uses Se internally? Well, <a href="http://code.google.com/p/gmaps-api-issues/wiki/SeleniumTests">here are the Maps tests</a> &#8212; or at least the way they were some while back.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/q1Qq225W0zM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1407</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1407&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-smattering-of-selenium-13</feedburner:origLink></item>
		<item>
		<title>Generating Test Data for Integration Testing (with and/or for Selenium)</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/J6dROOpV_t8/</link>
		<comments>http://adam.goucher.ca/?p=1405#comments</comments>
		<pubDate>Wed, 03 Mar 2010 03:46:28 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1405</guid>
		<description><![CDATA[When you are running an integration test of any sort, one of the things you need to deal with is configuring the other component(s) you are interacting with; either for step 0 or later. There are a couple ways that you can deal with this, each with their pros and cons. And unsurprisingly, there is [...]]]></description>
			<content:encoded><![CDATA[<p>When you are running an integration test of any sort, one of the things you need to deal with is configuring the other component(s) you are interacting with; either for step 0 or later. There are a couple ways that you can deal with this, each with their pros and cons. And unsurprisingly, there is a order I would approach these.<br />
<br />
The easiest thing to do is create a script that executes all your setup in the other system(s). This is great since it is actually running through the end user process of creating the data in the system. Good or bad, it is &#8216;real&#8217;. But let&#8217;s face it, Selenium tests are not really zippy to begin with and what if you have a half dozen of these scripts to run? Well, your feedback loop is getting longer and longer. I&#8217;m not sure how much parallelization of tests will even solve the setup problem. This slowness of execution is offset though by the speed of creation (when prototyping with Se-IDE).<br />
<br />
What if you could have the benefit of using properly generated data but without the speed penalty of using a browser? Well, if you are using something like Rails you can make use of its RESTful dna. Properly constructed, creating data becomes as easy as POSTing a properly formatted string to the server and <i>voila!</i>, you have data. Yes, the user isn&#8217;t creating it directly, but if the app is properly constructed then all the same business rules will be triggered as well.<br />
<br />
But using a RESTful interface still means a network hit as well as being at the mercy of another system&#8217;s state. You can get rid of that by appropriate use of a Test Double. In this case, what you likely want is a Stub. A Stub returns canned data in response to certain criteria in the application. This breaks the very notion of &#8216;integration&#8217; testing by removing the integration, but lets you quickly test the &#8216;as long as the other end continues to send information in the format I expect&#8217; scenario. And that is a pretty important one. You <i>have</i> to remember to remove the stub every so often to make sure that it is still be getting the same data though.<br />
<br />
You could in theory jump straight to the Stub step if you choose, but I think there is value to going through all the steps. First, you verify what is being sent by the app. Next you verify that the business logic is not in the presentation layer by replacing the browser by an API and then you supercharge the script execution.<br />
<br />
And all the while you are learning about the application you are testing &#8212; and learning is kinda the point of testing.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/J6dROOpV_t8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1405</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1405&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=generating-test-data-for-integration-testing-with-andor-for-selenium</feedburner:origLink></item>
		<item>
		<title>Selenium and dynamically updated ‘values’</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/6LE0QBYRRzk/</link>
		<comments>http://adam.goucher.ca/?p=1401#comments</comments>
		<pubDate>Fri, 26 Feb 2010 15:35:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1401</guid>
		<description><![CDATA[I&#8217;m working on automating up a client&#8217;s AJAXy application right now and managed to get myself very confused frustrated yesterday over retrieving a value that was updated through a JS event. For context, there are a bunch of fields that can have numbers entered into them and on each key press a running total is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on automating up a client&#8217;s AJAXy application right now and managed to get myself <i>very</i> <strike>confused</strike> frustrated yesterday over retrieving a value that was updated through a JS event.<br />
<br />
For context, there are a bunch of fields that can have numbers entered into them and on each key press a running total is updated via Javascript and replaced in the DOM.<br />
<br />
Because the field that gets updated is an input one, the content of it is stored in the <a href="http://www.w3schools.com/TAGS/att_input_value.asp">value attribute</a>.<br />
<br />
This is a RoR application, so I&#8217;m using the selenium-client gem. To get an attribute named &#8216;value&#8217; using it you would do the following.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#0066ff; font-weight:bold;">@selenium</span>.<span style="color:#9900CC;">get_attribute</span> <span style="color:#996600;">&quot;//input[@id='currency_count_total_value']@value&quot;</span></pre></div></div>

<p>
And that works fine &#8212; until it is updated through Javascript. On the page the field will be updated but that snippet will always return the original value since the page hasn&#8217;t actually been updated &#8212; just the DOM.<br />
<br />
So how do you get the updated value? Well, after an embarrassing length of time the magic is to use the <i>get_value</i> method.<br />
</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#0066ff; font-weight:bold;">@selenium</span>.<span style="color:#9900CC;">get_value</span> <span style="color:#996600;">&quot;currency_count_total_value&quot;</span></pre></div></div>

<p>
Now, in theory they should do the same darn thing. Reality is different. Yesterday evening would seem to imply that get_attribute works on the most recently updated html retrieved from the server whereas get_value works directly on the DOM.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/6LE0QBYRRzk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1401</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1401&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=selenium-and-dynamically-updated-values</feedburner:origLink></item>
		<item>
		<title>Screenshots and Selenium</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/qAoJmPUVWpE/</link>
		<comments>http://adam.goucher.ca/?p=1399#comments</comments>
		<pubDate>Fri, 26 Feb 2010 15:00:47 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1399</guid>
		<description><![CDATA[At some point when I wasn&#8217;t paying attention Selenium grew the ability to take screenshots. The two commands of interest are captureScreenshot which takes an image of what is viewable in the the browser and captureEntirePageScreenshot which captures the entire content of the browser; visible or not. Screenshots and automation have a dubious history. Too [...]]]></description>
			<content:encoded><![CDATA[<p>At some point when I wasn&#8217;t paying attention Selenium grew the ability to take screenshots. The two commands of interest are <i>captureScreenshot</i> which takes an image of what is viewable in the the browser and <i>captureEntirePageScreenshot</i> which captures the entire content of the browser; visible or not.<br />
<br />
Screenshots and automation have a dubious history. Too often they get used to determine error conditions which leads to &#8216;the test failed because the pixel was off by one even through it actually passed functionality wise&#8217;. That is exactly opposite to how I would recommend you use this capability.<br />
<br />
Instead I think you should incorporate it two ways.<br />
</p>
<ol>
<li><i>Ack! Something went wrong!</i> &#8211; Any time an assertion fails, take a capture of what is being displayed on the screen. This could save you the time of running back through scripts to get to the error point and if it is an intermittent fail you can capture those states.</li>
<li><i>As an aid for humans</i> &#8211; The ability to drive different browsers is one of the great selling points of Selenium. But any tool like this is great for functionality, but really bad for layout and presentation problems. By wonderful coincidence though, humans are great at it. So why not make a script to capture each page in your application and stash it somewhere for a human to look at later?</li>
</ol>
<p>
This doesn&#8217;t mean that people have not been successful doing screenshot comparisons before. At CAST 2007 in Seattle, Harry Robinson <a href="http://adam.goucher.ca/?p=227">demonstrated how Google Maps</a> used image comparison when figuring out the driving directions algorithm. And at GTAC 2009 there was a presentation on <i>Fighting Layout Bugs &#8211; Techniques to automatically verify the work of HTML and CSS programmers</i> which Jeff Fry <a href="http://testingjeff.wordpress.com/2010/02/23/a-creative-heuristic-for-automated-detection-of-certain-layout-bugs/">summarizes quite nicely</a>. Here is the recording of that session.<br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/WY3C6FHqSqQ&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WY3C6FHqSqQ&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
So yes, it is possible to do automation using screenshots to determine pass/fail conditions. But for most projects they infrastructure and time to set it up is not worth the return. Instead, use them as tools to assist in figuring out what went wrong in a script or to capture information for later human analysis.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/qAoJmPUVWpE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1399</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1399&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=screenshots-and-selenium</feedburner:origLink></item>
		<item>
		<title>A Smattering of Selenium #12</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/XGOrU_HAtWw/</link>
		<comments>http://adam.goucher.ca/?p=1393#comments</comments>
		<pubDate>Wed, 24 Feb 2010 13:30:01 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1393</guid>
		<description><![CDATA[Selenium RC 1.0.3 is released Selenium IDE 1.0.5 is released! Mogo is making web testing easier; invitation alpha now on Step six of Oracle ADF Development Essentials is Testing Your Oracle ADF Faces Application with Selenium. I would have switched it for step seven which is CI, but whatever. FlexMonkium is a FlexMonkey -> Selenium [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://seleniumhq.wordpress.com/2010/02/23/selenium-1-0-3-released/">Selenium RC 1.0.3 is released</a></li>
<li><a href="http://saucelabs.com/blog/index.php/2010/02/selenium-ide-1-0-5-is-released/">Selenium IDE 1.0.5 is released!</a></li>
<li><a href="http://mogotest.com/">Mogo</a> is making web testing easier; invitation alpha now on</li>
<li>Step six of <a href="http://www.oracle.com/technology/pub/articles/adf-development-essentials/index.html">Oracle ADF Development Essentials</a> is <i>Testing Your Oracle ADF Faces Application with Selenium</i>. I would have switched it for step seven which is CI, but whatever.</li>
<li><a href="http://stu-stern.blogspot.com/2010/02/flexmonkium-flexmonkeyselenium-bridge.html">FlexMonkium</a> is a FlexMonkey -> Selenium bridge from the authors of <a href="http://www.gorillalogic.com/flexmonkey">FlexMonkey</a>. I&#8217;m not sure how they are getting around the need to have an enterprise license for recording, but I&#8217;ll be talking to them over the next day or two.</li>
<li><a href="http://blog.testyredhead.com/2010/02/22/learning-python-2.aspx">Learning Python</a> is not about Selenium, but about why learning a scripting language has helped Lanette Creamer do her job better and includes &#8216;<i>Since I&#8217;ve been working more with Python I can now understand Java better! I can read other people&#8217;s code and follow it more often. I&#8217;m pleased that I can get test ideas from what I think is missing in the code, not just what I see that is there.</i>&#8216;. If you are using Selenium, you should know a scripting language.</li>
<li>While not new, <a href="http://www.phpvs.net/2008/02/25/10-tips-for-building-selenium-integration-tests/">10 Tips for Building Selenium Integration Tests</a> saved me some time last weekend.</li>
<li>If you are using Rails and Sauce Labs OnDemand, the folks at Pivotal Labs have written a <a href="http://pivotallabs.com/users/spierson/blog/articles/1168-selenium-in-the-cloud-saucelabs-com-and-the-saucelabsadapter">saucelabs-adapter</a></li>
<li>Chris Bedford at the San Francisco Java User Group presents talking about Selenium.<br />
<br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/E9Rrlmxoh5I&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/E9Rrlmxoh5I&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></li>
<li><a href="http://cwe.mitre.org/top25/">2010 CWE/SANS Top 25 Most Dangerous Programming Errors</a> &#8211; do your scripts check for these?</li>
<li>Jason Huggins at the Denver Agile User Group talking about the Future of Automation<br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/pDMhB_HXFKc&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pDMhB_HXFKc&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></li>
<li>The next London Selenium Meetup is April 20 and will be on <a href="http://www.meetup.com/seleniumlondon/calendar/12426628/">Selenium 2</a> &#8212; going to record it guys?</li>
<li><a href="http://groups.google.com/group/selenium-users/browse_thread/thread/e6a2305adbc75c22/a8ba390e4c88fdbe?lnk=gst&#038;q=selenesse#a8ba390e4c88fdbe">Announcing Selenesse</a>, the modern Fitnesse -> Selenium bridge</li>
<li><a href="http://seleniumexamples.com/blog/plugins/selenium-ide-my-plugin-baby/">Flow Control and WebDriver Se-IDE plugins</a - again, fairly self explanatory</li>
<li>SeleniumHQ has a <a href="http://seleniumhq.wordpress.com/">new blog</a></li>
<li>If you are using Se with Rails, you <i>really</i> owe it to yourself to use <a href="http://mechanize.rubyforge.org/mechanize/">mechanize</a></li>
<li>The <a href="http://ibmresearchnews.blogspot.com/2010/02/capture-reuse-and-share-your-web.html">CoScripter Reusable History</a> plugin was this week&#8217;s Sikuli. The only thing I could see steal, erm, borrow-able is the exporting to human friendly text part. Who is going to write that formatter for Se-IDE?</li>
<li><a href="http://socghop.appspot.com/">Google Summer of Code</a> is on the horizon. What Se projects should we submit?</li>
<li>If you want the bleeding edge Se-IDE builds, you can get them out of the OpenQA <a href="http://xserve.openqa.org:8085/build/viewBuildHistory!default.action?buildKey=SEIDE-DEF">Continuous Integration</a> server. (Click the current build, then Artifacts)</li>
</ul>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/XGOrU_HAtWw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1393</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1393&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-smattering-of-selenium-12</feedburner:origLink></item>
		<item>
		<title>SEO is a scam. ‘The Art of SEO’ isn’t.</title>
		<link>http://feedproxy.google.com/~r/AdamGoucher/~3/eEXdotB3aqM/</link>
		<comments>http://adam.goucher.ca/?p=1390#comments</comments>
		<pubDate>Tue, 23 Feb 2010 21:34:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://adam.goucher.ca/?p=1390</guid>
		<description><![CDATA[I&#8217;ve just old (young?) enough to say that I have spent the majority of my life online. I remember when search engines were &#8216;new&#8217; and a time where Search Engine Optimization (SEO) was not even a thought. So I&#8217;ve seen SEO be born and enter its unruly teenage years and so far I can say [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just old (young?) enough to say that I have spent the majority of my life online. I remember when search engines were &#8216;new&#8217; and a time where Search Engine Optimization (SEO) was not even a thought. So I&#8217;ve seen SEO be born and enter its unruly teenage years and so far I can say pretty confidently that companies offering SEO services for high dollar per hour amounts are a <i>scam</i>.<br />
<br />
SEO is however a reality. The internet is so vast that discoverability is getting harder and harder even if you write content that people want. And because it is a reality, it is yet another thing that testers need to keep in mind when testing web properties.<br />
<br />
<a href="http://www.amazon.ca/exec/obidos/ASIN/0596518862/adamgoucher-20/">The Art of SEO</a> is the new tome from four SEO &#8216;experts&#8217;. The fact that experts is in quotes highlights one of my main objections to any book on SEO: there are no experts and it is a constantly moving target. The rub is that <i>none</i> of the major search engines provide their full algorithms for search discoverability or indexing so how can <i>anyone</i> claim to be an expert in it? Also, these algorithms are constantly evolving &#8212; often in a direct response to things happening in the SEO realm. That said though, if you are going to have someone write a book on such a subject, these four seem like a good choice.<br />
<br />
I&#8217;m not going to even try to hide the bias I have towards the SEO industry as a whole, so why on earth would I get a 575 page book on the subject? Simple. I wanted to make sure my &#8216;SEO is a scam&#8217; claim was correct &#8212; and I maintain that it is. But that doesn&#8217;t mean <i>you</i> shouldn&#8217;t buy this book. While SEO itself is a scam, &#8216;The Art Of SEO&#8217; is not one. Especially if you are new to the area.<br />
<br />
There is nothing in this book that could not be found online, but the ironic value in the book is that you don&#8217;t have to search for it. If you test an internet based web application, here are thing things I think you need to know about SEO &#8212; all of which are covered in the book.<br />
</p>
<ul>
<li><i>Spidering</i> &#8211; How spiders work, how to control their access to your site, and how to make their job easier</li>
<li><i>Structure</i> &#8211; There are ways to structure content to legitimately enhance its searchability without being scammy</li>
<li><i>Redirects</i> &#8211; How to deal with moved or removed content in such a way as to inherit prior page value</li>
<li><i>Rich Media</i> &#8211; Flash, images and audio all present challenges</li>
<li><i>Types of Search</i> &#8211; Horizontal, Vertical and Local search all have different needs</li>
</ul>
<p>
What is also important is the couple pages about &#8216;Grey / Black Hat&#8217; techniques. These are the tricks that raise your search ranking for a bit, but are often frowned upon by the search engines themselves and could get your delisted. The less that reputable SEO outsourcing companies often employ these techniques so people need to know what they are <i>and stay away</i>.<br />
<br />
There are a few things I don&#8217;t agree with in the book (of course). Primarily, the notion that runs through the book is that SEO should be first and foremost when planning a website. That is suits the needs of the users almost seems secondary. Being a book on SEO though from people who make their living on SEO, this bias is understandable. I would counter that if you forget the user experience though then it doesn&#8217;t matter that people found your site as they won&#8217;t use it.<br />
<br />
&#8216;The Art Of SEO&#8217; is not really a read-cover-to-cover book. Instead I would recommend picking a topic (like redirects), skimming the places where it is discussed and then see if your site needs tweaking. It is not exactly a heavy read so you should be able to get maximum value from it pretty quickly &#8212; I knew 97% of the content already and went through it in 2 swimming lessons and a snowboarding lesson.<br />
<br />
Do I recommend &#8216;The Art of SEO&#8217;? That depends on your prior knowledge in the area. If you have been creating content online for awhile and have picked up how to do SEO naturally then probably not. But if you are new to testing web applications or management of them, then there is a decent amount of value in the book and it would be a good addition to your bookshelf. Especially when you compare the $56.99 Canadian price tag to what so called SEO experts charge to do stuff to your website that you are more than capable of doing for yourself.</p>
<img src="http://feeds.feedburner.com/~r/AdamGoucher/~4/eEXdotB3aqM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://adam.goucher.ca/?feed=rss2&amp;p=1390</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://adam.goucher.ca/?p=1390&amp;utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=seo-is-a-scam-the-art-of-seo-isnt</feedburner:origLink></item>
	</channel>
</rss>
