0% found this document useful (0 votes)
568 views45 pages

Automation Test - Interview Q&A - FPT Software Academy

The candidate provided their name, current role as a Test Engineer, and experience testing functionality, automation, regression, smoke, and accessibility using Selenium with Java, TestNG, Cucumber, Page Object Model, Maven, Git, and Jenkins. They described their daily activities including standup meetings, assigning tasks in Jira, and defect retesting. The candidate rated their Java skills as an 8 out of 10 and Selenium skills as a 3.5 out of 5, and discussed OOP concepts like abstraction, encapsulation, inheritance, and polymorphism applied in frameworks.

Uploaded by

Hà Hải
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
568 views45 pages

Automation Test - Interview Q&A - FPT Software Academy

The candidate provided their name, current role as a Test Engineer, and experience testing functionality, automation, regression, smoke, and accessibility using Selenium with Java, TestNG, Cucumber, Page Object Model, Maven, Git, and Jenkins. They described their daily activities including standup meetings, assigning tasks in Jira, and defect retesting. The candidate rated their Java skills as an 8 out of 10 and Selenium skills as a 3.5 out of 5, and discussed OOP concepts like abstraction, encapsulation, inheritance, and polymorphism applied in frameworks.

Uploaded by

Hà Hải
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

1. Can you brief me about yourself?

Hi, my name is Cuder.


I started my career as a Testing Executive 2.5 years back with Infosys currently I
am working as Test Engineer.
My responsibility is to understand Business Requirement Specification and High-
Level scenarios and to convert them into test cases & Automation scripts if required.
Execution of test cases and reporting of defect to the developer if there any and
get them fixed. I have experience on Functional, Automation, Regression,
Smoke, Sanity, Web accessibility, Web Analytics, Mobile Testing.
In my previous project I have worked on Automation testing where we have used
Selenium with java and TestNG Cucumber framework for BDD approach. We have
used Page object model where we have separated our test cases with page objects,
and we performed testing on the same. For build management tool we are using Maven
for version controlling we are using Git and for automating our jobs for nightly run or
any schedule we are using Jenkins.
For defect management & test case management we have used JIRA, TEST RAIL & HP
ALM. I have worked on tools like BrowseStack, DeviceAnywhere, Toadsql,
I am working on Agile environment we have daily standup call and we have 2-week
sprint cycle. I am part of 8-member team out of which we are 3-Tester, 2- dev, 1-
manager, 1-scrum master.

2. Tell me your Day to Day activities as QA?

First thing I do after login in my system. I check the active sprint in Jira for our project
code. There I can see my assigned open tasks. After that I will check my mail if there is
any important mail I need to take action on. Then we have our daily scrum meeting
where we used to tell our previous day actions what we did, what we are planning for
today and if we have any blocker to discuss. Product owner and scrum master help us
to resolve that blocker. After that I need to take the pending task and do needed action
whether creating test case, Execution, Defect retesting if any.

3. Do you have created framework from scratch, or you have maintained that?
I have not created Framework from scratch by myself but yes, I was part of
framework creation and created some part of it.

4. How much you rate yourself in Java out of 10?


Out of 10 I will rate myself 8 in java as QA Automation engineer.

5. Can you tell me Oops concepts and relate it with your Framework?
We have Polymorphism, Inheritance, Encapsulation and Abstraction in Oops. So, we will
start with
1) DATA ABSTRACTION
Data Abstraction means to handle complexity by hiding unnecessary details from
the user. In java, abstraction is achieved by interfaces and abstract classes. We
can achieve 100% abstraction using interfaces.
In Selenium, WebDriver itself acts as an interface. Consider the below statement:

FPT Software Academy – #Code Your Life


WebDriver driver = new ChromeDriver();
We initialize the Chrome Browser using Selenium Webdriver. It means we are creating
a reference variable (driver) of the interface (WebDriver) and creating an Object. Here
WebDriver is an Interface and ChromeDriver is a class.
We can apply Data Abstraction in a Selenium framework by using the Page Object
Model design pattern. We define all our locators and their methods in the page class.
We can use these locators in our tests but we cannot see the implementation of their
underlying methods. So we only show the locators in the tests but hide the
implementation. This is a simple example of how we can use Data Abstraction in our
Automation Framework.

2)ENCAPSULATION
Encapsulation is defined as the wrapping up of data under a single unit. It is the
mechanism that binds together code and the data it manipulates. Encapsulation can be
achieved by: Declaring all the variables in the class as private and writing public
methods in the class to set and get the values of variables.
All the classes in an Automation Framework are an example of Encapsulation. In
Page Object Model classes, we declare the data members using @FindBy and
initialization of data members will be done using Constructor to utilize those in
methods.

3)INHERITANCE
Inheritance is the mechanism in java by which one class is allowed to inherit the
features (fields and methods) of another class.
We can apply Inheritance in our Automation Framework by creating a Base Class to
initialize the WebDriver interface, browsers, waits, reports, logging, etc. and then we can
extend this Base Class and its methods in other classes like Tests or Utilities. This is a
simple example of how we can apply Inheritance in our framework.

4) POLYMORPHISM
Polymorphism allows us to perform a single action in different ways. In Java
polymorphism can be achieved by two ways:
– Method Overloading: When there are multiple methods with same name but different
parameters then these methods are said to be overloaded. Methods can be overloaded
by change in number of arguments or/and change in type of arguments.
In Selenium Automation, Implicit wait is an example of Method Overloading. In
Implicit wait we use different time stamps such as SECONDS, MINUTES, HOURS
etc.
– Method Overriding: It occurs when a derived class has a definition for one of the
member functions of the base class. That base function is said to be overridden.
In Selenium Automation, Method Overriding can be achieved by overriding any
WebDriver method. For example, we can override the findElement method
In assertion we have used overload because in assertion we used to like
asset.true(actual, expected) and second time we can use same assert.true(actual,
expected, message).

6. How can you use interface and how it is different from Abstract class?

FPT Software Academy – #Code Your Life


Abstract class may have Abstract and concrete methods, and there is not any
compulsion in adding abstract method in abstract class. But in Interface, we do have
only abstract methods and we don’t need to write abstract keyword in Interface this is
by default public and abstract.

7. What do you mean by Static keyword in Java?


Static means it is at class level not at instance level, we have static method, static
variable & static inner class. When we have any variable as static so it will remain
same for all the instance of our classes, and static/Private/Final methods can’t be
over-ridden like if we have initialized any method as Static so we cannot override it in
any child class.

8. How to call static method and variable in java?


Direct calling, Calling by class name.

9. Can I access Static method by using object reference?


Yes we can, but we got one warning that you need to access it via Direct or By class
name.

10. How to call non-static method and variable in java?


For calling non static method we need to create object first.

11. Can we overload & override main


method? Overload-Yes, Override-
No

12. What do you mean by wrapper class and how will you do data conversion?
Wrapper class in java are used for data conversion. In data conversion if user
wants to convert Int to string, String to int, Boolean, double then we use Wrapper
class.
integer.parseInt(); - To convert string to
Integer Double.parseDouble(); - To convert
string to Double Boolean.parse Boolean(); -
To convert string to Boolean String.valueof(); -
To convert Integer to String.

13. Can you convert string a =”110a” in integer?


No we got NumberFormatException while converting the above string.

14. What do you mean by Call by Value & Call by Reference in Java?
Call by value means suppose we have created one sum method with input parameter
int a, int b. So while calling the creating the object and running we provide values that is
know as call by value.

15. What do you mean by Exceptions in Java?


Exception is like any interruption in our normal flow. Like if we are running anything and
we got issues in our script this is we called exception, we have 2 types of exception
Run Time & Compile Time. (checked & Unchecked exceptions)

FPT Software Academy – #Code Your Life


16. Can you tell me about difference between Throw and Throws keyword?
Throw is a keyword used inside a body of function. And Throws used while initializing
any method. By using Throw we can throw only one exception while for Throws we can
declare multiple exceptions which might occur in that particular function. Throws
keyword followed by instance name and Throw keyword is followed by class name of
that exception.

17. How much you rate yourself in


selenium out of 5? Out of 5 I will rate
myself 3.5 in selenium.

18. Which locator you are using in your framework and why?
Mostly we used ID and Xpath because Id is the fastest and unique one and after that
we prefer Xpath. Anyways we have other locators as well like css , class name, tag
name, Link text, Partial Link text.

19. What is the difference between findelement & findelements?


findelement will give the first appearance of that element which matches our locator,
whereas findelements will give us list of all the elements which is present over the
webpage and matching our locator. And if we don’t find the element findelement will
give us nosuchelementexception whereas findelements will return NULL/Empty list.

20. Why declaring the driver object as static in base class is not a good practice in
selenium? What are the challenges we might face if we do the same?
If you perform sequential test case execution, then it will work perfectly. But when you
do the same thing for parallel execution it will stop the execution because your first test
case will use your driver object but at the same another testcase running parallelly they
will also grab the driver object so it may through null pointer exception or may get some
weird result and your script will fail. But if you want to declare driver object as static you
can do. By defining local variable of driver object in each class.

21. What are the conditions that throws ClassCastException?


Integer to string, string is not a subclass of Integer, so a Class Cast
Exception will be thrown. Object I = Integer.valueOf(42);
String s = (String)i;

22. Can you tell me how you will handle multiple windows in selenium?
We have windowhandle & windowhandles function for handling Multiple windows.
Windowhandle will give the string value of only the active window that is open whereas
windowhandles will give set of all the windows that are open in browser.

23. How you will move from one window to another?


First we will check what all windows are open by using driver.getwindowhandles, to
get set of opened windows , then I use iterator to iterate over each of the pages and
inside for loop will check like Current URL matches with the excepted page, if match
then switch to that window by using driver.switchTo(Destination window) -> to return
back to main parent window use driver.defaultContent().

FPT Software Academy – #Code Your Life


24. Tell me the difference between Implicit & Explicit wait?
Implicit wait applies for all the elements and all the tests like if we give 10 sec of
implicit wait it will wait for 10 sec for each element before giving nosuchelement
exceptions.
While Explicit wait can be applied for any particular step for which you want extra wait
time so we can use explicit wait. We can use mix of both waits to depend on the
situation of the step.

25. Can you tell me some exceptions in selenium?


NoSuchElementException, NoSuchWindowException
NoSuchframeException, StaleElementReferenceException,
TimeoutException.

26. Can you tell me about StaleElementReferenceException?


Stale means old or decayed, here it sounds like element which was present on that
page is no longer there or decayed. To handle this, we can refresh the webpage
before pointing to that element. We can write script for waiting via explicit wait by
writing expected condition.refresh. Or we can go with page object model in that we
can over come this stale element exception.

27. What do you mean by User Defined Exception?


User Defined Exception or custom exception is creating your own exception class and
throws
that exception using 'throw' keyword. This can be done by extending the class
Exception. ... The keyword “throw” is used to create a new Exception and throw it to the
catch block.

28. Can you tell me what is assert in TestNG?


Assert is like verification where we check like expected thing and actual thing are same
or not.

29. Which assert you have used in TestNg?


We have used Hard assert and Soft assert, while applying Hard assert if we found any
glitch in expected and actual then it will through exception and move to next @test while
Soft assert it won’t give exception and move to next step of that test. And to get all the
exceptions in console we need to write at the end assert.all.

30. Can you tell me about the order of TestNG


annotations? @BeforeSuite
@BeforeTest
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass
@AfterTest
@AfterSuite

FPT Software Academy – #Code Your Life


31. Do you heard about Priority in TestNg can we set -ve priority?
Yes, like priority is 0, -1, TestNg will run -1 then 0 then 1. And if we have any @test
which is not having any priority set, then in that case it will search via alphabetic order
whichever comes first and execute test respectively.

32. Do you work in cucumber, can you tell me what all files
required in cucumber? In cucumber we have Feature file, Step
Definition file and Test Runner file.
In feature file we used to write scenario in gherkin language which is most like in plain
English language. Here we use some of the keywords like feature, scenario, scenario
outline, given, when, then, and, example, background keywords for writing our test
scenarios steps.
In Step Definition file we write mapping code for all the scenario of feature file.
In test Runner file we provide the address of the feature file, step definition file, and
all-important Tags, Plugin, Listeners in that.

33. What is the difference between scenario & scenario outline?


When we have single scenario and we need to run it one time at that place we use
Scenario.
If you want some parametrization or Data Driven testing at that time, we can use
scenario outline where we have to use Example keyword like if we are running this
scenario for 3 different data set like username & pass. so, it will run 3 times.

34. Can you tell me more about Background Keyword?


Background is used when we have some common Given part. Suppose we have
pre-condition that we have to check this before each scenario. so in order to avoid
rewriting same step we can write it in Background.
35. What is the use of Dry Run in cucumber?
Dry run is not running our whole application it will check whether all features are
mapped with Step definition.

36. What is hooks in cucumber?


In cucumber we use hooks for common functionalities, hooks are like we want to run
before & after each of the scenario. In hooks we have 2 different @before, @ after
which run before and after of each scenario. Also @beforestep, @afterstep which run
before and after each step.

37. Can you tell me how you will re-run failed scenario in cucumber?
For that we can use re-run attribute in our test runner file. After that we can write one file
location. Where all the test cases which failed while execution get stored. So next time
while running execution we can give this file location and run the failed TC.

38. You have worked in Cucumber & TestNG according to you which one is best?
I will consider Cucumber as it is most likely understood by Laymen people which is
English plain language. Because in order to understand the functionality flow no need to
go look and script/code. Via Scenario steps lines only we can get clear understanding
about the functionality.

FPT Software Academy – #Code Your Life


It helps to come all the QA members Dev, Client, Product Owner on same page.

39. Can you explain me TestNG?


TestNG is advanced version of Junit only. It is mainly used by Dev/QA for maintain the
code easily and for unit testing. It provides lots of benefits to us like we can create a
suite and we can write all the required Tc in one go only using that suite. We can group
our Tc we can set priority we can run our tc in parallel mode, We can generate good
reports via TestNG. We can write functionality depends on methods, depends on group.
We can run single tc multiple time with single set of data of multiple set of Data.

40. How to run single method multiple time in TestNG?


We have invocation count attribute in @test annotiation. We can write invocation count
as 3 if we want to run it 3 times. Apart from that we can write threadpull.size if we want
to run that case in multiple thread.

41. Have you used GIT in your project can you explain about it?
Yes I have used GIT, It is a version control tool. Where we can maintain our central
repo. we used to manage our code via GIT only. We use Git to maintain our project in
our local system. So, if someone like to work on that project I need to send complete
update copy to him and after that he can work on that. There are chances that single
project is handled by multiple teams across the globe. So, it will be difficult if we won’t
use GIT.

42. Can you give me some GIT commands which you used on daily basis?
Git status- which shows status of all the files,if we have some files which is not yet
added to our repo so it will give us untracked file.
After that we can use GIT add command after adding it will added to particular index
and we can commit this file using Git Commit-(Message) we can commit this untracked
file. Also we have Git Merge, Git Post, Git Pull, Git It in etc.

43. How to solve Merge conflict in GIT?


As we are only 2 tester working on this project, if we have any merge conflict I used to
pull all the latest file/scripts to my local system. Then I will analyze the difference
between that particular file and merge file. After that I will check with my team member
whether all his imp things are covered then I will add my steps and push the script to the
central repo.

44. You have worked in Jenkins can you tell me how you have created jobs in
Jenkins?
We have separate Dev-Ops Team to create Jenkins jobs at broad level but we also
have access to jenkins, so we have created jobs for our internal purpose.
For creating any job we have click on create new job->inside that give name of your job-
>select freestyle project->then add. Beside that we can provide description of our project
and in source code management we can choose Git-> provide repo url ->after that
provide some schedule if you want to run the job on any specific schedule time.-> select
window batch command-file location-save-click on build now for running. After triggering
we can check log in console.

FPT Software Academy – #Code Your Life


45. What is the difference between Smoke & Sanity Testing?
Smoke and Sanity we can are like same thing because both are checking important
functionality. Smoke testing is done on first stable build from developer to check like
whether it is stable enough to move further or not. While Sanity testing is subset of
regression test which we perform on stable build and here also we used to check all
the imp functionality.

46. What is Agile ceremony?


We have 4 Agile ceremony -Sprint planning, Sprint review, Sprint Retrospective, Daily
scrum meeting.

47. Why the main method is static?

Java main() method is always static, so that compiler can call it without the creation of
an object or before the creation of an object of the class. ... Static method of a class can
be called by using the class name only without creating an object of a class.

48. What is Run time polymorphism

Run-Time Polymorphism: Whenever an object is bound with the functionality at run


time, this is known as runtime polymorphism. The runtime polymorphism can be
achieved by method overriding. Java virtual machine determines the proper method to
call at the runtime, not at the compile time.

49. Difference between list and set.

The main difference between List and Set is that Set is unordered and contains
different elements, whereas the list is ordered and can contain the same elements
in it.

50. Method overloading and overriding.

Method overriding is used to provide the specific implementation of the method that
is already provided by its super class. Method overloading is performed within class.
Method overriding occurs in two classes that have IS-A (inheritance) relationship. In
case of method overloading, parameter must be different.

51. Use of constructor.


The purpose of constructor is to initialize the object of a class while the purpose of
a method is to perform a task by executing java code. Constructors cannot be
abstract, final, static and synchronised while methods can be. Constructors do not
have return types while methods do.

52. Difference between static and non-static methods

Static method uses complie time binding or early binding. Non-static method uses
run time binding or dynamic binding. A static method cannot be overridden being

FPT Software Academy – #Code Your Life


compile time binding. A non-static method can be overridden being dynamic
binding.

53. Explain Git workflow.

Step 1: Set up a Github Organization. ...


Step 2: Fork Organization Repository to Your Personal GitHub. ...
Step 3: Clone the Repository to Your Local Machine. ...
Step 4: Create a Branch for your Working Files. ...
Step 5: Set Remote Repository to the GitHub Organization. ...
Step 6: Get Coding!
Step 7: Pull the Most Recent Files From the Organization Repo
Step 8: Merge the Master Branch Into the Feature Branch
Step 9: Push Your Code to your GitHub Repo
Step 10: Make a Pull Request to the Organization Repo

54. How to set up Jenkins?

Step 1 − Go to the Jenkins dashboard and Click on New Item


Step 2 − In the next screen, enter the Item name, in this case we have named it Helloworld.
Choose the ‘Freestyle project option’
Step 3 − The following screen will come up in which you can specify the details of the job.
Step 4 − We need to specify the location of files which need to be built. In this example, we
will assume that a local git repository(E:\Program) has been setup which contains a
‘HelloWorld.java’ file. Hence scroll down and click on the Git option and enter the URL of
the local git repository.
Note − If you repository if hosted on Github, you can also enter the url of that repository
here. In addition to this, you would need to click on the Add button for the credentials to add
a user name and password to the github repository so that the code can be picked up from
the remote repository.
Step 5 − Now go to the Build section and click on Add build step → Execute Windows batch
command
Step 6 − In the command window, enter the following commands and then click on the Save
button.
Javac HelloWorld.java
Java HelloWorld
Step 7 − Once saved, you can click on the Build Now option to see if you have successfully
defined the job.
Step 8 − Once the build is scheduled, it will run. The following Build history section shows
that a build is in progress.
Step 9 − Once the build is completed, a status of the build will show if the build was
successful or not. In our case, the following build has been executed successfully. Click on
the #1 in the Build history to bring up the details of the build.
Step 10 − Click on the Console Output link to see the details of the build

55. Can we declare many interfaces object class inside the interface class.

FPT Software Academy – #Code Your Life


Yes, you can define a class inside an interface. In general, if the methods
of the interface use this class and if we are not using it anywhere else we
will declare a class within an interface.

56. Types of the assertion.

Selenium Assertions can be of three types: “assert”, “verify”, and ” waitFor”. When
an “assert” fails, the test is aborted. When a “verify” fails, the test will continue
execution, logging the failure. A “waitFor” command waits for some condition to
become true.

57. Abstraction in java and exp?


In Page Object Model design pattern, we write locators (such as id, name, xpath etc.,)
in a Page Class. We utilize these locators in tests but we can’t see these locators in the
tests. Literally we hide the locators from the tests.

58. What is a super keyword in java?

The super keyword refers to superclass (parent) objects. It is used to call


superclass methods, and to access the superclass constructor. The most common
use of the super keyword is to eliminate the confusion between superclasses and
subclasses that have methods with the same name.

59. Difference between break and continue statement.

Break statement resumes the control of the program to the end of loop and made
executional flow outside that loop. Continue statement resumes the control of the
program to the next iteration of that loop enclosing 'continue' and made executional
flow inside the loop again

60. Diff between Abstract class & interface?

Abstract class can inherit another class using extends keyword and implement
an interface. Interface can inherit only an inteface. Abstract class can be
inherited using extends keyword. Interface can only be implemented using
implements keyword.

61. What is a static keyword in Java?

In the Java programming language, the keyword static indicates that the particular
member belongs to a type itself, rather than to an instance of that type. This means that
only one instance of
that static member is created which is shared across all instances of the class.

62. Have you used the action class and where it is used?

Using the Actions class in Selenium, we can implement the sendKeys() method to
type specific values in the application. That is how you use the actions class in
Selenium with sendKeys() method. ... The perform() method is used to perform the
series of actions that are defined.

FPT Software Academy – #Code Your Life


63. What is the difference between checked and unchecked exceptions?

There are two types of exceptions: checked exception and unchecked exception.
... The main difference between checked and unchecked exception is that the
checked exceptions are checked at compile-time while unchecked exceptions are
checked at runtime

checked exceptions –
SQLException,IOException,ClassNotFoundException,InvocationTargetException

unchecked exceptions –
NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException,IllegalArgume
ntException

NumberFormatException

64. Apart from sendkeys, are there any different ways, to type content onto the
editable field?

WebDriver driver = new FirefoxDriver(); JavascriptExecutor executor =


(JavascriptExecutor)driver;
executor.executeScript("document.getElementById("textbox_id").value=
'new value';);

65. What is static and non-static?

In non-static method, the method can access static data members and static methods
as well as non-static members and method of another class or same class. Binding
process. Static method uses compile time or early binding. Non-static method uses
runtime or dynamic binding. Overriding.

66. DIfference between this and super?

this keyword mainly represents the current instance of a class. On other hand super
keyword represents the current instance of a parent class. this keyword used to call
default constructor of the same class.

67. What is the difference between length and length() in Java?

The length is an instance variable of an array in Java whereas length() is a method of


String class

68. What is an abstract class?

Abstract Classes and Methods Abstract class: is a restricted class that cannot be
used to create objects

FPT Software Academy – #Code Your Life


(to access it, it must be inherited from another class). Abstract method: can only be
used in an abstract class, and it does not have a body. The body is provided by the
subclass (inherited from).

69. Difference between Actions and Action?

Actions is a class that is based on a builder design pattern. This is a user-facing API
for emulating complex user gestures. Whereas Action is an Interface which represents
a single user-interaction action.

70. How do you handle keystrokes in Selenium?


Using Actions Class: Actions action = new Actions(driver); action. keyDown(Keys. ...
Using SendKeys Chord: driver. findElement(By. ...
Using Robot Class: // Create Robot class Robot rb = new Robot(); // Press control
keyboard key rb.

71. What is dry run in Cucumber?

Dry-run is used to compile feature files and step definitions in cucumber. It is


specially used in the stage when you will have to see if there are any compilation
errors, to check that you can use dry-run. Dry-run options can either set as true or
false.

72. Annotations in Cucumber

Total 11 Annotations -Feature, Scenario, Background, given, when , then, and, but,
example, scenario outline, scenario template.

73. What are hashmap and HashSet? Explain?

HashMap and HashSet both are one of the most important classes of Java Collection
framework.
... HashMap Stores elements in form of key-value pair i.e each element has its
corresponding key which is required for its retrieval during iteration. HashSet stores
only objects no such key value pairs maintained.

74. Where do you use a hashmap?

Maps are used for when you want to associate a key with a value and Lists are an
ordered collection. Map is an interface in the Java Collection Framework and a
HashMap is one implementation of the Map interface. HashMap are efficient for
locating a value based on a key and inserting and deleting values based on a key.
HashMap<String, Integer> map = new HashMap<>();
// Add elements to the map
map.put("vishal", 10);
map.put("sachin", 30);

FPT Software Academy – #Code Your Life


map.put("vaibhav", 20);

// Print size and content


System.out.println("Size of map is:- " + map.size());
System.out.println(map);

// Check if a key is present and if present, print value


if (map.containsKey("vishal")) {
Integer a = map.get("vishal");
System.out.println("value for key"+ " \"vishal\" is:- " + a);
75. How do you handle if XPath is changing dynamically?

Option 1: Look for any other attribute which Is not changing every time In that div
node like name, class etc. So If this div node has class attribute then we can write
xpath as bellow.

//div[@class='post-body entry-content']/div[1]/form[1]/input[1]

Option 2: We can use absolute xpath (full xpath) where you do not need to give any
attribute names In
xpath.
/html/body/div[3]/div[2]/div[2]/div[2]/div[2]/div[2]/div[2]/div/div[4]/div[1]/div/div/div/div[1]/div
/div/di
v/div[1]/div[2]/div[1]/form[1]/input[1]

Option 3: We can use starts-with function. In this xpath's ID attribute, "post-body-"


part remains same every time. //div[starts-with(@id,'post-body-
')]/div[1]/form[1]/input[1]

Option 4: We can use contains function. Same way you can use
contains function as bellow.div[contains(@id,'post-body-
')]/div[1]/form[1]/input[1]

76. Does Jenkins require a local system for CI?

It is a server-based application and requires a web server like Apache Tomcat

77. What is a singleton class?

The Singleton's purpose is to control object creation, limiting the number of objects to
only one. Since there is only one Singleton instance, any instance fields of a Singleton
will occur only once per class, just like static fields. Singletons often control access to
resources, such as database connections or sockets.

FPT Software Academy – #Code Your Life


For example, if you have a license for only one connection for your database or your
JDBC driver has trouble with multithreading, the Singleton makes sure that only one
connection is made or that only one thread can access the connection at a time.

78. When finally block get executed?

The finally block always executes when the try block exits. This
ensures that the finally block is executed even if an unexpected
exception occurs.

79. How many times you can write catch block?

maximum one catch block will be executed. No, we can write multiple catch
block but only one is executed at a time.

80. What Maven Architecture and explain pom.xml?

POM is an acronym for Project Object Model. The pom. xml file contains
information of project and configuration information for the maven to build the
project such as dependencies, build directory, source directory, test source
directory, plugin, goals etc. Maven reads the pom.

FPT Software Academy – #Code Your Life


REAL TIME SELENIUM + JAVA INTERVIEW QUESTIONS

1. How many types of WebDriver API ’s are available in selenium?


Chrome, Geko, Chromium, Edge, html, android,
2. How can you make sure that page is loaded via wed
driver or selenium? Via first apply wait , is element present,
then get text.
3. How can we launch a batch file in selenium webdriver project?
Take path of batch file->process.batchjob= runtime.get(runtime.executable”Path”));
4. How do you run selenium webdriver test from the
command line? For that go to cmd-> java-class path(of the
selenium project) ->hit enter
5. What are the different exception you faced in selenium webdriver?
Webdriver exc, noalertpresent exc, nosuchwindow exc, nosuchelement exc, timeout exc.
6. How do you scroll down a page using
javascript in selenium? Windows.scrollby
function
7. How do you scroll down to a
particular element?
Windows.scroll.intoview function
8. Which all files can be used as a data source for different frameworks?
.csv, .xml, .text etc
9. What are listeners in selenium?
Listeners actually is an interface, that modifies the behavior of the system. It is used for
customization of reports. 2 types webdriver listeners, TestNg Listeners.
10. How do you take screenshots in selenium
webdriver? takescreenshot function
11. What do you mean by assertions in
selenium? Assert, verify, wait for
12. How many phases are there in maven build cycle?
6 validate-compile-test-package-install-deploy
13. How will you handle keyboard and mouse related action
using selenium? By action class, robot class, venium driver
14. What do you mean by WebDriver?
Webdriver is an interface which is used to automate api of browser for testing.
15. How do you handle drag and drop option? Using action classes
16. How you handle java pop-ups in selenium?

17. Using alert, switch to alert, accept, dismiss, get text.

18. What does means Public static void main(variable,value)


Public/private/protected/default-Access specifier Static- modifier
Void- return type Main-class name
19. How to input text into a text box without Sendkeys? JavascriptExecuter
executor = (JavascriptExecutor)driver;
executor.excuteScript(“document.getElementById(“<<inputbox_id>>”).value
=’new value’);

FPT Software Academy – #Code Your Life


20. What are the open source frameworks supported by
selenium webdriver? TestNG, Junit, Cucumber, Robot
Framework, Appium, Protractor.
21. How to handle hidden elements in selenium webdriver?
JavascriptExecuter js = (JavascriptExecutor)driver;
js.excuteScript(“document.getElementById(“<<displayed_text>>”).value
=’Hiddentext);

22. How to handle iframes in selenium webdriver?


driver.switchTo().frames(via index value, name,
webelement );
driver.findeElement(by.id(“value”)).getText();
driver.switchTo().defaultContent();-To get back from
iframe

23. How you handle dropdown values?


From select class, via visible text, value, index
24. How to get color of webelement using
selenium webdriver? First get the locator of
webElement , then get
String color= object.getCssValue(“background-color”)
String HexbackColor= color.fromString(color).asHex();
It will give you RGb codes , you need to convert them into back color using HEX function
25. How you handle alert in selenium webdriver?
Simple alert(one option), Confirm Alert(Y/N), Prompt
alert(enter any value) Alert a= driver.switchTo().alert();
a.getText();
a.accept(), a.dismiss(), a.sendKeys(“name”);
26. How you handle multiple windows tabs in
selenium webdriver? String
PID=driver.getWindowHandle();
Set<String> allWindowHandle= driver.getWindowHandles();
Apply for loop on allWindowHandle -> switchTo().window(Id); ->if(!(Id.equals(PID)) -
>driver.close();
===================================================================
==================

FPT Software Academy – #Code Your Life


JAVA ONE LINE CONCEPTS

1. java file mai ek hi public class hoti hai, uske alava aur classes v ho sakti hai par
public ek hi.
2. If we need to create one variable for multiple values, we need to use Array concept.
3. Int marks[] = new int[5]
4. Array can store only homogenous data, int for int array, string for string,
5. If we need to add heterogeneous data in array, we need to create object array.
6. Object a[] = new Object[5]; now we can add different data type objects.
7. Array is fixed in size, which we define while creating.
8. If we try to access index value >= given index value, we got
arrayOutOfBundException.

9. Arrays are not defined by any data layer structure so we can’t run readymade
methods on it.
10. To overcome this, we have collection framework under which there are
ArrayList, List, HashMap, HashTable, Tree, Stack.
11. We can add new elements in run time under collections while in array we cannot.
12. Collection is a group of objects. To represent this we need certain interfaces and
classes.
13. Common operations we generally do on collections are adding objects, removing
objects & finding object.
14. Collection (I) is called collection interface having methods which are common
throughout all collections.
15. Collections is basically a class from java.util package which contains some
methods which we can use for collection objects.
16. Collection – 1. List, 2. Set, 3. Queue
17. List (I) is child of collection(I). In list Insertion order is preserved and duplicates are
allowed.
18. ArrayList, LinkedList, Vector these are different classes which implements List
Interface.
19. Set(I) is child of collection(I). Insertion order is not preserved & duplicates not
allowed.
20. HashSet, Linked Hashset these are different classes which implements Set
Interface.
21. Queue(I) is child of collection(I). We used it when we need prior to processing
means first in first out concept.
22. priorityQueue is class which implements Set Interface.
23. There is one independent interface known as Map(I). In Map(I) objects are created
with key and value pair. Key cannot be duplicate, but Value can be.
24. Hashmap, Linked Hashmap, Hash Table these are different classes which
implements Map
Interface.
25. Whatever methods present in Collection(I) are also present in their child interface
i.e List, Set, Queue.

FPT Software Academy – #Code Your Life


26. add(object o), addAll(Collection c), remove(Object o),
removeAll(Collection c), retainAll(Collection c) these are some
methods of Collection Interface.
27. clear(), isEmpty(), size(), contains(), conatinsAll(), toArray() are also some
methods.
28. In List index play an important role because with the help of index only we
can find duplicates elements.
29. add(index , object), get(index), set(index, object) are methods of List Interface.
30. ArrayList al= new ArrayList(), it allows heterogenous objects also.
31. ArrayList<Str> al= new <str>(), now it can store objects of string only.
32. Collections.Sort(al) , Collections.Shuffle(al) This will sort & shuffle the objects of
arraylist.
33. We can read the data with for loop, for each loop, iterator () method.
34. JVM have 2 types of memories Static pool -static data, heaps-Non static data,

FPT Software Academy – #Code Your Life


COLLECTION FRAMEWORK

1. A collection represents a group of objects.


2. Java collections provide classes and Interfaces for us to be able to write code.
3. We need collections for efficient storage and better manipulation of data in java.
4. Collection reduces programming effort, provide in-build methods and classes.
5. ArrayList -> For variables size collections
6. Set -> For distinct collection
7. Stack(queue)-> A LIFO (Last In First Out) data structure
8. HashMap -> For strong key - value pairs
9. Iterator- To iterate the element from collection.
10. Collections class is available in java util package collection class also provides static
methods for sorting, searching.
11. Common methods available in Collection are add(), addAll(), remove(),
removeAll(), size(), clear(), contains(), containsAll(), retain(), retainAll()
12. Common exception is collections are NullPointerException,
ClassCastException, IllegalargumentException, IllegalStateException,
UnsupportedOperationException

FPT Software Academy – #Code Your Life


13. Thread Safety-When multiple threads are working on same data, and the
value of our data is changing, that scenario is not thread-safe and we will
get inconsistent results. When a thread is already working on an object and
prevent another thread on working on the same object is known as thread
safety. We can achieve Thread safety via Synchronization, Volatile
Keyword, Atomic variable, Final Keyword.

14. Array List:


• ArrayList<Object Type> ar = new ArrayList<Object Type>();
• ArrayList is Dynamic in nature.
• Virtual Capacity of ArrayList by default is 10 but Physical capacity if we did not add any
object is 0. Once we start adding Physical objects Virtual Capacity got decreased by
same.
15. Hashmap:

• Hashmap<String, String>capitalmap = new Hashmap<String,


String>(); capitalmap.put(“India”, “New Delhi”);

FPT Software Academy – #Code Your Life


MAVEN INTERVIEW QUESTIONS
1. What is Maven:
• Maven is a project management tool that is based on POM (project object model). It is
used for projects build, dependency and documentation.
• It simplifies the build process.

2. Why Maven Required


Maven project eliminates the Adding set of Jars in each
project. It Creates write Project Structure.
Building and Deploying the project is very simple.

3. What is Build Tool


A build tool takes care of everything for building a process. It does following:
• Generates source code
• Compiles source code
• Packages compiled code into JAR of ZIP file
• Installs the packaged code in local repository, server repository, or central repository

4. How to install Maven in Window machine


• Download maven and extract it
• Add JAVA_HOME and MAVEN_HOME in environment variable
• Add maven path in environment variable
• Verify Maven apache-
maven-3.5.0-bin.zip

5. Verify maven

FPT Software Academy – #Code Your Life


To verify whether maven is installed or not, open the command prompt and write:
mvn −version
Maven home: E:\apache-maven\apache-maven-3.3.9\bin
Java version: 1.8.0_102, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_144\bin

6. Maven Repository
There are 3 types of maven repository:
• Local Repository
• Central Repository
• Remote Repository
Maven searches for the dependencies in the following order: Local repository then
Central repository then Remote repository. Local Repository: Means .m2 folder in
your system
Central Repository: Maven central repository is located on the web. It has been
created by the apache maven community itself
Remote Repository: Company Specific Library or Custom Library <project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>Cucumber</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>selenium</name>
<url>http://maven.apache.org</url>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.5.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

Project: It is the root element of pom.xml file


Model Version: It is the sub element of project. It specifies the model Version. It should
be set to 4.0.0
Group Id: will identify your project uniquely across all projects (com.test.selenium)
Artifact Id: project name
Packaging: defines packaging type such as jar, war etc.
Dependencies: defines dependencies for this project.
Dependency: defines a dependency. It is used inside dependencies.
Scope: defines scope for this maven project. It can be compile, provided, runtime,
test and system.

FPT Software Academy – #Code Your Life


FPT Software Academy – #Code Your Life
7. Maven Life Cycle
• validate - validate the project is correct and all necessary information is available
• compile - compile the source code of the project
• test - test the compiled source code using a suitable unit testing framework. These
tests should not require the code be packaged or deployed
• package - take the compiled code and package it in its distributable format, such as a
JAR.
• verify - run any checks on results of integration tests to ensure quality criteria are met
• install - install the package into the local repository, for use as a dependency in other
projects locally
• deploy - done in the build environment, copies the final package to the remote
repository for sharing with other developers and projects.

mvn deploy:deploy-file -DgroupId=<group-id> \


-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<type-of-packaging> \
-Dfile=<path-to-file> \
-DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
-Durl=<url-of-the-repository-to-deploy>
===================================================================

FPT Software Academy – #Code Your Life


JAVA HASHMAP INTERVIEW QUESTIONS

1.How does put() method of HashMap works in Java? On hashing principle of key value
pair

2. What is the requirement for an object to be used as key or value in HashMap?


3. What will happen if you try to store a key which is already present in HashMap?
4. Can you store a null key in Java HashMap?
5. Can you store a null value inside HashMap in Java?
6. How does HashMap handle collisions in Java?
7. Which data structure HashMap represents?
8. Which data structure is used to implement HashMap in Java?
9. Can you store a duplicate key in HashMap? (answer)
10. Can you store the duplicate value in Java HashMap? (answer)
11. Is HashMap thread-safe in Java?
12. What will happen if you use HashMap in a multithreaded Java application?
13. What are the different ways to iterate over HashMap in Java?
14. How do you remove a mapping while iterating over HashMap in Java?
15. In which order mappings are stored in HashMap?
16. Can you sort HashMap in Java? (answer)
17. What is the load factor in HashMap? A load factor is a number that controls the
resizing of HashMap when a number of elements in the HashMap cross the load factor
as if the load factor is 0.75 and when becoming more than 75% full then resizing trigger
which involves array copy.
18. How does resizing happens in HashMap? (answer)
19. How many entries you can store in HashMap? What is the maximum limit?
20. What is the difference between the capacity and size of HashMap in Java?
21. What will happen if two different keys of HashMap return the same hashcode()?
===========================================================================
String one line que.

java.lang.String class is used to create a string object.


Different String methods:
• compareTo - The Java String compareTo() method is used for comparing two strings
lexicographically.
• boolean equals() - The java string equals() method compares the two given strings
based on the content of the string (case sensitive)
• String concat() – concat two strings
• boolean equalsIgnoreCase() - The java string equals() method compares the two given
strings based on the content of the string (not casesensitive)
• char charAt() – index position - The java string charAt() method returns a char value
at the given index number.
• boolean contains()
• toUpperCase() – convert to upper case
• toLowerCase() – convert to lower case

FPT Software Academy – #Code Your Life


• trim() – remove spaces from both sides of string
• substring() -- returns part of string
• boolean endsWith()
• boolean startWith() – ends with specified suffix or not
• int length()
• replace()
• int num = Integer.parseInt(str);- Convert String to int using Integer.parseInt(String)
• int num = Integer.valueOf(str);- Convert String to int using Integer.valueOf(String)
• Convert int to String using
String.valueOf() String int ivar = 123;
String str = String.valueOf(ivar);
System.out.println("String is: "+str);
System.out.println(555+str);
• Convert int to String using Integer.toString()
int ivar = 123;
String str = Integer.toString(ivar);
System.out.println("String is: "+str);
System.out.println(555+str);
• In java, string objects are immutable. Immutable simply means unmodified or
unchangeable.Once string object is created its data or state can't be changed but a new
string object is created.

======================================================================
Array one line que.

• Write down syntax of iterator function?


Iterator<String> it = studentList.iterator();
while(it.hasNext()){ System.out.println(it.next());
}

• How to find max min of an unsorted array?


MAX
public class maxmin {
public static void main(String[] args) { int [] arr = {1, 45, 67, 98, 455, 678};
int max = Integer.MIN_VALUE;
for ( int element :
arr){
if(element>max)
{ max=element;
}
}
System.out.println(“Max element is " + max);
}}
MIN
public class maxmin {
public static void main(String[] args) { int [] arr = {1, 45, 67, 98, 455, 678,-6};

FPT Software Academy – #Code Your Life


int min = Integer.MAX_VALUE;
for ( int element : arr){
if(element<min){
min=element;
}
}
System.out.println(“Min element is " + min);
}}
===================================================================
1. How to reverse any array? public class reverse array {
public static void main(String[] args) { int [] arr = {1, 45, 67, 98, 455, 678};
int l = arr.length;
int n =
Math.floorDiv(l,2); int
temp;
for(int i=0; i<n;i++){ temp= arr[i]; arr[i]= arr[l-i-1]; arr[l-i-1]= temp;
}
for(int element:arr)
{
System.out.print( element + " ");
}
}}
================================================================
public class reverse array {
public static void main(String[] args) { int [] Array ={7,8,9,3,4,6,11,67,98};
int k=Array.length-1; for(k=Array.length-1;k>=0;k--){
System.out.print( Array[k] + " ");
}
}}
===================================================================

1. How to remove duplicate elements from ArrayList? we can handle this scenario via
LikedHashSet
ArrayList<Integer> numbers = new
ArrayList<Integer>(Arrays.asList(1,2,2,4,6,7,2,3,5,4,3,8,2,8)); LinkedHashSet<Integer>
linkedHashSet = new LinkedHashSet<Integer>(numbers); ArrayList<Integer>
numbersListWithoutDuplicate = new ArrayList<Integer>(LinkedHashSet));
System.out.println(numbersListWithoutDuplicate);

FPT Software Academy – #Code Your Life


Also we can handle this via stream
ArrayList<Integer> marksList = new
ArrayList<Integer>(Arrays.asList(1,2,2,4,6,7,2,3,5,4,3,8,2,8)); List<Integer>
marksListUnique= marksList.stream().distnict().collect(Collectors.toList());
System.out.println(marksListUnique);

2. How to compare two array list? Via Collection.sort(); and equal

3. How to find additional element in list while comparing 2 List?


If we have 2 list l1 & l2 , first we remove all element of l2
L1.removeAll(l2):
Sysout(L1) – you will get additional element.

4. How to find common element in list while comparing 2 List?


L1.retainAll(L2);
Sysout(L1) – you will get common element.

5. How will you print length of string without using length method.
String str = “Pankaj”
Sysout(str.toCharArray().length);
Sysout(str.lastIndexOf(“”));

6. How to find missing element in integer array?

7. How to reverse a string?

1.
String str = “Pankaj”; int len = str.length();
String rev = ” ”
for(int i<len-1 , i>=0, i-
-){ rev = rev +
str.charAt(i);
}
Sysout(rev);

2.
Create a string-> create new stringBuffer and here you can apply reverse fuction.
String str = “Pankaj”;
StringBuffer sf = new
StringBuffer(s);
Sysout(sf.reverse());

8. How will you remove special/junk char from string?


We have to use regular expression [a-z, 0-9, A-Z]

String str = “Y^%^*%&*^*(&*(Pankaj”;

FPT Software Academy – #Code Your Life


Str= Str.replaceAll([^a-z, 0-9, A-Z], “”);
Sysout(str);

9. How to reverse an Integer?

int num = 12345; int rev = 0;


while(num !=0){
rev =rev *10+ num %
10; num = num/10;
}
Sysout (rev)
}

========================================================================
//How to handle alert in Selenium write the syntax.
public boolean isAlertPresent() {
try
{
driver.switchTo().alert();
return true;
}
catch (Exception e)
{
return false;
}
}
-----------------------------------------------------------------------------------------------------------------------------
@Test // How can you switch to alert in selenium.
public void test4() {
driver.switchTo().alert().accept();
driver.switchTo().alert().dismiss();
Alert text = driver.switchTo().alert();
System.out.println(text.getText());
}
-------------------------------------------------------------------------------------------------------------------------------
@Test // How can you switch to frame in selenium
public void test5() {

FPT Software Academy – #Code Your Life


driver.switchTo().frame(0);
driver.switchTo().frame("frame");
driver.switchTo().frame(driver.findElement(By.xpath("//input[@title='Search']")));
driver.switchTo().defaultContent();
}
----------------------------------------------------------------------------------------------------------------
@Test // How can you handle windows in selenium
public void test6() {
String pwindow = driver.getWindowHandle();
// To get the window handle of single parent window
Set<String> allWindows = driver.getWindowHandles();

// To get the window handles of all open windows in


browser. Iterator<String> allWindow =
allWindows.iterator();
// Apply iterator method to iterate on open windows.
String parentWindow = allWindow.next();

// getting the next window handle by using .next()


method
driver.switchTo().window(parentWindow
);

// After getting window handle switching to that


window. String childWindow =
allWindow.next();
driver.switchTo().window(childWindow)
; driver.switchTo().defaultContent();
// this command will get us back to parent window from child window.
}
-------------------------------------------------------------------------------------------------------------------------------
@Test // How to use waits in selenium
public void test7() {
// below one is implicit wait which is applicable for all the we elements
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

FPT Software Academy – #Code Your Life


// below one is Explict wait syntax , first we need to create object of
WebDriverWait.
WebDriverWait wait = new WebDriverWait(driver, 10);
// here you can do your validation of your action whatever you want to check.
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@title='Searc
h']")));
}
-------------------------------------------------------------------------------------------------------------------------------

@Test // How to mouse hover in selenium & drag drop


public void test8() {
// To do mouse hover & drag drop first we need to create object of
Actions class for web driver instance
Actions act = new Actions(driver);

// now we have to use moveToElement method of action


class. //And to complete the action we need to use build &
perform method
act.moveToElement(driver.findElement(By.xpath("//input[@title='Search']"))).build().perform();
act.dragAndDrop(driver.findElement(By.xpath("Source")),driver.findElement(By.xpath("target")));
}
-------------------------------------------------------------------------------------------------------------------------------
@Test // How to select options from drop down
public void test9() {
// To select options from drop down first we need to create object of select
class
Select sel = new Select(driver.findElement(By.xpath("")));

sel.selectByIndex(4); // to select item by index


sel.selectByValue(""); // to select item by value
sel.selectByVisibleText("text"); // to select item by visible
text
java.util.List<WebElement> allItems = sel.getOptions(); // To get all items of drop down
}
-------------------------------------------------------------------------------------------------------------------------------
@Test // How to get screenshots in selenium
public void test10() {

FPT Software Academy – #Code Your Life


// Directly we cannot take screenshots in selenium, we have to cast the
driver first with takescreenshot class
File shot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Now you have to store file in your drive location.
FileUtils.copyFile(shot, new File("D:\\shot1.jpg"));
}
-------------------------------------------------------------------------------------------------------------------------------
---
@Test // How to X & Y coordinates of window in selenium
public void test11() {
driver.manage().window().getPosition().getX();
driver.manage().window().getPosition().getY();
}
--------------------------------------------------------------------------------------------------------------
@Test // How you can count similar type of objects in web page.
public void test12() {
int size = driver.findElements(By.xpath("")).size();
}
------------------------------------------------------------------------------------------------------------------------
-
@Test // How to execute java script in selenium?
public void test13() {
//Directly we cannot use Javascript executer in selenium, we have to cast the
driver first with Javascript executer class
JavascriptExecutor jse =((JavascriptExecutor)driver);
jse.executeScript("window.scrollBy(0,600)");
}
----------------------------------------------------------------------------------------------------------------------------
@Test // How to read data from excel files using selenium?
public void test14() {

FPT Software Academy – #Code Your Life


Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
Sheet sheet = workbook.getSheetAt(0);
}

@Test // How to connect to database using selenium?


public void test15() {
DriverManager.getConnection(URL, "username", "password");
}
-------------------------------------------------------------------------------------------------------------------------------
ABSTRACTION

In Page Object Model design pattern, we write locators (such as id, name, xpath etc.,) in a
Page Class. We utilize these locators in tests, but we can’t see these locators in the tests.
Literally we hide the locators from the tests.
Abstraction is the methodology of hiding the implementation of internal details and
showing the functionality to the users.
INTERFACE
Basic statement we all know in Selenium is WebDriver driver = new FirefoxDriver();

WebDriver itself is an Interface. So based on the above statement WebDriver driver = new
FirefoxDriver(); we are initializing Firefox browser using Selenium WebDriver. It means we are
creating a reference variable (driver) of the interface (WebDriver) and creating an Object. Here
WebDriver is an Interface as mentioned earlier and FirefoxDriver is a class.

An interface in Java looks like a class but both the interface and class are two different
concepts. An interface can have methods and variables just like the class, but the methods
declared in interface are by default abstract. We can achieve 100% abstraction and multiple
inheritance in Java with Interface.
INHERITANCE

We create a Base Class in the Framework to initialize WebDriver interface, WebDriver waits,
Property files, Excels, etc., in the Base Class.
We extend the Base Class in other classes such as Tests and Utility Class. Extending one
class into other class is known as Inheritance.
POLYMORPHISM

Combination of overloading and overriding is known as Polymorphism. We will see both


overloading and overriding below.
Polymorphism allows us to perform a task in multiple ways.
METHOD OVERLOADING

FPT Software Academy – #Code Your Life


We use implicit wait in Selenium. Implicit wait is an example of overloading. In Implicit wait we use
different time stamps such as SECONDS, MINUTES, HOURS etc.,
A class having multiple methods with same name but different parameters is called Method Overloading
METHOD OVERRIDING

We use a method which was already implemented in another class by changing its parameters. To
understand this you need to understand Overriding in Java.
Declaring a method in child class which is already present in the parent class is called Method
Overriding. Examples are get and navigate methods of different drivers in Selenium.
ENCAPSULATION

All the classes in a framework are an example of Encapsulation. In POM classes, we declare the data
members using @FindBy and initialization of data members will be done using Constructor to utilize
those in methods.
Encapsulation is a mechanism of binding code and data together in a single unit.
I would like to discuss some other topics which we use in Automation Framework.
WEB ELEMENT:
Web element is an interface used to identify the elements in a web page.
WEBDRIVER:

WebDriver is an interface used to launch different browsers such as Firefox, Chrome, Internet Explorer,
Safari etc.,
FIND BY:
FindBy is an annotation used in Page Object Model design pattern to identify the elements.
FIND ELEMENT:
Find Element is a method in POM to identify the elements in a web page.

How to find duplicate char using hashmap?


Find the count of char using hashmap?

FPT Software Academy – #Code Your Life


Top 7 Selenium Commands with Details
#1) get() Methods
driver.get("https://google.com");

driver.getClass();

driver.getCurrentUrl();

driver.getPageSource();

driver.getTitle();

driver.getText();
driver.findElement(By.id("findID")).
getAttribute("value");

driver.getWindowHandle();

#2) Locating links by linkText() and partialLinkText()


driver.findElement(By.linkText(“Google”)).click();

driver.findElement(By.partialLinkText(“abode”)).click();

#3) Selecting multiple items in a drop dropdown


// select the multiple values from a dropdown

Select selectByValue = new Select(driver.findElement(By.id("SelectID_One")));

selectByValue.selectByValue("greenvalue"); - By Value

selectByValue.selectByVisibleText("Red"); - By Visible Text

selectByValue.selectByIndex(2); - By Index

#4) Submitting a form


// submit the form

driver.findElement(By.<em>id</em>("submit")).submit();

#5) Handling iframes


Select iframe by id
driver.switchTo().frame(“ID of the frame“);
Locating iframe using tagName
driver.switchTo().frame(driver.findElements(By.tagName(“iframe”).get(0));
Locating iframe using the index:

FPT Software Academy – #Code Your Life


a) frame(index)
driver.switchTo().frame(0);
b) frame(Name of Frame)
driver.switchTo().frame(“name of the frame”);
c) frame(WebElement element) Select
Parent Window
driver.switchTo().defaultContent();
#6) close() and quit() methods
driver.close(); - closes only a single window that is being accessed by the WebDriver instance
currently

driver.quit();- closes all the windows that were opened by the WebDriver instance

#7) Exception Handling


WebElement saveButton = driver.findElement(By.id("Save"));
try{
if(saveButton.isDisplayed()){
saveButton.click();
}
}
catch(NoSuchElementException e){
e.printStackTrace();
}

#4) isEnabled()

isEnabled() to Check Whether the Element is Enabled Or Disabled in the Selenium WebDriver.

findElement(By, by) with sendKeys() to type in the form fields.

findElement(By, by) with getText() to store value of targeted web element.

Submit() to submit a web form.

findElements(By, by) to get the list of web elements.


List<WebElement> allChoices = dropDown.findElements(By.xpath(".//fruitoption"));

findElements(By, by) with size() to verify if an element is present.


Boolean checkIfElementPresent= driver.findElements(By.xpath("//input[@id='checkbox2']")).size()!= 0;

pageLoadTimeout(time,unit) to set the time for a page to load

driver.manage().timeouts().pageLoadTimeout(500, SECONDS);

implicitlyWait() to set a wait time before searching and locating a web element.
driver.manage().timeouts().implicitlyWait(1000, TimeUnit.SECONDS);
untill() from WebdriverWait and visibilityOfElementLocated() from ExpectedConditions to wait

FPT Software Academy – #Code Your Life


explicitly till an element is visible in the webpage.
WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated


(By.xpath("//input[@id=’name’]")));

untill() from WebdriverWait and alertIsPresent() from ExpectedConditions to wait explicitly till
an alert appears.

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.alertIsPresent()

);

Select class for selecting and deselecting values from the drop-down in Selenium WebDriver.
WebElement mySelectedElement = driver.findElement(By.id("select"));

Select dropdown= new Select(mySelectedElement);dropdown.selectByVisibleText("Apple");

navigate() to navigate between the URLs.


driver.navigate().to("https://www.softwaretestinghelp.com");

driver.navigate().back();

driver.navigate().forward();

getScreenshotAs() to Capture the entire page screenshot in Selenium WebDriver.


File shot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(shot, new File("D:\\ shot1.jpg"));

moveToElement() from the Actions class to simulate mouse hover effect.


Actions actions = new Actions(driver);

WebElement mouseHover = driver.findElement(By.xpath("//div[@id='mainmenu1']/div"));

actions.moveToElement(mouseHover);

actions.perform();

dragAndDrop() from Actions class to drag an element and drop it on another element.

FPT Software Academy – #Code Your Life


WebElement sourceLocator = driver.findElement(By.xpath("//*[@id='image1']/a"));
WebElement destinationLocator = driver.findElement(By.xpath("//*[@id='stage']/li"));

Actions actions=new Actions(driver);

actions.dragAndDrop(sourceLocator, destinationLocator).build().perform();

switchTo() and accept(), dismiss() and sendKeys() methods from Alert class to switch to popup
alerts and handle them.

Alert alert = driver.switchTo().alert();

alert.sendKeys("This Is Softwaretestinghelp");

alert.accept()

getWindowHandle() and getWindowHandles() to handle Multiple Windows in Selenium WebDriver.

String handle= driver.getWindowHandle();

Set<String> handle= driver.getWindowHandles();

for (String handle : driver.getWindowHandles()){

driver.switchTo().window(handle);

getConnection() from DriverManager to start Database Connection.


DriverManager.getConnection(URL, "username", "password" )

POI to read from the excel files.


Workbook workbook = WorkbookFactory.create(new FileInputStream(file));

Sheet sheet = workbook.getSheetAt(0);

Asserts using assertEquals(),assertNotEquals(), assertTrue() and assertFalse() to compare the


results.
Assert.assertEquals(message, “This text”);
Assert.assertNotEquals(message, “This text”);
Assert.assertTrue(result<0);
Assert.assertFalse(result<0);

FPT Software Academy – #Code Your Life


As a tester what should be your approach when requirements change continuously?

When requirement keeps changing, continuously agile tester should take following approach

• Write generic test plans and test cases, which focuses on the intent of the
requirement rather than its exact details
• To understand the scope of change, work closely with the product owners or business analyst
• Make sure team understand the risks involved in changing requirements especially
at the end of the sprint
• Until the feature is stable, and the requirements are finalized, it is best to wait if
you are going to automate the feature
• Changes can be kept to a minimum by negotiating or implement the changes in the next sprint

List out the pros and cons of exploratory testing (used in Agile) and scripted testing?

Pros Cons
Exploratory - It requires less preparation- Easy to - Presenting progress and Coverage to project
Testing modify management is difficult
when requirement changes- Works well
when
documentation is scarce
Scripted - In case testing against legal or - Test preparation is usually time-consuming-
Testing regulatory Same
requirements it is very useful steps are tested over and again- When
requirement
changes it is difficult to modify

Explain the difference between Extreme programming and Scrum?


Scrum Extreme Programing (XP)
- Scrum teams usually have to work in iterations called - XP team works in iteration that last for one or
sprints which two weeks
usually last up to two weeks to one month long
- Scrum teams do not allow change into their sprints - XP teams are more flexible and change their
iterations

- In scrum, the product owner prioritizes the product - XP team work in strict priority order, features
backlog but the developed are prioritized by the customer
team decides the sequence in which they will develop
the backlog items
- Scrum does not prescribe any engineering practices - XP does prescribe engineering practices

FPT Software Academy – #Code Your Life


4) What is an epic, user stories and task?

Epic: A customer described software feature that is itemized in the product backlog is known as
epic. Epics are sub-divided into stories

User Stories: From the client perspective user stories are prepared which defines project or
business functions, and it is delivered in a particular sprint as expected.

Task: Further down user stories are broken down into different task

5) Explain what is re-factoring?

To improve the performance, the existing code is modified; this is re-factoring. During re-
factoring the code functionality remains same

6) Explain how you can measure the velocity of the sprint with varying team capacity?

When planning a sprint usually, the velocity of the sprint is measured on the basis of
professional judgement based on historical data. However, the mathematical formula used to
measure the velocity of the sprint are,

• first – completed story points X team capacity: If you measure capacity as a


percentage of a 40 hours weeks
• Second – completed story points / team capacity: If you measure capacity in man-hours

For our scenario second method is applicable.

7) Mention the key difference between sprint backlog and product backlog?

Product backlog: It contains a list of all desired features and is owned by the product owner.

Sprint backlog: It is a subset of the product backlog owned by development team and
commits to deliver it in a sprint. It is created in Sprint Planning Meeting

8) In Agile mention what is the difference between the Incremental and Iterative development?

Iterative: Iterative method is a continuous process of software development where the


software development cycles are repeated (Sprint & Releases) till the final product is
achieved.
Release 1: Sprint 1, 2… n
Release n: Sprint 1, 2….n

Incremental: Incremental development segregates the system functionality into increments or portions.
In each increment, each segment of functionality is delivered through cross-discipline work, from the
requirements to the deployment.

FPT Software Academy – #Code Your Life


9) Explain what is Spike and Zero sprint in Agile? What is the purpose of it?

Sprint Zero: It is introduced to perform some research before initiating the first sprint. Usually
this sprint is used during the start of the project for activities like setting development
environment, preparing product backlog and so on.

Spikes: Spikes are type of stories that are used for activities like research, exploration,
design and even prototyping. In between sprints, you can take spikes for the work related to
any technical or design issue. Spikes are of two types Technical Spikes and Functional
Spikes.

10) What is test driven development?

Test driven development or TDD is also known as test-driven design. In this method, developer
first writes an automated test case which describes new function or improvement and then
creates small codes to pass that test, and later re-factors the new code to meet the acceptable
standards.

11) Prototypes and Wireframes are widely used as part of?

Prototypes and Wireframes are prototypes that are widely used as part of Empirical Design.

12) Explain what is Application Binary Interface?

Across different system platforms and environments a specification defining requirements


for portability of applications in binary form is known as Application Binary Interface.

13) Explain in Agile, burn-up and burn-down chart?

To track the project progress burnup and burn down, charts are used.

Burnup Chart: It shows the progress of stories done over time.

Burndown Chart: It shows how much work was left to do overtime.

14) Explain what is Scrum ban?

Scrum ban is a software development model based on Scrum and Kanban. It is specially
designed for project that requires frequent maintenance, having unexpected user stories and
programming errors. Using these approach, the team’s workflow is guided in a way that allows
minimum completion time for each user story or programming error.

15) What is story points/efforts/ scales?

It is used to discuss the difficulty of the story without assigning actual hours. The most common
scale used is a Fibonacci sequence ( 1,2,3,5,8,13,….100) although some teams use linear
scale (1,2,3,4….), Powers of 2 (1,2,4,8……)
and cloth size (XS, S ,M,L, XL).

FPT Software Academy – #Code Your Life


16) Explain what is tracer bullet?

The tracer bullet is a spike with the current architecture, the current set of best
practices, current technology set which results in production quality code. It is not a
throw away code but might just be a narrow implementation of the functionality.

17) What is a test stub?

A test stub is a small code that replaces an undeveloped or fully developed


component within a system being tested. Test stub is designed in such a way that
it mimics the actual component by generating specifically known outputs and
substitute the actual component.

18) What are the differences between RUP (Rational Unified Process) and Scrum
methodologies?
RUP SCRUM
- Formal Cycle is defined across four phases, but - Each sprint is a complete cycle
some workflows can
be concurrent
- Formal project plan, associated with multiple - No end to end project plan. Each next iteration
iterations is used. plan is determined at the end of the current
iteration

- Scope is predefined ahead of the project start and - It uses a project backlog instead of scope scrum
documented in
the scope document. During the project, scope can
be revised.
- Artifacts include Scope Document, formal functional - Operational software is the only formal artifacts
requirements
package, system architecture document,
development plan, test
scripts, etc.
- Recommended for long term, large, enterprise level - Recommended for quick enhancements and
projects with organization that are not dependent on a deadline
medium to high complexity
19) Why Continuous Integration is important for Agile?
Continuous Integration is important for Agile for following reasons.
• It helps to maintain release schedule on time by detecting bugs or integration errors
• Due to frequent agile code delivery usually every sprint of 2-3 weeks, stable
quality of build is a must and continuous integration ensures that
• In helps to maintain the quality and bug free state of code-base
• Continuous integration helps to check the impact of work on branches to the main
trunk if development work is going on branches using automatic building and merging
function

20)What testing is done during Agile?

The primary testing activities during Agile is automated unit testing and exploratory testing.

Though, depending on project requirements, a tester may execute Functional and Non-
functional tests on the Application Under Test (AUT).

FPT Software Academy – #Code Your Life


21) Explain what is Velocity in Agile?

Velocity is a metric that is calculated by addition of all efforts estimates related with user
stories completed in an iteration. It figures out how much work Agile can complete in a sprint
and how much time will it need to finish a project.

22) What are the qualities of a good Agile tester should have?

A good Agile tester should have following qualities

• It should be able to understand the requirements quickly


• Agile tester should know Agile principals and concepts well
• As requirements keep changing, tester should understand the risk involve in it
• Based on the requirements Agile tester should be able to prioritize the work
• Continue communication between business associates, developers and tester is must

23)Who are all involved in the Agile team?

In agile the two main leads are

• Scrum Masters: It coordinates most of the inputs and outputs required for an agile
program
• Development Managers: They hire right people and develop them with the team

24)Mention in detail what are the role’s of Scrum Master?

Scrum Master key responsibilities involves

• Understand the requirements and turn them into working software


• Monitoring and Tracking
• Reporting and Communication
• Process Check Master
• Quality Master
• Resolve Impediments
• Resolve Conflicts
• Shield the team and performance feedback
• Lead all the meetings and resolve obstacles

25) Mention what are the Agile quality strategies?


Agile quality strategies are

• Re-factoring
• Non-solo development
• Static and dynamic code analysis
• Reviews and Inspection
• Iteration/sprint demos
• All hands demo
• Light weight milestone reviews
• Short feedback cycles
• Standards and guidelines

FPT Software Academy – #Code Your Life


26)Mention what are the Tools that can be useful for screenshots while working on Agile
projects?

While working on Agile projects you can use tools like

• BugDigger
• BugShooting
• qTrace
• Snagit
• Bonfire
• Usersnap

27)Mention what are the advantages of maintaining consistent iteration length


throughout the project?

The advantages are

• It helps team to objectively measure progress


• It provides a consistent means of measuring team velocity
• It helps to establish a consistent pattern of delivery

28)If a timebox plan needs to be reprioritized who should re-prioritise it?

If a timebox plan needs to be reprioritized it should include whole team, product owner, and
developers.

29) Mention what should a burndown chart should highlight?

The burn-down chart shows the remaining work to complete before the timebox (iteration) ends.

30)Mention what is the difference between Scrum and Agile?

• Scrum: In the scrum, a sprint is a basic unit of development. Each sprint is followed by a
planning meeting, where the tasks for the sprint are identified and estimated. During
each sprint, the team creates finished portion of a product

• Agile: In Agile, each iteration involves a team working through a full software
development cycle, including planning, design, coding, requirement analysis, unit
testing, and acceptance testing when a product is demonstrated to stakeholders

In simple words, Agile is the practice and scrum is the process to following this practice.

FPT Software Academy – #Code Your Life


31) Mention what are the challenges involved in AGILE software development?

Challenges involved in Agile Software development includes

• It requires more testing and customers involvement


• It impacts management more than developers
• Each feature needs to be completed before moving on to the next
• All the code has to work fine to ensure application is in working state
• More planning is required

32)When not to use Agile?

Before using Agile methodology, you must ask following questions

• Is functionality split-able
• Is customer available
• Are requirements flexible
• Is it really time constrained
• Is team skilled enough

33)Explain how can you implement scrum in an easy way to your project?

These are the tips which can be helpful to implement scrum in your project.

• Get your backlog in order


• Get an idea of the size of your product backlog items
• Clarify sprint requirement and duration to complete the sprint backlog
• Calculate the team sprint budget and then break requirements into tasks
• Collaborate workspace- a center of all team discussion, which includes plans,
roadmaps, key dates, sketches of functionality, issues, log, status reports, etc.
• Sprint- Make sure you complete one feature at a time before moving on to the next. A
sprint should not be abort unless if there is no other option
• Attend a daily stand-up meeting: In meeting you need to mention, what have been
achieved since the last meeting, what will they achieve before the next meeting and is
anything holding up their progress
• Use burndown chart to track daily progress. From the burndown chart, you can estimate
whether you are on track, or you are running behind
• Complete each features well before moving on to the next
• At the end of the sprint- hold a sprint review meeting, mention what is achieved or
delivered in the sprint.

34) Explain what does it mean by product roadmap?

A product roadmap is referred for the holistic view of product features that create the product
vision.

FPT Software Academy – #Code Your Life

You might also like