James Governor's Monkchips

Observe to Test: Screencasts, Hugs, Selenium, Sauce Labs

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

Last Friday Jason Huggins aka @hugs popped into the office to talk about Sauce Labs, a business set up to commercialise the Selenium open source testing framework. Jason is outstanding company- he was showing off arduino-powered 3d plastic gizmos before he even sat down (if you’re looking for a local 3d lazer-cutting shop in Chicago just ask @hugs).

What is Selenium? The wikipedia definition covers the bases pretty well:

Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language. Selenium provides a test domain specific language (DSL) to write tests in a number of popular programming languages, including C#, Java, Ruby, Groovy, Python, PHP, and Perl. Test playback is possible in most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.

Selenium was originally developed by Jason Huggins, who was later joined by other programmers and testers at ThoughtWorks. It is open source software, released under the Apache 2.0 license and can be downloaded and used without charge.

In case you were wondering- Selenium the element does indeed neutralise Mercury… And that’s also Jason’s plan.

Selenium Remote Control is a Java-based server that can run tests developed in multiple languages- you can see why Selenium is popular at Google…. Indeed Jason actually worked at Google for a while- he still does a fair bit of contracting there.

Selenium came out of a Plone-based project to build a time and expenses app for a client, a client that clearly understood that Speed is a Feature.The app needed to be tested to within an inch of its life. One of Jason’s design choices at the time had a huge influence on the direction of Selenium, a direction that has made it so popular with Web Developers. Jason took the decision to use Javascript for the T&E forms back in 2004 – which meant he quickly ran into the problems of supporting forms-based apps in multiple browsers. So what did he do? He built cross-browser testing into the Selenium framework.

I came to the conclusion I needed a testing tool that would let me functional-test JavaScript-enhanced web user interfaces (aka “DHTML” or now “Ajax”). More specifically, I needed to test the browser UIs: Internet Explorer, Mozilla Firefox, and Safari. There were no commercial apps at the time that could do this, and the only open source option was JsUnit, which was more focused on unit testing pure JavaScript functions, rather than being a higher-level black-box/smoke-test walk through a web app. So we needed to write our own tool.

Jason was at least two years ahead of the market. Smart guys often are. When AJAX blew up, so did Selenium. Adding to that momentum, Selenium IDE is a Firefox plugin which allows the easy creation of tests, but also the recording, edit, viewing and debugging of tests. The ease of use massively expanded the Selenium user base.

In many ways Selenium IDE is the real synapse trigger. Testing should be about observability. If we’re building synthetic transactions what do they actually look like? Which brings us to Sauce Labs.

Sauce Labs offers a hosted environment designed to package up all the Selenium goodness. One intriguing part of using the system is that it records a video of every test created.  And rather than being secretive about testing, Sauce OnDemand takes a fairly open and useful social network approach. Users can easily tag and share tests, to learn from each other. For Jason and SauceLabs testing needs to be all about observability. If we’re going to simulate browser activities then it makes sense to be able to watch the “user” flow.

Unlike HP Mercury tools, which were designed for a world where QA is seperate from AppDev which is separate from ops management- the key design point for Jason is agile and continuous deployment. Selenium is designed for continuous integration, and as such it works out of the box with popular continuous integration servers such as Hudson.

Selenium is well loved by developers and developer designers – it was funny because Jonathan Lister, aka jayfresh one of my co-workers and a great example of designer turned Javascript maven, had just started using Selenium. He and Jason immediately started chatting about how Sauce Labs needs a stronger designer play (they are the guys most interested in browser behaviours and front end user experience, after all).

Jason is smart, open and totally committed to what he is doing. He has a community to serve, with a lot of people that will pay for services. SauceLabs is set to benefit from the current major transition from waterfail to continuous deployment and devops. Oh and did i mention performance testing the cloud for HTML5 apps? Timing is everything.

4 comments

  1. Thanks, for the kind words, James. And thanks for letting me steal your morning last week! I feel compelled to point out, though, that the Selenium project is the work of *lots* of awesome people. (Full list here: http://code.google.com/p/selenium/people/list ) I might have been the first guy on the project, but it’s quite a lively party now. 🙂

    1. well said. you are just a figurehead these days, right 😉

  2. […] RedMonk Observe to Test: Screencasts, Hugs, Selenium, Sauce Labs […]

  3. […] last week, getting an update on Saucelabs, the commercial arm of (his) Selenium Project [related post here]. Needless to say the conversation ranged far and wide. One issue was open source foundation […]

Leave a Reply

Your email address will not be published. Required fields are marked *