Posts in Automation
Watir
I've neglected mentioning Watir on this blog because it's already a well known tool. However, since I recently had to do an install of Watir yesterday on a new computer, I noticed a couple of new things the Watir community has been up to since last I checked in with them. For those who don't know, Watir stands for Web Application Testing in Ruby and it's a very simple tool (dare I say painless) for generating test automation for web applications.

So what's new? Well, the last time I installed Watir (it was a while ago), it only had (working) distributions for IE and FireFox. Now it appears to support almost everything I'd care to test: IE, FireFox, Safari, Chrome, Flash, and work is underway on other ports. I also stumbled across Celerity, a headless Java browser with JavaScript support. Mmmmm.... sounds fast.

I like Watir for a couple of reasons. First, I enjoy programming in Ruby - it's strangely relaxing to me. That Watir leverages my language of choice is a big win. Second, Watir is so easy to use. Between IRB and FireBug, there are few web applications I've encountered that I can't have working Watir scripts for in a few minutes. Watir commands are predictable and relatively few - making them easy to remember. Finally, it's very easy for me to extend other scripting tasks using Watir. Because it's Ruby, I don't just use Watir for test automation. I sometimes use it to drive test data entry, assist with exploratory testing, parse websites for data, and other odd tasks.

Another fun fact, Watir is one of the few tools with it's own podcast. If you do a lot of test automation, it's well worth taking the time to listen to the podcasts. Lots of gems in there, and not all of them related to Watir.
soapUI
I'm surprised I haven't posted about soapUI yet given how often I use it. It's one of the first web service testing tools I ever used, and I haven't had much need to look elsewhere. soapUI is great for both functional testing and performance testing. They also have a great service mocking feature.

I've never used the pro version, so I can't speak to those features or the support that comes with it. But I will tell you this, the first (and only) time I had an issue with the tool I contacted the developers and they had a build for me the next day with a fix. I was amazed at the turnaround. I'm sure not all fixes can happen that fast, but it still says something about their passion for the tool and the people that use it.

You can checkout the full feature set here: http://www.soapui.org/features.html
Where to start: Automation in an Agile environment
When you are switching from Waterfall to Agile, it's very easy to get caught up in discussions about tools and automation. Which tools are best for unit testing and acceptance testing? What tools will we need for test data and test environment creation?

It may be worthwhile to take a step back and first prioritize what you want to automate. Ask yourself: "Where are tools going to add the best efficiencies?"

One area that often creates the most pain and gets overlooked is creating the test environment, installation and configuration.  It's these early stages in testing where most often delays occur.

It's not sexy and perhaps not as much fun, but for testers,  automating these areas first can provide considerable benefit in cost and time savings.  Getting developers to start on installation and configuration scripts first, before writing any application code is another way to streamline the process. This way, you can get the test environment running ahead of any functionality testing.

Remember its, "Individuals and interactions over processes and tools"
New to Ruby? Learn with Robots...
If you're new to Ruby and want a fun way to learn more about the language, try out RRobots. RRobots is a simulation environment for robots that have a scanner and a gun, can move forward and backwards and are entirely controlled by ruby scripts. You create your own robot to do battle with others.

It's fun, but more important than that, it challenges you to take advantage of some of Ruby's language features. It also gets you comfortable with a lot of things you'll be doing it you're writing custom automation code (like nested looping, variable management, etc...).