Software Engineering | Selenium: An Automation tool
Selenium is an automation tool and portable software testing tool for web applications. A test domain-specific language is also provided, to write test cases one can use programming languages, including C#, Java, Perl, PHP, Python, Ruby, Scala, Groovy. It does not support RIA(Rich Internet Application) Technology such as Silverlight JavaFX and Flex\Flash. Selenium can be easily used on the platforms like Windows, Linux, Solaris and Macintosh. Selenium also supports Operating System for mobile applications like android and iOS and windows. Selenium uses many programming languages like Ruby, python C#, Java, Perl and PHP. Safari, Internet Explorer, Mozilla Firefox and Google Chrome are some of the browsers which are supported by Selenium .
Selenium is not a single tool. It is a product suite of software consisting of the following components:
Selenium Remote Control was developed by Paul Hammant. The reason behind developing Selenium RC was testers who are using Selenium core had to install the whole application under test and the web server on their local computers because there were some restrictions forced by the same-origin policy. To overcome this restriction Paul Hammant came to a decision and developed a server that will act as an HTTP proxy to trick the web browser, so that thinks that Selenium Core and the web application being tested came from the same domain.
Selenium IDE was developed by Shinya Kasatani of Japan. It was implemented as a Firefox add-on/plugin and now we can use Selenium IDE on every web browser. He gave Selenium IDE to the Selenium project in 2006.
Selenium Grid was developed by Philippe Hanrigou in 2008. It is a server that allows the test to use web browser instances running on remote machines. It provides the ability to run the test on a remote web browser, which helps to divide a load of testing across multiple machines and it will save enormous time. It allows executing parallel tests across different platforms and operating systems. Grid provided, as open-source, a similar capability to the private Google cloud for Selenium RC. Pat Lightbody had already made a private cloud system named “HostedQA” and sold it to Gomez, Inc.
In 2009, after a meeting whole Selenium team decided to merge the two projects Selenium RC and WebDriver, and call it Selenium 2.0.
Selenium IDE: At the beginning Selenium IDE( Integrated Development Environment ) was implemented as a Firefox add-on/plugin and now it can be used Selenium IDE on every web browser. It provides record and playback functionality. The figure shows Selenium IDE.
- It is an open-source tool.
- Provide base, for extensions.
- It provides multi-browser support.
- No programming language experience is required while using Selenium IDE.
- The user can set breakpoints and debug.
- It provides record and playback functions.
- Easy to Use and install.
- Languages supported by Selenium IDE are Java, Python, C# etc.
- There are no support iteration and conditional operations.
- Execution is slow.
- It does not have any API.
- It does not provide any mechanism for error handling.
- Dynamic web applications are not used to test.
Selenium RC: RC stands for Remote Control. It allows the programmers to code in different programming languages like C#, Java, Perl, PHP, Python, Ruby, Scala, Groovy. The figure shows how the Remote Control Server works.
- It supports all web browsers.
- It can perform iteration and conditional operations.
- Execution is faster as compared to IDE.
- It has built-in test result generators.
- It supports data-driven testing.
- It has a matured and complete API.
- There is also support for cross browser testing.
- There is also support for user preferred languages.
- Programming language knowledge is needed.
- It does not support testing for IOS/Android.
- It is a little slower than Selenium Webdriver in terms of execution.
- It does not support record and playback functions.
- Complicated configuration than selenium IDE.
- The API in selenium RC are quite confusing.
- It directly communicates with the web browser.
- Execution is faster.
- It supports listeners.
- It supports IOS/Android application testing.
- Installation is simpler than Selenium RC.
- Purely object-oriented.
- No need of any separate Component.
- It requires programming knowledge.
- There’s no built-in mechanism for the generation of the test result file.
- Installation process is quite complicated than selenium IDE.
- There is no support for any new browsers.
- There is no detailed test reports.
Selenium Grid: Basically, it is a server that allows the test to use a web browser instance running on remote machines. It provides the ability to run the test on a remote web browser, which helps to divide a load of testing across multiple machines and it will save enormous time. It allows executing parallel tests across different platforms and operating systems.
Selenium Grid is a network of HUB & nodes. Each node registers to the HUB with a certain configuration and HUB is aware of the browsers available on the node. When a request comes to the HUB for a specific browser [with desired capabilities object], the HUB, if found a match for the requested web browser, redirects the call to that particular Grid Node and then a session is established bi-directionally and execution starts. It makes the easy use for multiple machines to run the tests in parallel.