<?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 version="2.0">
<channel>
 <title>www.thoughtworks.com aggregator</title>
 <link>http://www.thoughtworks.com/testing/blogs</link>
 <description>www.thoughtworks.com - aggregated feeds in category Testing</description>
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TWTesting" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="twtesting" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
 <title>Alister Scott: ♥ Travis CI</title>
 <link>http://watirmelon.com/2012/02/09/%e2%99%a5-travis-ci/</link>
 <description>&lt;p&gt;I&amp;#8217;ve talked previously about &lt;a title="Running Watir-WebDriver tests on Travis CI: a distributed build system" href="http://watirmelon.com/2011/09/04/running-watir-webdriver-tests-on-travis-ci-a-distributed-build-system/"&gt;how cool Travis CI is&lt;/a&gt;, and they&amp;#8217;re now &lt;a href="https://love.travis-ci.org/"&gt;taking donations&lt;/a&gt; to implement more functionality in the future. Since &lt;a href="http://watirwebdriver.com"&gt;watir-webdriver&lt;/a&gt; uses Travis, as does my &lt;a title="Watir-Page-Helper 0.3.0: now with added frames" href="http://watirmelon.com/2011/09/21/watir-page-helper-0-3-0-now-with-added-frames/"&gt;watir-page-helper gem&lt;/a&gt; and my &lt;a title="Have you always wanted to automate minesweeper?" href="http://watirmelon.com/2012/01/16/have-you-always-wanted-to-automate-minesweeper/"&gt;Minesweeper&lt;/a&gt; &lt;a title="Writing a CoffeeScript web application using TDD" href="http://watirmelon.com/2012/01/23/writing-a-coffeescript-web-application-using-tdd/"&gt;Jasmine tests&lt;/a&gt;, I thought I&amp;#8217;d better contribute!&lt;/p&gt;
&lt;p&gt;When you donate you get lots of warm and fuzzies, plus you get cool stickers, some ringtones!?!, and a neat little surprise on the thank you page.&lt;/p&gt;
&lt;p&gt;You should &lt;a href="https://love.travis-ci.org/"&gt;donate&lt;/a&gt; too.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1213/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1213/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1213&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Wed, 08 Feb 2012 16:32:21 -0800</pubDate>
</item>
<item>
 <title>Anand Bagmar: vodQA Pune - registrations open</title>
 <link>http://essenceoftesting.blogspot.com/2012/02/vodqa-pune-registrations-open.html</link>
 <description>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.thoughtworks.com/events/testing-and-beyond"&gt;&lt;span style="color: blue;"&gt;The registrations for attendee and speakers for vodQA Pune on 17th March 2012 is now open&lt;/span&gt;&lt;/a&gt;. Looking forward to see you there :)&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599960509213929276-7154782627279247047?l=essenceoftesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
 <pubDate>Wed, 08 Feb 2012 02:56:00 -0800</pubDate>
</item>
<item>
 <title>Alister Scott: CukeSalad: not so yummy yummy</title>
 <link>http://watirmelon.com/2012/02/07/cukesalad-not-so-yummy-yummy/</link>
 <description>&lt;p&gt;I&amp;#8217;ve been playing around with &lt;a href="https://github.com/RiverGlide/CukeSalad"&gt;CukeSalad&lt;/a&gt;: &lt;a href="http://cukes.info"&gt;Cucumber&lt;/a&gt; specs / tests without step-definitions:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Cucumber, washed and ready to eat for Friction-free ATDD/BDD&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In creating an example of my simple &lt;a href="https://github.com/alisterscott/WatirMelonCukeSalad"&gt;WatirMelonCucumber framework using CukeSalad&lt;/a&gt;, here&amp;#8217;s some of the things I&amp;#8217;ve found. Please note: these are my &lt;em&gt;personal&lt;/em&gt; observations and are not direct criticisms of the huge effort that has gone into making this tool.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.wizardrecipes.com/upload/Kirby%20Cucumber%20Salad.jpg"&gt;&lt;img class="alignleft size-medium wp-image-1211" title="Cucumber Salad" src="http://watirmelon.files.wordpress.com/2012/02/kirby-cucumber-salad.jpg?w=300&amp;#038;h=276" alt="" width="300" height="276" /&gt;&lt;/a&gt;&lt;strong&gt;It&amp;#8217;s not really no step definitions:&lt;/strong&gt; they&amp;#8217;re just called different things. Instead of writing steps, you&amp;#8217;re writing &lt;em&gt;roles&lt;/em&gt; and &lt;em&gt;tasks&lt;/em&gt;, both of which are mandatory, so I found I actually wrote more code (in more files) than if I just wrote step definitions in the first place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CukeSalad forces you to use predefined step syntax:&lt;/strong&gt; which to me defeats the purpose of having features in business language. For example, as far as I can tell, &lt;em&gt;Given&lt;/em&gt; statements are purely used for setting the roles, and therefore a business person can&amp;#8217;t use it to define a precondition which I would normally use &lt;em&gt;Given&lt;/em&gt; statements for. Another example is when you want to capture some data from the test, this must be on the end of a sentence following a semicolon (or comma)&lt;/p&gt;
&lt;pre&gt;When I search for: the phrase 'Watir'&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;I spent ages trying to work out why steps don&amp;#8217;t match:&lt;/strong&gt; as you still use Cucumber to run your features, Cucumber will only tell you that there&amp;#8217;s no matching steps. This doesn&amp;#8217;t help when there&amp;#8217;s no steps whatsoever! At some point, I realized that &lt;em&gt;Then&lt;/em&gt; steps follow a different syntax, and they can&amp;#8217;t use placeholders like &lt;em&gt;Whens&lt;/em&gt;, but must have an expected value on the end in single quotes.&lt;/p&gt;
&lt;pre&gt;Then I should see results greater than '30,000'&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;It&amp;#8217;s very confusing what you&amp;#8217;re actually asserting on a Then step:&lt;/strong&gt; I couldn&amp;#8217;t work out a way to capture the expected value from the feature (in the example above &amp;#8217;30,000&amp;#8242;), and CukeSalad just asserts the &lt;em&gt;task&lt;/em&gt; returns the actual expected result, which doesn&amp;#8217;t help if you&amp;#8217;re not testing for equality!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&amp;#8217;s very confusing trying to convert an existing Cucumber test suite:&lt;/strong&gt; I wouldn&amp;#8217;t bother. I found I had to completely rewrite my feature to comply to the syntactical requirements of CukeSalad, so I can&amp;#8217;t this working on an existing feature set.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cucumber world is not supported&lt;/strong&gt;: so just do a normal include instead in env.rb.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sadly, CukeSalad doesn&amp;#8217;t offer me anything over using Cucumber. Whilst it sells itself on having no step definitions, I found there was greater effort in writing the &lt;em&gt;roles&lt;/em&gt; and &lt;em&gt;tasks&lt;/em&gt;. I don&amp;#8217;t like the way it forces me to write sentences using somewhat awkward constraints, and how &lt;em&gt;Given&lt;/em&gt;, &lt;em&gt;When&lt;/em&gt;, &amp;amp; &lt;em&gt;Then&lt;/em&gt; statements all behave differently. It certainly gave me a lot of &lt;strong&gt;WTF&lt;/strong&gt; moments, which isn&amp;#8217;t what you want when writing automated tests.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d be very interested to hear whether anyone has had ongoing success with CukeSalad.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1210/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1210/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1210&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Mon, 06 Feb 2012 20:43:41 -0800</pubDate>
</item>
<item>
 <title>Alister Scott: Turnip: trying to solve Cucumber’s problems with ruby BDD</title>
 <link>http://watirmelon.com/2012/02/05/turnip-trying-to-solve-cucumbers-problems-with-ruby-bdd/</link>
 <description>&lt;p&gt;I&amp;#8217;ve been playing around with &lt;a href="https://github.com/jnicklas/turnip"&gt;Turnip&lt;/a&gt;: a library that was &lt;a href="http://elabs.se/blog/30-solving-cucumber-s-problems"&gt;designed to solve Cucumber&amp;#8217;s problems&lt;/a&gt; in four main areas:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Having a separate test framework is annoying&lt;/li&gt;
&lt;li&gt;Mapping steps to regexps is hard&lt;/li&gt;
&lt;li&gt;Cucumber has a huge, messy codebase&lt;/li&gt;
&lt;li&gt;Steps are always global&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;I don&amp;#8217;t really care about having a &lt;a href="http://cukes.info"&gt;Cucumber&lt;/a&gt; test framework as I don&amp;#8217;t often use &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt;, I actually find regexen quite powerful, I also don&amp;#8217;t really care about Cucumber&amp;#8217;s code base but I can see some merit in having scoped steps.&lt;/p&gt;
&lt;p&gt;I converted my existing demo test suite across &lt;a href="https://github.com/alisterscott/watirmelon-turnip"&gt;to use Turnip&lt;/a&gt; and this is what I found.&lt;/p&gt;
&lt;p&gt;Turnip follows &lt;a title="WatirMelon Spinach" href="http://watirmelon.com/2011/10/29/watirmelon-spinach/"&gt;Spinach&lt;/a&gt; in trying to move away from using regular expressions to define steps. Fortunately, unlike Spinach, Turnip allows you to capture values using placeholders in your steps (this was an instant NO to using Spinach):&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: ruby; light: true;"&gt;
  step &amp;quot;I should see at least :exp_num_results results&amp;quot; do |exp_num_results|
    on :results do |page|
      page.number_search_results.should &amp;gt;= exp_num_results.to_i
    end
  end
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately there are a number of limitations to this approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can&amp;#8217;t capture more than a single word in a placeholder without using double quotes in your feature file &amp;#8211; making them less readable; and&lt;/li&gt;
&lt;li&gt;You can&amp;#8217;t capture values like &amp;#8220;100,000&amp;#8243; as it doesn&amp;#8217;t appear to support special characters in placeholders.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also do some magic using custom step placeholders, where you define regular expressions, but to me that kinda defeats the point of not using regexen in the first place.&lt;/p&gt;
&lt;p&gt;The scoped steps are quite neat and ruby like, and I can see these being very useful for large projects where multiple people are writing the steps.&lt;/p&gt;
&lt;p&gt;Running Turnip files is as simple as using the RSpec test runner, but unfortunately the output of pending steps is less useful than Cucumber in that there are no code snippets, and only the first undefined step is displayed as undefined (unlike the Cucumber which shows you every step that is undefined).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I like the approach that Turnip takes in being a simple way to write business like tests and run them using RSpec. Unfortunately that simplicity comes at a price, and losing the power of regexen in step definitions is not something I would like to give up hastily. I am hoping that the scoped steps someday make their way into the Cucumber code base.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1202/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1202/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1202&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Sun, 05 Feb 2012 04:07:23 -0800</pubDate>
</item>
<item>
 <title>Alister Scott: Introducing the software testing ice-cream cone</title>
 <link>http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone/</link>
 <description>&lt;p&gt;As &lt;a title="Yet another software testing pyramid" href="http://watirmelon.com/2011/06/10/yet-another-software-testing-pyramid/"&gt;previously&lt;/a&gt; explained, I like using the software testing pyramid as a visual way to represent where you should be focusing your testing effort, and often switch between using a cloud or an &lt;a href="http://en.wikipedia.org/wiki/Eye_of_Providence"&gt;Eye of Providence&lt;/a&gt; to represent the manual session-based tests at the top of the pyramid that you should use to supplement and test your automated tests.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://watirmelon.files.wordpress.com/2012/01/automatedtestingpyramid.png"&gt;&lt;img class="alignleft size-full wp-image-1195" title="AutomatedTestingPyramid" src="http://watirmelon.files.wordpress.com/2012/01/automatedtestingpyramid.png?w=584&amp;#038;h=418" alt="" width="584" height="418" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://watirmelon.files.wordpress.com/2012/01/idealautomatedtestingpyramid.png"&gt;&lt;img class="alignleft size-full wp-image-1196" title="IdealAutomatedTestingPyramid" src="http://watirmelon.files.wordpress.com/2012/01/idealautomatedtestingpyramid.png?w=584&amp;#038;h=475" alt="" width="584" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I often see organizations fall into the trap of creating &amp;#8216;inverted&amp;#8217; pyramids of software testing, and only yesterday did a &lt;a href="https://twitter.com/#!/@the_nathanjones"&gt;colleague&lt;/a&gt; point out to me that if you invert my pyramid with the cloud, you end up with an ice-cream cone! So, introducing &lt;strong&gt;the software testing ice-cream cone&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://watirmelon.files.wordpress.com/2012/01/commonsoftwaretestingicecreamcone.png"&gt;&lt;img class="alignleft size-full wp-image-1197" title="CommonSoftwareTestingIcecreamCone" src="http://watirmelon.files.wordpress.com/2012/01/commonsoftwaretestingicecreamcone.png?w=584&amp;#038;h=720" alt="" width="584" height="720" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1194/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1194/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1194&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Tue, 31 Jan 2012 05:33:38 -0800</pubDate>
</item>
<item>
 <title>Alister Scott: Reading CSS properties using Watir-WebDriver</title>
 <link>http://watirmelon.com/2012/01/28/reading-css-properties-using-watir-webdriver/</link>
 <description>&lt;p&gt;There was recently a &lt;a href="http://stackoverflow.com/questions/8979993/how-do-i-view-css-styles-that-apply-to-an-html-element-in-watir-webdriver"&gt;question on Stack Overflow&lt;/a&gt; about how you read a CSS property of an element that is defined in a stylesheet using Watir-WebDriver.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s really quite simple:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: ruby; light: true;"&gt;
require 'watir-webdriver'
b = Watir::Browser.start 'minesweeper.github.com'
puts b.div(:id =&amp;gt; 'g1minesRemaining100s').style 'background-image'
&lt;/pre&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1190/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1190/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1190&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Sat, 28 Jan 2012 04:06:02 -0800</pubDate>
</item>
<item>
 <title>Alister Scott: Writing a CoffeeScript web application using TDD</title>
 <link>http://watirmelon.com/2012/01/23/writing-a-coffeescript-web-application-using-tdd/</link>
 <description>&lt;p&gt;As part of the Test Automation Bazaar &lt;a href="http://watir.com/test-automation-bazaar/minesweeper-challenge/"&gt;minesweeper challenge&lt;/a&gt;, a &lt;a href="https://twitter.com/#!/markryall"&gt;colleague&lt;/a&gt; and I &lt;a href="https://github.com/minesweeper/minesweeper.github.com"&gt;developed&lt;/a&gt; a &lt;a href="http://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt; implementation of &lt;a href="http://minesweeper.github.com/"&gt;minesweeper&lt;/a&gt;. We wanted to use a test first approach to writing our CoffeeScript, so we decided to use &lt;a href="http://pivotal.github.com/jasmine/"&gt;Jasmine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Setting up a development environment&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Even though we were developing the application in CoffeeScript, which generates JavaScript, we found it easy to use a simple ruby environment to boostrap these tools. Our environment therefore looked something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruby 1.9.2 (specified through a &lt;a href="http://beginrescueend.com/"&gt;RVM&lt;/a&gt; .rvmrc file)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt; installed via &lt;a href="http://mxcl.github.com/homebrew/"&gt;Homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;guard, guard-coffeescript, guard-sass gems&lt;/em&gt; for automatically generating JavaScript from CoffeeScript (and CSS from &lt;a href="http://sass-lang.com/"&gt;Sass&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;jasmine gem: for writing/running tests&lt;/li&gt;
&lt;li&gt;Sublime Text 2 editor for writing code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Specifying a Guardfile&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A Guardfile consists of a bunch of guards that perform actions whenever a file is modified in that location. Our Guardfile looked like:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: ruby;"&gt;
guard 'coffeescript', :output =&amp;gt; 'javascripts' do
  watch /^coffeescripts\/.*[.]coffee/
end

guard 'coffeescript', :output =&amp;gt; 'spec/javascripts' do
  watch /^spec\/coffeescripts\/.*[.]coffee/
end

guard 'sass', :input =&amp;gt; 'stylesheets'
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing a Jasmine specification in CoffeeScript&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A Jasmine spec in CoffeeScript looked something like this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: jscript;"&gt;
describe 'GameState', -&amp;gt;
  game_state = null
  field = Field.new mineCount: 1, rows: 1, cols: 3

  beforeEach -&amp;gt;
    game_state = GameState.new field

  it 'should initialise lost to false', -&amp;gt;
    expect(game_state.lost()).toEqual false

  it 'should initialise won to false', -&amp;gt;
    expect(game_state.won()).toEqual false

  it 'should initialise remaining_mines to mine_count', -&amp;gt;
    expect(game_state.remaining_mines()).toEqual 1

  it 'should initialise remaining_mines to mine_count', -&amp;gt;
    expect(game_state.remaining_cells()).toEqual 2
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Running Jasmine tests&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The jasmine gem makes it very easy to run your jasmine tests. There&amp;#8217;s a rake task called &amp;#8216;jasmine&amp;#8217; which you can run to launch a jasmine server locally on port 8888. If you browse to that page, you&amp;#8217;ll see something like this:&lt;/p&gt;
&lt;p&gt;&lt;img class=" wp-image-1186 alignnone" title="Jasmine Test Results" src="http://watirmelon.files.wordpress.com/2012/01/screen-shot-2012-01-23-at-6-41-54-pm.png?w=584&amp;#038;h=362" alt="" width="584" height="362" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test First CoffeeScript development&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that you have Jasmine running, and Guard generating the CoffeeScript, it&amp;#8217;s easy to write a new spec, refresh the Jasmine browser page to run all your tests (in our case in a third of a second) and then write the code to make it pass.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automatically running Jasmine tests on Travis CI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve got your CoffeeScript and Jasmine on github, it&amp;#8217;s trivial to automatically run all your Jasmine tests using the Jasmine::Ci rake task on &lt;a href="http://travis-ci.org/#!/minesweeper/minesweeper.github.com"&gt;Travis CI&lt;/a&gt;. All you need is a .travis.yml file like:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: ruby;"&gt;

language: ruby
rvm:
  - 1.9.2
env:
  - DISPLAY=:99.0
before_install: sh -e /etc/init.d/xvfb start
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Once you add the project to travis, it&amp;#8217;ll automatically run whenever you push. Magic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lessons Learned&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use Sublime Text 2 for CoffeeScript joy:&lt;/strong&gt; TextMate 2 forces you to use tabs (4) for CoffeeScript development, we couldn&amp;#8217;t find a way to make it stop, and had to switch to Sublime Text 2 (for the better).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You still need to know JavaScript:&lt;/strong&gt; all CoffeeScript does is generate JavaScript for both your application code and Jasmine specs. We found ourselves often delving into the generated code to see what was actually going on, and when using Firebug to debug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the &lt;em&gt;jasmine_content&lt;/em&gt; div to test the DOM.&lt;/strong&gt; Jasmine uses a special div with an id of &lt;em&gt;jasmine_content&lt;/em&gt;, which we used to inject and test HTML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CoffeeScript classes are odd:&lt;/strong&gt; we instead used closures to encapsulate state, using a new method on an object, which has the added benefit of looking like ruby.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope you enjoy your CoffeeScript test driven development with Jasmine.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/watirmelon.wordpress.com/1184/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/watirmelon.wordpress.com/1184/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=watirmelon.com&amp;amp;blog=2177915&amp;amp;post=1184&amp;amp;subd=watirmelon&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</description>
 <pubDate>Mon, 23 Jan 2012 03:00:20 -0800</pubDate>
</item>
<item>
 <title>Anand Bagmar: vodQA Chennai starts off with a century!</title>
 <link>http://essenceoftesting.blogspot.com/2012/01/vodqa-chennai-starts-off-with-century.html</link>
 <description>&lt;span style="font-family: Verdana, sans-serif;"&gt;I attended &lt;a href="http://testing.thoughtworks.com/events/continuous-testing-total-quality-assurance"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;vodQA in Chennai&lt;/b&gt;&lt;/span&gt;&lt;/a&gt; on 21st Jan 2012. The event was great. Over 100 passionate testers from Chennai testing community turned up and made sure people presenting were on their toes with excellent questions and great interactions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;One of the participants already blogged about it &lt;a href="http://savitamunde.wordpress.com/2012/01/22/i-got-hangover-after-attending-vodqa-in-chennai/"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;here&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;. She raises valid observations - and I wish I had the opportunity to speak with her directly to address some of the questions / concerns she raised.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In this session, I presented a topic - &lt;a href="http://www.slideshare.net/abagmar/what-is-waat"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;"What is WAAT?"&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;based on my open-source project - &lt;a href="https://github.com/anandbagmar"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;WAAT&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;.&amp;nbsp;The slides used in this session are available &lt;a href="http://www.slideshare.net/abagmar/what-is-waat"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;here&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I am already looking forward to the next vodQA in Chennai. For now, I am preparing for &lt;a href="http://testing.thoughtworks.com/events/agile-testing-teams-and-enterprises"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;vodQA Bangalore - "Agile Testing for Teams and Enterprises"&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;. on Feb 11, and then vodQA Pune on Mar 17.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8599960509213929276-3964789775011708718?l=essenceoftesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
 <pubDate>Sun, 22 Jan 2012 19:49:00 -0800</pubDate>
</item>
<item>
 <title>Manish Kumar: vodQA Bangalore</title>
 <link>http://agiletestingperspectives.blogspot.com/2008/05/bringing-test-automation-early-in.html</link>
 <description>vodQA, the Thoughtworks testing conference is happening in Bangalore on 11 Feb 2012.The format seems to be quite interactive and 11 Feb looks quite an exciting day for those who see testing as the vital cog for IT and business agility.&lt;br /&gt;&lt;br /&gt;The key thing is - there is no entry barrier as the conference participation is free.&lt;br /&gt;&lt;br /&gt;I am participating in a panel discussion along with some of my esteemed colleagues who along with them bring plethora of experience on the topic of agile testing.The discussion should bring out paradigms, challenges , adoption patterns ,advancement in practice and toolsets etc.&lt;br /&gt;&lt;br /&gt;There are lightning talks, interactive agile games and showcase of agile testing.&lt;br /&gt;&lt;br /&gt;I am looking at the opportunity to exchange thoughts and experiences with participants.&lt;br /&gt;&lt;br /&gt;Here is the link to event-page&lt;br /&gt;&lt;br /&gt;http://testing.thoughtworks.com/events/agile-testing-teams-and-enterprises&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7847597596519055879-6435731020524075983?l=agiletestingperspectives.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
 <pubDate>Thu, 19 Jan 2012 01:07:00 -0800</pubDate>
</item>
<item>
 <title>Cromulent Testing: Your Mum Doesn't Work Here</title>
 <link>http://feedproxy.google.com/~r/CromulentTestingBlog/~3/DkLq7AkVKE4/your_mum_doesnt_work_here.html</link>
 <description>&lt;p&gt;Dear Devs,&lt;/p&gt;

&lt;p&gt;Have you ever had code bounce immediately out of test because it just didn’t work? It’s messy and wastes a lot time. You’re expecting the tester to do all your testing, a common mistake. We’re not asking you to do two jobs, with a little effort you can tidy as you go, catching these basic problems yourself.&lt;/p&gt;

&lt;p&gt;The following are helpful, let our conscience be your guide.&lt;/p&gt;

&lt;p&gt;Before you start work, check what you’re doing makes sense. Talk it over, ask who, what, where, when and why. Verify that what you’re going to do is what they want.&lt;/p&gt;

&lt;p&gt;While coding, ensure the code actually does what you believe it does. Stray from the happy path; what could a user do by mistake? How could a user cheat the system? Ask questions like “What happens if I&amp;#8230;” and get answers. Not all who wander are lost.&lt;/p&gt;

&lt;p&gt;Your development skills will help you. Use your knowledge of code to bend it a little. Does any part of the code make you feel queasy? Start there.&lt;/p&gt;

&lt;p&gt;Check white space, min and max lengths, validations, mandatory and optional fields, nulls. It’s literally (not figuratively) painful for testers to report these kinds of problems. Just make sure it works. Please.&lt;/p&gt;

&lt;p&gt;To conclude, your forays into testing won’t replace a competent tester but it will save them time and heart ache; let them focus on more devious aspects their craft.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/CromulentTestingBlog/~4/DkLq7AkVKE4" height="1" width="1"/&gt;</description>
 <pubDate>Wed, 18 Jan 2012 16:00:00 -0800</pubDate>
</item>
</channel>
</rss>

