Job Scope in Selenium

There are many testing tools available in the market like QTP, SilkUI, Selenium etc.

But jobs for Selenium testing are increasing in the market day by day. Selenium blows all the other testing tools out of the market. Since applications delivered on the web are increasing, even the demand for tools testing web applications is increasing.

Why Selenium is better than other testing tools:

  • Selenium is an open source (i.e. you can download this tool for free) automation testing tool. We have QTP also for automation testing but you need to pay to HP guys if you want to use QTP.
  • It is used exclusively for web-based applications.QTP can work on windows but Selenium can be used exclusively for web-based applications.
  • You can work on multiple operating systems using Selenium. Selenium is the only tool which can work on MAC, Windows, Linux, Solaris.
  • Currently, it supports mobile as well. There is another tool called Appeium which is an extension to Selenium. Appeium provides support to IOS as well as Android.
  • You can write Selenium code in any of the below languages:
    • Java
    • C#
    • Ruby
    • Python
    • PHP
    • Perl

NOTE: If your application is built on one language, you may use some other language to automate it. Like if your application is developed in C# and to automate its testing you may use Java.


  • Selenium is the only tool which supports cross browsers.
    Selenium support below browsers:

    • Internet Explorer
    • Firefox
    • Chrome
    • Safari

Due to so many features (like multiple language support, multiple browser support, multiple OS support) provided by Selenium, it is so popular in the market.

Below is the Google trends image which shows why Selenium Testing is the most pursued skill.

As per the above graph, the only leader in the market is Selenium.

Look at the below graph to understand how the number of vacant jobs is continuously increasing.


In case you are interested to learn Selenium, then join Redbush Technologies. We are the best selenium training institute in Gurgaon.

Posted in Uncategorized | Tagged , | Leave a comment

Introduction to C++

C++ known as an extension to C language. C++ is a statically typed, free form, multiparadigm, compiled general-purpose language. C++ is an Object Oriented Programming language but is not purely Object Oriented.

History of C++

C++ was developed by Bjarne Stroustrup. In 1978 he started creating C++ and in 1979 he launches the first version of C++. Initially, there were some enhancements in C language & it was known as C with classes.

C++ Language

C was developed by Dennis Ritchie & in 1983 it was given a name as C++.

  • C++ is not the first object-oriented programming language. C++’s oops aspect is inspired by a computer simulation language called Simula67 (Simula67 is the world’s first object-oriented programming language).
  • Java is written in C++.
  • Major operating systems of modern times are written in C++
  • C++ is the world’s 4th most used programming language

Comparison between C and C++

  • C++ is a superset of C i.e all features of C (if else, loop, functions, Arrays, Strings ) can be used in C++.
  • C++ programs can use existing C software libraries.
  • C follows top down approach programming(i.e first we will create main () and decide the flow of the program and then we create detailed programs/functions)
  • While C++ follows bottom up programming approach(first we create detailed functionality and in last we’ll create main by assembling all these detailed functionalities)
  • C adopts procedure-oriented programming
  • C++ adopts object-oriented programming

What is object-oriented programming

OOPs is a programming approach which revolves around the below concepts:

  • Object(set of data & methods which can act on that data)
  • Class
  • Encapsulation— an act of combining properties and methods related to the same object
  • Data hiding
  • Abstraction
  • Polymorphism
  • Inheritance

Classes & Objects:

  • The class is a blueprint of an object
  • The class is a description of the object’s property set and a set of operations
  • Creating a class is as good as defining a new data type
  • Class is a means to achieve encapsulation
  • An object is a runtime entity(Class don’t get memory, object are allocated memory)
  • An object is an instance of a class

Example :

class box


int l,b,h;

void setDimension(int x, int y , int z){ }

Void showDimension(){  }


box b1;

Here box is a class(datatype) & b1 is a object. How much memory will be allocated to b1 will depend on how we have defined box.

Why Do We Need Object-Oriented Programming?

Procedural Languages

C, Pascal, FORTRAN, and similar languages are procedural languages. That is, each statement in the language tells the computer to do something: Get some input, add these numbers, divide by six, display that output.

Division into Functions

When programs become larger, a single list of instructions becomes unwieldy. Few programmers can comprehend a program of more than a few hundred statements unless it is broken down into smaller units. For this reason, the function was adopted as a way to make programs more comprehensible to their human creators. (The term function is used in C++ and C. In other languages the same concept may be referred to as a subroutine, a subprogram, or a procedure.) A procedural program is divided into functions,


The Object-Oriented Approach

The fundamental idea behind object-oriented languages is to combine into a single unit both data and the functions that operate on that data. Such a unit is called an object.

An object’s functions, called member functions in C++, typically provide the only way to access its data. If you want to read a data item in an object, you call a member function in the object. It will access the data and return the value to you. You can’t access the data directly. The data is hidden, so it is safe from accidental alteration. Data and its functions are said to be encapsulated into a single entity. Data encapsulation and data hiding are key terms in the description of object-oriented languages. If you want to modify the data in an object, you know exactly what functions interact with it: the member functions in the object. No other functions can access the data. This simplifies writing, debugging, and maintaining the program. A C++ program typically consists of a number of objects, which communicate with each other by calling one another’s member functions. What are called member functions in C++ are called methods in some other object-oriented (OO) languages (such as Smalltalk, one of the first OO languages). Also, data items are referred to as attributes or instance variables. Calling an object’s member function is referred to as sending a message to the object.

Characteristics of Object-Oriented Languages

  • Encapsulation: Act of combining properties and methods related to an object
  • Data hiding
  • Abstraction
  • Polymorphism
  • Inheritance



When you approach a programming problem in an object-oriented language, you no longer ask how the problem will be divided into functions, but how it will be divided into objects.


In OOP we say that objects are members of classes.

Analogy: Almost all computer languages have built-in data types. For instance, a data type int, meaning integer, is predefined in C++. You can declare as many variables of type int as you need in your program:

int day;

int count;

int divisor;

int answer;

In a similar way, you can define many objects of the same class. A class serves as a plan, or blueprint. It specifies what data and what functions will be included in objects of that class. Defining the class doesn’t create any objects, just as the mere existence of data type int doesn’t create any variables.

A class is thus a description of a number of similar objects. This fits our non-technical understanding of the word class. Prince, Sting, and Madonna are members of the rock musician class. There is no one person called “rock musician,” but specific people with specific names are members of this class if they possess certain characteristics. An object is often called an “instance” of a class.


Classes divided into subclasses. Suppose the animal class is divided into mammals, amphibians, insects, birds, and so on. The vehicle class is divided into cars, trucks, buses, motorcycles, and so on.

The principle in this sort of division is that each subclass shares common characteristics with the class from which it’s derived. Cars, trucks, buses, and motorcycles all have wheels and a motor; these are the defining characteristics of vehicles. In addition to the characteristics shared with other members of the class, each subclass also has its own particular characteristics: Buses, for instance, have seats for many people, while trucks have space for hauling heavy loads.


An OOP class can become a parent of several subclasses. In C++ the original class is called the base class; other classes can be defined that share its characteristics, but add their own as well. These are called derived classes. Don’t confuse the relation of objects to classes, on the one hand, with the relation of a base class to derived classes, on the other. Objects, which exist in the computer’s memory, each embody the exact characteristics of their class, which serves as a template. Derived classes inherit some characteristics from their base class, but add new ones of their own.


Once a class has been written, created, and debugged, it can be distributed to other programmers for use in their own programs. This is called reusability. It is similar to the way a library of functions in a procedural language can be incorporated into different programs. However, in OOP, the concept of inheritance provides an important extension to the idea of reusability. A programmer can take an existing class and, without modifying it, add additional features and capabilities to it. This is done by deriving a new class from the existing one. The new class will inherit the capabilities of the old one, but is free to add new features of its own.

Creating New Data Types

One of the benefits of objects is that they give the programmer a convenient way to construct new data types. Suppose you work with two-dimensional positions (such as x and y coordinates, or latitude and longitude) in your program. You would like to express operations on these positional values with normal arithmetic operations, such as

position1 = position2 + origin

where the variables position1, position2, and origin each represent a pair of independent numerical quantities. By creating a class that incorporates these two values, and declaring position1, position2, and origin to be objects of this class, we can, in effect, create a new data type.

Polymorphism and Overloading

The = (equal) and + (plus) operators, used in the position arithmetic shown above, don’t act the same way they do in operations on built-in types such as int. The objects position1 and so on are not predefined in C++ but are programmer-defined objects of class Position. How do the = and + operators know how to operate on objects? The answer is that we can define new behaviors for these operators. These operations will be member functions of the Position class. Using operators or functions in different ways, depending on what they are operating on, is called polymorphism (one thing with several distinct forms). When an existing operator, such as + or =, is given the capability to operate on a new data type, it is said to be overloaded. Overloading is a kind of polymorphism; it is also an important feature of OOP.

C++ and C

C++ is derived from the C language. Strictly speaking, it is a superset of C: Almost every correct statement in C is also a correct statement in C++, although the reverse is not true. The most important elements added to C to create C++ concern classes, objects, and object-oriented programming. (C++ was originally called “C with classes.”) However, C++ has many other new features as well, including an improved approach to input/output (I/O) and a new way to write comments.

We are the best training institute, provide C++ training in Gurgaon along with many other programming languages.

Posted in Uncategorized | Leave a comment

Introduction to Selenium

There are many testing tools available in the market like QTP, SilkUI, and Selenium etc. But people prefer Selenium because Selenium is an open source (i.e. you can download this tool for free) automation testing tool. We have QTP also for automation testing but you need to pay to HP guys if you want to use QTP.

It is used exclusively for web-based applications.QTP can work on windows but Selenium can be used exclusively for web-based applications.

You can work on multiple operating systems using Selenium. Selenium is the only tool which can work on MAC, Windows, Linux, and Solaris.

Platforms supported By Selenium:

  • Windows
  • OS X (Mac OS)
  • Linux
  • Solarsis

Currently, it supports mobile as well. There is another tool called Appeium which is an extension to Selenium. Appeium provides support to IOS as well as Android.

Languages used with Selenium:

You can write Selenium code in any of the below languages

  • Java
  • C#
  • Ruby
  • Python
  • PHP
  • Perl

NOTE: If your application is built on one language, you may use some other language to automate it. Like if your application is developed in C# and to automate its testing you may use Java.


Browsers supported by Selenium:

  • Internet Explorer
  • Firefox
  • Chrome
  • Safari and many more

Selenium is the only tool which supports cross browsers.

Due to so many features (like multiple language support, multiple browser support, multiple OS support) provided by Selenium, it is so popular in the market.

Selenium History:

Selenium came into existence in 2004 when Jason Huggins was testing an internal application at ThoughtWorks.

Available versions of Selenium:

  • Selenium 1.0 –formally we call it as RC (Remote control server). It is officially depreciated by Selenium team.

Reason for Depreciation is:

Below is the Architecture of Selenium 1.0:

Selenium 1.0 Architecture

  • Selenium 2.0 –Web Driver
  • Recently Selenium 3.0 version also came (for it, minimum java version required is 1.8)

Architecture of Selenium 2.0 –Web Driver:

Selenium 2.0 Architecture

So we are overcoming the 1st drawback of Selenium 1.0.

How 2nd drawback is overcome:

Editor instead of using java to trigger the events, uses Browsers own/native language to trigger the events (or to talk to the application). Let’s say our Firefox browser is built in  Java so to talk to a website which is running on Firefox, editor use java. Our IE is built upon C# so editor uses C# to talk to the application in C#. The website which is running on IE cannot stop C# to trigger an event so hence the 2nd problem is resolved.

Working of Selenium WebDriver:

Selenium WebDriver working can be explained in 2 ways:

  • Non-technical – using analogy
  • Technical

Non-technical – using analogy:  To explain working, analogy used is taxi driving.

The way a taxi driver drives a taxi, same way Selenium WebDriver drives a browser.

In taxi driving, there are 3 parts:

  • The client, who decides where to go and how to get there. He informs this to the taxi driver.
  • The taxi driver, who acts as per the client’s requests and sends his own requests to the car.
  • The car, it acts as per the taxi driver’s requests.

Non technical- using analogy

Similarly, in Selenium WebDriver test automation (and other tools), there are 3 parts:

  • Test engineer, who writes the automation code, which sends requests to the browser driver component.
  • The browser driver component, who executes the test requests, sent by the engineer, it sends its own request to the browser.
  • The browser, who executes the browser driver requests.


So this is the analogy:

  1. Test engineer <-> The client
  2. The browser <->Taxi driver
  3. The browser <->Taxi(Car)

Technical explanation:

Below steps take place when the automation script is executed:

  • For every Selenium command, a HTTP request is created and sent to the browser driver
  • Using HTTP server, the browser driver get the HTTP requests
  • The HTTP server implements the Selenium command and executes them on the browser
  • The execution status is sent back to the HTTP server which in turn sends the status back to the automation script.

Selenium Job Roles

The popular software testing job titles after doing Selenium WebDriver training are:

  • Quality Engineer
  • Automation Test Lead
  • QA Engineer
  • Selenium Automation Analyst
  • Senior Test Engineer

Visit the link for Best Selenium Training in Gurgaon.

Who should choose Software Testing as a career:

  • One who is good in solving logical puzzles: Software will go to the market if a tester says there are no bugs in the software and it is ready to release. Tester finds bugs & also breaks the system in terms of stress testing.
  • One who love helping others: A tester help in releasing a quality product to the market. To release a good product, developers do their best. But still chances are there will be some mistakes. Being a tester you need to find those mistakes.
  • One who loves to take challenges: A tester needs to explore the system for understanding and finding bugs. Then he reports the bugs, which are fixed by the developer. Hence finally a quality product is delivered to the market.
  • One who loves to write code: A Automation Tester writes code to find the bugs in the system and thus a quality product will be delivered.
  • One who loves to interact with people: A tester needs to interact with developers and client to get more information on domain knowledge.
  • One who loves to be in a team where quality products will be delivered: Being a tester one help in delivering a quality product which makes everybody happy.
Posted in Selenium | Tagged , , | Leave a comment

Trainer Profile – Ritu Bajar

Trainer Profile - Ritu Bajar

Ritu Bajar

Ritu Bajar, a highly accomplished trainer, has an extensive work experience of 10+ years in IT Industry.

She holds a B.Tech degree in Computer Science and Engineering from ITM, Gurgaon, now known as NorthCamp University. She has 5+ years of training experience in Selenium and Java. She has worked with companies like TCS, TSYS International etc.

She is “International Software Testing Qualifications Board” certified professional.

Her contribution to students’ success is, support in training, with the best theoretical example, and practical.

Her passion for training program led to the establishment of “RedBush Technologies – Best Training Institute in Gurgaon” in 2013.

Having shouldered responsibilities of business management and training brings a wealth of corporate experience which reinforces her skills to impact and connect with students.

She has trained above 200 students in her carrier.

Ritu’s deep perspective, yet surprisingly simplicity leave an everlasting impact on the students as well as the ones who get to know her.  She is full of Passion and Purpose, is high spirited and, has a never-ending approach towards innovation.

Ritu is providing training on following courses –

  • Selenium Automation Testing
  • Java – Core Java to Advance Java
  • C/C++ Programming Language

Below is the latest review from her student says, “RedBush Technologies is the best selenium training institute in Gurgaon“.

Posted in Selenium, Trainer Profile | Tagged , , | Leave a comment

Cache Snapshots and History Snapshots in SSRS 2016

While taking training classes for national and International students, I have often seen them getting confused with the way snapshot options work in SSRS 2016. So I thought of putting it in an article.

The first thing to understand here is what a snapshot is? As the name suggests, just like a picture, A snapshot is a picture of data at that given moment. Once you click a snapshot, it stays that way and doesn’t change unless you replace it with another snapshot.

Same way in SSRS, a snapshot stores the data of a report at a given moment. After understanding what a snapshot is, let’s now explore the snapshot options in SSRS 2016. There are actually 2 options in SSRS related to snapshots:

  1. First option is to always run a report from a snapshot. What this means is that your report will always pull data from a predefined snapshot. Below image shows this option:

Here I have selected the RedBushSalesReport to be run from a snapshot.

You may choose the option “Create a cache snapshot when I click Apply on this page”, if you choose to create the snapshot immediately after you click the Apply button. There afterwards, your report will always pull data from this snapshot. If the data changes in database, you will still keep getting the same data.

Also note that if the report has any parameters, then you need to specify a default value for them to generate the snapshot as shown below:



If you don’t specify default values for parameters, then you will get below error:


Now if you run/refresh multiple times, you will notice that report is returning same data. Notice that you will not be allowed to change the parameter value now! Since the report is supposed to come from a snapshot, which has a default parameter, you will be able to run it with that default parameter(s) only. I refreshed the RedBushSalesReport multiple times, and every time it displayed the same execution time, which confirms that the data is coming from a static snapshot. Also I am not able to change the parameter also.


Sometimes you may have a requirement to run a report with fixed parameters on daily basis and if the report is really heavy and takes time to generate, then you may choose to schedule the snapshot, say before the office times starts and then everybody will be able to run the report quickly. And your boss will be happy to see the performance! Remember you should schedule the snapshot depending upon how long you can afford to show the stale data. Below image shows the scheduling of snapshot:


Notice that whenever you are generating snapshots using any of the above two options, by default no history of snapshots is being maintained. You can check this by clicking the “History Snapshots” option.

Now let’s see what History snapshots are. The main purpose of  a Report History snapshot is to keep a copy of the report at a specific point of time. So if you want to keep track of how your report looked at different points of time. You can generate the History Snapshots by clicking the “New History Snapshot” button as shown below:


If I click the “View History Snapshot” button, I will see the report with this new snapshot. What will happen if run the report normally by going back to “Browse”? Will I see the report with this snapshot or the older snapshot that we generated? We will see the report with older snapshot only. So that means your report doesn’t pull data from history snapshots. They are just used to keep a trail of how your report looks at different specific times.

Can I keep a history of snapshots that I generate from the Caching tab? Yes, you can. From History snapshots tab, go to Schedule and Settings option as shown below:


Using this option, you can specify to save Cache snapshots in History as well. You cal also specify how many history snapshots you want to retain. Additionally you can generate the History snapshots at pre defined schedule. All these options are shown below.


So you must have noticed that there can be only one report execution snapshot at a time, but there can be many History snapshots.

I hope this clarifies the difference between History snapshots and report execution cached snapshots.

If you have any questions, I’ll be happy to respond in the discussion forum of this article.

Thank you



Posted in Microsoft BI | Tagged , , , | Leave a comment