This article is for the software tester who is seeking to explore more or a beginner/novice who wants to pursue a career in Software testing. Here we will have the historical preview of Selenium, its journey through times – from its advent in 2004, till the latest version of Selenium 4 (2020). First, let us see what this Selenium is.
What is Selenium and Why Selenium?
Simply putting, Selenium is an open-source testing suite for testing web applications across different browsers and platforms. It is a free tool preferred because of its automation features which makes writing test cases and testing site’s functionality, easy.
Selenium is best suited for automating user interaction tasks when testing the functionality of a website e.g. things like filling a form, submitting it, clicking on a link, etc. But when it comes to checking low-level functionality like headers set/returned or the different status codes like 404, 301 etc., Selenium can’t work at its own and need the help of third-party tools like BrowserMob.
You can run Selenium on your local pc or a Server or a set of Servers or even on Cloud. Selenium is good at specific tasks and if you stick to these tasks, you can write a single set of efficient, reliable, maintainable, and scalable tests that can be run on different platforms.
Selenium Suite and its development
The Selenium Suite comprises of a set of 4 software components – Selenium IDE, Selenium RC (Remote Control), Web Driver and Selenium Grid. Out of these 4, Selenium IDE and Selenium RC are no longer in use, but Web Driver and Grid are extensively used by the Software testers to test the functionality of their websites. All these 4 components have different features like support for multiple browsers/platforms, testing single or multiple sites in one go, managing multiple machines in the test environment. Depending upon the testing requirements, an organization opts for a Selenium solution, primarily Web Driver or Grid.
The “Selenium Core” was primarily created by Jason Huggins, an engineer in ThoughtWorks, in 2004. He developed a JavaScript program, known as “JavaScriptTestRunner”, that would control the browser’s actions. Seeing the potential of this “JavaScriptTestRunner” in other web-applications, it was made open-source by Jason and later renamed as “Selenium Core”.
The Core is a JavaScript code that had a major limitation of – Same Origin Policy – i.e. an HTML page can execute the JS code being stored on the same web server and not the script stored on the different server/domain. As a solution, the website testers used to install the JavaScript code (Selenium Core) and the Web application being tested on the same domain, which was not very efficient.
Birth of Selenium Remote Control (Selenium RC)
Paul Hammant, another engineer at ThoughtWork, came up with an “Http Proxy” which was known as “Selenium 1” or “Selenium RC”. This proxy would trick the browser into believing that the Selenium Core and the Web Application under test are hosted on the same domain. As seen in the picture, the Selenium RC has one major component called ‘Selenium Server’ which ought to be the first process/step when testing with the Selenium RC. This component acts as a bridge between the program and the browser. The function of this ‘middleware’ is to convert the Selenium commands to the corresponding JavaScript code which is then injected into the browser. Once the result is received, the middleware converts that to the programming interface.
Selenium Grid evolution
Patrick Lightbody, currently Co-Founder at ReclaimAI, came up with a solution – “HostedQA” to reduce the execution times as much as possible. “Hosted QA” could capture browser screenshots during the process. The system could also manage different machines simultaneously by issuing different commands. The system later came to be known as “Selenium Grid”. The Grid, works on ‘Hub-Node’ architecture where – the Hub is the central part of the architecture and receives the tests prepared by the software tester, and the Node is where the test is executed. The Nodes are the multiple/unique instances on different machines that execute the tests prepared and communicate the result back to the Hub.
Selenium IDE evolution
In 2006, Shinya Kasatani developed a FireFox extension which could automate the browser with a “record-and-playback” feature. This could further enhance the speed of testing the webpage under consideration.
Selenium WebDriver
In 2006 itself, when browsers and web applications were getting more and more powerful and also more restrictive due to JavaScript-based codes like Selenium Core, Simon Stewart came up with a cross-browser, cross-platform testing framework which could control the browser from the Operating System level itself. This was known as Selenium WebDriver.
Selenium 2.0 and the Current version
In 2008, the Selenium Team decided to merge – Selenium Web Driver and Selenium RC to create a more powerful testing utility. So in July 2011, Selenium 2.0 came into existence with Web Driver at its core. In 2013, Simon Stewart announced a launch date for Selenium 3.0 which was formally released in 2016. This version became a widely used tool for mobile and web apps with a focus on testing automation.
On Lighter Side
When the Selenium project initiated, another framework was popular for testing software. This framework was developed by ‘Mercury Interactive’, a former Israeli company, and was known as ‘QTP’. Later on, Hewlett-Packard Software Division took over this Israeli company.
Jason Huggins suggested the name – Selenium for this project as ‘Selenium’ is a popular anti-dote for ‘Mercury’ poisoning.
Conclusion
This is how Selenium came into existence and over the years have crafted a niche for itself among software testers. Currently, the stable released version of Selenium is 3.141.x for the Selenium Server Grid and 3.x for Selenium Client and Web Driver language bindings. The details about the same along with details for the previous versions/alpha versions can be found here.
Author:
Jayant Ahuja – passionate about technology…
An expert on R&D, Online Training and Publishing. He is M.Tech. (Honours) and is a part of the STG team since inception.