Monday, February 24, 2020

Interview Questions

1. In TestNG How can I run same test case multiple times?
Ans: @Test(invocationCount = 10)


public void testCount() {..}

2. What is use of @tag in Cucumber ?



Cucumber Options tag is used to provide a link between the feature files and step definition files. Each step of the feature file is mapped to a corresponding method on the step definition file.
Below is the syntax of Cucumber Options tag:

@CucumberOptions(features="Features",glue={"StepDefinition"})
3. Difference between Scenario & Scenario Outline ?

Scenario outline is a way of parameterization of scenarios. This is ideally used when the same scenario needs to be executed for multiple sets of data, however, the test steps remain the same. Scenario Outline must be followed by the keyword ‘Examples’, which specify the set of values for each parameter.

4. How to Access Data from Excel file ?

5. How to access Data from Config. Property file ?
6. Difference between Interface and Abstraction ?
7. Difference between this and Super Keyword ?

25 Feb & 26th Feb
1. What is lambda Expression in java
2. If two interface  with same methods & implemented in other class what will happen ?
3. What is Implicit wait, Explicit wait & Fluent Wait.
4. Interface
5. Why WebDriver driver= new Chrome Driver()
6. Constructor Overloading & Constructor Overriding
ans: remember we can't override Constructor

7. What is meaning of each word of line public static void main(String[] args) ?
public -its the access specifier means from every where we can access it; static -access modifier means we can call this method directly using a class name without creating an object of it; void - its the return type; main - method name string [] args - it accepts only string type of argument.

8.  We can create multiple main methods in same class ?
Yes, you can have as many main methods as you like. You can have main methods with different signatures from main(String[]) which is called overloading, and the JVM will ignore those main methodsYou can have one public static void main(String[] args) method in each class.

9. What is heap Memory ?
The heap is a memory used by programming languages to store global variables. By default, all global variable are stored in heap memory space. It supports Dynamic memory allocation. The heap is not managed automatically for you and is not as tightly managed by the CPU. It is more like a free-floating region of memory.

10. String Methods
11. Interfaces in Selenium
12. Java Exceptions
13. Selenium Exceptions
14. Explicit wait methods or commands 

Interview Questions Asked in Mock :

How you handle Multiple Window Scenario in your project ?
How to Handle Window pop up ?
Difference Between Class & Interface ?
Can we use Implement & Extend keywords at the same time ?
Can we use one Interface in another Interface ?
Difference Between Collections and Collection ?
String & String Buffer ?
Diff Set & List ?
Diff Bet Constructor & Method ?
Eg. of Parameterised Constructor used in project ?
Diff Priority & Severity ?
How will you resolve Synchronisation issues?
What you have done in your 4 years & what Scenarios Automated ?
How to Create Branch on Git ?
How to move from one Branch to Another Branch ?
How to add file on Git ?

How many Members in Your Team ?
Which type of Testing Framework using to Run your Test Cases ?
How Long to take to Execute Test Pack ?
How you will Reduce time of Execution ?

How you resolved timing issues or Synchronization Issues (like page not load or site not working or net slow) ?
what are challenges you faced ?
How will you make sure Failure is not interment at the time of Test pack ?
How you Debug Test Cases ?
If Test case is Failed & Screen shot should be taken how does it Identify & automate ?
How Framework know TCs are failed & need to Take Screenshot ?
Have You implemented Listeners? Where ?
Are you part of Framework at the time of Frame Design ?






1. Polymorphism
2. Method overloading & Overiding ?
3. Super & this Key word ?
4. Final Keyword ? Where we can use it ?
5. What is Wrapper Class & Where we used it ?
6. Diff btn Abtract class & Interface ?
7. Diff Hash Map & Hash Table ?
8. Exception defination & its type ?
9. Selenium Exception & When it occures ?
10. Diff Git & Github ?
11. How will you Handle Window & Wondows ?
12. Types of Alert ? web Based Alerts ?
13. How many Locators & Name ?
14. Absolute xpath & Relative xpath ?
15. Which Selenium version your are using ?
16. Bug Life Cycle ?
17. How you take Screenshot ?
18. What are methods in Itake Listener ?
19. How you run Failed TC? 
20. Data Provider ?
21. How would you find Broken Link from Selenium ?
22. Maven Life Cycle ?
23. Goals in Maven ?



1. How do you decide which TCs automate 1st?
2. Briefly about your project ?
3. 


LnT
testbase package:
extended pagelayer
Test Layer: write tests
Configuration: Cong of Webdriver, java Script, poc,
Test Data: Excel file, 
Utility: called as reusable: java utility class, webelement, java script utility,

2.how you call parent Constructor ? 
if you create obj of child class it it call by explicitly or implicity?
3. Collection ?
4. If you want to sort list how you will do that ? Tell sample code of it ?
5. Final And Finally ?
6. Compile time polymorphism (early binding) & run time polymorphism (late Binding)?
7. Have you know about db connection ?
if 2 database & fire a query to retrieve data from 1st data base & fetch it with second database. 

8. can we use excel as a DB ?
9. how you invoke bat file or exe file by using java ?
10. AutoID  (Relevant quetions what we saying)
11. have you performed mouse hover operation ? which methods for it ?
12. Have you haired abour desired capabilities ?
13. Security Certificate ? it comes on Internet 
14. which browser you worked on ?
15. Consider one Login link three webpages are opened & out of it 2 are advertice we need to close it & do operation on 3rd one ?
ans: by using Window handle will take list 


Wipro
1. Tell me you exposure on Automation ?
2. Are you directly  involved in designing FW?
3. What is Web Services?
4. Are you individual contribute in your FW ?
5. Relevant - you know Maven ? you know Maven life cycle ? for what purpose it use ? what is Maven ?
6. If any jar not available in maven centralize repo then how how add it ? how hat jar will be deploy on client machine if you already send project ?
7. Interface with example not standard definition ?
8.   are you able to create object in abstract class ?
9. class A Abstract & Class A extending in Class B both are having same method with same name its overridden then you have to call concrete method of class A or how to call method of Abstract Class ?

again once more , suppose simple 2 classes A and Class B both having same method with same name then how to call parent class method.

10. class B extending Class B, Class A having one Constructor and same in Class B.
which class method will be get called if A a =new B();
11. which version of java your using ? 
ans: 1.8
12. are you override static methods in java 1.8 ?
13. what about Aggregation ?
14.  what is method overriding ?
15 how to create group of methods in TestNg & how can run it ?


TCS:
1. Where you store Test data ?
2. how you fetch Test data from Excel file ?
3. Diff POM and Page Factory  
4. Can we use page Factory in POM
5. if condition what is diff between double equal and triple equal ?
6. What is Java Collection ?
7. How you work with Jira ? what task you perform on Jira ?
8. how you verify check box is checked ?
9. how you perform right click operation? tell code ?
10. Oopse concepts ?
11. can we achieve overriding within same class ?
ans: No
12. can we achieve overloading within same class ?
ans: no
13. Access Specifier and how it apply on method,class, variable ?
14. how we check element displayed or not ?
ans: isDisplayed 


1) Explain test harness

A test harness for Cucumber and rspec allows for separating responsibility between setting up the context and interacting with the browser and cleaning up the step definition files
What is TDD
 Test-driven development is a process of modifying the code in order to pass a test designed previously. In Software Engineering, It is sometimes known as "Test First Development." TDD includes refactoring a code i.e. changing/adding some amount of code to the existing code without affecting the behavior of the code.
  
What is the name of the plugin that is used to integrate Eclipse with Cucumber?
Ans: Cucumber Natural Plugin is the plugin that is used to integrate Eclipse with Cucumber.



Friday, February 14, 2020

OOPS Concepts


OOPS Concepts:
Java OOPs Concepts

Object

Any entity that has state and behaviour is known as an object.

 For example, a chair, pen, table, keyboard, bike, etc. It can be physical or logical.

An Object can be defined as an instance of a class

An object has three characteristics:
  • State: represents the data (value) of an object.
  • Behavior: represents the behavior (functionality) of an object such as deposit, withdraw, etc.
  • Identity: An object identity is typically implemented via a unique ID. The value of the ID is not visible to the external user. However, it is used internally by the JVM to identify each object uniquely.

Example: A dog is an object because it has states like color, name, breed, etc. as well as behaviors like wagging the tail, barking, eating, etc.

Class

Collection of objects is called class. It is a logical entity.

A class can also be defined as a blueprint from which you can create an individual object.

Inheritance

When one object acquires all the properties and behaviors of a parent object, it is known as inheritance. It provides code reusability. It is used to achieve runtime polymorphism.

The idea behind inheritance in Java is that you can create new classes that are built upon existing classes. When you inherit from an existing class, you can reuse methods and fields of the parent class. Moreover, you can add new methods and fields in your current class also.

Inheritance represents the IS-A relationship which is also known as a parent-child relationship.

Why use inheritance in java
  • For Method Overriding (so runtime polymorphism can be achieved).
  • For Code Reusability.

The syntax of Java Inheritance

  1. class Subclass-name extends Superclass-name  
  2. {  
  3.    //methods and fields  
  4. }  

The extends keyword indicates that you are making a new class that derives from an existing class. The meaning of "extends" is to increase the functionality.

In the terminology of Java, a class which is inherited is called a parent or superclass, and the new class is called child or subclass.

Java Inheritance Example

Inheritance in Java
As displayed in the above figure, Programmer is the subclass and Employee is the superclass. The relationship between the two classes is Programmer IS-A Employee. It means that Programmer is a type of Employee.

  1. class Employee{  
  2.  float salary=40000;  
  3. }  
  4. class Programmer extends Employee{  
  5.  int bonus=10000;  
  6.  public static void main(String args[]){  
  7.    Programmer p=new Programmer();  
  8.    System.out.println("Programmer salary is:"+p.salary);  
  9.    System.out.println("Bonus of Programmer is:"+p.bonus);  
  10. }  
  11. }  
O/P
Programmer salary is:40000.0
Bonus of programmer is:10000

In the above example, Programmer object can access the field of own class as well as of Employee class i.e. code reusability.
Types of inheritance in java
On the basis of class, there can be three types of inheritance in java: single, multilevel and hierarchical.
In java programming, multiple and hybrid inheritance is supported through interface only. We will learn about interfaces later.
Types of inheritance in Java

Note: Multiple inheritance is not supported in Java through class.

When one class inherits multiple classes, it is known as multiple inheritance. For Example:
Multiple inheritance in JavaSingle Inheritance Example
When a class inherits another class, it is known as a single inheritance. In the example given below, Dog class inherits the Animal class, so there is the single inheritance.

File: TestInheritance.java

Multilevel Inheritance Example

When there is a chain of inheritance, it is known as multilevel inheritance. As you can see in the example given below, BabyDog class inherits the Dog class which again inherits the Animal class, so there is a multilevel inheritance.
  1. class Animal{  
  2. void eat(){System.out.println("eating...");}  
  3. }  
  4. class Dog extends Animal{  
  5. void bark(){System.out.println("barking...");}  
  6. }  
  7. class BabyDog extends Dog{  
  8. void weep(){System.out.println("weeping...");}  
  9. }  
  10. class TestInheritance2{  
  11. public static void main(String args[]){  
  12. BabyDog d=new BabyDog();  
  13. d.weep();  
  14. d.bark();  
  15. d.eat();  
  16. }}  
Output:
weeping...
barking...
eating...

Hierarchical Inheritance Example

When two or more classes inherits a single class, it is known as hierarchical inheritance. In the example given below, Dog and Cat classes inherits the Animal class, so there is hierarchical inheritance.
  1. class Animal{  
  2. void eat(){System.out.println("eating...");}  
  3. }  
  4. class Dog extends Animal{  
  5. void bark(){System.out.println("barking...");}  
  6. }  
  7. class Cat extends Animal{  
  8. void meow(){System.out.println("meowing...");}  
  9. }  
  10. class TestInheritance3{  
  11. public static void main(String args[]){  
  12. Cat c=new Cat();  
  13. c.meow();  
  14. c.eat();  
  15. //c.bark();//C.T.Error  
  16. }}  
O/P
meowing...
eating...

Q) Why multiple inheritance is not supported in java?

To reduce the complexity and simplify the language, multiple inheritance is not supported in java.
Consider a scenario where A, B, and C are three classes. The C class inherits A and B classes. If A and B classes have the same method and you call it from child class object, there will be ambiguity to call the method of A or B class.
Since compile-time errors are better than runtime errors, Java renders compile-time error if you inherit 2 classes. So whether you have same method or different, there will be compile time error.
  1. class A{  
  2. void msg(){System.out.println("Hello");}  
  3. }  
  4. class B{  
  5. void msg(){System.out.println("Welcome");}  
  6. }  
  7. class C extends A,B{//suppose if it were  
  8.    
  9.  public static void main(String args[]){  
  10.    C obj=new C();  
  11.    obj.msg();//Now which msg() method would be invoked?  
  12. }  
  13. }  
O/P
Compile Time Error

Abstract class in Java

Hiding internal details and showing functionality is known as abstraction. For example phone call, we don't know the internal processing.
In Java, we use abstract class and interface to achieve abstraction.

Another way, it shows only essential things to the user and hides the internal details, for example, sending SMS where you type the text and send the message. You don't know the internal processing about the message delivery.
Abstraction lets you focus on what the object does instead of how it does it.

Ways to achieve Abstraction

There are two ways to achieve abstraction in java
  1. Abstract class (0 to 100%)
  2. Interface (100%)

Abstract class in Java

A class which is declared as abstract is known as an abstract class. It can have abstract and non-abstract methods. It needs to be extended and its method implemented. It cannot be instantiated.

Points to Remember

  • An abstract class must be declared with an abstract keyword.
  • It can have abstract and non-abstract methods.
  • It cannot be instantiated.
  • It can have constructors and static methods also.
  • It can have final methods which will force the subclass not to change the body of the method.
Rules for Java Abstract class

Example of abstract class

abstract class A{}  

Abstract Method in Java

A method which is declared as abstract and does not have implementation is known as an abstract method.

Example of abstract method

abstract void printStatus();//no method body and abstract  

Example of Abstract class that has an abstract method

  1. abstract class Bike{  
  2.   abstract void run();  
  3. }  
  4. class Honda4 extends Bike{  
  5. void run(){System.out.println("running safely");}  
  6. public static void main(String args[]){  
  7.  Bike obj = new Honda4();  
  8.  obj.run();  
  9. }  
  10. }  
O/P:
running safely

Understanding the real scenario of Abstract class

  1. abstract class Shape{  
  2. abstract void draw();  
  3. }  
  4. //In real scenario, implementation is provided by others i.e. unknown by end user  
  5. class Rectangle extends Shape{  
  6. void draw(){System.out.println("drawing rectangle");}  
  7. }  
  8. class Circle1 extends Shape{  
  9. void draw(){System.out.println("drawing circle");}  
  10. }  
  11. //In real scenario, method is called by programmer or user  
  12. class TestAbstraction1{  
  13. public static void main(String args[]){  
  14. Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method  
  15. s.draw();  
  16. }  
  17. }  
drawing circle

Another example of Abstract class in java

  1. abstract class Bank{    
  2. abstract int getRateOfInterest();    
  3. }    
  4. class SBI extends Bank{    
  5. int getRateOfInterest(){return 7;}    
  6. }    
  7. class PNB extends Bank{    
  8. int getRateOfInterest(){return 8;}    
  9. }    
  10.     
  11. class TestBank{    
  12. public static void main(String args[]){    
  13. Bank b;  
  14. b=new SBI();  
  15. System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
  16. b=new PNB();  
  17. System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
  18. }}    
Rate of Interest is: 7 %
Rate of Interest is: 8 %

Abstract class having constructor, data member and methods

An abstract class can have a data member, abstract method, method body (non-abstract method), constructor, and even main() method.
  1. //Example of an abstract class that has abstract and non-abstract methods  
  2.  abstract class Bike{  
  3.    Bike(){System.out.println("bike is created");}  
  4.    abstract void run();  
  5.    void changeGear(){System.out.println("gear changed");}  
  6.  }  
  7. //Creating a Child class which inherits Abstract class  
  8.  class Honda extends Bike{  
  9.  void run(){System.out.println("running safely..");}  
  10.  }  
  11. //Creating a Test class which calls abstract and non-abstract methods  
  12.  class TestAbstraction2{  
  13.  public static void main(String args[]){  
  14.   Bike obj = new Honda();  
  15.   obj.run();  
  16.   obj.changeGear();  
  17.  }  
  18. }  
 bike is created
       running safely..
       gear changed

Rule: If there is an abstract method in a class, that class must be abstract.

  1. class Bike12{  
  2. abstract void run();  
  3. }  
compile time error

Rule: If you are extending an abstract class that has an abstract method, you must either provide the implementation of the method or make this class abstract.

Another real scenario of abstract class

The abstract class can also be used to provide some implementation of the interface. In such case, the end user may not be forced to override all the methods of the interface.
  1. interface A{  
  2. void a();  
  3. void b();  
  4. void c();  
  5. void d();  
  6. }  
  7.   
  8. abstract class B implements A{  
  9. public void c(){System.out.println("I am c");}  
  10. }  
  11.   
  12. class M extends B{  
  13. public void a(){System.out.println("I am a");}  
  14. public void b(){System.out.println("I am b");}  
  15. public void d(){System.out.println("I am d");}  
  16. }  
  17.   
  18. class Test5{  
  19. public static void main(String args[]){  
  20. A a=new M();  
  21. a.a();  
  22. a.b();  
  23. a.c();  
  24. a.d();  
  25. }}  
Output:I am a
       I am b
       I am c
       I am d

Encapsulation

Encapsulation in Java is a process of wrapping code and data together into a single unit, for example, a capsule which is mixed of several medicines.
encapsulation in java
We can create a fully encapsulated class in Java by making all the data members of the class private. Now we can use setter and getter methods to set and get the data in it.
The Java Bean class is the example of a fully encapsulated class.


By providing only a setter or getter method, you can make the class read-only or write-only. In other words, you can skip the getter or setter methods.
It provides you the control over the data
It is a way to achieve data hiding in Java because other class will not be able to access the data through the private data members.

The encapsulate class is easy to test. So, it is better for unit testing.

The standard IDE's are providing the facility to generate the getters and setters. So, it is easy and fast to create an encapsulated class in Java.

Simple Example of Encapsulation in Java
  1. //A Java class which is a fully encapsulated class.  
  2. //It has a private data member and getter and setter methods.  
  3. package com.javatpoint;  
  4. public class Student{  
  5. //private data member  
  6. private String name;  
  7. //getter method for name  
  8. public String getName(){  
  9. return name;  
  10. }  
  11. //setter method for name  
  12. public void setName(String name){  
  13. this.name=name  
  14. }  
  15. }  

File: Test.java
  1. //A Java class to test the encapsulated class.  
  2. package com.javatpoint;  
  3. class Test{  
  4. public static void main(String[] args){  
  5. //creating instance of the encapsulated class  
  6. Student s=new Student();  
  7. //setting value in the name member  
  8. s.setName("vijay");  
  9. //getting value of the name member  
  10. System.out.println(s.getName());  
  11. }  
  12. }  
Output: vijay


Polymorphism in Java

Polymorphism in Java is a concept by which we can perform a single action in different wayspolymorphism means many forms. For example: to convince the customer differently, to draw something, for example, shape, triangle, rectangle, etc.

In Java, we use method overloading and method overriding to achieve polymorphism.
Another example can be to speak something; for example, a cat speaks meow, dog barks woof, etc.

  1. class Animal{  
  2. void eat(){System.out.println("eating...");}  
  3. }  
  4. class Dog extends Animal{  
  5. void bark(){System.out.println("barking...");}  
  6. }  
  7. class TestInheritance{  
  8. public static void main(String args[]){  
  9. Dog d=new Dog();  
  10. d.bark();  
  11. d.eat();  
  12. }}  
O/P
barking...
eating...


There are two types of polymorphism in Java: compile-time polymorphism and runtime polymorphism. We can perform polymorphism in java by method overloading and method overriding.

If you overload a static method in Java, it is the example of compile time polymorphism. Here, we will focus on runtime polymorphism in java.

Runtime Polymorphism in Java

Runtime polymorphism or Dynamic Method Dispatch is a process in which a call to an overridden method is resolved at runtime rather than compile-time.
In this process, an overridden method is called through the reference variable of a superclass. The determination of the method to be called is based on the object being referred to by the reference variable.
Let's first understand the upcasting before Runtime Polymorphism.

Upcasting

If the reference variable of Parent class refers to the object of Child class, it is known as upcasting. For example:
Upcasting in Java
  1. class A{}  
  2. class B extends A{}  

A a=new B();//upcasting  

For upcasting, we can use the reference variable of class type or an interface type. For Example:

  1. interface I{}  
  2. class A{}  
  3. class B extends A implements I{}  


Here, the relationship of B class would be:
B IS-A A
B IS-A I
B IS-A Object

Since Object is the root class of all classes in Java, so we can write B IS-A Object.

Example of Java Runtime Polymorphism

In this example, we are creating two classes Bike and Splendor. Splendor class extends Bike class and overrides its run() method. We are calling the run method by the reference variable of Parent class. Since it refers to the subclass object and subclass method overrides the Parent class method, the subclass method is invoked at runtime.
Since method invocation is determined by the JVM not compiler, it is known as runtime polymorphism.


  1. class Bike{  
  2.   void run(){System.out.println("running");}  
  3. }  
  4. class Splendor extends Bike{  
  5.   void run(){System.out.println("running safely with 60km");}  
  6.   
  7.   public static void main(String args[]){  
  8.     Bike b = new Splendor();//upcasting  
  9.     b.run();  
  10.   }  
  11. }  

Output: running safely with 60km.

Java Runtime Polymorphism Example: Bank

Consider a scenario where Bank is a class that provides a method to get the rate of interest. However, the rate of interest may differ according to banks. For example, SBI, ICICI, and AXIS banks are providing 8.4%, 7.3%, and 9.7% rate of interest.
Java Runtime Polymorphism example of bank



  1. class Bank{  
  2. float getRateOfInterest(){return 0;}  
  3. }  
  4. class SBI extends Bank{  
  5. float getRateOfInterest(){return 8.4f;}  
  6. }  
  7. class ICICI extends Bank{  
  8. float getRateOfInterest(){return 7.3f;}  
  9. }  
  10. class AXIS extends Bank{  
  11. float getRateOfInterest(){return 9.7f;}  
  12. }  
  13. class TestPolymorphism{  
  14. public static void main(String args[]){  
  15. Bank b;  
  16. b=new SBI();  
  17. System.out.println("SBI Rate of Interest: "+b.getRateOfInterest());  
  18. b=new ICICI();  
  19. System.out.println("ICICI Rate of Interest: "+b.getRateOfInterest());  
  20. b=new AXIS();  
  21. System.out.println("AXIS Rate of Interest: "+b.getRateOfInterest());  
  22. }  
  23. }  
Output:
SBI Rate of Interest: 8.4
ICICI Rate of Interest: 7.3
AXIS Rate of Interest: 9.7










String

  Java String  class provides a lot of methods to perform operations on strings such as compare(), concat(), equals(), split(), length(), re...