seleniumSelenium is a suite of tools to automate web apps across many platforms. It is a GUI based automation tool. Selenium first came to life in 2004 that was developed by Jason Huggins when he was testing an internal application at Thought Works. He developed a JavaScript library that could drive interactions with the page, allowing him to automatically rerun tests against multiple browsers. Selenium RC (aka. Selenium 1) was ground-breaking because no other product allowed you to control a browser from a language of your choice.
Selenium was not adopted on a large scale for quite some time until Google put its weight behind the Selenium project. Google had long been a heavy user of Selenium. Being a champion on open source technologies it is apt the Google uses Selenium for its test automation. In 2006 an engineer at Google named Simon Stewart started work on a project he called WebDriver (aka. Selenium 2). In 2008 Selenium and WebDriver merged.
This test automation tool is possibly the most widely-used open source solution. For companies whose entire infrastructure is built on the World Wide Web it makes sense to use Selenium for all web automation needs. Companies who are dependent on legacy technologies like PowerBuilder and Mainframes will never be able to appreciate this tool because it works only with web applications.

Programming Language – The Programming Languages supported by Selenium are
-C# (Dot Net)
-Java
-Perl
-Ruby
-Python
-PHP
The real beauty is that you can pick the language you are comfortable with and start using that as your primary scripting language.

Cross Platform Testing – Selenium deploys on the following operating systems
– Windows
– Linux
– Solaris
– OS X

I was able to execute the scripts created on a windows machine on a machine running Ubuntu. Not many commercial tools have that capability.

Cross browser testing – Perhaps the biggest selling point is the Cross browser testing capability. Although the Selenium IDE is a Firefox extension only, Scripts can be executed on the following browsers
– Internet Explorer
– Firefox
– Opera
– Chrome
– Safari
– Android and iPhone browsers
I was able to execute the same scripts on IE, Firefox and Chrome. Imagine the smile on my face when I did that:). Not many testers can claim that!!!

Other advantages –
– Multiple tests can be run concurrently on any number of local or remote systems, thus minimizing test execution time.
– Mobile application testing is also possible although I have never had a chance to develop any scripts.

Selenium components –

Selenium comprises of the following three components
– IDE
– Remote Control / WebDriver
– Grid

Selenium IDE
– It is a complete integrated development environment (IDE) for Selenium tests. It is implemented as a Firefox extension
– Selenium IDE is the a Firefox plug-in that does record-and-playback of interactions with the browser
– Allows recording, editing, and debugging tests

Selenium Remote Control / Selenium WebDriver
– Selenium Remote Control (RC) is a server, written in Java, which accepts commands for the browser via HTTP. Selenium Remote Control has been officially deprecated
– Selenium WebDriver is the successor to Selenium RC. Selenium WebDriver accepts commands (sent in Selenese, or via a Client API) and sends them to a browser

Testing Framework

You can use either TESTNG or JUNIT I leave that choice to you. I started off my initial Selenium endeavor with JUNIT but ended up with TESTNG

Reporting

All the software automation tools are judged by the depth and the quality of report the tool can generate and this tool is no exception. In our case we started with the native TESTNG reporting and later moved to customized Notepad reporting. Not content with notepad report we explored excel reporting also and succeeded. Our ambitions slightly increased and we started generating HTML reporting. Did we stop there? No way! We also created PDF report. Like in other tools we can take screen prints of failed or passed scenarios, send out emails with the results and screen prints to all the stake holders.

Integration with ALM

We can also have Selenium integrated with ALM for all reporting purposes.

Conclusion

If you are contemplating automating your web application using open source tools, look no further than Selenium. I started Selenium using Java and fell in love with both. Being a tester with limited Java programming skills the initial days were tough. But now I am a happy to have stayed the course because it has been a very rewarding experience.

If you are the kind who likes to be challenged technically and who does not care about getting the hands dirty (not the ones who delegate technical job to others!!) then selenium is certainly for you. You start with an assumption that you are learning one open source tool by the end of your learning period you end up learning a Plethora of other open source tools

Thanks to Ron Wilson for giving the opportunity to be a guest writer on his blog.

And I sincerely thank

Dixit Adoor – For staying with me through the entire Selenium endeavor (some tough times we have had together!!)

Special Thanks to the folks below who helped me in my endeavor-
Kunal Singh, Vijeth Thammegowda and Nagarajan Babulal

Reference –
– http://code.google.com/p/selenium/
– http://seleniumhq.org/
– World Wide Web

If you would like more information on Agile, DevOps or Software Testing, please visit my Software Testing Blog or my Software Testing YouTube Channel.