<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Evil Tester</title>
	<atom:link href="http://www.eviltester.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eviltester.com</link>
	<description>A different view of software testing</description>
	<lastBuildDate>Thu, 12 Jan 2012 20:47:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Firepath, THE XPath and CSS Locator Addon For Firefox</title>
		<link>http://www.eviltester.com/index.php/2012/01/12/firepath-the-xpath-and-css-locator-addon-for-firefox/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firepath-the-xpath-and-css-locator-addon-for-firefox</link>
		<comments>http://www.eviltester.com/index.php/2012/01/12/firepath-the-xpath-and-css-locator-addon-for-firefox/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 20:47:03 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2012/01/12/firepath-the-xpath-and-css-locator-addon-for-firefox/</guid>
		<description><![CDATA[First I used XPather, then it was FireFinder, and since neither of those seems particularly compatible with the most recent versions of Firefox… I now use FirePath. FirePath operates as a Firebug extension and provides a handy “Inspect in FirePath” context menu entry. FirePath handles XPath, CSS and JQuery selectors. I don’t have any spare [...]]]></description>
			<content:encoded><![CDATA[<p>First I used <a title="https://addons.mozilla.org/en-US/firefox/addon/xpather/" href="https://addons.mozilla.org/en-US/firefox/addon/xpather/" target="_blank">XPather</a>, then it was <a href="https://addons.mozilla.org/en-US/firefox/addon/firefinder-for-firebug/" target="_blank">FireFinder</a>, and since neither of those seems particularly compatible with the most recent versions of Firefox…</p>
<p>I now use <a href="http://code.google.com/p/firepath/" target="_blank">FirePath</a>.</p>
<p>FirePath operates as a Firebug extension and provides a handy “Inspect in FirePath” context menu entry.</p>
<p>FirePath handles XPath, CSS and JQuery selectors.</p>
<p>I don’t have any spare tools extensions in my tool box, so if Firepath dies I’m not sure what I’ll do. </p>
<p>Does anyone have any suggestions to add in the comments?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2012/01/12/firepath-the-xpath-and-css-locator-addon-for-firefox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Build your own model of software testing &#8211; or rediscover one from several thousand years ago</title>
		<link>http://www.eviltester.com/index.php/2011/10/31/build-your-own-model-of-software-testing-or-rediscover-one-from-several-thousand-years-ago/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-your-own-model-of-software-testing-or-rediscover-one-from-several-thousand-years-ago</link>
		<comments>http://www.eviltester.com/index.php/2011/10/31/build-your-own-model-of-software-testing-or-rediscover-one-from-several-thousand-years-ago/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 22:35:38 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/10/31/build-your-own-model-of-software-testing-or-rediscover-one-from-several-thousand-years-ago/</guid>
		<description><![CDATA[I was working out the kinks in my high level software testing model, and, through a process of speed reading and stichomancy I found that I have re-created an early Buddhist doctrine. In “The Story of Chinese Zen” by Nan Huai-Chin, I find listed the five Skandhas: form sensation conception activity consciousness I was boiling [...]]]></description>
			<content:encoded><![CDATA[<p>I was working out the kinks in my high level software testing model, and, through a process of speed reading and stichomancy I found that I have re-created an early Buddhist doctrine.</p>
<p>In “The Story of Chinese Zen” by Nan Huai-Chin, I find listed the five Skandhas:</p>
<ul>
<li>form</li>
<li>sensation</li>
<li>conception</li>
<li>activity</li>
<li>consciousness</li>
</ul>
<p>I was boiling my model down to:</p>
<ul>
<li>model</li>
<li>observe</li>
<li>intent</li>
<li>manipulate</li>
<li>reflect</li>
</ul>
<p>I’ve re-ordered my list to&#160; tie in more closely to the Skandhas.</p>
<p>Quite a useful coincidence. </p>
<p>Below I list a simple set of my correspondence ‘tween the lists.</p>
<p>I have ‘<strong>model’</strong> instead of ‘form’ because our world comes to us from our perception of it, not from it itself. Perception allows us to experience bias and hallucination, and provides the scope for us to change how we perceive.</p>
<p>As testers ‘<strong>sensation’</strong> comes to us through our awareness, with our observation. We have to learn how to expand our range of observations and utilise tools to help us observe. Acts of observation can help us turn noise into data and subsequently into information which we can act upon.</p>
<p>When we test with <strong>intent</strong>, we bring purpose into our testing. We know what we set out to do/explore/check/exploit/etc. We often move off the beaten path and open ourselves to surreptitious happenstance, but only if we observe that happening can we utilise it.</p>
<p><strong>Manipulate</strong> – the favourite ‘bad’ word of the hypnotist, although even as a hypnotist I felt happy using it, and as a tester I do it frequently. Shaping the system through my action.</p>
<p><strong>Reflect</strong>, if all we did was progress from our initial intent then we would not learn. We reflect, to learn, move on, ever better, and more deeply.</p>
<p>&#160;</p>
<p><em>And so, dear reader. Did you create your model yet? If so, see where else you can find it!</em></p>
<p>&#160;</p>
<p>Follow on Reading:</p>
<ul>
<li>“The story of Chinese Zen” on <a href="www.amazon.com/exec/obidos/ASIN/0804830509/compendiumdev-20" target="_blank">amazon.com</a> and on <a href="www.amazon.co.uk/exec/obidos/ASIN/0804830509/compendiumdev-21" target="_blank">amazon.co.uk</a>&#160;</li>
<li><a title="http://en.wikipedia.org/wiki/Nan_Huai-Chin" href="http://en.wikipedia.org/wiki/Nan_Huai-Chin">http://en.wikipedia.org/wiki/Nan_Huai-Chin</a></li>
<li><a title="http://buddhism.about.com/od/whatistheself/a/skandhasexplan.htm" href="http://buddhism.about.com/od/whatistheself/a/skandhasexplan.htm">http://buddhism.about.com/od/whatistheself/a/skandhasexplan.htm</a></li>
</ul>
<p>&#160;</p>
<p>Thanks to <a href="http://www.workroom-productions.com/" target="_blank">James Lyndsay</a> for the recent chat about correspondences between my model and his.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/10/31/build-your-own-model-of-software-testing-or-rediscover-one-from-several-thousand-years-ago/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Push your software testing personas to the limit</title>
		<link>http://www.eviltester.com/index.php/2011/10/30/push-your-software-testing-personas-to-the-limit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=push-your-software-testing-personas-to-the-limit</link>
		<comments>http://www.eviltester.com/index.php/2011/10/30/push-your-software-testing-personas-to-the-limit/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 18:00:00 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/10/30/push-your-software-testing-personas-to-the-limit/</guid>
		<description><![CDATA[The notion of personas never really worked for me. “Bob is 35, single and likes kittens...” Blah Blah Blah. Clearly Bob has all the characteristics of a fictional closet psychopath. And that works better for me. “Bob is a closet psychopath”. I can use that sentence to inform my testing. I can attempt to&#160; test [...]]]></description>
			<content:encoded><![CDATA[<p>The notion of personas never really worked for me. “Bob is 35, single and likes kittens...” Blah Blah Blah. </p>
<p>Clearly Bob has all the characteristics of a fictional closet psychopath.</p>
<p>And that works better for me. “Bob is a closet psychopath”. I can use that sentence to inform my testing. I <em>can</em> attempt to&#160; test like a closet psychopath.</p>
<p>Other personas you might want to adopt:</p>
<ul>
<li>Sociopath</li>
<li>Psychopath</li>
<li>Paranoiac</li>
</ul>
<p>Of course, those are just the most obvious examples of personas we could use in testing. </p>
<p><em>“Alan, you’ve clearly misunderstood the point of persona’s” </em></p>
<p>Well, persona’s have a rock solid history that the UX community don’t seem to promote. So its time to remind ourselves of what we’re <em>really</em> doing.</p>
<p>By looking at the true history of the persona we remind ourselves of techniques that help us build personas more effectively and quickly.</p>
<p><strong>But I warn you now. Persona testing ain’t no walk in the park, princess.</strong></p>
<p>And duly warned, we proceed to the history lesson…</p>
<p>Everyone knows the word Avatar now. Since I haven’t seen the Cameron movie I don’t immediately think of a blue alien animated thing.</p>
<p> I think of an Avatar as a personification. So a persona and Avatar merge and become one and the same. </p>
<p>Which neatly reminds&#160; us that the Hindu mythos has an Avatar as an incarnated god.</p>
<p>And that Gods don’t incarnate in just one mythos. </p>
<p>Other mythos offer similar approaches. From the Vodoun, we can take inspiration from the Loa and from the techniques of the Houngan. We could attempt the deliberate summoning of a Loa and the subsequent possession to help us fully manifest a persona as part of our software testing process.</p>
<p>Imagine, in your next morning standup, if you adopt persona techniques in your testing, you could truthfully say:</p>
<p>“This morning I am going to eat raw chillis and cover myself in chilli rum to summon forth Baron Samedi. Much merriment will ensue as I perform some usability testing on the latest release.”</p>
<p>Clearly some of you reading may imagine that I mean this metaphorically. You may imagine my hinting that you should examine the Nanchons of Loa to find inspiration for your personas. Good for you. </p>
<p>The true testers among you will have already begun constructing your Vodoun altar.</p>
<p>Some of you may find your sensibilities more in keeping with a Western Magical tradition. If so, then fear not.</p>
<p>The western magical tradition has a rich set of rituals for the invocation of Gods. Looking up invocation in pretty much any book of ceremonial magic can kick start your use of possessional persona processes.</p>
<p>For those of you without a bent towards the traditional. Modern magic has taken the use of invocation ever further by drawing down fictional Godheads. As exemplified in Phil Hine’s Pseudonomicon, harnessing the Lovecraftian realm.</p>
<p>And I could go on, and on. Clearly I’ve barely scratched the surface of inspirational sources for your persona testing. </p>
<p>It would be inconscionable of me to leave you with a warning from the Pseudonomicon itself, which because of the power of reverse psychology will probably do exactly nothing of the sort:</p>
<blockquote><p>“working with the Cthulhu Mythos is dangerous due to the high risk of obsession, personality disintegration or infestation by parasitic shells”</p>
</blockquote>
<p>Yup consider yourself warned. </p>
<p>Treat the use of Personas in Software Testing with care.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/10/30/push-your-software-testing-personas-to-the-limit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build your own model of software testing &#8211; &#8220;the quotes&#8221;</title>
		<link>http://www.eviltester.com/index.php/2011/10/29/build-your-own-model-of-software-testing-the-quotes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=build-your-own-model-of-software-testing-the-quotes</link>
		<comments>http://www.eviltester.com/index.php/2011/10/29/build-your-own-model-of-software-testing-the-quotes/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 16:53:45 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Quotes]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/10/29/build-your-own-model-of-software-testing-the-quotes/</guid>
		<description><![CDATA[Have you tried to build your own definition of Software Testing? One that you can refine as you learn more stuff and the years go by? That never worked for me. I don’t appear to align myself well with definitions and classifications. Building my own models however, now that works better for me. I have [...]]]></description>
			<content:encoded><![CDATA[<p>Have you tried to build your own definition of Software Testing? One that you can refine as you learn more stuff and the years go by?</p>
<p>That never worked for me. I don’t appear to align myself well with definitions and classifications.</p>
<p>Building my own models however, now that works better for me.</p>
<p>I have started work on a new model. I want to create a simpler meta model of my testing process.</p>
<p>I draw inspiration for this activity from various sources, some I have listed below:</p>
<blockquote><p>&quot;I must create a system or be enslaved by another man’s      <br />I will not reason and compare: my business is to create.&quot;</p>
<p align="right"><em>William Blake, Jerusalem</em></p>
</blockquote>
<blockquote><p align="left"><q cite="">When we try to convey thought by writing, we are bound to sit down solidly, and construct a holy Qabalah out of nothing.</q></p>
<p align="right"><em>Aleister Crowley, Magick Without Tears</em></p>
</blockquote>
<blockquote><p align="left"><q cite="">Tao was always nameless.        <br />When for the first time applied to function, it was named,         <br />Inasmuch as names are given, one should also know where to stop.         <br />Knowing where to stop one can become imperishable.</q></p>
<p align="right"><em>Tao Te Ching, as translated by Ch’u Ta-Kao</em></p>
</blockquote>
<blockquote><p align="left"><q cite="">It is the part of the scientist – of the intelligent and honest man of letters and of the intelligent and honest clergyman as well – to entertain heretical and forbidden opinions experimentally, even if he is finally to reject them.</q></p>
<p align="right"><em>Norbert Wiener, ‘God &amp; Golem, Inc.’</em></p>
</blockquote>
<blockquote><p align="left"><q cite="">You keep using that word. I do not think it means what you think it means.</q></p>
<p align="right"><em>Inigo Montoya, as channelled by William Goldman for “The Princess Bride” </em></p>
</blockquote>
<blockquote><p align="left"><q cite="">You’re on your own. And you know what you know.        <br />And <em>YOU</em> are the guy who’ll decide where to go.</q></p>
<p align="right"><em>Dr. Seuss, “Oh, the places you’ll go!”</em></p>
</blockquote>
<p align="left">Do you have any quotes that inspire you that you would care to share?</p>
<p align="left">More on the model… later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/10/29/build-your-own-model-of-software-testing-the-quotes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to stop firefox &#8216;update failed&#8217; dialog messing with your WebDriver automation</title>
		<link>http://www.eviltester.com/index.php/2011/10/26/how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation</link>
		<comments>http://www.eviltester.com/index.php/2011/10/26/how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 18:20:43 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/10/26/how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation/</guid>
		<description><![CDATA[There I am, figuring out how to debug my FitNesse automation from within eclipse. And up pops the Firefox ‘update failed dialog’ and interfering with my automation. A bane and a pain when using Selenium RC. But with WebDriver there are easy ways round this. Start firefox with a profile and set the &#34;app.update.silent&#34; firefox [...]]]></description>
			<content:encoded><![CDATA[<p>There I am, figuring out how to debug my FitNesse automation from within eclipse. And up pops the Firefox ‘update failed dialog’ and interfering with my automation.</p>
<p>A bane and a pain when using Selenium RC. But with WebDriver there are easy ways round this.</p>
<p>Start firefox with a profile and set the &quot;app.update.silent&quot; firefox property to true.</p>
<p>The update error will still happen, but at least firefox won’t try and tell your automated processes about it.</p>
<blockquote><p>profile.setPreference(&quot;app.update.silent&quot;, <b>true</b>);</p>
</blockquote>
<p>For more details visit <a href="http://kb.mozillazine.org/Category:Preferences">http://kb.mozillazine.org/Category:Preferences</a></p>
<p>Oh, and the FitNesse in unit tests is <a href="http://fitnesse.org/FitNesse.UserGuide.RunningFromJunit">http://fitnesse.org/FitNesse.UserGuide.RunningFromJunit</a></p>
<p>e.g. </p>
<pre>
      @Test
      public void runAFitNesseTest(){

            JUnitHelper helper = new JUnitHelper(&quot;./fitnesse&quot;,
                        new File(System.getProperty(&quot;System.java.io.tmpdir&quot;), &quot;fitnesse&quot;).getAbsolutePath());

            // type in the name of the test you want to debug here
            String testName = &quot;FitNesse.AcceptanceTestSuite.ATestCase&quot;;

          try {
                  helper.assertTestPasses(testName);
            } catch (Exception e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
      }</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/10/26/how-to-stop-firefox-update-failed-dialog-messing-with-your-webdriver-automation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Running out of email addresses when you test?</title>
		<link>http://www.eviltester.com/index.php/2011/09/20/running-out-of-email-addresses-when-you-test/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=running-out-of-email-addresses-when-you-test</link>
		<comments>http://www.eviltester.com/index.php/2011/09/20/running-out-of-email-addresses-when-you-test/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 20:42:59 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/09/20/running-out-of-email-addresses-when-you-test/</guid>
		<description><![CDATA[I generally test web apps. And Web apps generally use an email address as the unique identifier. So by test number 2, some of you may have run out of email addresses to test with. If this happens to you, don’t panic! Because here are the Evil Tester hints and tips for getting more email [...]]]></description>
			<content:encoded><![CDATA[<p>I generally test web apps. And Web apps generally use an email address as the unique identifier. So by test number 2, some of you may have run out of email addresses to test with.</p>
<p>If this happens to you, don’t panic! Because here are the Evil Tester hints and tips for getting more email addresses than you probably ever wanted, but as a tester, have always needed.</p>
<p>&#160;</p>
<p><span id="more-202"></span><br />
<h2>Tip #1 – Go Disposable</h2>
<p>This used to be my default approach. Pick a mad mailinator address that no-one would ever use and then I’m off and testing.</p>
<p>This works really well when you don’t really care about the privacy of the emails.</p>
<p><a title="http://en.wikipedia.org/wiki/Disposable_e-mail_address" href="http://en.wikipedia.org/wiki/Disposable_e-mail_address">http://en.wikipedia.org/wiki/Disposable_e-mail_address</a></p>
<p>For a list of disposable providers you can check here - <a title="http://www.email-unlimited.com/stuff/temp-email-address.htm" href="http://www.email-unlimited.com/stuff/temp-email-address.htm">http://www.email-unlimited.com/stuff/temp-email-address.htm</a></p>
<p>&#160;</p>
<h2>Tip #2 – Hack your email address</h2>
<p>Gmail has some well known hacks for getting more value out of your email address.</p>
<ul>
<li>+ addressing, where you add +somethingunique to your gmail address </li>
</ul>
<p><a title="http://lifehacker.com/software/top/instant-disposable-gmail-addresses-144397.php" href="http://lifehacker.com/software/top/instant-disposable-gmail-addresses-144397.php">http://lifehacker.com/software/top/instant-disposable-gmail-addresses-144397.php</a></p>
<ul>
<li>become mr.l.o.t.s.of.d.o.t.s gmail ignores the . in your email name before the @ so you can stick them in and get unique email addresses.</li>
</ul>
<p>Other email hosts allow these strategies too, but I’ve only tried this on Gmail. Where have you tried it?</p>
<p>&#160;</p>
<h2>Tip #3 – use <a href="http://33mail.com/ddajvr" target="_blank">33mail.com</a></h2>
<p>I’ve started using the free services from <a href="http://33mail.com/ddajvr" target="_blank">33mail.com</a>. </p>
<p>You sign up, get a username then start sending mail to <a href="mailto:someone@username.33mail.com">someone@username.33mail.com</a>, <a href="mailto:someoneelse@username.33mail.com">someoneelse@username.33mail.com</a> etc. </p>
<p>The emails get redirected to an email address of your choosing.</p>
<p>&#160;</p>
<h2>Tip #4 - Buy Your Own Domain you Cheapskate</h2>
<p>When you register a domain name, many hosting companies give you a ‘single’ email address with the domain. What they actually mean is a single mailbox. Where anything @yourdomain gets routed to that mailbox. This effectively gives you unlimited email addresses.</p>
<p>If you want to do automated testing with the email, this may well turn out to be the best route to go down.</p>
<hr />
<p>Any tips? How do you do it? Please leave a comment so that I, and the other visitors can learn from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/09/20/running-out-of-email-addresses-when-you-test/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Recommendations for Learning JavaScript and CSS Selectors</title>
		<link>http://www.eviltester.com/index.php/2011/07/14/recommendations-for-learning-javascript-and-css-selectors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recommendations-for-learning-javascript-and-css-selectors</link>
		<comments>http://www.eviltester.com/index.php/2011/07/14/recommendations-for-learning-javascript-and-css-selectors/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 08:02:14 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/07/14/recommendations-for-learning-javascript-and-css-selectors/</guid>
		<description><![CDATA[I’ve been programming more JavaScript recently. This helps my testing in a number of ways: When testing web sites I can understand the client side code I can nudge the client side into different states by executing ad-hoc JavaScript through the console The DOM web developer displays make ever more sense It also helps my [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been programming more JavaScript recently. This helps my testing in a number of ways:</p>
<ul>
<li>When testing web sites I can understand the client side code</li>
<li>I can nudge the client side into different states by executing ad-hoc JavaScript through the console</li>
<li>The DOM web developer displays make ever more sense</li>
</ul>
<p>It also helps my automation;</p>
<ul>
<li>My ability to use the JavaScript calls has improved so I don’t have as much trouble with web sites that don’t play nice</li>
<li>My CSS selector skills have improved</li>
</ul>
<p>Clearly for most Selenium automation purposes, we don’t need a large grasp of JavaScript, we mainly do quick DOM access scripts, the kind of thing you would do through the console for debugging. I have found the JavaScript Pocket Reference a handy little book. </p>
<ul>
<li>JavaScript Pocket Reference [<a href="http://www.amazon.co.uk/exec/obidos/ASIN/1565925211/compendiumdev-21">amazon.co.uk</a> | <a href="http://www.amazon.com/exec/obidos/ASIN/1565925211/compendiumdev-20">amazon.com</a>]</li>
</ul>
<p>I have done more programming in JavaScript. Going deeper into JavaScript and building a few apps has helped me enormously. I have used “Test-Driven JavaScript Development” by Christian Johansen as a learning text, and found that useful.</p>
<ul>
<li>Test-Driven JavaScript Development [<a href="http://www.amazon.co.uk/exec/obidos/ASIN/0321683919/compendiumdev-21">amazon.co.uk</a> | <a href="http://www.amazon.com/exec/obidos/ASIN/0321683919/compendiumdev-20">amazon.com</a>]</li>
</ul>
<p>If you want to learn more about JavaScript I can recommend the following resources to start.</p>
<p>Free Online JavaScript books:</p>
<ul>
<li><a href="http://eloquentjavascript.net/">Eloquent JavaScript</a> has an earlier version than the print book, but still very good, with an excellent section on Objects.</li>
<li><a href="http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/">Essential JavaScript Design Patterns</a> provides a concise introduction to various usage patterns.</li>
<li><a href="http://jqfundamentals.com/book/index.html">JQuery Fundamentals</a></li>
<li><a href="http://ofps.oreilly.com/titles/9780596805784/">Building iPhone Apps with HTML, CSS, and JavaScript</a> from O’Reilly Open Feedback Publishing System a good general intro to HTML, CSS and JavaScript</li>
</ul>
<p>I found the following CSS Selector links useful</p>
<ul>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/">http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/</a></li>
<li><a href="http://tools.css3.info/selectors-test/test.html">http://tools.css3.info/selectors-test/test.html</a></li>
</ul>
<p>And remember to subscribe to the <a href="http://javascriptweekly.com/" target="_blank">JavaScript Weekly news</a></p>
<p>I have been using <a href="http://www.jetbrains.com/webstorm/">WebStorm</a> as my JavaScript IDE as out of all the IDEs I tried, the JavaScript debugging worked out of the box. WebStorm has now become my default HTML and XML editor. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/07/14/recommendations-for-learning-javascript-and-css-selectors/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How Can I Estimate My Testing?</title>
		<link>http://www.eviltester.com/index.php/2011/06/28/how-can-i-estimate-my-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-can-i-estimate-my-testing</link>
		<comments>http://www.eviltester.com/index.php/2011/06/28/how-can-i-estimate-my-testing/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 08:31:45 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Techniques]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/06/28/how-can-i-estimate-my-testing/</guid>
		<description><![CDATA[Have you had anyone ask you a question about estimation? I get asked these types of questions and I suspect that the person really wants answers about how to communicate and justify their guesses. I think they hope that some process exists which will accurately and objectively give them a set of numbers. And by [...]]]></description>
			<content:encoded><![CDATA[<p>Have you had anyone ask you a question about estimation? I get asked these types of questions and I suspect that the person really wants answers about how to communicate and justify their guesses.</p>
<p>I think they hope that some process exists which will accurately and objectively give them a set of numbers. And by using these numbers they can disavow responsibility for the production of them. And no-one will hold them responsible if the objectively produced ‘estimate’ does not meet reality.</p>
<p>Well in reality ‘Estimate’ really equals ‘Guess’. </p>
<p>So if you want some strategies:</p>
<ul>
<li>Answer the question you want them to ask </li>
<li>Ask how long they want it to take </li>
<li>Trust your gut </li>
<li>Assumptions, Risks and Issues </li>
<li>Track the passage of time </li>
</ul>
<p>I could add an etc. in there, to alert you to the incompleteness of all of this. </p>
<p>But I won’t. </p>
<p>You should assume incompleteness in my presentation. And map it on to your model to identify the blanks.</p>
<h3>What culture do you think you work in?</h3>
<p>Do you think you work in a culture where ‘estimates’ and ‘actual time’ have become synonyms?</p>
<p>Do ‘they’ berate you for continuing to work, after the ‘estimated’ length of time has passed?</p>
<p>Well, you have learned that regardless of where the estimate came from ‘they’ will still hold you responsible for it.</p>
<p>So you need to develop some beliefs. You need to believe that “estimate equals guess”. </p>
<p>You need to believe that any supporting documentation for your guess does not provide a justification for it, it provides a partial model of the thinking that led to the guess.</p>
<p>‘They’ don’t need to believe any of this. </p>
<p>You need to. </p>
<p>Then your communication will change.</p>
<h3>Estimates equals Guesses</h3>
<p>All estimates equate to GUESSES. </p>
<p>We don’t know how long things will take.</p>
<p>I’m a pretty good psychic. But even I don’t know.</p>
<p>Sometimes we put a framework around our GUESSES. And that can reveal some of our ASSUMPTIONS. It can reveal what RISKS we have considered. It can reveal what ISSUES we perceive.</p>
<p>The framework reveals part of the model we think we used when creating the GUESS. It helps us explain how we created the GUESS.</p>
<p>But even when we do that, our estimates remain GUESSES.</p>
<h3>So what could you do?</h3>
<p>Do you try and ‘educate’ them?</p>
<p>I don’t.</p>
<p>I’m obnoxious like that.</p>
<ul>
<li>So if you get asked “How long will your testing take?”
<ul>
<li>Don’t say “I will provide you with an estimate for testing.” </li>
<li>Say “I don’t know.” </li>
<li>The conversation might end there. </li>
</ul>
</li>
</ul>
<p>You might respond with the question you want them to ask. </p>
<ul>
<li>So if you get asked “How long will your testing take?”
<ul>
<li>ask “Do you mean? If I had to guess, right now, how long I think it will take for you to have enough information that you can decide whether or not you want to release this? If so then…” </li>
<li>Yup. I say stuff like that. </li>
<li>Because then we start talking about what they really want to know. </li>
<li>I don’t think I engage in an education process. I try and communicate so we all work from the same assumptions and understandings. </li>
</ul>
</li>
</ul>
<p>The test managers among you might feel a little nervous with this. As a test manager I used to feel nervous saying that. So you might ask instead:</p>
<h3>“How long do you want it to take?”</h3>
<p>We live in a world of deadlines. So guesses often don’t help very much. </p>
<p>By asking “How long do you want it to take?” you can build a plan which tries to maximise the value that you can add as quickly as possible before the deadline. Work on the high value items, risks and issues. </p>
<p>Don’t worry about the guesses. Think about the constraints.</p>
<p>When you ask “How long do you want it to take?” then you can think about how much stuff you might fit into that timescale, does it ‘feel’ right?</p>
<h3>Trust Your Gut</h3>
<p>What you ‘feel’ can feed into your guessing process.</p>
<p>You can get the whole guessing process over really quickly if you just come up with number.</p>
<p>You won’t have stated any assumptions. You won’t have considered any risks. you won’t have any weighted factors. But you can come up with a number quickly.</p>
<p>And your gut will tell you how you feel about it.</p>
<p>Does it feel right?</p>
<p>More importantly – does it feel wrong? If so, you can:</p>
<ul>
<li>Ask yourself what feels wrong about it. Bam. Now you’re starting to come up with assumptions, risks and issues. </li>
<li>Come up with a new ‘better’ guess. </li>
</ul>
<p>When you immediately decide to come up with a new ‘better’ guess. Then you trusted your gut.</p>
<p>If you ask your questions. You distrusted your gut. So you ask those questions to help you regain your trust in your gut.</p>
<h3>Assumptions, Risks, Issues</h3>
<p>Why bother with the questions?</p>
<p>Why bother with Assumptions, Risks and Issues?</p>
<p>Well, they help you communicate.</p>
<p>Until you develop the force of personality where you can give a number and have it accepted as a best ‘guess’. You might want to engage in a communication process.</p>
<p>If you do want to communicate then you can explain to people the things you have assumed. e.g.</p>
<ul>
<li>I assumed we deliver a release candidate on day X </li>
<li>I assumed we have a clean build with no failing unit tests </li>
<li>etc. </li>
</ul>
<p>You can do the same for risks and issues.</p>
<h3>We track the passage of time</h3>
<p>If your guess gets shot down and ‘they’ <em>convince</em> you into using a shorter guess. Then you can ‘manage’ the on-going process by monitoring for any:</p>
<ul>
<li>negated assumptions </li>
<li>change in riskiness of the risks </li>
<li>transformation of risks into issues </li>
</ul>
<p>This may not help in the short term as you simply point out that the correctness of the guess becomes ever less likely. </p>
<p>But you might help build credibility long term by communicating based on your frame of reference.</p>
<p>We track over time, the ‘goodness’ of our progress, and how much distance we appear to have to travel before we reach our end point.</p>
<p>We validate our model over time, by comparing it with the reality that we perceive.</p>
<h3>Have you covered everything?</h3>
<p>No. </p>
<p>I just want to encourage you to keep it simple.</p>
<p>I think you could waste time on a complicated ‘estimation’ process using spreadsheets and lots of factors.</p>
<p>‘They’ might well think they need those spreadsheets. Their process may require those spreadsheets. If so, use the spreadsheets to communicate your model, don’t use them to create the guess.</p>
<p>Of you could:</p>
<ul>
<li>guess, </li>
<li>start to do the work, </li>
<li>based on how long it currently takes extrapolate forward and… </li>
<li>guess again </li>
</ul>
<p>If you do this then you need more courage.</p>
<p>Swapping a belief of “objective estimation”, for “guesses and underpinning models” takes time.</p>
<p>I will not try to convince you that you should. </p>
<p>I just want to make you aware that you could.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/06/28/how-can-i-estimate-my-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium 2.0rc2 &#8211; Hey, where&#8217;s my unashamedly ugly wait</title>
		<link>http://www.eviltester.com/index.php/2011/06/03/selenium-2-0b2-hey-wheres-my-unashamedly-ugly-wait/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=selenium-2-0b2-hey-wheres-my-unashamedly-ugly-wait</link>
		<comments>http://www.eviltester.com/index.php/2011/06/03/selenium-2-0b2-hey-wheres-my-unashamedly-ugly-wait/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 15:49:54 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/06/03/selenium-2-0b2-hey-wheres-my-unashamedly-ugly-wait/</guid>
		<description><![CDATA[Warning, this blog post contains Java code. Some testers may want to look away now. I was quite happy using the unashamedly ugly Selenium Wait class, for adhoc waits that I did not want to refactor into proper classes. e.g. &#160;&#160;&#160;&#160;&#160;&#160;&#160; new Wait(&#34;JS Page title did not change&#34;){ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; @Override &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public boolean until() { [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Warning, this blog post contains Java code. Some testers may want to look away now.</em></p>
</blockquote>
<p>I was quite happy using the unashamedly ugly Selenium Wait class, for adhoc waits that I did not want to refactor into proper classes.</p>
<p>e.g.</p>
<blockquote><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; new Wait(&quot;JS Page title did not change&quot;){</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; @Override      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public boolean until() {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try{       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return driver.getTitle().startsWith(TITLE_OF_PAGE_STARTS_WITH_THIS);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }catch(Exception e){       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // ignore not found exception       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; };</p>
</blockquote>
<p>I upgrade to Selenium 2.0rc2 and what happens? </p>
<p><strong>Gone!</strong></p>
<p>“Pah,” thinks me, “no-one’s gonna stop <em>me</em> writing pug ugly waits”:</p>
<blockquote><p>new WebDriverWait(driver, 10){      <br />&#160;&#160;&#160; <br />&#160;&#160;&#160; }.until(new ExpectedCondition&lt;Boolean&gt;(){</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; @Override      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public Boolean apply(WebDriver driver) {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return driver.getTitle().startsWith(TITLE_OF_PAGE_STARTS_WITH_THIS);       <br />&#160;&#160;&#160; }});</p>
</blockquote>
<p>There you go. Still Ugly. </p>
<p>But Wait…</p>
<ul>
<li>now we only have one wait construct to deal with, </li>
<li>this makes it easier to refactor the expected conditions out </li>
</ul>
<p>Refactor it out? </p>
<p>Yup, we don’t let it stay ugly, particularly not if we use the same wait somewhere else.</p>
<p>We might create an ExpectedConditionFactory…</p>
<p>e.g.</p>
<blockquote><p>ExpectedConditionFactory weCanSee = new ExpectedConditionFactory();</p>
</blockquote>
<p>Which looks a bit like…</p>
<blockquote><p>public class ExpectedConditionFactory {</p>
<p>&#160;&#160;&#160; public&#160; ExpectedCondition&lt;Boolean&gt; pageTitleStartsWith(      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String titleOfPageStartswith) {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new PageTitleStartsWithExpectedCondtion(titleOfPageStartswith);       <br />&#160;&#160;&#160; }</p>
<p>}</p>
</blockquote>
<p>So the calling code looks more like…</p>
<blockquote><p>new WebDriverWait(driver, 10){      <br />&#160;&#160;&#160; }.until(weCanSee.pageTitleStartsWith(TITLE_OF_PAGE_STARTS_WITH_THIS));</p>
</blockquote>
<p>Then create a new class that implements the ExpectedCondition…</p>
<blockquote><p>public class PageTitleStartsWithExpectedCondtion implements      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ExpectedCondition&lt;Boolean&gt; {</p>
<p>&#160;&#160;&#160; private String titleOfPageStartsWith;</p>
<p>&#160;&#160;&#160; public PageTitleStartsWithExpectedCondtion(String titleOfPageStartsWith) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.titleOfPageStartsWith = titleOfPageStartsWith;       <br />&#160;&#160;&#160; }</p>
<p>&#160;&#160;&#160; @Override      <br />&#160;&#160;&#160; public Boolean apply(WebDriver driver) {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return driver.getTitle().startsWith(titleOfPageStartsWith);       <br />&#160;&#160;&#160; }       <br />}</p>
</blockquote>
<p>And I might even revisit the original “new WebDriverWait…” code and have:</p>
<blockquote><p>WebDriverWait wait = new WebDriverWait(driver,10);</p>
<p>wait.until(weCanSee.pageTitleStartsWith(TITLE_OF_PAGE_STARTS_WITH_THIS));</p>
</blockquote>
<p>And then I can&#160; tuck the declaration of the wait up in the Page Object constructor so I just see the tidy wait.until part in my Page Object methods</p>
<p>Yes, sadly the end result does not look ugly at all. Some people might almost call it readable.</p>
<blockquote><p>wait.until(weCanSee.pageTitleStartsWith(TITLE_OF_PAGE_STARTS_WITH_THIS));</p>
</blockquote>
<p>But it does require more code, so you boost your “lines of test code written per day” metric.</p>
<p>Bonus.</p>
<blockquote><p><em>Feel free to constructively mock my code in the comments - so as I can learn how to code more good like.</em></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/06/03/selenium-2-0b2-hey-wheres-my-unashamedly-ugly-wait/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How can I learn to automate my testing using Selenium?</title>
		<link>http://www.eviltester.com/index.php/2011/06/02/how-can-i-learn-to-automate-my-testing-using-selenium/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-can-i-learn-to-automate-my-testing-using-selenium</link>
		<comments>http://www.eviltester.com/index.php/2011/06/02/how-can-i-learn-to-automate-my-testing-using-selenium/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 11:56:24 +0000</pubDate>
		<dc:creator>Alan Richardson</dc:creator>
				<category><![CDATA[Selenium]]></category>

		<guid isPermaLink="false">http://www.eviltester.com/index.php/2011/06/02/how-can-i-learn-to-automate-my-testing-using-selenium/</guid>
		<description><![CDATA[In this blog post, I’m going to lay out the Evil Tester free and simple 8 step guide to learning how to automate a Web Browser using Selenium. I’ll reveal the sources of information you can use. And yes, I will promote my book. music by Drongomala @ flyingmountainrecords.com I see the same questions, and [...]]]></description>
			<content:encoded><![CDATA[<p>In this blog post, I’m going to lay out the Evil Tester free and simple 8 step guide to learning how to automate a Web Browser using Selenium. </p>
<p>I’ll reveal the sources of information you can use. </p>
<p>And yes, I <strong>will</strong> promote my book.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8487f8b9-0a6f-40fa-8e95-ec43364e6425" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/cAgeeDpisbU?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/cAgeeDpisbU?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">music by Drongomala @ flyingmountainrecords.com</div>
</div>
<p>I see the same questions, and variations on these questions, asked on social network forums every few days.</p>
<ul>
<ul>
<li>“How can I learn Selenium?” </li>
<li>“How do I use Selenium?” </li>
<li>“What do I read?” </li>
<li>“How do I get started with Selenium?” </li>
<li>“I want the answers. Please do the needful” </li>
</ul>
</ul>
<p>For some reason the previous answers don’t stick. Or people can’t find them. Or maybe they don’t look for them. Or, something… I don’t know.</p>
<p>But a lot of people have tried very hard to make Selenium easy to get into, and to help get you started. So if you are prepared to put the work in. The <strong>Answers are out there</strong>. Just don’t expect someone to magically drop the information into your brain, you have to put the work in to follow the learning steps.</p>
<p>Expect to put in some work.</p>
<p>If you are prepared to do that. </p>
<p>Then the pointers in here will help you.</p>
<p><strong><u>First learn a bit about Selenium</u></strong></p>
<p>Start with the basics.</p>
<p>Research what the tool sets out to do. Visit the official site. Have a look around.</p>
<ul>
<li><a title="http://seleniumhq.org/" href="http://seleniumhq.org/">http://seleniumhq.org/</a> </li>
<li>follow and read the the “Learn Selenium” links </li>
<li>Read the documentation </li>
<li><a title="http://seleniumhq.org/docs/" href="http://seleniumhq.org/docs/">http://seleniumhq.org/docs/</a> </li>
</ul>
<p><strong><u>Need/Want more than the Official Documentation</u></strong></p>
<p>You can read two books:</p>
<ul>
<li><a href="http://www.compendiumdev.co.uk/selenium" target="_blank">Selenium Simplified</a> by Alan Richardson </li>
<li><a href="https://www.packtpub.com/selenium-1-0-testing-tools-beginners-guide/book">Selenium 1.0 Testing Tools</a> by David Burns </li>
</ul>
<p>I wrote a comparative review of them here:</p>
<ul>
<li><a title="http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/" href="http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/">http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/</a> </li>
</ul>
<p>Both David and I wrote our books when the Official documentation was harder to get into than it is now, so we aimed these books at the beginner. If you consider yourself a beginner and find the official documentation too hard. Then get hold of these books. </p>
<p>The official documentation has improved massively and the Selenium team have done a great job. These books go beyond the official documentation and add additional value. Sometimes people need more in depth tutorials, and more examples, more code samples, and these books provide that.</p>
<p><strong><u>Selenium is Open-Source, Learning should be free too</u></strong></p>
<p>OK, if you say so. </p>
<p>Both books have free previews. And these are big previews. Last time I checked mine was 75 pages. At the end of which you will have installed all the basic tools. Recorded a test in the IDE. Converted the test to Java. Run the test in the Eclipse IDE. Learned how to debug tests in an IDE.&#160; Learned how to start and stop the Selenium Server programmatically. And given pointers of where else to look for more information. For some training courses, that would be day 1.</p>
<p>They cover:</p>
<ul>
<li>installing the tools you need, </li>
<li>recording your first script in the IDE, </li>
<li>converting that into program code – because you do not want to get stuck in the IDE </li>
</ul>
<p>And all of that in the free previews.</p>
<p>My book leads you through the process of automating some basic web pages and covers automating most of the common HTML features, automating AJAX, and refactoring your tests into Page Objects and building an abstraction layer. And even through the steps needed to put your tests into continuous integration. All in a consistent tutorial guide.</p>
<p>Read this comparative review, follow up the links, read the previews and tables of contents and see which books meets your needs.</p>
<ul>
<li><a title="http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/" href="http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/">http://www.eviltester.com/index.php/2010/12/29/so-now-you-have-a-choice-of-selenium-testing-books-and-ebooks/</a> </li>
</ul>
<p>More than enough to get you started. Enough to have you install the tools. Enough to get you moving.&#160; In just the free preview.</p>
<p>Search for blog posts on how to start, here are a few searches to try:</p>
<ul>
<li><a title="http://www.google.com/search?q=selenium+steps+blog" href="http://www.google.com/search?q=selenium+steps+blog">http://www.google.com/search?q=selenium+steps+blog</a> </li>
<li><a title="http://www.google.com/search?q=selenium+get+started+blog" href="http://www.google.com/search?q=selenium+get+started+blog">http://www.google.com/search?q=selenium+get+started+blog</a> </li>
<li><a title="http://www.google.com/search?q=selenium+tutorial+blog" href="http://www.google.com/search?q=selenium+tutorial+blog">http://www.google.com/search?q=selenium+tutorial+blog</a> </li>
</ul>
<p>And let’s not forget the official site <a href="http://seleniumhq.org">http://seleniumhq.org</a></p>
<p>A lot of info out there. Some of it will be out of date. They will repeat and overlap. They will not be presented in a consistent style. But you can get all the information you need without buying the books if that is the learning style you prefer. You will learn from your mistakes as you follow the instructions. That learning will help you.</p>
<p><strong><u>Where can I get help when I start learning?</u></strong></p>
<p>The official site has a page all about that:</p>
<ul>
<li><a href="http://seleniumhq.org/support/" target="_blank">http://seleniumhq.org/support/</a> </li>
<li>Read the Selenium Forums
<ul>
<li><a href="http://groups.google.com/group/selenium-users">http://groups.google.com/group/selenium-users</a> </li>
</ul>
</li>
<li>Join <a href="http://www.linkedin.com" target="_blank">Linked In</a> Groups </li>
<li>Search <a href="http://stackexchange.com" target="_blank">stackExchange.com</a>       </li>
</ul>
<p>The bigger point though is not “where” but how you use that help.</p>
<ul>
<li>Don’t ask generic questions. </li>
<li>Show the source code you were using when you got stuck. </li>
<li>Make sure your learning how to debug the scripts and have investigated it as far as your knowledge will take you. </li>
</ul>
<p>People have put a lot of effort in simplifying the learning of Selenium but it still requires you to do some experimentation and make an effort.</p>
<p>You are learning how to code, and do some complicated stuff. Automation often requires workarounds, so if you don’t get into the habit now of trying different things, of exploring the API, of searching for tips around the area you are automating then you are doing yourself a disservice in your learning phase.</p>
<p><strong><u>What else can I read?</u></strong></p>
<p>I’m going to give you one link:</p>
<p><a href="http://seleniumhq.wordpress.com">http://seleniumhq.wordpress.com</a></p>
<p><a href="http://adam.goucher.ca/" target="_blank">Adam Goucher</a> does a great job, scanning blogs looking for material on Selenium. So follow up the links. That will take you to more blogs. Read those. Subscribe to those in your rss feed.</p>
<p><strong><u>But I hate reading!</u></strong></p>
<p>Fine. There are plenty of videos out there. Lots of Videos out there:</p>
<ul>
<li><a title="http://www.google.com/search?q=selenium+automation&amp;tbm=vid" href="http://www.google.com/search?q=selenium+automation&amp;tbm=vid">http://www.google.com/search?q=selenium+automation&amp;tbm=vid</a> </li>
<li><a title="http://www.google.com/search?q=selenium+automation&amp;tbm=vid" href="http://www.google.com/search?q=selenium+testing&amp;tbm=vid">http://www.google.com/search?q=selenium+testing&amp;tbm=vid</a> </li>
<li><a title="http://www.google.com/search?q=selenium+automation&amp;tbm=vid" href="http://www.google.com/search?q=selenium+conference&amp;tbm=vid">http://www.google.com/search?q=selenium+conference&amp;tbm=vid</a> </li>
</ul>
<p><strong><u></u></strong></p>
<p><strong><u>This all sounds like hard work</u></strong></p>
<p>The learning process requires that you make an effort.</p>
<p>But its your choice. You do not have to learn how to use automation tools. Personally I think that will help your career and provide you with more options in your test approach, but you don’t have to learn it.</p>
<p>If you choose to learn it, then you have to put the effort in.</p>
<ul>
<li>Learning involves Experimentation. </li>
<li>Testing involves Experimentation. </li>
</ul>
<p>You already know how to do both those things.</p>
<p>Well, Automation involves experimentation too.</p>
<p><strong><u>And remember – if you get stuck</u></strong></p>
<p>Remember there are two books which aim to help you learn Selenium.</p>
<p>I wrote Selenium Simplified for the very reason that people do get stuck, so it provides step by step instructions for getting you unstuck and productive in Selenium.</p>
<p><strong><u>Time to start now</u></strong></p>
<p>The onus is on you. Right Now.</p>
<p>Just start following the 8 step process:</p>
<p>Step 1 - Read the <a href="http://seleniumhq.org" target="_blank">official site</a> and <a href="http://seleniumhq.org/docs/" target="_blank">selenium documentation</a></p>
<p>Step 2 - Start trying to use Selenium using the documentation to help you</p>
<p>Step 3 - Investigate the <a href="http://www.eviltester.com/go/compare" target="_blank">books available</a>, use the previews to get started</p>
<p>Step 4 – Auto-generate scripts from the IDE</p>
<p>Step 5 - Use Google to find tutorials, blogs and videos</p>
<p>Step 6 - Use <a href="http://stackexchange.com" target="_blank">stackExchange</a>, linkedin and the <a href="http://groups.google.com/group/selenium-users" target="_blank">Selenium Forums</a> for specific help. Read the <a href="http://seleniumhq.org/support/" target="_blank">official support page</a></p>
<p>Step 7 - Read through the old issues of &quot;<a href="http://seleniumhq.wordpress.com" target="_blank">A smattering of Selenium</a>&quot;</p>
<p>Step 8 - If you get stuck, and can't make progress - <a href="http://www.eviltester.com/go/compare" target="_blank">buy one of the books</a>. You can apply this step at any time.</p>
<p>You can learn Selenium. Start Now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eviltester.com/index.php/2011/06/02/how-can-i-learn-to-automate-my-testing-using-selenium/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

