Selenium

"Have you tested your web app today?"

Jason Huggins

Senior Developer

ThoughtWorks, Inc.

Chicago, USA

email: jrhuggins at thoughtworks.com
web: openqa.org/selenium/

Poll #1: Who knows what Selenium does?

What is Selenium?

Or, to simplify...

It's for Web 2.0!

Which leads to my next question...

WTF is "Web 2.0"!?

But first...

... you must define Web 1.0.

Note to self:
Put down mouse and pick up note cards.
(The text for the following poem can be found at http://jrandolph.com/blog/?p=14)

Web 1.0 is...

Pets.com - The sock puppet mascot.

So what is Web 2.0?!

Web 3.0 - Brain Implant Edition

That, my friend, is "Web 2.0" in a nutshell.

So, back to Selenium...

Why use Selenium?

Let's see a quick demo...

Selenium Theory

Let's take a step back and explain a few things.

The definition (again)

"A free and open source multi-browser, multi-platform web application testing framework that will make your users smile."

Let's dig deeper...

"... testing framework ..."

There are many types of software testing techniques.

Jason’s Testing Pyramid for Web Apps

"... testing framework ..."

"Acceptance [or 'functional'] tests are created from user stories. During an iteration the user stories selected during the iteration planning meeting will be translated into acceptance tests. ... A user story is not considered complete until it has passed its acceptance tests."
Source: http://www.extremeprogramming.org/rules/functionaltests.html

"... testing framework ..."

"... testing framework ..."

"Smoke" testing:





"When you start your web app, does it blow up in smoke?"

"... testing framework ..."

"Black box" testing:


"... testing framework ..."

"White box" testing:


"... testing framework ..."

"Regression" testing


"... web application ..."

"... web application ..."

Many types of web applications:


"... web application ..."

Selenium is uniquely qualified to test these types of applications because it is itself written in JavaScript.

"... web application ..."

Most other tools in this space only emulate the browser at the HTTP layer -- so testing JavaScript is not supported and can never be supported because of the chosen architectural "paradigm".

"... web application ..."

A Web 1.0 point of view:

"... multi-browser, multi-platform ..."

Browser support:

"... multi-browser, multi-platform ..."

Operating system support:

"... multi-browser, multi-platform ..."

Other tools only support one browser, one platform:

"... free and open source ..."

What freedoms?

"... free and open source ..."

"Complementary Goods" Theory:


For a consulting company, the less money that goes to software licences... The more potential money that could be spent on billable hours. :-)... Also, when the tools are free, more developers can become testers. Not the case when a tool is $1000/seat.

"... that makes your users smile."

Selenium demos well, and it proves to the user/client/customer that your web app is working.

To sum up...

So, what is Selenium?

A testing tool for web apps that use JavaScript in any browser on any operating system with tests written in any programming language-- friendly to developers, testers, and end-users.

Cool stuff...