Shaun Abram
Technology and Leadership Blog
Selenium talk at SF JUG
I attended another great San Francisco JUG meeting tonight, this time on How to use Selenium with Maven/Ant to automate testing of web apps.
The talk was given by Chris Bedford, from Build Lackey Labs – “Automating the Monkey Work Out and the Quality In!”. Overall, I thought this was a great talk by Chris. He clearly has a huge amount of experience creating automated tests and integrating them with build tools and he gave a well structured, interesting, well delivered presentation. I have posted a copy of Chris’s slides and I think the video will be posted on the SF JUG site at some point, but I have also posted my notes from the presentation below…
Selenium Overview
Chris started off with an overview of Selenium – a tool for automating tests for web based applications. He then introduced us to the Selenium IDE – a Firefox add-on that allows you to set up tests by recording clicks on a web page, or by manually entering commands. The tests can then be played back as part of your automated test suite.
Creating Selenium Tests
Chris showed us the process by both executing an existing test he had already setup, and by walking us through the creation of a new test, which loaded a page, waited for text to be present, clicked on a link, and confirmed that text was present. The test was a html file, but he showed how to export it as TestNG and JUnit tests (although both exports resulted in kind of ugly java code!)
Possible hiccups with Selenium
One of the things I thought Chris did well was, in addition to pointing out all the many great things about Selenium, he also pointed out some of the slight issues with Selenium that he has encountered during his time using it, such as
- Difficulties getting the initial Open page to work
- Issues with where the test files get saved
- Making sure you have the tests run slow to start with (to avoid timing/loading issues)
- The Selenium IDE may be difficult to get working with IE (Firefox is fine)
Selenium Components
The main Selenium section then finished up with a quick over of the various Selenium Components:
- Selenium IDE
- Selenese Commands
- Selenium RC (Remote Control)
Chris also had a section on the ‘same origin‘ JavaScript policy that Selenium manages to circumvent by using the Selenium RC Server. He managed to explain the issue in simple terms.
Other functional test alternatives
Chris discussed other functional test alternatives by comparing Canoo to Selenium (Canoo is also an automated web app testing framework).
Chris also mentionted Umangite, Chris Richardson’s open source testing framework that makes Selenium tests easier to write. I have used this before, and agree it is worth checking out…
Using Selenium with Build Tools
He then discussed using Maven with Selenium, including using Cargo (e.g. using the cargo maven2 plugin). Cargo is a set of APIs that assists in
- installing web containers, such as Tomcat, JBoss
- booting and shutting them down
- deploying web apps (.wars, .ears)
Chris finished the Selenium & build tools section with a quick run through of using Selenium with Ant.
Continuous Integration
The final section of the presentation was a talk on Continuous Integration (CI). Chris described CI as:
- A dedicated box (see my follow up question below!) that runs regular full builds (including tests) of your software
- Build triggers when any developer checks into SCM
- Team is notified of any issues
And talked about how Selenium can be used with Hudson – a very cool CI tool from Sun. This leads well into next month’s SF JUG talk!
Q&A
Q: Do you have any info on WebDriver merging with Selenium?
A: No, but sounds interesting!
Q: How closely do test writers work with marketing people?
A: Chris suggested checking out the easyb framework, a behavior driven development framework that allows you to write conditions in a very abstract level, using a DSL that marketers can use and understand. He also suggested looking at the fitnesse framework.
Q: I asked Chris via email after the talk what he meant by needing ‘dedicated’ box/server for Continuous Integration.
A: He clarified that by ‘dedicated’, he just meant that the build box should not be a box that you are doing development on, and that there isn’t anything wrong with having a mix of services on one machine. e.g. having a qa box that has the CI server and maybe hosts the bug tracking system as well…
Tags: JUG, q, selenium, sfjug, Testing, unittesting
Thanks for the feedback on our presentation, Shaun.
cb