Selenium Tutorial: Project

2. The Selenium Project

2.1. Overview

  • One of the most popular testing frameworks for web applications as of today
  • First open-source test framework using an user-centric point of view
  • Supports javascript
  • Unintrusive and doesn’t need any modifications of your app to test it

Selenium, as of today, is composed of several projects :

images/selenium-logo.png Selenium Core The JavaScript framework that provides Selenium the ability to drive the browser and execute the tests

images/selenium-ide-logo.png Selenium IDE The Firefox plugin used to build test-cases and test-suites directly on top of your web-app. You can also export your tests to Selenium RC.

images/selenium-rc-logo.png Selenium RC A client/server system that allows you to execute tests written in a variety of languages on a local or remote computer and on all major browsers.

images/selenium-grid-logo.png Selenium Grid Selenium Grid leverages Selenium RC to provide a test environment that spans on multiple machines at once, reducing the testing time.

images/selenium-on-rails-logo.png Selenium on Rails A framework that is built especially to test applications running on the Rails framework.

images/selenium-for-eclipse-logo.png CubicTest An Eclipse plugin which purpose is to conceive and execute tests using the pageObjects pattern.

images/selenium-bromine-logo.png Bromine A simple web-based QA tool targeting the single tester that doesn’t want/can’t invest in complex corporate QA solutions.

2.2. Selenium And The Web Testing Frameworks

While being very popular, Selenium is not the ultimate all-in-one testing tool and you should NOT rely on Selenium only to test your applications. The following chart helps you situate Selenium among the web-testing stack.

Code/Process Testing

Overall app

Acceptance testing: Selenium Fully rendered browser testing views, executing Javascript on page closest to the user, farthest from code

Integration

Multi-controller tests : htmlunit, webrat, cucumber

Views

View testing in isolation : rspec, Selenium (see Section 9.1.2, “Unit testing”)

Controllers

Functional Testing/Controller testing

DB/Models

Unit testing/Model Testing : server side, depends on backend technology

2.3. History

Selenium project started back in 2004 at ThoughtWorks, in Chicago under the name of JavaScriptTestRunner.

  • At first, built by Jason Huggins, Paul Gross and Jie Tina.
  • Soon, his colleague Paul Hammant saw a demo and pushed for an open-source release as well as to expand it with a ‘driven’ mode from a client using any language.
  • Dan Fabulich and Nelson Sproul from Bea decided to improve Selenium and bundle the browser driver code into a standalone server, ‘Selenium Remote Control’. Pat Lightbody, worked with Dan and Nelson to improve and stabilize it.
  • Shinya Kasatani in Japan found interest in Selenium and started to work on Selenium IDE.
  • In 2007, Jason Huggins joined the then secret Selenium team at Google and with other Googlers like Jennifer Bevan worked on a grid capability to test some of Google’s public applications. Google presented their use of selenium at the 2nd Google Test Automation Conference (GTAC) and Jennifer was invited to join the Selenium team.
  • The same year, Haw-bin Chai in Chicago developed the “UI Element” extension, which he was invited to merge into Selenium IDE by joining the team.
  • Meanwhile, Simon Stewart worked on another tool called ‘WebDriver’. Soon, it was decided that the two projects should merge for Selenium 2.0 and joined Google to make it happen.
  • Nowadays, Erik Beans does much of the work at Google.