Serkan Bey Tester Interview Questions Sozel
Serkan Bey Tester Interview Questions Sozel
I STARTED AS A MANUAL TESTER IN MY CAREER IN SYMUND COMPANY AND NEXT YEAR JUMPED TO AUTOMATION TESTER.
JAVA IS MY PRIMARY PROGRAMMING LANGUAGE AND I USE SELENIUM WEBDRIVER AS A TEST AUTOMATION TOOL.
I HAVE KNOWLEDGE OF MAKING FRAMEWORK FROM SCRATCH BUT AS YOU KNOW IT IS NOT A SINGLE PERSON JOB. ALONG WITH A TEAM I CAN EASILY DO A FRAMEWORK FROM
SCRATCH. I CAN MAKE A MISTAKE SO I DON’T WANT LET MY TEAM DOWN BECAUSE OF ME
FOR BACKEND TEST I AM USING SQL FOR RETRIEVING DATA FROM DATABASE WITH THE HELP OF JDBC.
AND ALSO I USED API TESTING ON MY PROJECT AND I USED RESTFULL AND REST ASSURED LIBRARY.
I USED JENKINS FOR CONTINUOUS INTEGRATION AND I USED SELENIUM GRID.(FOR MULTIPLE TEST ACROSS DIFFERENT BROWSERS, OPERATING SYSTEM AND MACHINES IN
PARALLEL.)
I AM A QUICK LEARNER PERSON AND I AM VERY WILLING TO LEARN NEW DOMAINS. I CAN EASILY ADAPT MYSELF TO NEW TOOLS AND CIRCUMSTANCES.
I AM CROSS FUNCTIONAL TEAM PLAYER,OPEN-MIND,DETAILED ORIENTED, RESPONSIBLE TEAM PLAYER AND CULTURE ORIENTED.
TELL ME ABOUT YOUR PROJECT?
IN MY LAST PROJECT I WAS WORKING ON FLEET MANAGEMENT. IT’S AN INTERNAL APPLICATION.
• FLEET MANAGEMENT MODULE AND ITS SUB MODULES LIKE VEHICLE ODOMETER,VEHICLE COSTS,VEHICLE CONTRACTS,VEHICLE INFORMATION,VEHICLE
MODEL, AND SERVICE LOG.
• FIRST TO DO THE MANUAL TEST, THEN ACCORDING TO MANUAL TEST TO WRITE THE AUTOMATION SCRIPT.
• AND THEN I ANALYZE SMOKE TEST RESULT AND CHECKING STABILITY AND BUG FREE.
• AND ALSO IF DEVELOPERS ADD SOME NEW FEATURE DO REGRESSION TEST AT THE END OF THE EACH SPRINT.
TELL ME YOUR FRAMEWORK
WHEN I JOIN THE COMPANY, THE FRAMEWORK WAS ALREADY EXIST
AS A AUTOMATION ENGINEER MY RESPONSIBILITY TO MAINTAIN THE FRAMEWORK AND DOING REGULAR REGRESSION AND SMOKE
TESTS.
I MADE SOME IMPROVEMENTS IN THE FRAMEWORK TO MAKE IT MORE INDEPENDENT AND MORE REUSABLE WITH THE HELP OF POM
DESIGN PATTERN.
OUR FRAMEWORK WAS HYBRID, IT IS COMBINATION OF BDD(BEHAVIOR DATA DRIVEN) AND DDT(DATA DRIVEN TEST).
I USED GHERKIN LANGUAGE WHILE GENERATE MY FRAMEWORK FOR UNDERSTANDABLE WHO HAS NO TECHNICAL SKILL.
FOR THE TEST RESULTS WE WERE USING EXTEND REPORTS OR CUCUMBER HTML REPORTS AND IT WAS INTEGRATED TO THE JENKINS.
IN MY COMPANY CI/CD WAS ALREADY SET UP BY DEVOPS AND WHEN I WAS COMMITTING MY CODES TO GITHUB, IT WAS TRIGGERING
THE JENKINS TO BUILD, AND SENDING ME THE RESULT. BRIEFLY, THIS WAS MY FRAMEWORK.
TELL ME YOUR DAY TO DAY ACTIVITY?
MY DAY STARTS AT 9 A.M. AND I GET REPORTS FROM SMOKE TEST AND ANALYZE IT TO MAKE SURE THE
APPLICATION IS STABLE.MEAN ENVIRONMENT IS UP AND RUNNING.
AFTER ANALYZE SMOKE TEST REPORTS:
IF THERE IS A SERVICE ISSUES, I WILL IMMEDIATELY CONTACT DEVOPS TEAM,
IF IT’S ABOUT MY SCRIPTS, I WILL DEBUG(FIND MISTAKES) MY SCRIPTS, AND FIX IT,
IF IT’S A BUG, I WILL REPRODUCE IT AND LOG THE DEFECT(SAVE THE DEFECT).
I ALSO CHECK MY SCHEDULE IF THERE ANY IMPORTANT TASKS.
THEN I ATTEND MY DAILY STAND-UP MEETING(10:30 AM) WITH MY SCRUM TEAM FOR ABOUT 15
MINUTES. WE ANSWER 3 QUESTION YOU KNOW. WHAT DID YOU DO YESTERDAY? WHAT YOU ARE
GONNA DO TODAY? IS THERE ANY BLOCKER, OBSTACLES OR IMPEDIMENTS?
AFTER MY MEETING IS OVER, I GO BACK TO MY DESK AND CONTINUE AUTOMATING TEST CASES FROM
THE DAY BEFORE.(WHERE I LEFT)
THIS IS HOW MY DAYS GO AT WORK
BUG LIFE CYCLE
After find a bug go to jira-xray and click create(NEW)
And Assign it related person(ASSIGN)
After assigned, it will be seen from another person(OPEN)
After developer look at it, he/she can say this is opened before or
rejected…..
And then fix it(FIXED)
After fixed it test it again(RETEST)
After retest if problem is continue assign it related person again
If bug is fixed confirm it is fixed(VERIFIED)
And closed the cycle
Rejected: If the developer feels the defect is not a valid
defect then it changes the defect to “rejected."
Duplicate: If the defect is repeated twice or the defect
corresponds to the same concept of the bug.
Not a bug: If it does not affect the functionality of the
application then the status assigned to a bug is "Not a bug”.
Deferred: If the present bug is not of a prime priority and if it
is expected to get fixed in the next release or in the future.
WHAT WE DO SPRINT,DEMO AND RETRO MEETING?
SPRINT PLANNING MEETING
AND WE DECIDE WHICH ONE WILL WORK ON WHICH STORY DEPENT ON THE CAPACITY
RETRO
TEAM ANSWER QUESTIONS? WHAT WENT WELL AND WHAT CAN BE IMPROVED?
GROOMING MEETING
GROOMING (OR REFINEMENT) IS A MEETING OF THE SCRUM TEAM IN WHICH THE PRODUCT BACKLOG ITEMS ARE DISCUSSED AND THE NEXT SPRINT
PLANNING IS PREPARED.
ROLES IN AGILE
Product Owner
He/she works as the voice of the client mean h/she represent client
Manages the product backlog
Responsible(accountable) for the outcome of the project
Set priorities
Manage the release plan(he/she decide when product will be release)
Product owner reporting everything to the vice president
Scrum Master
Facilitates team and communication between team(not menager)
Removes impediments(blockers or obstacles)
Manage process
Teach scrum
Protect team
Enforce rules
He/she is not part of the team
Holds 15 min daily scrum meeting
He run sprint planning meeting
Maintains burndown chart(it shows the amount of work remaning per spring)
Development Team
Develop product
Works collaboratively and share resbonsibilities among each other
Resbonsible for designing,implementing and fixing the bug of the product
Responsible for delivering the product at the end of the each sprint
Report progress
Team is self-organizing and self-menaging
WHAT IS ERROR,DEFECT,BUG AND FAILURE?
WHAT IS AN ERROR?
A mistake in code is called Error . (Mean mistake about code that written by developer)
WHAT IS A DEFECT?
The variation between the actual results and expected results is known as defect. Error found by tester is
called defect.
WHAT IS A BUG?
If testers find any mismatch in the application/system in testing phase and defect accepted by development
team is called Bug.
WHAT IS A FAILURE?
After release, if an end user finds an issue then that particular issue is called as failure or if build does not meet
the requirements then it is Failure.
AUTOMATING TESTING?
WHAT IS AUTOMATING TESTING?
It is a process of testing the software using a automation tool like selenium webdriver to find a defect.
WHAT WE TEST?
To find bug
To satisfied end user and client.
To build great product
WHY PAGE OBJECT MODEL?
PAGE OBJECT MODEL IS DESIGN PATTERN WHICH USED COMMONLY WITH SELENIUM WEBDRIVER.
THE MAIN GOAL FOR CREATING POM IS,EASY TO MAINTAIN OUR SCRIPTS AND REDUCE THE CODE REDUNDANCY OR
DUPLICATION.
I CREATE PAGE CLASS FOR EVERY PAGE OF OUR APPLICATION AND PUT ALL LOCATORS AND RELATED METHODS IN THAT
CLASS.(PUT ALL REUSABLE AND COMMON METHOD INSIDE.LIKE WAIT TIME,SCROLL DOWN,PAGEFACTORY,DELETECOOKIES…)
WHEN I NEEDED RESUABLE METHODS I CAN EXTENDS BASEPAGE AND CALL REUSABLE METHODS INSIDE OF THE BASEPAGE
FROM ANOTHER PAGES.
• EASY TO MAINTAIN
• RE-USABILITY OF CODE
• RELIABILITY
SINGLETON DESIGN PATTERN?
SINGLETON DESIGN PATTERN: PRIVATE CONSTRUCTOR, PRIVATE-STATIC OBJECT AND PUBLIC
GETDRIVER METHOD WITH RETURN
A SINGLETON CLASS IS A CLASS THAT CAN HAVE ONLY ONE OBJECT AT A TIME.
AFTER CREATE CLASS
DECLARE CONSTRUCTOR OF CLASS AS PRIVATE SO THAT NO ONE INSTANTIATE CLASS
OUTSIDE OF IT
DECLARE A STATIC REFERENCE VARIABLE OF CLASS.STATIC IS NEEDED TO MAKE IT
AVAILABILITY GLOBALLY.
DECLARE A STATIC GET METHOD WITH RETURN TYPE AS OBJECT OF CLASS
IN MY FRAMEWORK I AM USING SINGLETON OBJECTS FOR THE WEBDRIVER. THIS MEANS ONE
OBJECT IS SHARED AMONG EVERY TEST.
IF YOU WANNA DO PARALLEL TEST ,INHERITABLE THREADLOCAL CREATE A SEPARATE OBJECT
FOR EACH THREAD.
SINGLETON DESIGN PATTERN?
public class Driver {//Create a class
case "firefox":
WebDriverManager.firefoxdriver().setup();
driverPool.set(new FirefoxDriver());
SINGLETON DESIGN PATTERN?
public class MyDriver {
private static ThreadLocal<WebDriver> DriverPool = new ThreadLocal<>();
private MyDriver() {//for singleton design pattern constructor should be privete in MyDriver
}
public static WebDriver get() {
//if this thread doesn't have a web Driver yet - create it and add to pool
if (DriverPool.get() == null) {
System.out.println("TRYING TO CREATE Driver");
// this line will tell which browser should open based on the value from properties
file
String browserParamFromEnv = System.getProperty("browser");
String browser = browserParamFromEnv == null ?
ConfigurationReader.getProperty("browser") : browserParamFromEnv;
switch (browser) {
case "chrome":
WebDriverManager.chromedriver().setup();
DriverPool.set(new ChromeDriver());
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
DriverPool.set(new FirefoxDriver());
break;
//return corresponded to thread id webDriver object
return DriverPool.get();
WHAT IS PAGE FACTORY?
PAGEFACTORY IS A CLASS IN SELENIUM. IT IS USED TO ACHIEVE PAGE OBJECT MODEL DESIGN.PAGEFACTORY IS A WAY
OF IMPLEMENTING THE “PAGE OBJECT MODEL”.
BY USING THE PAGE OBJECT PATTERN USING PAGEFACTORY WE CAN REDUCE OR ELIMINATE DUPLICATE TEST CODE.
IT IS USED TO INITIALIZE ELEMENTS OF A PAGE CLASS WITHOUT HAVING TO USE 'FINDELEMENT' OR 'FINDELEMENTS'.
WITH THE HELP OF PAGEFACTORY CLASS, WE USE ANNOTATIONS @FINDBY TO FIND WEBELEMENT. WE USE
INITELEMENTS METHOD TO INITIALIZE WEB ELEMENTS.
EVERY TIME A PAGE OBJECT IS CREATED, PAGEFACTROY DRIVER (BECAUSE OF THE CONSTRUCTOR)WILL BE LINKED TO
WEBLEMENTS @FINDBY IN THAT PAGE.
this.driver = driver;
//this method requires to provide webdriver object for @FindBy
//this means this page class
PageFactory.initElements(driver, BasePage.class); OR
PageFactory.initElements(driver, this); } }
WHAT IS STATIC KEYWORD?
STATIC BELONGS TO CLASS(YOU DON’T NEED TO CREATE OBJECT FOR
INVOKE IT)
STATIC KEYWORD USED FOR CLASS, METHODS OR VARIABLE TO
MAKE IT GLOBAL
ALL THE OBJECT WILL SHARE THE SAME VARIABLE
STATIC METHODS CAN NOT CALL FOR NON-STATIC MEMBERS
STATIC BLOCK EXECUTED REGARDLESS CREATE OBJECT
WHAT IS THE DIFFERENCES BETWEEN
THROW,THROWS AND TRY CATCH BLOCK?
THROW IS KEYWORD WHICH USED IN METHOD BODY
AFTER WRITING CODE IN THE TRY BLOCK, IF THE EXCEPTION IN THE CATCH BLOCK DOESN’T CATCH IT THEN WE USE FINALLY
BLOCK FOR WRITE SOME STATEMENT..
FINALLY BLOCK'S ONLY PURPOSE IS TO CLOSE THE RESOURCES WHICH YOU HAVE OPENED INSIDE TRY BLOCK. RESOURCES
COULD BE ANYTHING LIKE DATABASE CONNECTIONS,FILE WRITING/READING ETC:
CLOSE() STATEMENT IS USED TO CLOSE ALL THE OPEN STREAMS IN A PROGRAM. ITS A GOOD PRACTICE TO USE CLOSE() INSIDE
FINALLY BLOCK. SINCE FINALLY BLOCK EXECUTES EVEN IF EXCEPTION OCCURS SO YOU CAN BE SURE THAT ALL INPUT AND
OUTPUT STREAMS ARE CLOSED PROPERLY REGARDLESS OF WHETHER THE EXCEPTION OCCURS OR NOT.
InputStream input = null;
try { input = new FileInputStream("inputfile.txt");
} finally {
input.close(); }
If you use System.exit() in try block then finally block dosen’t get executed.
try { //try block
System.exit(0)
System.out.println("Inside try block");
} catch (Exception exp) {
System.out.println(exp);
} finally {
System.out.println("Java finally block"); }
DIFFERENCE BETWEEN AN EXCEPTION AND AN ERROR?
BOTH JAVA.LANG.ERROR AND JAVA.LANG.EXCEPTION CLASSES ARE SUB CLASSES
OF JAVA.LANG.THROWABLE CLASS
IN GENERAL ERRORS(UNCHECKED EXCEPTION) ARE WHICH NOBODY CAN CONTROL OR GUESS
WHEN IT HAPPENED, ON THE OTHER HAND EXCEPTION CAN BE GUESSED AND CAN BE
HANDLED.
ERRORS WHICH ARE MAINLY CAUSED BY THE ENVIRONMENT IN WHICH APPLICATION IS
RUNNING. FOR EXAMPLE, OUTOFMEMORYERROR OCCURS WHEN JVM RUNS OUT OF
MEMORY.
RECOVERING FROM ERROR IS NOT POSSIBLE. THE ONLY SOLUTION TO ERRORS IS TO
TERMINATE THE EXECUTION.