Selenium (software)
Overview
Selenium is a powerful suite of tools that supports rapid development of test automation for web applications. It provides a way for developers to write tests in a number of popular programming languages, including C#, Java, Python, Ruby, and others. The tests can then be run against most modern web browsers, on most operating systems, either locally or remotely.
History
Selenium was first developed in 2004 by Jason Huggins at ThoughtWorks. He was working on a web application that required frequent testing. Having realized that the repetitious manual testing of their application was becoming inefficient, he created a JavaScript-based testing tool that could control the browser's actions like a human would. This tool was named "JavaScriptTestRunner."
Seeing potential in this idea to help automate other web applications, he made JavaScriptTestRunner open-source, which was later re-named as Selenium Core.
Components
Selenium is not just a single tool but a suite of software, each catering to different testing needs of an organization. It has four components.
Selenium IDE
Selenium Integrated Development Environment (IDE) is the simplest framework in the Selenium suite and is the easiest one to learn. It is a Firefox plugin that developers can use to record user interactions with the browser. This allows users to quickly and easily record and play back tests in the actual environment that they will be run.
Selenium RC
Selenium Remote Control (RC) was the flagship testing framework of the whole Selenium project for a long time. This is the first automated web testing tool that allowed users to use a programming language they prefer. As of version 2.25.0, RC can support the following programming languages.
Selenium WebDriver
WebDriver is a different kind of tool altogether that has various advantages over Selenium RC. WebDriver directly communicates with the web browser and uses its native compatibility to automate.
Selenium Grid
Selenium Grid is a tool used together with Selenium RC to run tests on different machines against different browsers in parallel. That is, running multiple tests at the same time against different machines running different browsers and operating systems.
Advantages
Selenium is highly flexible. There are many ways to add functionality to both the test scripts and to the framework to customize the test environment. This is particularly useful in complex testing situations.
The Selenium test suite has the capacity for parallel test execution which reduces time and increases the efficiency of testing.
Selenium supports multiple browsers and programming languages. This allows the same test scripts to be used to test multiple browsers and platforms.
Disadvantages
One of the major challenges with Selenium is that it requires third party frameworks to be able to manage the test cases, generate reports, and for data driven testing.
Another disadvantage is that Selenium only supports web application testing, you can't use it for testing mobile applications or desktop applications.
Selenium requires high level technical skills such as programming language knowledge, and it also requires manual coding for automation test case development.