When you are automating your tests using Selenium, you need a whole lot of other tools as well. It is foolish to assume that Selenium will do all the things for you- right from automating your tests to running it and giving results. You need a combination of various tools to properly automate your tests- and by properly automating I mean, using various automation tools to perform specific functions- like automating a page, telling the computer to pick that test script, combining all test scripts to run and then performing this test on a complete build.
So, apart from Selenium, we need a different types of other automation tools as well. Today I am going to take a look at the most common used tools, which are used along with Selenium.
We all know what Selenium does and what it is all about. It is used for automating web based application- primarily functional tests and for regression tests also. I discussed this in detail in this post.
To understand what Selenium Grid is all about, we must first learn what a grid means. As per the dictionary meaning, a grid means a collection or a framework of crisscrossed or parallel bars, resembling a grating or a mesh. Now this parallel word is important while understanding what Selenium grid does.
While testing a web application, we want to test it as much as possible, from all angles and on all platforms or browsers.Normally we would want to run hundreds of tests in order to effectively test a web application or a website.But doing so individually is very time consuming and tiring process and it takes the whole definition of automation out of question.
To simplify this approach, we have Selenium Grid. Selenium grid allows us and gives us the flexibility of running multiple tests across different browsers, operating systems and platforms. What more do you want!
To achieve this, Selenium uses a concept of hubs-nodes. A hub can be denoted as a parent machine where you will run the tests, while nodes are child systems , where execution of those tests will be done simultaneously. A hub is a single machine, let us say, a computer with Linux OS and Chrome browser, where you will run the test. Corresponding nodes will contain Selenium instances, which will execute the tests, that you ran on the hub. It is important to note that noes, needn’t have the same platform, OS or browser as the hub. As such, I can have a hub with the configuration mentioned above (Linux, Chrome), while one of the nodes may have Win 7 and IE.
So effectively, when you use Selenium grid, you can-
- Run your tests, concurrently, against different browsers, platforms and OS at the same time.
- Save a lot of precious time in testing the compatibility of the application and running tests one by one.
If you want to have a quick look at the installation and how a Selenium Grid works, you can see it here on Guru99 website.
Once you have made changes in a project, it is time to create a build. But just simply saying would be an understatement. Configuring a build requires a lot of headaches, dependencies to be maintained and project structure to be taken care of. Maven is the tool that allows a developer to do that. Maven can be used to build or manage any Java based projects.
As per the official Maven documentation, Maven’s primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time.
Following lines, taken from a stackoverflow answer, about Maven will give you a clear idea about what it does-
Maven is a “build management tool”, it is for defining how your
.javafiles get compiled to
.class, packaged into
.ear) files, (pre/post)processed with tools, managing your
CLASSPATH, and all others sorts of tasks that are required to build your project. It is similar toApache Ant or Gradle or Makefiles in C/C++, but it attempts to be completely self-contained in it that you shouldn’t need any additional tools or scripts by incorporating other common tasks like downloading & installing necessary libraries etc.
Read the answer here for a complete understanding.
Maven allows a developer to-
- Make an easy build or it simplifies the build process.
- Provides a uniform build system
- Provides a quality build information
- Allows transparent migration of features.