<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>Testing Hotlist Update</title>
  <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/" />
  <modified>2008-07-15T06:22:02Z</modified>
  <tagline>by Bret Pettichord</tagline>
  <id>tag:www.io.com,2008:/~wazmo/blog//4</id>
  <generator url="http://www.movabletype.org/" version="2.661">Movable Type</generator>
  <copyright>Copyright (c) 2008, bret</copyright>
  <entry>
    <title>Setting up Watir with Cruise Control</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_07.html#000281" />
    <modified>2008-07-15T06:22:02Z</modified>
    <issued>2008-07-15T01:22:02-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.281</id>
    <created>2008-07-15T06:22:02Z</created>
    <summary type="text/plain"> Last week I set up Watir so that its unit tests are run automatically whenever any changes are committed (&amp;#8220;checked in&amp;#8221;) to the development repository. This is done with Cruise Control, a tool which watches repositories, runs tests and...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>
Last week I set up <a href="http://wtr.rubyforge.org">Watir</a> so that its unit tests are run automatically whenever any changes are committed (&#8220;checked in&#8221;) to the development repository. This is done with Cruise Control, a tool which watches repositories, runs tests and posts results. The Watir tests are run at watirbuild.com and you can <a href="http://watirbuild.com">check the latest test results</a> yourself. Indeed, the page has a button called &#8220;build now.&#8221; Click it and the tests will be run immediately on the server.
</p><p>
The general term for this process is <em><a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a></em>&#8212;a common practice with Agile teams. I&#8217;ll write more about why this practice is important for the Watir project another day. Today&#8217;s post is about what I did to set this up.
</p><p>
First, I got a server, a virtual private server (VPS) running Windows from <a href="http://vpsland.com/">VPSLAND</a>. I would have preferred a machine running XP, since most Watir users use that, but the closest I could get was 32-bit Windows 2003 Server. Cost: $19 a month, courtesy of <a href="http://www.watircraft.com">WatirCraft</a>. This VPS is named watirbuild.com.
</p><p>
Next I installed the Google Toolbar, because I can&#8217;t find anything without it. I also had to loosen up security on IE so that I could use it to download the software I needed. (The server VPSland provided came with security really locked down.)
</p><p>
I then installed <a href="http://rubyforge.org/frs/?group_id=167&amp;release_id=17128">Ruby 1.8.6-26</a>. The next step was to do a &#8220;<code>gem update --system</code>&#8221; to update the gem installer to the latest version (which Watir needs), but this command failed with this error.
</p><pre>c:/ruby/1.8/yaml.rb:133: [BUG] Segmentation fault
</pre><p>
A little research showed that this was a common problem on  RAM-constrained VPS&#8217;s. Apparently the pre-update gem installer is a memory hog and the VPS&#8217;s don&#8217;t have any swap space. The common workaround has been manually download the gems before installing them. (Only the remote gem installer runs into memory problems.) But I used a different approach.
</p><p>
I wanted our test environment to match, as much as possible, the environments that other people are using for testing, so I really wanted to have the latest gem installer. I also knew that it had better memory handling. So what I did was install Ruby on one of my own systems with more RAM, and then did a &#8220;<code>gem update --system</code>&#8221; on it. Then I zipped up the resulting &#8220;ruby&#8221; directory (using <a href="http://www.7-zip.org/">7zip</a>), uploaded it to watirbuild.com and then unzipped it there over the original installation. I was then able to do remote gem installs without any further trouble.
</p><p>
Because Watir now depends on several other gems. I did a &#8220;<code>gem install watir</code>&#8221; and then uninstalled the Watir gem itself. This left all the dependent gems installed.
</p><p>
Watir uses Subversion (SVN) as its development repository, so we needed a client to access that code. I installed the <a href="http://www.collab.net/downloads/subversion/">command line client.</a>
</p><p>
The next step was to install the continuous integration tool itself. I chose <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a> because it is Ruby-based and easy to configure. Pre-deployment testing had shown, however, that the latest release (1.3.0) did not work on Windows (After starting the server, it would get repeated "Access is denied." errors from SVN.) Instead I needed to use the latest from its development repository. They recently migrated that project from Subversion to Git, so that meant I needed to install a <a href="http://code.google.com/p/msysgit/downloads/list">Git client.</a> Once it was installed, installing Cruise was simply a matter of doing
</p><pre>
git clone git://rubyforge.org/cruisecontrolrb.git
</pre><p>
With Cruise installed, I added the Watir project:
</p><pre>
cruise add watir https://svn.openqa.org/svn/watir/trunk/watir
</pre><p>
I also needed to add a &#8220;cruise&#8221; target to Watir&#8217;s rakefile. Which I did with the following code:
</p><pre>
desc 'Run unit tests'
task :test do
  load 'unittests/core_tests.rb'
end

task :cruise =&gt; :test
</pre><p>
(This code is now part of the Watir project, so you wouldn't need to provide this code if you were running Watir. But you will need something similar if you are setting up your own project with CruiseControl.rb.)
</p><p>
Then I started Cruise using &#8220;<code>cruise start -p 80</code>&#8221;, and this immediately kicked off Watir&#8217;s unit tests. Some failed on first run, and I had to <a href="http://wiki.openqa.org/display/WTR/Run+the+Watir+Unit+Tests" title="http://code.google.com/p/msysgit/downloads/list">modify a couple of IE&#8217;s security settings</a> to fix this.
</p><p>
To test everything, I checked in a minor documentation change to Watir and verified that the unit tests were automatically kicked off.
</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>WatirCraft is Betting on Test Automation</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_06.html#000280" />
    <modified>2008-06-22T16:12:00Z</modified>
    <issued>2008-06-22T11:12:00-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.280</id>
    <created>2008-06-22T16:12:00Z</created>
    <summary type="text/plain"> Pete Dignan and I are founding a company called WatirCraft. WatirCraft is a for-profit company that is supporting and maintaining Watir and providing additional products and services based on Watir. We are betting that we can build a business...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[	<p><a href="http://www.prototest.com/aboutus/">Pete Dignan</a> and I are founding a
company called <a href="http://www.watircraft.com/">WatirCraft.</a> WatirCraft is
a for-profit company that is supporting and maintaining
<a href="http://wtr.rubyforge.org/">Watir</a> and providing additional products
and services based on Watir. We are betting that we can build a
business around making testers successful with automated testing.</p>


	<p>Our top priorities right now are providing ongoing support for Watir
as well as <strong>improving Watir&#8217;s ability to operate with more browsers and
platforms.</strong> We recently released an <a href="http://www.io.com/~wazmo/blog/archives/2008_06.html">updated version of
Watir</a> that
included a number of patches contributed by the community, as well as
a performance improvement.</p>


	<p>Watir&#8217;s number one weakness today is its
focus on Windows and IE. We are working closely with <a href="http://angrez.blogspot.com/">Angrez
Singh</a> and the FireWatir team to bring our
code bases together, rejoin the projects and improve the compatability
between our implentations. Testers have every right to expect
tests they write for one browser to able to be executed with another&#8212;
without the use of browser-specific logic.</p>


	<p><a href="http://code.google.com/p/firewatir/">FireWatir</a> supports Firefox on
Windows, Linux and Mac. We are also looking further. We have recently
had serious inquiries from test architects working on the development
teams of two other important browsers, seeking advice on how to make
Watir work with their browsers. And we also have plans to integrate
Watir with <a href="http://selenium.rubyforge.org/">Selenium-RC</a>.</p>


	<p>Many people today think of Watir as something that works with Windows
and Internet Explorer. We seek to change that. We think Watir&#8217;s defining
characteristic is its <strong>intuitive <span class="caps">API</span> for operating a browser.</strong> This
<span class="caps">API</span> is sufficiently appealing that it has been translated to C#
(<a href="http://watin.sourceforge.net/">Watin</a>) and Java
(<a href="http://watij.com/">Watij</a>). And of course there are a couple of
implementations of this <span class="caps">API</span> in Ruby (Watir, FireWatir,
<a href="http://safariwatir.rubyforge.org/">SafariWatir</a>,
<a href="http://celerity.rubyforge.org/">Celerity</a>). But we need to keep these
Ruby implementations in sync, which is why we are developing a
browser-independent test suite to validate Watir compatability between
these code bases.</p>


	<p>Making Watir more portable and more supportable will mean changes,
some of which will be disruptive. We will be making some features more
robust, and deprecating others. We plan to continue to support Watir
as a community project. In fact, <strong>the Watir community is the key asset</strong>
that we are building our business on. Every day, Watir users are
helping each other, sharing their work and their visions, and making
it easier for the next person who comes along. Pete, new to the Watir
community, is amazed at the patience, good faith and dedication
he has seen.</p>


	<p>By founding this business, Pete and I are making a bet on Watir&#8212;
not just the tool as it is today, but also the vision that inspires
it. It is a vision that realizes that <strong>automation is about code</strong> and success
requires understanding code, and making code understandable.</p>


	<p>We are also betting that people want and will be willing to pay for <strong>a
framework that is easier to use.</strong></p>


	<p>It has been great to learn about all the frameworks that have been
built for Watir. Watir itself was always conceived as a library that
could be used with any framework. Originally we mostly used
<a href="http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html">Test::Unit</a>,
which was convenient and well-supported. But with time, other unit
testing frameworks (such as <a href="http://rspec.info/">Rspec</a> and
<a href="http://www.thoughtbot.com/projects/shoulda">Shoulda</a>) have arisen and
it is just as easy to use Watir with them. It has been great to learn
from all the frameworks that Watir users have <a href="http://wiki.openqa.org/display/WTR/Example+Frameworks">created and
shared.</a></p>


	<p>Watir was concieved as much as an embodied critique of the
then-prevailing testing tools as it was as a foundation for successful
automation. It was thus designed around a standard scripting language,
not a
<a href="http://www.stickyminds.com/se/S2326.asp">vendorscript</a>. It
was designed to be easy to write, rather than easy to record. And it
was designed to be a library and not a framework. Many of the commercial
tools have been burdened by tight bindings to leaden frameworks.</p>


	<p>WatirCraft is developing a framework that will allow testers who
aren&#8217;t wizards (and who don&#8217;t have wizards around to help) to
nonetheless hit the ground running with Watir. Our framework won&#8217;t be
for everybody and we will continue to encourage Watir&#8217;s many users to
use whatever framework they wish, whether it be open-source,
home-brewed or ours. Our goal, really, is to <strong>make Watir-based
testing accessible to more people.</strong></p>


	<p>We are also betting on Ruby. We still sometimes hear regrets from
testers that Watir isn&#8217;t written in Python. I don&#8217;t regret it one
bit. I am thankful that <a href="http://www.exampler.com/">Brian Marick</a>
pulled me on to the Ruby train with him years ago. I believe that we
can build a better framework with less effort in Ruby than in
Python. This is because Ruby has a set of features called
meta-programming.</p>


	<p>The advantages of meta-programming have been hard to explain to
testers. &#8220;Meta-programming&#8221; is actually a new label for a set
of advanced language features that Ruby has had for a long time. But
these features are hard to explain and understand and most testers
won&#8217;t be using them. Nonetheless, <strong>Ruby&#8217;s meta-programming features
make it easier to build consise, intuitive frameworks.</strong> Indeed, this is
a big reason behind the success of <a href="http://www.rubyonrails.org/">Rails.</a></p>


	<p>We are also betting that the growing use of Agile Development
practices will continue. <strong>Testers on agile teams are being hammered by
shorter iterations.</strong> Regression testing is more and more necessary and yet
there is less and less time to do it. At the same time, Agile
Development is getting testers and developers to work together more
closely&#8212;exactly what needs to happen if <a href="http://www.stickyminds.com/se/S2084.asp">successful test
automation</a> is going to
happen. We will continue to support automated testing that works not
just for testers but for the whole team, and that integrates with
agile practices such as developer testing, continuous integration and
frequent commits. Personally, I&#8217;ve been working exclusively with Agile teams over the
past four years. Only when you run tests daily (or
more frequently) will you really do what is necessary to make
automated testing work.</p>


	<p>Today, most of the innovation in automated testing today is coming
from agile developers. I find it quite exciting and hard to keep up
with, there is so much of it. Yet many of these tools are written for
developers, and testers have trouble using them. Indeed developers in
some companies are already taking over responsibility for automating
testing. Will this be the trend? Will there be a role for testers in
the future of automated testing? Will this role be defined by
developers?</p>


	<p>We think <strong>testers do have a significant role in the future of
automated testing.</strong> By working closely with both testers and
developers we can make Watir an even better tool and sell additional
tools and support that will make testers successful in an increasingly
Agile world. We&#8217;re betting on it.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Watir 1.5.6 released with &quot;Zippy&quot; speed</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_06.html#000279" />
    <modified>2008-06-16T22:04:01Z</modified>
    <issued>2008-06-16T17:04:01-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.279</id>
    <created>2008-06-16T22:04:01Z</created>
    <summary type="text/plain">Last week we released a new version of Watir. We&apos;ve mostly been accumulating bug fixes and minor enhancements. However there is one new feature that may be worth the upgrade. We&apos;ve added a speed improvement to Watir, which we call...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[Last week we released a new version of Watir. We've mostly been accumulating bug fixes and minor enhancements. However there is one new feature that may be worth the upgrade. We've added a speed improvement to Watir, which we call "Zippy" speed.

<h3>Installation</h3>

Watir now has a two-step install process (assuming you've already installed Ruby). Type this at the command prompt:
<pre><code>gem update --system
gem install watir</pre></code>

This will update your version of the Rubygems installer and then install the latest version of Watir. Some people have had install problems with 1.5.4 and 1.5.5. Those problems are now fixed. 
<p>
We are also now recommending that people use Ruby 1.8.6-26 final with Watir. A Ruby bug affecting many Watir users in earlier versions of 1.8.6 is now fixed. If you are upgrading your version of Ruby, you basically have to do a fresh install. There is no upgrade option. Sorry.

<h3>Zippy Speed</h3>
When you first use Watir, it is rather slow. This is intentional. We made Watir run slow at first because we found that new users wanted to be able to watch their scripts and make sure they were working correctly. So we added some delays to slow Watir down to an auditable speed.
<p>
However, once you have confidence in your tests, you probably want to run them faster. This is just one command.
<pre><code>ie = Watir::IE.new
ie.speed = :fast</pre></code>

I know this is a surprise to some Watir users: we haven't done a great job of letting this trick be known. This feature has been in Watir for a long time, certainly as far back as Watir 1.4.
<p>
What is new is that we now have an even faster way to run Watir. We call this "zippy" and it works the same way.
<pre><code>ie = Watir::IE.new
ie.speed = :zippy</pre></code>

Normally, when Watir enters text into a text field, it does so letter by letter. Two reasons. One, it looks cooler. Two, there are rare cases where you have to do this to realistically engage Javascript attached to the text field that, say, limits the characters that can be entered. But with tests that had lots of data entry, this could really slow things down.
<p>
The new :zippy speed speeds up tests by enter text fields all at once. If you have tests that require character-by-character text entry, you'll need to continue to use :fast.
<p>
In the past, many Watir users realized that they could speed up their tests by using value instead of set. Thus, instead of
<pre><code>ie.text_field(:id, 'payment').set '25'</pre></code>

They would use
<pre><code>ie.text_field(:id, 'payment').value = '25'</pre></code>

The new :zippy speed does exactly the same thing, only behind the scenes so you don't have to modify your individual scripts.
<p>
Zippy speed was originally included in Watir 1.5.4, but I've been reluctant to brag about it until we got our install problems fixed. It is based on a proof of concept by Jonathan Kohl.

<h3>Should You Upgrade?</h3>
Other features new since 1.5.3 (released last fall) include support for Chinese character input and the ability to locate more elements using multiple attributes. However, multiple attribute support for text fields, buttons and other input elements has yet to be implemented. We know you are waiting for it. 
<p>
You can now call the row method from within a table, also frequently requested. There are a number of other fixes. (See the <a href="http://wiki.openqa.org/display/WTR/Release+Notes">Release Notes</a> for details.)
<p>
I know many of you are still using Watir 1.4.1. There is only one reason I know of why you should not upgrade. We have had several reports that Watir 1.5.3 and later is slower with some complex pages. We recently got a reproducible case of this problem and will be looking at fixing it in 1.5.7.

]]>
      
    </content>
  </entry>
  <entry>
    <title>The Next Advance in Testing</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_06.html#000278" />
    <modified>2008-06-09T21:29:28Z</modified>
    <issued>2008-06-09T16:29:28-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.278</id>
    <created>2008-06-09T21:29:28Z</created>
    <summary type="text/plain">Ward Cunningham says: I suspect there will be a tool at the center of the next advance in testing. The tool will enable the advance, but it won&apos;t be the advance. Like with jUnit, the tool will be useful before...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[Ward Cunningham says: 
<blockquote>
<p>I suspect there will be a tool at the center of the next advance in testing. The tool will enable the advance, but it won't be the advance. Like with jUnit, the tool will be useful before the advance has happened, but, when the books are written, they will devote far more attention to the practices surrounding the tool than the tool itself. </p></blockquote>]]>
      
    </content>
  </entry>
  <entry>
    <title>Next Watir Austin Meeting: Jim Matthews&apos; Link Checker</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_05.html#000277" />
    <modified>2008-05-19T16:40:20Z</modified>
    <issued>2008-05-19T11:40:20-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.277</id>
    <created>2008-05-19T16:40:20Z</created>
    <summary type="text/plain">The next meeting of the Austin Watir Users Group will be this Wednesday, May 21. Jim Matthews will be speaking about his link checker, a web crawler optimized for testing that he has released as open-source. He needed a script...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>The next meeting of the Austin Watir Users Group will be this <strong>Wednesday, May 21.</strong></p>
<p><strong>Jim Matthews will be speaking about his link checker</strong>, a web crawler optimized for testing that he has released as open-source. He needed a script that would crawl a website looking for certain special conditions. &nbsp;He built&nbsp;a tool using Ruby, <span class="nfakPe">Watir</span>, and Mysql that he has been using to test the website at Callaway Golf. Jim will discuss the problems encountered and the evolution to the tool.</p>
<p>I met Jim years ago during a consulting assignment at Tonic, where he had built his own&nbsp;browser tester in VB. I later developed Watir partly inspired by Jim&rsquo;s work. Later we worked together at DataCert, where we both used Watir to test different products.<br /><br />We are meeting at Uplogix again. <strong>Try to get to the meeting by 6:30 if you can. We&rsquo;ll have pizza for you. </strong><a href="http://tinyurl.com/6bnda9"><strong>Complete driving directions.</strong></a></p>

<p><b>Update:</b> Use the following Subversion command to check out the link-checker: 
<pre>svn checkout svn://rubyforge.org/var/svn/test-system/link_checker/trunk</pre></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>What I&apos;ve Been Using Lately</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_04.html#000276" />
    <modified>2008-04-30T21:07:07Z</modified>
    <issued>2008-04-30T16:07:07-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.276</id>
    <created>2008-04-30T21:07:07Z</created>
    <summary type="text/plain">On my last project we used Watir 1.5.4 (only recently publicly released, but we&apos;d been using it since last fall) and Ruby 1.8.5. There are several problems with Ruby 1.8.6 and therefore I will not use it. We used Rspec...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>On my last project we used <a href="http://rubyforge.org/frs/shownotes.php?release_id=21473">Watir 1.5.4</a> (only recently publicly released, but we'd been using it since last fall) and <a href="http://rubyforge.org/frs/shownotes.php?release_id=9803">Ruby 1.8.5.</a> There are several problems with Ruby 1.8.6 and therefore I will not use it.</p>
<p>We used <a href="http://rspec.info/">Rspec </a>on this last project, and I really liked it. We started with Rspec 0.8, and at that time we looked at the <a href="http://rspec.info/documentation/stories.html">Story Runner</a>, but it clearly wasn't ready for production testing. We later upgraded to Rspec 1.1.1. but did not have time to revisit using the Story Runner. The code seems solid now, and I'm eager to try it out on a real project.</p>
<p>We used Eclipse as our IDE, version 3.3 with the Aptana plugin. There is a <a href="http://www.aptana.com/studio">new version of Aptana</a> that I plan to install (standalone)&nbsp;when I get a moment. Our developers used IntelliJ and really liked it. I was able to get a comp license for it, but haven't actually installed it yet. I think I'm reluctant to use a tool that might be beyond the reach of our users.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Reintegrating Watir and FireWatir</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_04.html#000275" />
    <modified>2008-04-29T22:16:35Z</modified>
    <issued>2008-04-29T17:16:35-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.275</id>
    <created>2008-04-29T22:16:35Z</created>
    <summary type="text/plain">Right now the top priority of the Watir project is to reintegrate with FireWatir and improve the compatability between the two implementations. I&apos;ve begun serious discussions with Angrez Singh, the FireWatir lead, and we&apos;ve agreed on this basic objective. There...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[Right now the top priority of the Watir project is to reintegrate with <a href="http://code.google.com/p/firewatir/">FireWatir </a>and <strong>improve the compatability between the two implementations.</strong> I've begun serious discussions with Angrez Singh, the FireWatir lead, and we've agreed on this basic objective. There are, however, lots of logistical and architectural issues that need to be discussed further. We've agreed to continue this discussion on <strong>the Watir Development list, wtr-development@rubyforge.org.</strong> 
<p>If you would like to be part of this discussion, or learn more about our plans, <a href="http://rubyforge.org/mailman/listinfo/wtr-development">please join this list</a>. This is a public list that has been quiet lately, but has been used for similar discussions in the past.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Rasta supports data-driven testing</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_04.html#000274" />
    <modified>2008-04-22T22:06:21Z</modified>
    <issued>2008-04-22T17:06:21-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.274</id>
    <created>2008-04-22T22:06:21Z</created>
    <summary type="text/plain">Rasta is a data-driven testing framework that pulls data out of Excel spreadsheets and executes it using simple &quot;fixtures&quot; that you write in Ruby. Your fixture methods could use Watir or another Ruby-based library (Selenium-RC, Mechanize, Soap4R) to execute against...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p><a href="http://rasta.rubyforge.org/">Rasta </a>is a data-driven testing framework that pulls data out of Excel spreadsheets and executes it using simple "fixtures" that you write in Ruby. Your fixture methods could use <a href="http://wtr.rubyforge.org/">Watir </a>or another Ruby-based library (<a href="http://selenium-rc.openqa.org/">Selenium-RC</a>, <a href="http://mechanize.rubyforge.org/mechanize/">Mechanize</a>, <a href="http://dev.ctor.org/soap4r">Soap4R</a>) to execute against the target application. 
<p>There are several things that I think are simply terrific about Rasta. The most dramatic feature is that the spreadsheet is annotated in real-time as the tests execute. Each cell is colored red or green to indicate whether that step passed. If there are errors, they are attached to the cell as a comment that appears when you hover over it. 
<p>There are a lot of data-driven testing frameworks that work off of tables these days. Most use wiki's to create the tables, which feels somewhat barbaric. Rasta allows you to use a spreadsheet instead. 
<p>Another great thing about Rasta is that it allows test cases to be defined either horizontally or vertically. I've noticed that most data-driven frameworks (Fit, TestFrame, Certify, QTP) specify test cases horizontally. However, most testers, if they are starting from scratch will organize their test matrices vertically. I'm sure there is some psychological reason for this. In any case, Rasta allows you to organize your tests either way. To me this is simply a great of example of how test tools should be adapted to the way tester's think rather than the other way around. 
<p>Another feature along these lines is the ability to stop the tests and then pick up where they left off, instead of having to restart from the beginning. 
<p>Right now, Rasta only supports Excel, but the developers are working on adding support for Open Office and Google spreadsheet. They've put together a great website, with screen shots and examples. It really gives a much better impression of what the tool is like than I can convey here. 
<p>There has been a lot of discussion in the Watir community about data-driven testing frameworks. Any one interested really should give Rasta a look. It is simple, effective, and fun. </p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Supporting Watir</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_04.html#000273" />
    <modified>2008-04-12T22:08:18Z</modified>
    <issued>2008-04-12T17:08:18-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.273</id>
    <created>2008-04-12T22:08:18Z</created>
    <summary type="text/plain"> Pete Dignan and I are founding a company to support Watir and other open-source testing tools. We are still working on the business plan and name of the business. Normally, I would have wanted to wait until we had...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[	<p><a href="http://www.prototest.com/aboutus/">Pete Dignan</a> and I are founding a company to support <a href="http://wtr.rubyforge.org">Watir</a> and other open-source testing tools. We are still working on the business plan and name of the business. Normally, I would have wanted to wait until we had a few more details decided before making an announcement, but our plans were <a href="http://blogs.zdnet.com/open-source/?p=2191">leaked out</a> early so there is really no point in keeping quiet.</p>

	<p>Pete is the president of <a href="http://www.prototest.com/home/">ProtoTest</a>, a Denver-based testing services company, with both financial success and an excellent track record of client satisfaction. One of the reasons that I&#8217;ve agreed to join Pete in this venture is because of his strong commitment to open-source software and continuing to respect and support the Watir community.</p>

	<p>One of the first things we&#8217;ll be doing is to get a new release of Watir out the door. This has been overdue; me and the other core committers have been very busy over the past six months with other work. The most important thing that we&#8217;ll be working on is making Watir work better with Firefox. Specifically, we would like to merge the <a href="http://code.google.com/p/firewatir/">FireWatir</a> code back into the original Watir code base. I still think that the best way forward on this project is to <a href="http://www.io.com/~wazmo/blog/archives/2007_11.html#000263">instrument our test suite</a> so that it can be run against either project. This means some intermediate work on the test suite, as well as putting the Watir project itself under <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> using <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb.</a></p>

]]>
      
    </content>
  </entry>
  <entry>
    <title>Austin Watir Users Group, Weds Mar 19, Keyword Testing with Rasta</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_03.html#000272" />
    <modified>2008-03-17T22:18:37Z</modified>
    <issued>2008-03-17T17:18:37-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.272</id>
    <created>2008-03-17T22:18:37Z</created>
    <summary type="text/plain">I am very please to announce that the first meeting of the Austin Watir Users Group will be this Wednesday, March 19. I&apos;ve been working for some time with several people to make this happen. Keyword Driven Testing With Rasta,...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>I am very please to announce that the first meeting of the Austin Watir Users Group will be this Wednesday, March 19. I've been working for some time with several people to make this happen.</p>
<h3>Keyword Driven Testing With Rasta, Hugh McGowan, Convio</h3>
<p>Hugh McGowan is presenting his work on <a href="http://rasta.rubyforge.org/">Rasta</a> a framework for building keyword-driven tests using Ruby and Excel. This open-source framework fills an important gap for the many testers who are looking for a way to easily put their Watir tests into spreadsheets.</p>
<h3>Sponsors</h3>
<p>TestCo is providing food and Uplogix is providing beverages. If you are planning to attend, please RSVP to <a href="mailto:brentlavelle@yahoo.com">Brent Lavelle</a> so we can have an accurate head count when we order the pizza.</p>
<h3>Agenda</h3><pre>6:15 Pizza<br />7:00 Rasta, Hugh McGowan</pre>
<h3>Location</h3>
<p>Uplogix, Inc.<br />7600B N. Capital of Texas Hwy.Suite 220<br />Austin, TX&nbsp; 78731-1189</p>
<p><a href="http://uplogix.com/company/driving_directions.php">Driving Directions</a> </p>
<p>This is located on 360 between 2222 and Spicewood Springs Road.</p>
<p>Uplogix is next to the apartment complex with the big American flag so if you are coming from the south you will need to make a U-turn on 360 at this complex and get over to the right lane fast. Traffic on 360 from 5 till 7 will be bad.</p>
<h3>Austin Watir Users Group</h3>
<p>We will be planning additional meetings of the Austin Watir Users Group. To recieve future announcements, please subscribe to<br /><a href="http://tech.groups.yahoo.com/group/watir-austin/">watir-austin@yahoogroups.com</a> </p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Looking for Chief Architect and Senior Rails Developers</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_03.html#000271" />
    <modified>2008-03-10T16:31:58Z</modified>
    <issued>2008-03-10T11:31:58-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.271</id>
    <created>2008-03-10T16:31:58Z</created>
    <summary type="text/plain">Due to recent turnover, my team has senior development leadership positions open. These are great opportunities for people who are committed to Agile development and Ruby on Rails. We are developing a new product line, mostly following XP, but also...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>Due to recent turnover, my team has senior development leadership positions open. These are great opportunities for people who are committed to Agile development and Ruby on Rails.</p>
<p>We are developing a new product line, mostly following XP, but also influenced by Crystal and Lean. We use test-first development, continuous integration, and automated acceptance testing.</p>
<p>The <a href="http://www.dovetailsoftware.com/about/careers.aspx#architect">chief architect </a>needs to define and promote a technical vision for our product line, effectively balancing competing concerns such as customizability and upgradeability. We are looking for someone who knows how to work with an Agile team, developing the architecture incrementally, and work with our business stakeholders, understanding the technical requirements and promoting their technical vision. </p>
<p>The <a href="http://www.dovetailsoftware.com/about/careers.aspx#railsDevelopers">Rails developers </a>we are hiring need to be well-versed in test-driven development and related practices of design patterns and object-oriented design. </p>
<p>These are great opportunities to work with a high-performance team on a challenging project. <a href="mailto:tech-jobs@dovetailsoftware.com">Contact us</a> if you are interested.</p>

<p><b>Update:</b> Actually these weren't such great opportunities after all. The project was cancelled and the team was let go.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>How Big Should a Story Be?</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_01.html#000270" />
    <modified>2008-01-11T06:01:37Z</modified>
    <issued>2008-01-11T00:01:37-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.270</id>
    <created>2008-01-11T06:01:37Z</created>
    <summary type="text/plain">Our recent planning sessions have demonstrated two conflicting forces on story size. The need of customers to see business value and high-level plans pushes towards larger stories, yet the need for developers to be able to complete stories in a...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    <dc:subject>Agile</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>Our recent planning sessions have demonstrated two conflicting forces on story size. The need of customers to see business value and high-level plans pushes towards larger stories, yet the need for developers to be able to complete stories in a single iteration pushes for smaller sizes. I have&nbsp;researched a number of sources to understand more how Agile teams handle this conflict.</p>
<p>The most direct treatment of this issue is by Hai Ton, who <font face="Microsoft Sans Serif">in his <a href="http://doi.ieeecomputersociety.org/10.1109/AGILE.2007.2">experience report from the Agile 2007 conference</a> </font>says:</p>
<blockquote>
<p>What would your Analyst team do when torn between meeting Customer versus Developer demands? When their needs conflict with one another, how do you appease them both? The report outlines the successful strategy one team used to decompose their Stories to serve both the development team needs to demonstrate progress as well as address Customer needs to see value.</p></blockquote>
<p>His report&nbsp;describes that they used epics, stories and chapters. Epics are described in the form "As a ..., I would like ... so that ...". Customers were asked to sort epics into "must have", "should have", "could have" and "won't have" (MoSCoW). Epics were broken down into multiple stories.</p>
<p>Stories were individually written to be "independent", "negotiable", "valuable to customers", "estimable", "small" and "testable" (INVEST). Stories were described in the "Given ..., When... Then... " format.</p>
<p>Chapters were used when a story was too big for an iteration, and yet breaking it into two stories would no longer&nbsp;clearly demonstrate customer value. Their solution was to create chapters, and then to delay demonstrating the development work to customers until all the chapters of a story were completed.</p>
<p>There is a lot more good detail in this report (A Strategy for Balancing Business Value and Story Size, Proceedings of the Agile 2007 Conference, Hai Ton, ThoughtWorks), which unfortunately is not freely available online.</p>
<p>Here are some other&nbsp;discussions&nbsp;related to&nbsp;this&nbsp;topic that I found interesting.</p>
<ul>
<li><a href="http://www.agileproductdesign.com/blog/the_shrinking_story.html">Stories have been getting smaller with time</a>, Jeff Patton</li>
<li><a href="http://alistair.cockburn.us/index.php/Jeff_Patton_and_the_ABCs_of_Quality">Consider making multiple passes at a story, to allow for feedback</a>, Alistair Cockburn and Jeff Patton</li>
<li><a href="http://feeds.feedburner.com/~r/thebeelog/~3/201489866/the-practical-application-of-themes.aspx">Group stories into themes</a>, Dave Larabee</li>
<li><a href="http://feeds.feedburner.com/~r/AslakHellesoy/~3/171190373/planning-poker-timerstory-writing">Timebox the estimating process to allow large backlogs to be estimated (with timeclock)</a>, Aslak Hellesoy</li></ul>
<p>&nbsp;A related idea is a Minimum Marketable Feature. This term comes from <a href="http://www.amazon.com/dp/0131407287/?tag=bretpettichossof">Software by Numbers</a> and describes a feature with clear business value that can then be broken down into stories in development. I haven&rsquo;t read this book, but have been getting <a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;f=49&amp;t=000503">recommendations</a> from so many people that I clearly need to get my hands on a copy.</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>My Writing Process</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2008_01.html#000269" />
    <modified>2008-01-05T23:59:50Z</modified>
    <issued>2008-01-05T17:59:50-06:00</issued>
    <id>tag:www.io.com,2008:/~wazmo/blog//4.269</id>
    <created>2008-01-05T23:59:50Z</created>
    <summary type="text/plain">I&apos;ve been using the Fieldstone writing method for years. I learned it from James Bach, who learned it from Jerry Weinberg. I&apos;ve found it to be a great way to generate material, but have struggled over the years to organize...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>I've been using the Fieldstone writing method for years. I learned it from <a href="http://www.satisfice.com/blog/">James Bach</a>, who learned it from <a href="http://weinbergonwriting.blogspot.com/">Jerry Weinberg</a>. I've found it to be a great way to generate material, but have struggled over the years to organize the all the writing that it produces. Jerry recently published <a href="http://www.amazon.com/dp/093263365X/?tag=bretpettichossof">a book describing the Fieldstone method</a>, but it hasn't helped me much with this problem. What has helped me are a couple of books by <a href="http://www.davidco.com/david_allen.php">David Allen</a>. In <a href="http://www.amazon.com/dp/0142000280/?tag=bretpettichossof">Getting Things Done</a>, he describes a process for organizing and processing your email, to-do lists and all the reminders you need to accomplish your goals. I had to read it twice, about six months apart to understand it &mdash; it&rsquo;s simple but deep &mdash; and initially used&nbsp;his method&nbsp;simply to organize my to-do lists. Like Weinberg, he encourages you to write whatever is on your mind. For a while, this only lead me to create stacks and stacks of cards. More recently I have learned about <a href="http://flickr.com/photos/jazzmasterson/39711469/in/set-873461/">other GTD enthusiasts</a> using <a href="http://www.amazon.com/dp/B000EFJW3C/?tag=bpettichossof">#7 coin envelopes</a> and <a href="http://www.amazon.com/dp/B00006IC6S/?tag=bpettichossof">floppy-disk binder sheets</a> to organize index cards. This has really worked well for me. I've also recently read Allen's <a href="http://www.amazon.com/dp/0143034545/?tag=bpettichossof">Ready for Anything</a>, which expands on the principles and theory behind the GTD system. This has really helped me adapt it to my writing needs, because writing a book ends up being just another thing to get done, and Allen recommends that you put everything into one system anyway.&nbsp;I&rsquo;ve also been helped by&nbsp;<a href="http://www.windsorinterfaces.com/notelens.shtml">NoteLens</a>, a simple, free&nbsp;tool for organizing multiple files that Jerry recently <a href="http://weinbergonwriting.blogspot.com/2007/02/tools-for-keeping-and-organizing.html">recommended</a>.</p>
]]>
      
    </content>
  </entry>
  <entry>
    <title>Cem Kaner&apos;s Recent Writing</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2007_12.html#000268" />
    <modified>2007-12-23T23:06:47Z</modified>
    <issued>2007-12-23T17:06:47-06:00</issued>
    <id>tag:www.io.com,2007:/~wazmo/blog//4.268</id>
    <created>2007-12-23T23:06:47Z</created>
    <summary type="text/plain"><![CDATA[If you are like me, you&rsquo;re always eager to read Cem Kaner's writing. Lately, he's been publishing in journals that you may have missed, so here are some links. On teaching software testing online, in the December 2007 edition of...]]></summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    <dc:subject>Testing</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>If you are like me, you&rsquo;re always eager to read <a href="http://kaner.com/articles.html">Cem Kaner's writing</a>. Lately, he's been publishing in journals that you may have missed, so here are some links.</p>
<ul>
<li>On teaching software testing online, in the <a href="http://sapienttesting.com/?q=node/2">December 2007 edition</a> of the journal of the <a href="http://www.associationforsoftwaretesting.org/">Association for Software Testing</a>.</li>
<li>On certification and the testing job market, in the <a href="http://sapienttesting.com/?q=node/6">June 2007 edition</a> of the journal of the AST.</li>
<li>On the problems with testers acting as user advocates, in the <a href="http://www.tassq.org/quarterly/">April 2007 edition</a> of the journal of the Toronto Association of Systems &amp; Software Quality.</li></ul>
<p>These are all solid publications with great articles by many other authors as well. All free!</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Publishing Ruby Code</title>
    <link rel="alternate" type="text/html" href="http://www.io.com/~wazmo/blog/archives/2007_12.html#000267" />
    <modified>2007-12-17T01:18:09Z</modified>
    <issued>2007-12-16T19:18:09-06:00</issued>
    <id>tag:www.io.com,2007:/~wazmo/blog//4.267</id>
    <created>2007-12-17T01:18:09Z</created>
    <summary type="text/plain">Sometimes I publish Ruby code in this blog. I find that syntax highlighting makes the code much more readable. This post describes the tools I use to make this happen. This approach is based on one by Jim Morris. This...</summary>
    <author>
      <name>bret</name>
      <url>http://www.pettichord.com</url>
      <email>bret@pettichord.com</email>
    </author>
    <dc:subject>Ruby</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.io.com/~wazmo/blog/">
      <![CDATA[<p>Sometimes I publish Ruby code in this blog. I find that syntax highlighting makes the code much more readable. This post describes the tools I use to make this happen. This approach is based on <a href="http://blog.wolfman.com/articles/2006/05/26/howto-format-ruby-code-for-blogs">one by Jim Morris</a>.</p>
<p>This is the main script that converts ruby code to HTML with syntax highlighting:</p><pre><span class="ident">require</span> <span class="punct">'</span><span class="string">rio</span><span class="punct">'</span>
<span class="ident">require</span> <span class="punct">'</span><span class="string">rubygems</span><span class="punct">'</span>
<span class="ident">require</span> <span class="punct">'</span><span class="string">syntax/convertors/html</span><span class="punct">'</span>

<span class="ident">code</span> <span class="punct">=</span> <span class="constant">File</span><span class="punct">.</span><span class="ident">read</span><span class="punct">(</span><span class="constant">ARGV</span><span class="punct">[</span><span class="number">0</span><span class="punct">])</span>

<span class="ident">convertor</span> <span class="punct">=</span> <span class="constant">Syntax</span><span class="punct">::</span><span class="constant">Convertors</span><span class="punct">::</span><span class="constant">HTML</span><span class="punct">.</span><span class="ident">for_syntax</span> <span class="punct">"</SPAN><SPAN class=string>ruby</SPAN><SPAN class=punct>"</span>
<span class="attribute">@code_html</span> <span class="punct">=</span> <span class="ident">convertor</span><span class="punct">.</span><span class="ident">convert</span><span class="punct">(</span> <span class="ident">code</span> <span class="punct">)</span>

<span class="ident">puts</span> <span class="attribute">@code_html</span>

<span class="ident">fn</span> <span class="punct">=</span> <span class="punct">"</SPAN><SPAN class=string><SPAN class=expr>#{File.basename(ARGV[0], File.extname(ARGV[0]))}</SPAN>.html</SPAN><SPAN class=punct>"</span>
<span class="ident">rio</span><span class="punct">(</span><span class="ident">fn</span><span class="punct">)</span> <span class="punct">&lt;&lt;</span> <span class="attribute">@code_html</span>
</pre>
<p>To get this to work for your blog, you will have to do the following:</p>
<ol>
<li>Store the above script as&nbsp;code2html.rb. 
<li>Install the 'syntax' and 'rio' gems. <pre>&gt; gem install syntax
&gt; gem install rio</pre>
<li>Execute the script as follows: <pre>&gt; code2html.rb your-code.rb</pre>This will create your-code.html, which is your code formatted for your blog. 
<li>Add&nbsp;<a href="http://blog.wolfman.com/articles/2006/05/26/howto-format-ruby-code-for-blogs">Jim&rsquo;s CSS</a> to your blog.&nbsp; 
<li>Paste the formatted HTML into your post.</li></ol>]]>
      
    </content>
  </entry>

</feed>