0% found this document useful (0 votes)
30 views136 pages

interview question

Uploaded by

emir deniz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views136 pages

interview question

Uploaded by

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

INTERVIEW QUESTIONS


TELL ME ABOUT YOURSELF
FIRST OF ALL I WOULD LIKE TO THANK YOU FOR HAVING ME AND APPRECIATE FOR YOUR TIME.

⮚ AS YOU SEE ON MY RESUME, MY NAME IS ………

⮚ I HAVE BEEN IN IT INDUSTRY ABOUT ….. YEARS.

⮚ DURING THESE YEARS I HAVE WORKED CLOUD AND TRANSPORTATION DOMAIN.

⮚ 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.

⮚ IN SYMUND I CREATE MY FRAMEWORK USING BY JAVA,SELENIUM,TESTNG AND MAVEN

⮚ IN PERFLEET COMPANY MY FRAMEWORK BASICALLY CONTAIN JAVA+SELENIUM+CUCUMBER+MAVEN+JUNIT

✔ 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.

⮚ FOR REPOSITORY AS USUAL I AM USING GITHUB.

⮚ I USED JENKINS FOR CONTINUOUS INTEGRATION AND I USED SELENIUM GRID.(FOR MULTIPLE TEST ACROSS DIFFERENT BROWSERS, OPERATING SYSTEM AND MACHINES IN
PARALLEL.)

⮚ IN MY CURRENT PROJECT WE ARE USING JIRA FOR BUG TRACKING TOOL.

⮚ AS A METHODOLOGY I AM WORKING IN AGILE.

⮚ I AM A CERTIFIED SCRUM MASTER AND OCA(ORACLE CERTIFIED ASSOCIATE).

⮚ 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.

⮚ THIS PROJECT IS ABOUT TRANSPORTATION IN BUSINESS.

⮚ MAIN GOAL OF THIS APPLICATION ARE

• TO REMOVE OR MINIMIZE THE RISKS WITH VEHICLE INVESTMENT,

• IMPROVING EFFICIENCY, AND PRODUCTIVITY

• REDUCING THEIR OVERALL TRANSPORTATION AND STAFF COSTS,

⮚ WITH MY CO-WORKERS I WAS WORK ON SOME MODULES LIKE

• FLEET, COSTUMERS,SALES,ACTIVITIES,MARKETING,REPORTS AND SYSTEM.

⮚ BUT MY FOCUS WAS ON

• FLEET MANAGEMENT MODULE AND ITS SUB MODULES LIKE VEHICLE ODOMETER,VEHICLE COSTS,VEHICLE CONTRACTS,VEHICLE INFORMATION,VEHICLE
MODEL, AND SERVICE LOG.

⮚ IN THIS PROJECT MY RESPONSIBILITIES WERE,

• 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.
⮚ AS ALL OTHER HYBRID FRAMEWORKS, MY FRAMEWORK WAS ALSO HAVING
❖ PAGES FOLDERS(WHICH WE STORE ALL LOCATORS ABOUT WEB ELEMENT AND METHODS),
❖ STEP DEFINITION FOLDERS(HOOK METHODS, METHODS WHICH COMES FROM FUTURE FILES)
❖ RUNNER CLASS FOLDERS(WHICH CONTAIN FEATURE,GLUE,DRYRUN,TAGS,PLUGIN),
❖ UTILITIES FOLDERS(I STORE COMMON METHODS INSIDE LIKE DRIVER,CONFIGURATION READER,BROWSER UTILS),
❖ PROPERTIES FILE(I STORE URL,USERNAME AND PASSWORD INSIDE),
❖ POM.XML(STORE DEPENDENCIES),
❖ FEATURES FOLDER(WRITTEN BY GHERKIN LANGUAGE). AND FOR DDT BASED ON DATA SIZE WE WERE USING SCENARIO OUTLINE, EXCEL SPREAD
SHEET AND ORACLE DATA-BASE VIA AWS.

⮚ 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

⮚ PO BRING ALL PRODUCT BACKLOG TO THE PLANNING MEETING

⮚ WE ANALYZE USER STORIES AND ACCEPTANCE CRITERIA WITH MY TEAM

⮚ MAKE SURE USER STORIES AND ACCEPTANCE CRITERIA ARE CLEAR

⮚ WE BREAK PRODUCT BACKLOG INTO THE SPRINT BACKLOG

⮚ AND WE DECIDE WHICH ONE WILL WORK ON WHICH STORY DEPEND ON THE CAPACITY

⮚ AND WHICH FUNCTIONALITY WILL BE FIRST(PRIORITY)

⮚ TEAM CAN ADJUSTED(+ OR -) DEPEND ON THE SPRINT CAPACITY

DEMO(SPRINT REVIEW MEETING)

⮚ DEV TEAM DEMONSTRATE THE RESULT TO THE P.O AND STAKEHOLDERS

RETRO

⮚ AT THE END OF THE SPRINT,TEAM EVALUATED TO FINISH SPRINT

⮚ 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.
Product Owner
ROLES IN AGILE
⮚ 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 ARE THE ADVANTAGES OF USING TEST AUTOMATION FRAMEWORK?


⮚ It saves time and money
⮚ Reusability of code
⮚ Easy reporting
⮚ Low cost maintenance
⮚ More reliable
⮚ Minimum human intervention
⮚ Mostly used for regression test

WHICH TEST SHOULD BE AUTOMATE?


⮚ If the application is stable and there are repetitive test(smoke test,regression test) and if there are huge data it
should be automate.Like smoke test,regression test and sanity test
⮚ If the application or webelement contain captcha(I am not robot,enter the code),Bitmap and barcode it should
be automate manual.

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.

ADVANTAGES OF USING PAGE OBJECT PATTERN:

• EASY TO MAINTAIN

• EASY READABILITY OF SCRIPTS

• REDUCE OR ELIMINATE DUPLICACY

• 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

private static WebDriver driverPool =null;

//Object should be private and static.


/*By doing private, I ensure that there is going to be only a single WebDriver object throughout the
framework
and none of the class will be able to create another WebDriver object */
//Static means one object is shared among every test.
private Driver() {//make the constructor private so that this class cannot be instantiated
}

public static WebDriver get() {//4


//if this thread doesn't have a web driver yet - create it and add to pool
if (driverPool.get() == null) {
// 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());
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.

public class BasePage {

public BasePage(Webdriver driver) {

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
EX;THROW NEW NULLPOINTEREXCEPTION();
⮚ THROWS IS USED IN METHOD SIGNATURE TO DECLARED THE EXCEPTION.
EX;PUBLIC VOID TEST() THROWS INTERRUPTEDEXCEPTION{🡺CHECKED
EXCEPTION
⮚ TRY-CATCH BLOCK
⮚ TRY BLOCK GETS EXECUTED WHEN EXCEPTION IS
CHECKED(THREAD.SLEEP),CATCH BLOCK GETS EXECUTED IF THE EXCEPTION
IS UNCHECKED.(ARITHMETIC EXCETION).IF ANY EXCEPTION HAPPENS DURING
RUNTIME IN THE TRY BLOCK, CATCH BLOCK WILL CATCH THAT EXCEPTION.
• I PREFER TRY CATCH BLOCK IN MY FRAMEWORK, CAUSE IF ANY EXCEPTION
HAPPENS DURING RUNTIME MY CODES NOT TERMINATED.
• TRY BLOCK:CODE THAT IS PROTECTED FOR ANY EXCEPTIONS
WHY WE USE FINALLY BLOCK AFTER TRY AND CATCH BLOCK?
⮚ FIRST OF ALL FINALLY BLOCKS GET EXECUTED REGARDLESS TRY AND CATCH BLOCK.

⮚ 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.
SDLC(SOFTWARE DEVELOPMENT LIFE CYCLE)
⮚ Requirement Phase:
⮚ Analysis Phase: Verification(Reviews,Inspection,walkthrough)🡺static(code not
⮚ Design Phase: executed) SDLC AND STLC?

⮚ Development Phase:
⮚ Testing Phase: Validation(Actual testing)🡺Dynamic(code will be executed)
⮚ Deployment
⮚ Maintenance Phase:

VERIFICATION IS THE PROCESS OF EVALUATING PRODUCTS OF A DEVELOPMENT PHASE TO FIND OUT WHETHER THEY MEET THE SPECIFIED
REQUIREMENTS. (BUSINESS AND TECHNICAL REQUIREMENT)COST OF ERRORS CAUGHT IN VERIFICATION IS LESS THAN ERRORS FOUND IN VALIDATION.

VALIDATION IS THE PROCESS OF EVALUATING SOFTWARE AT THE END OF THE DEVELOPMENT PROCESS TO DETERMINE WHETHER SOFTWARE MEETS THE
CUSTOMER EXPECTATIONS AND REQUIREMENTS. COST OF ERRORS CAUGHT IN VALIDATION IS MORE THAN ERRORS FOUND IN VERIFICATION.

STLC(SOFTWARE TESTING LIFE CYCLE)

REQUIREMENT ANALYSIS

⮚ PLANNING

⮚ CASE DEVELOPMENT

⮚ ENVIRONMENT SETUP

⮚ EXECUTION

⮚ CYCLE CLOSURE
The SDLC aims to produce a
high-quality software that
SOFTWARE DEVELOPMENT LIFE CYCLE?
meets or exceeds customer
expectations.
Requirement,Analysis=This phase is the main focus of project manager and stakeholders.Business requirements are
gathered in this phase. This is done through an SRS (Software Requirement
Specification) document which consists of all the product requirements to be designed and
SOFTWARE DEVELOPMENT LIFE CYCLE?
developed during the project life cycle.
•Who is going to use the system?
•What data should input into the system?
•What data should output to the system?
Design=In this phase system and software design is prepared from the requirement specifications.(which tools ,which
framework,which database or platform…..etc will be use.Architect decided)
Development(implement/coding)= In this phase, developers start build the entire system by writing
code using the chosen programming language. In the coding phase, tasks are divided into
units or modules and assigned to the various developers. It is the longest phase of the
Software Development Life Cycle process.
Testing=After code is developed,it is tested against the requirements to make sure this product is met with the client
expectation.
Deployment=Mean project deploy for costumer use.After deploy if any changes are required or caught any bugs they
will report it to the team.After they fix the problem second deploy happened.
Maintenance=During the using product if actual problem comes up it needs to be fixed from time to time.
SRS stand for software requirement specification and
it contains everything about requirement and some
WHAT IS SOFTWARE REQUIREMENT SPECIFICATION?
docs between company and end client.

The SRS is developed based the agreement


between customer and contractors. The
software requirement specification
document consistent of all necessary
requirements required for project
development.
It orepared by System Architect or Business
Analyst

Using the Software requirements


SRS should include;
specification (SRS) document on QA lead or
⮚ A description
managers of test
creates the functional
plan.
requirements,
⮚ System requirements,
⮚ Technical requirements,
⮚ Constraints,
⮚ Assumptions and acceptance
TYPES OF SOFTWARE REQUIREMENT SPECIFICATION?
FIRST OF ALL STLC IS PART OF THE TESTING IN SDLC.
STLC CONTAIN;
• REQUIREMENT ANALYSIS: DURING REQUIREMENT PHASE,
STLC(SOFTWARE WECYCLE)?
TESTING LIFE STUDY THE REQUIREMENTS FROM A TESTING
POINT OF VIEW TO IDENTIFY THE TESTABLE REQUIREMENTS AND WE TRY TO GRASP THE FUNCTIONALITIES OF
THE APPLICATION.
• TEST PLANNING: THE MOST IMPORTANT DELIVERABLE IS THE TEST PLAN. IN THIS DOCUMENT, WE COVER THE
SCOPE OF THE TEST, THE TEST STRATEGY, TESTING TYPES AND TOOLS TO BE IMPLEMENTED, ROLES AND
RESPONSIBILITIES.
• TEST CASE DEVELOPMENT: DURING THIS PHASE, WE GENERATE TEST CASES FOR EACH AND EVERY
FUNCTIONALITY, COVERED IN RTM, HAVE THEM REVIEWED BY PO AND DEVELOPERS JUST TO MAKE SURE WE
ARE ON THE SAME PAGE. WE ALSO WRITE THE AUTOMATION SCRIPTS WE WE ARE GONNA AUTOMATE THE
CASES.
• TEST ENVIRONMENT SETUP:TEST ENVIRONMENT DECIDES THE SOFTWARE AND HARDWARE CONDITIONS
UNDER WHICH A WORK PRODUCT IS TESTED. TEST ENVIRONMENT SET-UP IS ONE OF THE CRITICAL ASPECTS OF
TESTING PROCESS AND CAN BE DONE IN PARALLEL WITH TEST CASE DEVELOPMENT STAGE.
• TEST EXECUTION:DURING THIS PHASE, WE CARRY OUT THE TESTING BASED ON THE TEST PLANS AND THE
TEST CASES WE PREPARED. BUGS WILL BE REPORTED BACK TO THE DEVELOPMENT TEAM FOR CORRECTION
AND RETESTING WILL BE PERFORMED. FINALLY, TEST CASES ARE UPDATED WITH THE RESULTS, DEFECTS ARE
REPORTED . EACH AND EVERY ITEM ON RTM SHOULD BE COMPLETED AT THE END OF THIS STEP.
• CYCLE CLOSURE: WE PREPARE TEST CLOSURE REPORT AND END THE CURRENT CYCLE AND PREPARE FOR THE
UPCOMING TESTS.
⮚ AGILE MODEL
⮚ WATERFALL MODEL SDLC MODELS?

⮚ INCREMENTAL APPROACH
⮚ V-MODEL
⮚ SPIRAL MODEL
⮚ BIG BANG MODEL
⮚ AGILE IS ITERATIVE PRODUCT DEVELOPMENT METHODOLOGY THAT IS ALTERNATIVE TO THE
WATERFALL METHODOLOGY.
⮚ IT IS FOCUSED CLIENT PROCESS. SO, IT MAKES SURE THAT THE CLIENT IS CONTINUOUSLY INVOLVED
DURING EVERY STAGE. AGILE MODEL?

⮚ AGILE TEAMS ARE EXTREMELY MOTIVATED AND SELF-ORGANIZED SO IT LIKELY TO PROVIDE A


BETTER RESULT FROM THE DEVELOPMENT PROJECTS.
⮚ THE PROCESS IS COMPLETELY BASED ON THE INCREMENTAL PROGRESS. THEREFORE, THE CLIENT
AND TEAM KNOW EXACTLY WHAT IS COMPLETE AND WHAT IS NOT. THIS REDUCES RISK IN THE
DEVELOPMENT PROCESS.
⮚ IT IS USEFUL FOR BIG PROJECT
AGILE HAS FOLLOWING ADVANTAGES :
⮚ THE CHANGE IS WELCOMED. FOR EXAMPLE, AFTER THE SPRINT DEMO IF CLIENT DOES NOT LIKE
SOMETHING, WE CAN TAKE THEIR FEEDBACK AND IMPROVE THE PRODUCT. REQUIREMENT CHANGE
IS OK.
⮚ SINCE IT IS ITERATIVE DEVELOPMENT PROCESS, THE DEVELOPMENT TEAM CAN DEVELOPED PIECE
OF FUNCTIONALITY, GET FEEDBACK AND IMPROVE NEXT ITERATION. SO, THE PRODUCT WILL BE
CONTINUOUSLY IMPROVE.
⮚ WASTE IS ELIMINATED IN AGILE WITH THE HELP OF SCRUM MASTER. FOR EXAMPLE, IF I AM
BLOCKED, I DON’T HAVE TO WAIT AND WASTE MY TIME. SINCE TEAM MEMBERS COMMUNICATES
WITH EACH OTHER EFFICIENTLY WE CAN BE MORE PRODUCTIVE BY PREVENTING DUPLICATED
EFFORT.
⮚ AGILE SCRUM METHODOLOGY
WHAT ARE THE DIFFERENT TYPES OF AGILE METHODOLOGIES?

⮚ LEAN SOFTWARE DEVELOPMENT


⮚ KANBAN
⮚ EXTREME PROGRAMMING (XP)
⮚ CRYSTAL
⮚ DYNAMIC SYSTEMS DEVELOPMENT METHOD (DSDM)
⮚ FEATURE DRIVEN DEVELOPMENT (FDD)
WHAT IS TEST PLAN AND TEST CASE?
WHAT IS TEST PLAN?

SET OF SOFTWARE TESTING SCOPE AND


ACTIVITIES.TEST,OBJECTIVES,SCOPE,STRA
TEGY,RESOURCES,TOOLS,SCHEDULES
AND MORE…. ARE ALL DEFINED WITHIN
THE PLAN.IT IS PART OF THE STLC

HOW TO PREPARED EFFECTIVE TEST


PLAN?

⮚ IT SHOULD BE SIMPLE/SHORT TO
UNDERSTAND AND KEEP IT UP-TO-
DATE(BECAUSE TEST PLAN IS DYNAMIC)

WHO PREPARED TEST PLAN TEMPLETE?

⮚ TEAM LEAD

⮚ ONCE THE TEST PLAN IS WELL


PREPARED,TESTERS WRITE TEST
COMPENENT OF THE TEST PLAN DOCUMENT?

TEST PLAN IDENTIFIER

⮚ IT IS A UNIQUE NUMBER TO IDENTIFY THE TEST PLAN(LIKE PROJECT_NAME_001)

REFERENCES

⮚ SRS(SYSTEM REQUIREMENT SPECIFICATION),TEST STRATEGY,PROJECT GUIDELINE…ETC

TEST ITEMS

⮚ A LIST OF TEST ITEMS WHICH WILL BE TESTED(TESTING SHOULD BE DONE BOTH FRONT END AND
BACK END TESTING ON MAC AND LINUX ENVIROMENTS)

FEATURES TO BE TESTED OR NOT TESTED

⮚ A LIST OF FEATURES THAT WILL BE TESTED WITHIN THE PROJECT(LOGIN PAGE,DASHBOARD…


ETC).PAYMENT FEATURES WILL BE REMOVED IN FUTURE SO NO NEED TESTED.

APPROACH

⮚ HOW TESTING WILL BE PERFORMED?(ABOUT WHAT METHODOLOGY,WHAT TEST TECHNIQUE …ETC


WILL BE USE)
COMPENENT OF THE TES PLAN DOCUMENT?

PASS/FAIL PERCENTAGE

⮚ ALL MAJOR FUNCTIONALITY MUST WORK AS EXPECTED AND PASS PENCENTAGE OF TEST CASES
SHOULD BE MORE THAN %95 AND SHOULD NOT BE ANY CRITICAL BUG

SUSPENSION CRITERIA

⮚ IF ANY OF THE MAJOR FUNCTIONALITY ARE NOT FUNCTIONAL THE TESTING SHOULD BE SUSPEND.
(LIKE LOGIN FUNCT.)

TEST DELIVERABLE

⮚ LIST OF DOCUMENTS NEED TO BE DELIVERED AT EACH PHASE OF TESTING LIFE CYCLE(TEST


CASES,BUG REPORTS)

ENVIRONMENTAL NEEDS

⮚ LIST OF HARDWARE,SOFTWARE AND ANY OTHER TOOLS THAT ARE NEEDED FOR A TEST
ENVIROMENT

RESPONSIBILITIES

⮚ RESPOSIBILIES SHOULB BE SHARE BETWEEN TEAM(LIKE TEST PLAN SHOULD BE PREPARE BY


TEAM LEAD AND EXECUTION SHOULD BE BY TESTERS)
COMPENENT OF THE TES PLAN DOCUMENT?

STAFFING AND TRAINING NEEDS

⮚ IF THERE IS NEED ANY TRAINING FOR IMPROVE SKILLS AND ACHIEVE DESIRED GOALS(ESPECIALLY
IF THERE IS NEW HIRE)

SCHEDULE

⮚ COMPLETE DETAILS ON WHEN TO START OR FINISH AND HOW MUCH EACH TASK SHOULD TASK
PLACE

RISKS AND CONTINGENCIES

⮚ SPECIFY THE PROPABILITY OF RISKS AND CONTINGENCIES TO OVERCOME THOSE RISKS.(WRONG


BUDGET EST.,TOOLS,TESTERS)

APPROVAL

⮚ WHO SHOULD SIGN OFF AND APPROVE THE TESTING PROJECT(PROJECT MANAGER OR P.O)
WHAT IS TEST CASE?
⮚ A TEST CASE IS A SET OF ACTIONS EXECUTED TO VERIFY A PARTICULAR
FEATURE OR FUNCTIONALITY OF YOUR SOFTWARE APPLICATION.
⮚ TEST CASE
✔ NEEDS TO BE SIMPLE
✔ CREATE WITH END USER MIND
✔ AVOID TEST CASE REPETITION
✔ ENSURE %100 COVERAGE
WHAT IS THE COMPENENT OF TEST CASES?

WHAT IS TEST CASES: A TEST CASE IS A SET OF CONDITIONS.


A TEST CASE USUALLY CONTAINS;
⮚ TITLE
⮚ DESCRIPTION
⮚ TEST STEPS
⮚ TEST DATA
⮚ EXPECTED RESULT,ACTUALLY RESULT
⮚ PRE-CONDITION
⮚ STATUS
⮚ SCREENSHOOT
⮚ COMMENT
WHAT IS TEST CASES?
HOW DO YOU WRITE TEST CASES

⮚ FIRST READ USER STORY AND MAKE SURE TO UNDERSTAND,


⮚ THINK ABOUT DIFFERENT SCENARIOS FROM END USER’S PRESPECTIVE.(POSITIVE AND
NEGATIVE)
⮚ IN MY TEAM, WE WRITE TEST CASES IN JIRA-XRAY TOOL SO I CREATE A TEST TICKET.
• — FILL OUT TEST CASE DESCRIPTION
• — WRITE STEPS , DATA AND EXPECTED RESULT AND LINK IT TO THE RELATED USER
STORY.
• — TEST CASE ID WILL BE GIVEN BY JIRA AUTOMATICALLY. I MAY CREATE PRE-CONDITION
AS WELL IF NEED.
BRS ( Business Requirement Specification) SRS (System Requirement Specification)
WHAT IS THE DIFFERENCES BETWEEN BRS AND SRS?

It describes at very high level the functional specifications of It describes at a high level , the functional and technical
the software specification of the software

It is a formal document describing about the requirement It specifies the functional and non-functional requirements
provided by client (written, verbal) of the software to be developed

Usually its created by the Business Analyst who interacts Usually its created by the System Architect who is an
with clients technical expert .

Though in smaller companies the BA will create SRS as well.

Some companies do not create SRS altogether. Their BRS is


detailed enough to be used as SRS as well.

It is derived from client interaction and requirements It is derived from the BRS
WHAT IS TEST EXECUTION?

⮚ WHAT IS TEST EXECUTION: A


TEST EXECUTION IS THE
PROCESS OF EXECUTING THE
CODE AND COMPARING THE
EXPECTED AND ACTUAL
RESULT .
WHAT IS TEST SCENARIO?

⮚ WHAT IS TEST SCENARIO: A TEST SCENARIO IS DEFINED AS ANY


FUNCTIONALITY THAT CAN BE TESTED.
⮚ A TEST SCENARIOS HAS ONE OR MANY RELATIONS WITH TEST CASE, MEANING A
SCENARIO CAN HAVE MULTIPLE TEST CASES. EACH TIME WE HAVE TO WRITE TEST
CASES FOR TEST SCENARIO. SO BEFORE TESTING FIRST PREPARE TEST SCENARIOS
THEN CREATE TWO DIFFERENT TEST CASES FOR EACH SCENARIO.
EXAMPLE OF TEST CASES
• TEST SCENARIO 1: CHECK THE SEARCH FUNCTIONALITY
• TEST SCENARIO 2: CHECK THE PAYMENTS FUNCTIONALITY
• TEST SCENARIO 3: CHECK THE LOGIN FUNCTIONALITY
HOW TO WRITE TEST SCENARIOS?

AS A TESTER, YOU CAN FOLLOW THESE FIVE STEPS TO CREATE TEST SCENARIOS:
• STEP 1: READ THE REQUIREMENT DOCUMENTS LIKE BRS, SRS, FRS, OF THE SYSTEM UNDER
TEST (SUT).
• STEP 2: FOR EACH REQUIREMENT, FIGURE OUT POSSIBLE USERS ACTIONS AND OBJECTIVES.
DETERMINE THE TECHNICAL ASPECTS OF THE REQUIREMENT. ASCERTAIN POSSIBLE SCENARIOS
OF SYSTEM ABUSE AND EVALUATE USERS WITH HACKER'S MINDSET.
• STEP 3: AFTER READING THE REQUIREMENTS DOCUMENT AND DOING YOUR DUE ANALYSIS, LIST
OUT DIFFERENT TEST SCENARIOS THAT VERIFY EACH FEATURE OF THE SOFTWARE.
• STEP 4: ONCE YOU HAVE LISTED ALL POSSIBLE TEST SCENARIOS, A TRACEABILITY MATRIX IS
CREATED TO VERIFY THAT EACH & EVERY REQUIREMENT HAS A CORRESPONDING TEST SCENARIO
• STEP 5: THE SCENARIOS CREATED ARE REVIEWED BY YOUR SUPERVISOR. LATER, THEY ARE ALSO
REVIEWED BY OTHER STAKEHOLDERS IN THE PROJECT.
EXAMPLE OF TEST CASES?

⮚ TEST SCENARIO 3: "CHECK THE LOGIN FUNCTIONALITY" WOULD BE


• CHECK SYSTEM BEHAVIOR WHEN VALID EMAIL ID AND PASSWORD IS ENTERED.
• CHECK SYSTEM BEHAVIOR WHEN INVALID EMAIL ID AND VALID PASSWORD IS ENTERED.
• CHECK SYSTEM BEHAVIOR WHEN VALID EMAIL ID AND INVALID PASSWORD IS ENTERED.
• CHECK SYSTEM BEHAVIOR WHEN INVALID EMAIL ID AND INVALID PASSWORD IS ENTERED.
• CHECK SYSTEM BEHAVIOR WHEN EMAIL ID AND PASSWORD ARE LEFT BLANK AND SIGN IN
ENTERED.
• CHECK FORGOT YOUR PASSWORD IS WORKING AS EXPECTED
• CHECK SYSTEM BEHAVIOR WHEN VALID/INVALID PHONE NUMBER AND PASSWORD IS
ENTERED.
• CHECK SYSTEM BEHAVIOR WHEN "KEEP ME SIGNED" IS CHECKED
WHAT IS TRACEABILITY MATRIX?

⮚ The traceability matrix is typically a worksheet that contains the requirements


with its all possible test scenarios and cases. on the basis of the business
requirement document (brd) and technical requirement document (trd),
testers start writing test cases.
⮚ Requirement Traceability Matrix (RTM) is a table (mostly a spreadsheet) that shows if each
requirement has a respective Test case/cases to make sure if the requirement is covered for testing.
⮚ Requirement Traceability Matrix helps to link the requirements, Test cases, and defects accurately.
•Gives Overview of ALL the requirements
•Shows how requirements are linked to Test Cases
•Makes sure 100% coverage of requirements
•Easy to prepare
•No special tool is required
⮚ After finish the project requirement traceability matrix (rtm) given to the end-
client. Because rtm is a basic traceability schema or spreadsheet for
understanding.
WHAT IS TRACEABILITY MATRIX?

• REQUIREMENT TRACEABILITY MATRIX (RTM) IS A TABLE (MOSTLY A SPREADSHEET) THAT SHOWS IF EACH REQUIREMENT
HAS A RESPECTIVE TEST CASE/CASES TO MAKE SURE IF THE REQUIREMENT IS COVERED FOR TESTING.
• REQUIREMENT TRACEABILITY MATRIX HELPS TO LINK THE REQUIREMENTS, TEST CASES, AND DEFECTS ACCURATELY.
• NO SPECIAL TOOL IS REQUIRED
• WHY RTM IS IMPORTANT?
• THE MAIN AGENDA OF EVERY TESTER SHOULD BE TO UNDERSTAND THE CLIENT’S REQUIREMENT AND MAKE SURE THAT
THE OUTPUT PRODUCT SHOULD BE DEFECT-FREE. TO ACHIEVE THIS GOAL, EVERY QA SHOULD UNDERSTAND THE
REQUIREMENT THOROUGHLY AND CREATE POSITIVE AND NEGATIVE TEST CASES.
• THE TRACEABILITY MATRIX IS TYPICALLY A WORKSHEET THAT CONTAINS THE REQUIREMENTS WITH ITS ALL POSSIBLE TEST
SCENARIOS AND CASES. ON THE BASIS OF THE BUSINESS REQUIREMENT DOCUMENT (BRD) AND TECHNICAL
REQUIREMENT DOCUMENT (TRD), TESTERS START WRITING TEST CASES.
TYPES OF TRACEABILITY TEST MATRIX
• FORWARD TRACEABILITY
• BACKWARD OR REVERSE TRACEABILITY
• BI-DIRECTIONAL TRACEABILITY ( FORWARD + BACKWARD)
REQUIREMENTS
WHAT ARE TEST TECHNIQUES?

⮚ SOFTWARE TESTING TECHNIQUES HELP YOU DESIGN BETTER TEST


CASES.
⮚ THE PURPOSE OF A TEST DESIGN TECHNIQUE IS TO
IDENTIFY TEST CONDITIONS, TEST CASES AND TEST DATA.AND ALSO
FIND POSSIBLE BUGS IN THE BEGINNING.
⮚ MANUAL TESTING TECHNIQUES HELP REDUCE THE NUMBER OF TEST
CASES TO BE EXECUTED WHILE INCREASING TEST COVERAGE. THEY HELP
IDENTIFY TEST CONDITIONS THAT ARE OTHERWISE DIFFICULT TO
RECOGNIZE.
⮚ THEY ARE BLACK BOX TESTING WHICH MEANS CODE NOT VISIBLE FOR
TESTERS.
EQUIVALENCE PARTIONING?

1)EQUIVALENCE PARTIONING
⮚ IN THIS METHOD, THE INPUT DOMAIN DATA IS DIVIDED INTO DIFFERENT
EQUIVALENCE DATA CLASSES. THIS METHOD IS TYPICALLY USED TO REDUCE
THE TOTAL NUMBER OF TEST CASES
⮚ WE CANNOT TEST ALL THE POSSIBLE VALUES BECAUSE IF DONE, THE
NUMBER OF TEST CASES WILL BE MORE THAN 100. TO ADDRESS THIS
PROBLEM, WE USE EQUIVALENCE PARTITIONING HYPOTHESIS WHERE WE
DIVIDE THE POSSIBLE VALUES OF TICKETS INTO GROUPS OR SETS.
EQUIVALANCE PARTIONING?

The divided sets are called Equivalence Partitions or Equivalence Classes. Then we pick only one value from
each partition for testing. The hypothesis behind this technique is that if one condition/value in a partition
passes all others will also pass. Likewise, if one condition in a partition fails, all other conditions in that
partition will fail.
EQUIVALANCE PARTIONING?
BOUNDARY VALUE ANALYSIS

2)BOUNDARY VALUE ANALYSIS(RANGE CHECKING)- IN THIS TECHNIQUE,


WE TEST BOUNDARIES BETWEEN EQUIVALENCE PARTITIONS
⮚ EVERY PARTITION HAS HAS ITS MAXIMUM AND MINIMUM VALUES WHICH
KNOWN AS BOUNDARY VALUES OF A PARTITION.

⮚ In our earlier example instead of checking, one value for each partition you will check the values
at the partitions like 0, 1, 10, 11 and 99,100. As you may observe, you test values at both valid
and invalid boundaries. Boundary Value Analysis is also called range checking.
⮚ Equivalence partitioning and boundary value analysis(BVA) are closely related and can be used
together at all levels of testing.
BOUNDARY VALUE ANALYSIS
DECISION TABLE TECHNIQUE
3)DECISION TABLE TECHNIQUE=COMBINATION OF RULES AND
CONDITIONS.IF THERE IS 3 POSSIBILITY(LIKE NEW COSTUMER,OLD COSTUMER
AND COSTUMER WHO HAS COUPON FOR DISCOUNT) I WRITE 8 TEST CASES
FOR FIRST TEST CASES I WRITE 4 TRUE AND 4 FALSE RESPECTIVELEY. FOR
SECOND TEST CASES I WRITE 2 TRUE AND 2 FALSE RESPECTIVELY.AND FOR
THE THIRD ONE I WRITE 1 TRUE AND 1 FALSE.AND COMPARE THEM BASED ON
THE TRUE AND FALSE AND SEE HOW MANY POSITIVE AND HOW MANY
NEGATIVE TEST ARE THERE IN THE SCENARIO.
DECISION TABLE TECHNIQUE
EX=A SUBMIT BUTTON IN A CONTACT FORM IS ENABLED ONLY WHEN ALL THE
INPUTS ARE ENTERED BY THE END USER.
WHAT ARE TEST TECHNIQUES?

4)ERROR GUESSING

⮚ THE MAIN PURPOSE OF THIS TECHNIQUE IS TO GUESS POSSIBLE BUGS IN THE


AREAS WHERE FORMAL TESTING WOULD NOT WORK.
⮚ ERROR GUESSING IS A TECHNIQUE IN WHICH THERE IS NO SPECIFIC METHOD
FOR IDENTIFYING THE ERROR.
⮚ IT IS USUALLY DONE AFTER MORE FORMAL TECHNIQUES ARE COMPLETED.
⮚ IT USED FIND BUGS IN A SOFTWARE APPLICATION BASED ON TESTER’S PRIOR
EXPERIENCE.
⮚ THE ERROR GUESSING TECHNIQUE DOES NOT FOLLOW ANY SPECIFIC RULES.
STATE TRANSATION TECHNIQUES

5)STATE TRANSATION TECHNIQUES:IN THIS TECHNIQUE CHANGES IN INPUT


CONDITIONS CHANGE STATE OF THE UAT.TESTER CAN PERFORM THIS ACTION
BY ENTERING VARIOUS INPUT CONDITIONS IN A SEQUENCE.
WHAT ARE THE FUNCTIONAL TESTING TYPES?

FUNCTIONAL TESTING IS A TYPE OF SOFTWARE TESTING,SO SYSTEM IS TESTED AGAINST THE


FUNCTIONAL REQUIREMENTS. DURING FUNCTIONAL TESTING, BLACK BOX TESTING
TECHNIQUE IS USED.
FUNCTIONAL TESTING CAN DO IT MANUAL OR AUTOMATIC.COMMON FUNCTIONAL TEST ARE
UNIT TEST,INTEGRATION TEST,SMOKE TEST,REGRESSION TEST AND USER ACCEPTANCE
TEST.AFTER TESTED EXPECTED RESULT CAN BE COMPARED WITH THE ACTUAL RESULT.IF BOTH
RESULT MATCH EACH OTHER THAT’S MEAN ALL FUNCTIONALITY ABOUT SOFTWARE PROPERLY
ARE WORKING WELL AND TEST CASE PASSED.IF RESULTS NOT MATCH WE HAVE TO PREPARE
REPORT WITH PICTURES(PROOF) AND SUBMIT IT TO THE RELEATED PERSON.
THE PRIME OBJECTIVE OF FUNCTIONAL TESTING IS CHECKING THE FUNCTIONALITIES OF THE SOFTWARE
SYSTEM.
⮚ UNIT TESTING 🡺DEVELOPERS(DEV ENVIRONMENT)🡺WHITE BOX
⮚ INTEGRATION TESTING🡺DEVELOPERS OR TESTERS(DEV ENVIRONMENT)🡺GRAY BOX
⮚ SMOKE TESTING🡺TESTERS (QA ENVIRONMENT)🡺BLACK BOX
⮚ REGRESSION TESTING 🡺TESTERS(STAGING ENVIRONMENT🡺BLACK BOX
⮚ SANITY TESTING🡺TESTERS OR DEVOPS TEAM (STAGING ENVIRONMENT)🡺BLACK BOX
⮚ SYSTEM TESTING 🡺 TESTERS OR DEVOPS TEAM(STAGING ENVIRONMENT)🡺BLACK BOX
⮚ UAT (USER ACCEPTANCE TESTING)🡺END USER AND CLIENT(STAGING ENVIRONMENT)🡺BLACK BOX
NOTE=STAGING ENVIRONMENT ALSO KNOWN AS PRE-PRODUCTION ENVIRONMENT.
NOTE=THE COMBINATION OF BLACK BOX AND WHITE BOX KNOWN AS GRAY BOX
TESTING(INTEGRATION TEST)
⮚ UNIT TESTING PERFORMED ON EACH MODULE OR BLOCK OF CODE DURING DEVELOPMENT.PERFORM
TESTING TYPE?
BY DEVELOPERS.
IN SOFTWARE DEVELOPMENT LIFE CYCLE, NORMALLY SOFTWARE APPLICATION DOES NOT DEVELOPED
BY A SINGLE DEVELOPER. THE SOFTWARE APPLICATION IS DIVIDED INTO DIFFERENT MODULES AND
MODULES ARE ALLOCATED TO DIFFERENT DEVELOPMENT TEAMS. WHEN A MODULE IS DEVELOPED BY
DEVELOPER AND IT IS TESTED FOR FUNCTIONALITY THEN IT IS KNOWN AS UNIT TESTING. ONCE ALL
MODULES ARE DEVELOPED AND INTEGRATED WITH OTHER MODULES THEN INTEGRATION TESTING IS
TO BE CARRIED OUT TO DISCOVER THE ISSUES ARISE WHEN DIFFERENT MODULES ARE INTERACTING
WITH EACH OTHER TO BUILD OVERALL SYSTEM.
⮚ INTEGRATION TESTING=INTEGRATION TESTING IS A TYPE OF TESTING TO CHECK IF DIFFERENT
PIECES OF THE MODULES ARE WORKING TOGETHER.FIRST UNIT RELEATED WITH NEXT ONE. TO
ENSURE THAT UNITS WORK TOGETHER TO COMPLETE A SPECIFIC TASK. INTEGRATION TESTING IS
DONE AFTER UNIT TESTING. PERFORMED BY DEVELOPERS OR TESTERS.
⮚ SMOKE TEST IS VERIFY CRITICAL FUNCTIONALITIES OF THE PROGRAMS IS WORKING FINE. MEAN
CHECK APPLICATION IS STABLE. PERFORMED BY TESTERS.
⮚ REGRESSION TEST IS ENSURE THAT NEW CODE DID NOT BREAK PREVIOUSLY WORKING CODE.IT
OCCURS
• NEW FUNCTIONALITY ADDED
• REGUIREMENT CHANGE
• AFTER DEFECT FIXING
• ENVIRONMENT CHANGE(LIKE LINUX TO MAC,OR MYSQL TO ORACLE DATA BASE)
⮚ SANITY TESTING=VERIFY NEW FUNCTIONALITIES
TESTING TYPE? BUGS FIXED AND AFFECT
PREVIOUS ONE OR NOT.IT IS SUBSET OF THE REGRESSION TESTING.PERFORMED BY
TESTERS.
⮚ SYSTEM TESTING=IT IS CARRIED OUT ON THE WHOLE SYSTEM IN THE CONTEXT OF
EITHER SYSTEM REQUIREMENT SPECIFICATIONS OR FUNCTIONAL REQUIREMENT
SPECIFICATIONS OR IN THE CONTEXT OF BOTH. FOR SYSTEM TESTING, THE ENTIRE
SYSTEM AS A WHOLE IS CHECKED.(FUNCTIONAL AND NON-FUNCTIONAL).
PERFORMED BY TESTERS OR DEV-OPS TEAM.
⮚ USER ACCEPTANCE TESTING=UAT IS THE LAST PHASE OF THE
SOFTWARE TESTING PROCESS. USER ACCEPTANCE TESTING (UAT) IS A TYPE OF
TESTING PERFORMED BY THE END USER OR THE CLIENT TO VERIFY/ACCEPT THE
SOFTWARE SYSTEM BEFORE MOVING THE SOFTWARE APPLICATION TO THE
PRODUCTION ENVIRONMENT. OBVIOUSLY THIS IS THE LAST CHANCE FOR THE
CUSTOMER TO TEST THE SOFTWARE AND MEASURE IF IT IS FIT FOR THE PURPOSE.
ONCE SYSTEM IS READY TO USE, IT UNDERGOES TESTING BY END USER OR CLIENT TO
VERIFY THAT IT MEETS THE USER EXPECTATIONS(BUSINESS REQUIREMENTS)AND
ALL DESIRED FUNCTIONALITIES AS SPECIFIED IN SRS (SOFTWARE REQUIREMENTS
NON-FUNCTIONAL TESTING CHECKS THE PERFORMANCE, RELIABILITY, SCALABILITY AND OTHER NON-
WHAT ARE THE NON-FUNCTIONAL TESTING TYPES?
FUNCTIONAL ASPECTS OF THE SOFTWARE SYSTEM.
NON-FUNCTIONAL TESTING SHOULD BE PERFORMED AFTER FUNCTIONAL TESTING
NONFUNCTIONAL TESTING DESCRIBES HOW GOOD THE PRODUCT WORKS
⮚ PERFORMANCE TESTING
⮚ LOAD TESTING
⮚ VOLUME TESTING
⮚ STRESS TESTING
⮚ SECURITY TESTING
⮚ INSTALLATION TESTING
⮚ PENETRATION TESTING
⮚ COMPATIBILITY TESTING
⮚ MIGRATION TESTING
NON-FUNCTIONAL TEST
WHAT IS PERFORMANCE TESTING? TESTING TYPE?

⮚ PERFORMANCE TESTING IS DONE TO CHECK THE PERFORMANCE OF WEBSITE SERVERS,


DATABASE, AND NETWORK.
⮚ PERFORMANCE TESTING IS A TESTING METHOD USED TO DETERMINE THE SPEED OF A
COMPUTER, NETWORK OR DEVICES.
⮚ FOR INSTANCE, IT CAN BE OBSERVING RESPONSE TIMES WHEN EXECUTING A HIGH
NUMBER OF REQUESTS OR SEEING HOW THE SYSTEM BEHAVES WITH A SIGNIFICANT OF
DATA.
WHAT IS LOAD TESTING?
⮚ LOAD TESTING IS PERFORMED TO DETERMINE HOW MANY USERS THE SYSTEM CAN
HANDLE. IT IS A SUBSET OF PERFORMANCE TESTING.
WHAT IS STRESS TESTING?
⮚ STRESS TESTING IS TESTING THAT CHECKS THE UPPER LIMITS OF YOUR SYSTEM BY
TESTING IT UNDER EXTREME LOADS. IT IS A NON-FUNCTIONAL TESTING TECHNIQUE. IN
THIS TESTING,IMMEDIATELY INCREASE OR DECREASE LOAD, OR NUMBER OF USER, FROM
10 TO 90, AND GIVE STRESS TO THE APPLICATION. IT IS A SUBSET OF PERFORMANCE
TESTING.
⮚ FOR TO DO THAT TESTERS USE JMETER AND LOADRUNNER
WHAT IS END TO END(E2E)TESTING?

IT IS A SOFTWARE TESTING METHODOLOGY TO TEST AN APPLICATION FROM


START TO END.
⮚ LOGIN🡺ENTER USERNAME🡺ENTER PASSWORD🡺CLICK LOGIN
BUTTON🡺LOGOUT
⮚ REGISTER🡺LOGIN🡺SEARCH PRODUCT🡺VERIFY SEARCH RESULT PAGE🡺SELECT
PRODUCT🡺VERIFY PRODUCT DETAILS🡺ADD TO CART🡺VERIFY CART
DETAILS🡺PAYMENT🡺VERIFY PAYMENT🡺SELECT SHIPPING ORDERS🡺VERIFY
SHIPPING
HOW MANY ENVIROMENT YOU HAVE IN YOUR COMPANY?

⮚ DEV-ENVIRONMENT🡺BUILD🡺CODE🡺UNIT TEST🡺INTEGRATION TEST🡺


⮚ TEST ENVIROMENT🡺SMOKE TEST🡺REGRESSION TEST🡺PERFORMANCE TEST🡺DEPLOY
⮚ STAGE ENVIROMENT🡺USER ACCEPTANCE TESTING,LOAD TESTING,STRESS TESTING,SYSTEM TESTING
⮚ PRODUCTION ENVIROMENT🡺RELEASE
⮚ DEVELOPER RESPONSIBLE FOR UNIT TEST AND INTEGRATION TEST
⮚ TESTER RESPONSIBLE FOR SOMEKE TEST(SOMETIMES INTEGRATION)REGRESSION TEST,PERFORMANCE
TEST AND DEPLOY
⮚ USER ACCEPTANCE TEST PERFORM BY CLIENT OR END USER

THERE ARE 4 ENVIROMENT


⮚ DEV ENVIRONMENT
⮚ QA ENVIRONMENT
⮚ STAGE
⮚ PRODUCTION
BLACK BOX TESTING? WHAT IS BLACK BOX AND WHITE BOX TESTING?

BLACK BOX TESTING IS A WAY OF SOFTWARE TESTING IN WHICH THE INTERNAL STRUCTURE OR THE
PROGRAM OR THE CODE IS HIDDEN AND NOTHING IS KNOWN ABOUT IT.GENERALLY TESTERS WORK
ON BLACK BOX TESTING.
TYPES OF BLACKBOX TESTING:
⮚ FUNCTIONAL TESTING,
⮚ NON-FUNCTIONAL,
⮚ EQUIVALENCE PARTITIONING,
⮚ BOUNDARY VALUE ANALYSIS,
⮚ DECISION TABLE TESTING,
⮚ ERROR GUESSING,
WE JUST CHECKING THE FUNCTIONALITY MEAN WE DON’T LOOK AT THE CODES(LIKE INSERT
THE MONEY AND GET COKE FROM VENDING MACHINE)
WHITE BOX TESTING?
WHITE BOX TESTING IS A WAY OF TESTING THE SOFTWARE IN WHICH THE TESTER HAS KNOWLEDGE
ABOUT THE INTERNAL STRUCTURE THE CODE OR THE PROGRAM OF THE SOFTWARE. IT IS ALSO
KNOWN AS GLASS BOX TESTING. GENERALLY DEVELOPERS WORK ON WHITE BOX TESTING.
WHAT IS YOUR STRENGTH?
⮚ ONE OF MY GREATEST STRENGTH IS MY DETERMINATION AND DEDICATION.I
ALWAYS FINISHED MY PROJECT ON TIME.
⮚ I ALSO COMMUNICATE EASILY WITH PEOPLE.
⮚ I AM ALSO SELF MOTIVATED.
⮚ I DON’T LOSE MY ANGER (TEMPER) EASILY
WHAT IS YOUR WEAKNESS?
⮚ ONE OF MY WEAKNESS IS THAT I AM AFRAID OF FAILURE,AS A TEAM MEMBER
I ALWAYS WANT TO BE ACHIEVE TO MY GOAL ON TIME.I LIKE TO PERFORM AT
MY BEST.I DON’T WANT TO LET MY TEAM DOWN BECAUSE OF ME.
⮚ MAYBE THE SECOND ONE IS THAT WHENEVER I AM GIVING SOME
RESPONSIBILITY AND THERE IS A DEADLINE FOR IT AND I CANNOT FEEL
COMFORTABLE MYSELF UNLESS I AM DONE WITH MY ASSIGNMENTS.
HOW DO YOU HANDLE STRESS?

⮚ SOMETIMES SOME REQUIREMENTS ARE NOT UNDERSTANDABLE, SO IT MAY


TAKE TIME. IN THE BEGINNING OF THE APPLICATION I SPEND EXTRA EFFORT
TO UNDERSTAND FUNCTIONALITY IF I NEEDED.AND ALSO IF THERE IS A
DEADLINE OR IF WE GET CLOSE AT THE END OF THE SPRINT BUT STILL WE
HAVE WORK TO DO,THEN THOSE CAUSES STRESS.
⮚ MY FIRST APPROACH IS TRYING TO CALM DOWN AND IF I HAVE MORE JOB
RATHER THAN USUALL I CAN WORK EXTRA HOURS. I PREFER CALM DOWN
RATHER THAN TO STRESS. MOSTLY THESE HELPED ME TO HANDLE STRESS.
HOW DO YOU HANDLE CONFLICT WITH YOUR CO-WORKERS?
⮚ I TRY TO COMMUNICATE WITH PEOPLE WHO HAS PROBLEM, AND I WOULD
TRY TO UNDERSTAND THE HIS/HER CONCERN. BECAUSE IN THE COMPANY
EVERYONE HAVE THE SAME GOAL AND WANTS TO GET JOB DONE
SUCCESSFULLY.
⮚ I DID NOT JUDGE PEOPLE BEFORE BLAME THEM
⮚ ON THE OTHER HAND I AM A GOOD LISTENER.SO IF ANYONE HAS A PROBLEM
WITH ME I CAN LISTEN HIM CAREFULLY AND TRY TO UNDERSTAND WHAT IS
GOIN ON.
⮚ I ALWAYS WORK SOLUTION-ORIENTED.
⮚ IF NECESSARY, I WOULD ASK HELP FROM MY SUPERVISOR FOR HANDLE
CONFLICT BETWEEN ME AND MY CO-WORKERS.
⮚ TO BE HONEST I HAVE NOT HAD MUCH PROBLEM WITH MY CO-WORKERS SO FAR.
⮚ IF YOU ARE WORKING IN A COMPANY WITH BUNCH OF PEOPLE, THEN IT IS EASY TO
TELL ME ABOUT YOUR LAST CONFLICT WITH YOUR CO-WORKER AND HOW DID YOU HANDLE IT?

FACED DISAGREEMENT WITH PEOPLE NORMALLY.


⮚ I ALSO FACED DISAGREEMENT WITH MY CO-WORKERS AT MY PREVIOUS PROJECT.
THIS IS NOT CONFLICT ACTUALLY IT WAS JUST MISUNDERSTANDING.
⮚ IN THE BEGINNING OF THE SPRINT.P.O BRING ALL THE USER STORY TO THE SPRINT
PLANNING MEETING.I WAS TRYING TO UNDERSTAND ALL REQUIREMENTS.BUT SOME
OF THEM WAS NOT CLEAR FOR ME.SO AFTER CREATE MY TEST DESCRIPTION I
STARTED WRITING CODE.BUT I DID SOMETHING WRONG.AND ONE OF MY PEERS
WARNED ME UNKINDLY. I TOLD HIM IF I MAKE A MISTAKE HELP ME MAKE IT RIGHT.
⮚ SO I LISTENING TO HIM VERY CAREFULLY AND TRY TO UNDERSTAND WHAT KIND OF
MISTAKE I MADE IT AND WHY HE ACT WEIRD. AND AT THE ENF OF THE
CONVERSATION I UNDERSTAND THIS IS NOT CONFLICT JUST MISUNDERSTANDING.
⮚ AND I TOLD HIM, EVERYDAY WE WILL COME ACROSS TO EACH OTHER SO I DON’T
WANNA ANY TROUBLE WITH MY PEERS. EVENTUALLY WE ARE WORKING HERE FOR
SAME GOAL AND ALL OF US WANTS TO GET JOB DONE SUCCESSFULLY.
⮚ THIS IS THE ONLY DISAGREEMENT THAT I FACED WITH MY CO-WORKERS.
⮚ FIRST OF ALL DEVELOPER IS MY COLLAGE SO IT IS NOT MY ENEMY.SO THIS IS NOT
PERSONAL. WE HAVE TO SUPPORT EACH OTHER.DEVELOPERS ALSO MY
WHAT DO YOU DO WHEN YOU FIND A DEFECT BUT THE DEVELOPER SAYS MY CODE IS WORKING. HOW DO YOU HANDLE CONFLICT?

COLLAGUES.COMMINUCATION IS THE BEST WAY TO SOLVE PROPLEM.


⮚ WHEN I FACED LIKE THIS SITUATION FIRST I CAN OPEN THE TICKET AND ASSIGN IT TO
THE DEVELOPER.BUT IF DEVELOPER REJECT IT OR SAY THIS IS NOT A BUG,THEN I SIT
WITH THE DEVELOPER AND EXPLAIN ONE MORE TIME POINT OF MY VIEW WHY I AM
THINKING THIS IS DEFECT OR NOT BASED ON ACCEPTANCE CRITEARIA.AND I LISTEN
HIS POINT OF VIEW AND TRY TO UNDERSTAND WHY DEVELOPER DOES NOT AGREE
WITH ME.
⮚ IF HE/SHE CONVINCE ME THIS IS NOT A DEFECT I CLOSE THE TICKET WHICH I
OPENED.IF I INSIST THIE IS DEFECT AND HE/SHE NOT ACCEPT,THEN I REQUEST
FROM DEVELOPER TO GO THE PO DESK TOGETHER AND LET HIM/HER SOLVE THE
ISSUE OR CONFLICT.
⮚ I DON’T REMEMBER ANY PROJECT THAT
CAN YOU I WORKED
WORK UNDER PRESSURE? HAD NO PRESSURE.
PRESSURE IS GOOD THING SOMETIMES. IT FORCES YOU TO WORK HARDER
AND SMARTER.
⮚ IF I HAVE LOT OF ASSIGNMENTS AND THERE IS DUE DATE,FIRST I CAN BREAK
DOWN EACH PROJECT INTO SMALLER PARTS AND GO ON IT.
⮚ IF I HAVE A PROBLEM WITH ANYONE, I CAN TALK WITH HIM DIRECTLY AND
HANDLE PROBLEM BETWEEN US.
WHY SHOULD WE HIRE YOU?

⮚ FIRST OF ALL, I CAN CONFIDENTLY SAY THAT I'M WELL QUALIFIED FOR THIS
POSITION.
✔ I AM COMFORTABLE ABOUT TOOLS AND CONCEPT WHICH IS IN THE JOB
DESCRIPTION.
✔ I BELIEVE THAT I AM A GREAT TEAM PLAYER.
✔ I ALWAYS BRING NEW TECHNIQUES AND TOOLS THAT HELP TO JUMP
FORWARD TO THE COMPANY THAT I WORKED FOR.
✔ I'M AN EXCELLENT COMMUNICATOR, EXTREMELY MOTIVATED AND PROBLEM
SOLVER
⮚ IN FIRST WEEK, YOU KNOW, IWHAT
WILL GET
DO YOU DO IFDONE
I HIRE YOU?ALL THE PAPER WORKS,

GETTING THE MACHINES AND NECESSARY ACCESS TO THE PROJECT,


DATABASES ETC.
⮚ THEN I WILL HAVE TO LEARN THE COMPANY CULTURE.
⮚ I HAVE TO LEARN ALSO MORE ABOUT MY PROJECTS AND MY TEAMMATES.
⮚ I THINK, UNDERSTANDING WHAT THE PROJECT IS DOING, IT IS VERY
IMPORTANT IF I WANT TO BE MORE PRODUCTIVE.
⮚ OTHER THAN THAT , AFTER LEARN THE PROJECT I AM GONNA START WRITING
CODES.
⮚ AS LONG AS THERE IS A PROJECT TO WORK, I AM WILLING TO STAY AS LONG
AS POSSIBLE. I LOVE TO WORK LONG TERM WITH MY COMPANIES.
IF YOU GET HIRED, HOW LONG ARE YOU PLANNING TO STAY?
⮚ COULD YOU GIVE ME SOME INFORMATION ABOUT COMPANY CULTURE PLS?
⮚ COULD YOU GIVE ME SOME INFORMATION ABOUT TEAM STRUCTURE IN
DO YOU HAVE ANY QUESTION FOR US?

COMPANY PLS?
⮚ WHAT KIND OF FRAME WORK YOU ARE USING IN THE COMPANY?
⮚ WHAT KIND OF SDLC METHODOLOGY ARE YOU USING IN THE COMPANY?
⮚ SO, IF YOU HIRE ME WHAT IS YOUR EXPECTATION FROM ME FOR NEXT 2
MONTHS?
⮚ AS AN AUTOMATION TESTER,I DEVELOPED TEST PLANS FROM THE REQUIREMENT
DOCUMENTS AND ALSO PERFORM VARIOUS TYPES OF TESTING LIKE REGRESSION
AND SMOKE TESTING.
⮚ I AM RESPONSIBLE FOR CHECKING SMOKE TEST AND MAKE SURE THAT
WHAT IS YOUR ROLE(RESPONSIBILITY) IN YOUR TEAM?

ENVIRONMENT IS UP AND RUNNING FIRST THING IN THE MORNING.


• IF THERE IS ANY ISSUE WITH IT, I ANALYZE
• IF THERE IS A SERVICE ISSUE, I IMMEDIATELY CONTACT THE SERVICE DEPARTMENT,
• IT IS ABOUT MY SCRIPTS I DEBUG THE SCRIPTS,
• IF IT IS A DEFECT, I REPRODUCE IT AND LOG THE DEFECT IN JIRA.
⮚ MOST OF MY TIME, I SPEND MY TIME AUTOMATING TEST CASES FROM USER
STORIES USING SELENIUM WEBDRIVER.
• AS PART OF AN AGILE SCRUM TEAM, I PARTICIPATE IN SEVERAL MEETINGS FOR
REQUIREMENT REVIEWS AND PROVIDE VALUABLE FEEDBACK TO THE BA.
• LASTLY, I CONSIDER MYSELF CROSS-FUNCTIONAL TEAM MEMBER THAT IS ALWAYS
WILLING TO HELP MY TEAM IN ANY WAY TO ACHIEVE OUR SPRING GOAL.
⮚ TO FIND BUG AS MUCH AS POSSIBLE.MAKE SURE MOST OF THE BUG GETS
FIXED.
⮚ TO SATISFY THE END USER AND CLIENT BUY DELIVERING BUG FREE AND
WHAT IS TESTER’S MAIN RESPONSIBILITY?

USER-FRIENDLY APPLICATION.
⮚ CREATE GOOD PRODUCT
WHAT IS THE MOST RECENTLY BUG THAT YOU FIND?

⮚ THERE WAS A LOGIN FUNCTIONALITES.WE HAVE TO ENTER USERNAME AND


PASSWORD. PASSWORD HAS TO ACCEPT SPECIAL CHARACTER BUT IT
DOESN’T ALLOW
⮚ IN MY APPLICATION THERE WAS A CONTACT US LINK BOTTOM OF THE
APPLICATION.BUT CONTACT US LINK DOESN’T WORK
⮚ THE LAST BUG THAT I FOUND IS THAT, ON THE WEB APPLICATION WHEN YOU
MOVE MOUSE ON SIGN IN MODULE, ANOTHER SCREEN SHOULD BE POP-UPS
BUT IT DOESN’T OPEN.
WHAT HAPPENS IF YOU MIX BOTH IMPLICIT WAIT
AND EXPLICIT WAIT IN A SELENIUM SCRIPT?

⮚ AS PER THE OFFICIAL SELENIUM DOCUMENTATION, IT IS SUGGESTED NOT


TO MIX BOTH IMPLICIT WAITS AND EXPLICIT WAITS. MIXING BOTH OF THEM
CAN CAUSE UNPREDICTABLE WAIT TIMES.
⮚ IMPLICIT WAIT IS DEFINED ONLY ONCE IN THE CODE. IT WILL REMAIN
SAME THROUGHOUT THE DRIVER OBJECT INSTANCE.(IT IS CONSTANT)
⮚ EXPLICIT WAIT IS DEFINED WHENEVER IT IS NECESSARY IN THE
CODE. THIS WAIT WILL CALL AT THE TIME OF EXECUTION. IT IS A
CONDITIONAL WAIT.
WHAT IS THE DIFFERENCE BETWEEN DRIVER.GET() AND
DRIVER.NAVIGATE().TO(“URL”)?
DRIVER.GET(): IT WILL WAIT TILL THE WHOLE PAGE GETS LOADED
DRIVER.NAVIGATE(): IT WILL NOT WAIT TILL THE WHOLE PAGE GETS LOADED
CAN I NAVIGATE BACK AND FORTH IN A BROWSER IN SELENIUM
WEBDRIVER?
⮚ WE USE NAVIGATE METHOD (NAVIGATE IS AN ABSTRACT METHOD OF WEBDRIVER
INTERFACE) TO NAVIGATE BACK AND FORTH IN A BROWSER. IT HAS METHODS TO MOVE
BACK, FORWARD AS WELL AS TO REFRESH A PAGE.
⮚ FORWARD, TO,BACK AND REFRESH ARE ABSTRACT METHOD OF NAVIGATE INTERFACE
⮚ DRIVER.NAVIGATE().TO(“URL”); – TO LAUNCH A NEW WEB BROWSER WINDOW AND
NAVIGATE TO THE SPECIFIED URL
⮚ DRIVER.NAVIGATE().FORWARD(); – TO NAVIGATE TO THE NEXT WEB PAGE WITH
REFERENCE TO THE BROWSER’S HISTORY
⮚ DRIVER.NAVIGATE().BACK(); – TAKES BACK TO THE PREVIOUS WEBPAGE WITH
REFERENCE TO THE BROWSER’S HISTORY
⮚ DRIVER.NAVIGATE().REFRESH(); – TO REFRESH THE CURRENT WEB PAGE THEREBY
RELOADING ALL THE WEB ELEMENTS
WHAT IS CLASS AND OBJECT?
CLASS=IT IS THE BLUEPRINT OF AN OBJECT.
OBJECT=IT IS AN INSTANCE OF A CLASS. OBJECT IS A SOFTWARE
UNIT OF VARIABLES (PROPERTIES) AND METHODS (FUNCTIONS).
IN REAL LIFE, SIMILAR OBJECTS CAN BE GROUPED BASED ON SOME
CRITERIA. FOR EXAMPLE: A FORD CAR AND A TOYOTA CAR ARE
BOTH CARS, SO THEY CAN BE CLASSIFIED AS BELONGING TO THE
CAR CLASS. THERE MAY BE THOUSANDS OF OTHER CARS IN
EXISTENCE, ALL OF THE SAME MAKE AND MODEL. EACH CAR WAS
BUILT FROM THE SAME SET OF BLUEPRINTS AND THEREFORE
CONTAINS THE SAME COMPONENTS. IN OBJECT-ORIENTED TERMS,
WE CAN SAY THAT YOUR CAR IS AN OBJECT (INSTANCE) OF THE
CLASS KNOWN AS CAR. YOU CAN CREATE DIFFERENT OBJECTS
USING THE SAME CLASS, BECAUSE A CLASS IS JUST A TEMPLATE,
WHILE THE OBJECTS ARE CONCRETE INSTANCES, BASED ON THE
TEMPLATE.

public class Cars {


public Toyota(String name)
System.out.println("Passed Name is :" + name );
public Ford(String name)
System.out.println("Passed Name is :" + name ); }
public static void main(String []args) {
Cars Toyota = new Cars(" Corolla" );
Cars Ford = new Cars("Transit" );} }
WHAT IS THE DIFFERENCE BETWEEN DRIVER.CLOSE() AND DRIVER.QUIT COMMAND?

CLOSE(): WEBDRIVER’S CLOSE() METHOD CLOSES THE WEB BROWSER WINDOW THAT THE USER
IS
CURRENTLY WORKING ON
QUIT(): UNLIKE CLOSE() METHOD, QUIT() METHOD CLOSES DOWN ALL THE WINDOWS THAT THE
PROGRAM HAS OPENED.
WHAT ARE JVM,JRE AND JDK?
⮚ JVM (JAVA VIRTUAL MACHINE) IS AN
ABSTRACT MACHINE. IT IS CALLED A
VIRTUAL MACHINE BECAUSE IT DOESN'T
PHYSICALLY EXIST.IT CONVERTS JAVA
BYTECODE INTO MACHINE LANGUAGE
⮚ JRE IS WHAT WE NEED TO RUN A JAVA
PROGRAM AND CONTAINS SET OF
LIBRARIES AND OTHER FILES THAT JVM
USES AT RUN TIME.
• JRE = JVM + LIBRARY CLASSES
⮚ JDK IS WHAT WE NEED TO COMPILE JAVA
SOURCE CODE AND CONTAINS JRE,
DEVELOPMENT TOOLS.
• JDK = JRE + DEVELOPMENT TOOLS
WHAT ARE JUNIT ANNOTATIONS?
• @TEST: ANNOTATION LETS THE SYSTEM KNOW THAT THE METHOD ANNOTATED AS @TEST IS
A TEST METHOD. THERE CAN BE MULTIPLE TEST METHODS IN A SINGLE TEST SCRIPT.
• @BEFORE: METHOD ANNOTATED AS @BEFORE LETS THE SYSTEM KNOW THAT THIS METHOD
SHALL BE EXECUTED EVERY TIME BEFORE EACH OF THE TEST CASES(OR METHODS).
• @AFTER: METHOD ANNOTATED AS @AFTER LETS THE SYSTEM KNOW THAT THIS METHOD
SHALL BE EXECUTED EVERY TIME AFTER EACH OF THE TEST CASES(OR METHODS).
• @BEFORECLASS: METHOD ANNOTATED AS @BEFORECLASS LETS THE SYSTEM KNOW THAT
THIS METHOD SHALL BE EXECUTED ONCE BEFORE ANY OF THE TEST METHOD.
• @AFTERCLASS: METHOD ANNOTATED AS @AFTERCLASS LETS THE SYSTEM KNOW THAT THIS
METHOD SHALL BE EXECUTED ONCE AFTER ANY OF THE TEST METHOD.
• @IGNORE: METHOD ANNOTATED AS @IGNORE LETS THE SYSTEM KNOW THAT THIS METHOD
SHALL NOT BE EXECUTED.
WHAT ARE JUNIT ANNOTATIONS?
public class OutputFileTest {

private File output;

@Before public void createOutputFile() {


output = new File(...); }

@After public void deleteOutputFile() {


output.delete(); }

@Test public void testFile1() {


}
@Test public void testFile2() {
}
}
WHAT ARE TESTNG ANNOTATIONS?
• @BEFORESUITE=BEFORESUITE ANNOTATION METHOD RUNS ONLY ONCE BEFORE ALL TESTS FROM
THE SUITE.
• @AFTERSUITE=AFTERSUITE ANNOTATION METHOD RUNS ONLY ONCE AFTER ALL TESTS FROM THE
SUITE.
• @BEFORECLASS=BEFORECLASS METHOD RUNS ONLY ONCE BEFORE THE FIRST TEST METHOD. THE
CURRENT CLASS METHOD WILL BE ONE FROM WHICH IT IS INVOKED.
• @AFTERCLASS=AFTERCLASS ANNOTATION METHOD RUNS ONLY ONCE WHEN ALL THE TEST METHODS
MENTIONED IN THE CURRENT CLASS ARE EXECUTED.
• @BEFORETEST=BEFORETEST METHOD RUNS BEFORE ANY TEST METHOD INSIDE THE <TEST> TAG IS
RUN. (IN TESTNG.XML FILE). IT RUNS BEFORE THE EXECUTION OF CLASSES TAKES PLACE.
• @AFTERTESTAFTERTEST METHOD RUNS AFTER ANY TEST METHOD INSIDE THE <TEST> TAG IS RUN.
(IN TESTNG.XML FILE). IT RUNS AFTER THE EXECUTION OF CLASSES TAKES PLACE.
• @BEFOREGROUPS=BEFOREGROUPS METHOD IS RUN BEFORE THE FIRST TEST METHOD, AND THE
CONDITION IS THAT THE GROUP SHOULD CONTAIN THE METHOD WHICH IS INVOKED.
• @AFTERGROUPS=AFTERGROUPS METHOD IS RUN AFTER THE FIRST TEST METHOD, AND THE
CONDITION IS THAT THE GROUP SHOULD CONTAIN THE METHOD WHICH IS INVOKED.
• @BEFOREMETHOD=THE BEFOREMETHOD RUNS BEFORE EACH TEST METHOD.
• @AFTERMETHOD=THE AFTERMETHOD ANNOTATION RUNS AFTER EACH TEST METHOD.
• @TEST=MARKS A CLASS OR A METHOD AS A PART OF THE TEST. OR IN SIMPLE WORDS, MAKES A
METHOD AS THE TEST METHOD.
WHAT ARE TESTNG ANNOTATIONS?
WHAT ARE TESTNG ANNOTATIONS?
WHAT ARE DIFFERENT ANNOTATIONS SUPPORTED BY TESTNG ?
@TEST (PRIORITY = 1) 🡺TO THE PRIORITY OF THE FUNCTION
@TEST (ENABLED= FALSE));
@TEST(DEPENDSONMETHODS={"LOGIN","CHECKMAIL"})
@TEST(INVOCATIONCOUNT=5,TIMEOUT=10000)
@TEST(GROUP = {“SMOKE”}) 🡺 SET THE METHOD NAME WITH GROUP, WHEN TESTNG WILL
RUN “SMOKE” GROUP ONLY THOSE
METHODS WILL RUN WHICH ARE ONLY BELONGS TO THE “SMOKE” GROUP
@PARAMETERS 🡺WHEN YOU WANTS TO PASS PARAMETERS IN YOUR TEST METHODS, YOU NEED
TO
@DATAPROVIDER
WHEN YOU USE @DATAPROVIDER ANNOTATION FOR ANY METHOD THAT MEANS YOU ARE USING
THAT METHOD AS A DATA SUPPLIER. CONFIGURATION OF @DATAPROVIDER ANNOTATED METHOD
MUST BE LIKE IT ALWAYS RETURN OBJECT[][] WHICH WE CAN USE IN @TEST ANNOTATED
METHOD.
@LISTENERS
WHAT KIND OF EXCEPTION YOU FACED?
NOSUCHELEMENT EXCEPTION🡺
• CHECK IF LOCATOR IS CORRECT
• CHECK IF TIMING IS CORRECT
• CHECK IF ELEMENT IS HIDDEN INSIDE AN IFRAME
WHAT KIND OF EXCEPTION YOU FACED?
NULLPOINTEREXCEPTION🡺
First example
String abc=null;
System.out.println(abc.toString());
System.out.println(abc.toUpperCase());
Second example
public class ss {
WebDriver driver;
@Test
public void test(){ System.out.println(driver);first give us null
// WebDriverManager.chromedriver().setup(); if don’t assigned anything it give us
//ChromeDriver driver = new ChromeDriver(); nullpointerexception.
System.out.println("===========");
System.out.println(driver);give us ChromeDriver: chrome on WINDOWS
driver.get("http://google.com");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
Third example
Map<String, Double> employees = new Hashtable<>();
employees.put("A" , 200000.99 );
employees.put("B", 120000.89);
employees.put("C", 500000.9854);
employees.put("D", 500000.9876);
employees.put(null, 5122.99);
System.out.println(employees);
WHAT KIND OF EXCEPTION YOU FACED?
INDEXOUTOFBOUNDEXCEPTION,ARRAYSOUTOFBOUNDEXCEPTION🡺
ITS OCCURS WHEN WE WORK WITH STRING AND ARRAYS
public class ss {
public static void main(String[] args) {
🡺 int[]a={1,2,3};
System.out.println(Arrays.toString(a));🡺 ArraysIndexOutOfBoundexception
System.out.println(a[3]);
🡺int[] arr = new int[1]; 🡺 ArraysIndexOutOfBoundexception
System.out.println(arr[1]);

🡺 ArrayList<String> lis = new ArrayList<>();


lis.add("ali");
lis.add("ayse");
System.out.println(lis.get(2));🡺IndexOutOfBoundException
}
}
WHAT KIND OF EXCEPTION YOU FACED?

STALE ELEMENT EXCEPTION


if webelement delayed entirely or is not attached to the DOM it give us stalelement exception.
WHAT IS CONSTRUCTOR?

• A CONSTRUCTOR IN JAVA IS A SPECIAL METHOD AND IT IS BELONG TO OBJECT


• CONSTRUCTOR DOESN’T HAVE A RETURN TYPE AND CONSTRUCTOR’S NAME
MUST BE SAME AS THE CLASS NAME.
• CONSTRUCTOR IS CALLED AUTOMATICALLY(DEFAULT)WHEN A NEW OBJECT IS
CREATED.
• EVERY CLASS MUST HAVE CONSTRUCTOR
• CONSTRUCTOR CAN ONLY CALLED IN ANOTHER CONSTRUCTOR
• CONSTRUCTOR CANNOT CALLED BY ITSELF
• IT CAN NOT CALLED BY ITS NAME
• IT CAN CALLED THIS(),OR SUPER() KEYWORD.
• CONSTRUCTOR CAN BE OVERLOAD
• AT LEAST ONE OF THE SUPER CLASS CONSTRUCTOR MUST BE CALLED BY SUB
CLASS
DIFFERENCE BETWEEN LIST AND SET
• LIST PROVIDES ORDERED(NOT MEAN SORTED) AND WE CAN GET SPECIFIC
INDEX AND LIST COLLECTION CONTAIN DUPLICATION .
• SET PROVIDES UN-ORDERED COLLECTION AND THERE IS NO REACHABLE
INDEX. SET DOESN’T ALLOWED DUPLICATION .
DIFFERENCE BETWEEN HASHTABLE AND HASHMAP?
• HASHTABLE IS THREAD-SAFE/SYNCHRONIZED🡺MEAN SLOW
HASHMAP IS NOT THREAD SAFE AND FASTER
• HASHTABLE DOES NOT ALLOW ANY NULL KEY🡺NULL
HASHMAP ALLOWS ONE NULL KEY
• BOTH OF THEM IMPLEMENT MAP INTERFACE.
• SYNCHRONIZED🡺MEANS ONLY ONE THREAD AT A TIME CAN ACCESS THE
CODE
WHAT IS METHOD OVERRIDING AND OVERLOADING?

⮚ IN OVERLOADING🡺 METHOD NAME MUST BE THE SAME, BUT THE PARAMETERS MUST BE DIFFERENT.RETURN TYPE
CAN BE SAME OR DIFFERENT.

⮚ IN CASE OF OVERRIDING 🡺 METHOD NAME AND PARAMETERS MUST BE SAME AND RETURN TYPE MUST BE SAME

SECOND MAJOR DIFFERENCE

⮚ WE CAN OVERLOAD METHOD IN THE SAME CLASS BUT METHOD OVERRIDING OCCURS IN TWO CLASSES THAT HAVE
INHERITANCE RELATIONSHIP.

⮚ WE CANNOT OVERRIDE STATIC, FINAL AND PRIVATE METHOD IN JAVA(JUST INSTANCE), BUT WE CAN OVERLOAD
STATIC, FINAL AND PRIVATE METHOD IN JAVA.
WHERE WE USE OVERLOADING IN OUR FRAMEWORK?
⮚ ASSERT.ASSERTEQUAL(EXPECTEDTITLE, ACTUALTITLE);
⮚ ASSERT.ASSERTEQUAL(EXPECTEDTITLE, ACTUALTITLE, "TITLE NOT MATCHED");
⮚ WAIT.UNTIL(EXPECTEDCONDITIONS.ELEMENTTOBECLICKABLE(WEBELEMENT
WEBELEMENT));
⮚ WAIT.UNTIL(EXPECTEDCONDITIONS.TITLEIS(“GOOGLE”));
⮚ DRIVER.FINDELEMENTS(BY.ID(“EMAIL”);
⮚ DRIVER.FINDELEMENTS(BY.ID(“PASSWORD”);
⮚ SYSTEM.OUT.PRINTLN(”HELLO”);
⮚ SYSTEM.OUT.PRINTLN(”HI”);
⮚ BROWSER.UTILS.WAIT(3);
⮚ BROWSER.UTILS.WAIT(6);
WHERE WE USE OVERRIDING IN OUR FRAMEWORK?
• SET<INTEGER> SET1 = NEW HASHSET<>();
• SET<INTEGER> SET2 = NEW LINKEDHASHSET<>();
• SET1.ADD(4); ==> HASHSET OVERRIDES ADD() METHOD FROM COLLECTION
INTERFACE
• SET2.ADD(8); ==> LINKEDHASHSET OVERRIDES ADD() METHOD FROM
COLLECTION INTERFACE
• WEBDRIVER DRIVER1 = NEW CHROMEDRIVER();
• WEBDRIVER DRIVER2 = NEW FIREFOXDRIVER();
• DRIVER1.GET("XXXXXX"); CHROMEDRIVER OVERRIDES
GET/FINDELEMENT/GETCURRENTURL/ETC. METHODS FROM WEBDRIVER INTERFACE.
• DRIVER2.GET("XXXXXX"); FIREFOXDRIVER OVERRIDES
GET/FINDELEMENT/GETCURRENTURL/ETC. METHODS FROM WEBDRIVER INTERFACE.
WHERE WE USE POLYMORPHISM IN OUR FRAMEWORK?
public class Animal{
public void sound(){
System.out.println("Animal is making a sound"); 🡺overloading
} }
class Horse extends Animal{
@Override
public void sound(){🡺overriding
System.out.println("Neigh"); } 🡺overloading

public static void main(String args[]){


Animal obj = new Horse();🡺Polymorphism
obj.sound();} }
WHERE WE USE POLYMORPHISM IN OUR FRAMEWORK?
POLYMORPHISM : IT IS AN ABILITY OF OBJECT TO BEHAVE IN MULTIPLE FORM.
THE MOST COMMON USE OF POLYMORPHISM IN JAVA IS WHEN A PARENT CLASS
REFERENCE TYPE OF VARIABLE IS USED TO REFER TO A CHILD CLASS OBJECT.
⮚ EXAMPLE
• WEBDRIVER DRIVER = NEW CHROMEDRIVER();
• WE USE METHOD OVERLOADING(STATIC POLY.) AND OVERRIDING(DYNAMIC
POLY.) TO ACHIEVE POLYMORPHISM.
⮚ SET<INTEGER> SET1 = NEW HASHSET<>();
⮚ SET<INTEGER> SET2 = NEW LINKEDHASHSET<>();
⮚ LIST<INTEGER> MYSET = NEW ARRAYLIST<>();
⮚ LIST<INTEGER> MYSET = NEW LINKEDLIST<>();
⮚ WEBDRIVER DRIVER = NEW CHROMEDRIVER();
⮚ WEBDRIVER DRIVER = NEW FIREFOXDRIVER();
WHERE WE USE POLYMORPHISM IN OUR FRAMEWORK?
WHERE WE USE POLYMORPHISM IN OUR
In this picture, ‘a1’ is aFRAMEWORK?
reference variable of type Class A
pointing to object of class A. ‘a2’ is also reference variable
of type class A but pointing to object of Class B.
During compilation, while binding, compiler does not
check the type of object to which a particular reference
variable is pointing. It just checks the type of reference
variable through which a method is called and checks
whether there exist a method definition for it in that type.

For example, for “a1.method()” method call in the above


picture, compiler checks whether there exist method
definition for method() in Class A. Because ‘a1′ is Class A
type. Similarly, for “a2.method()” method call, it checks
whether there exist method definition for method() in Class
A. Because ‘a2′ is also Class A type. It does not check to
which object, ‘a1’ and ‘a2’ are pointing. This type of
binding is called static binding.
WHERE WE USE POLYMORPHISM IN OUR FRAMEWORK?
During run time actual objects are used for binding. For
example, for “a1.method()” call in the above picture,
method() of actual object to which ‘a1’ is pointing will be
called. For “a2.method()” call, method() of actual object to
which ‘a2’ is pointing will be called. This type of binding is
called dynamic binding.
WHERE WE USE INTERFACE IN OUR FRAMEWORK?
interface MyInterface {
public void method1();
public void method2();
}
class Demo implements MyInterface {
public void method1() {
System.out.println("implementation of method1"); }
public void method2() {
System.out.println("implementation of method2"); }

public static void main(String arg[]) {


MyInterface obj = new Demo();
obj.method1(); } }
WHAT KIND OF INTERFACE WE USE IN OUR PROJECT?

⮚ WEBDRIVER
⮚ WEBELEMENT
⮚ LIST
⮚ SET
⮚ MAP
⮚ JAVASCRIPTEXECUTER
⮚ ALERT
⮚ TAKESCREENSHOOT
⮚ LISTENERS
WHERE WE USE ABSTRACT CLASS IN OUR FRAMEWORK?
⮚ WHEN WE HAVE THE REQUIREMENT OF A CLASS THAT CONTAINS SOME
COMMON PROPERTIES OR METHODS WITH SOME COMMON PROPERTIES
WHOSE IMPLEMENTATION IS DIFFERENT FOR DIFFERENT CLASSES, IN THAT
SITUATION, IT'S BETTER TO USE ABSTRACT CLASS THEN INTERFACE.
⮚ AFTER PUT ALL COMMON METHODS INSIDE OF THE ABSTRACT CLASS,WHEN
WE EXTEND THIS CLASS FROM REGULAR CLASS ,ALL WE NEED TO DO
OVERRIDE THIS METHODS(WE DON’T NEED TO WRITE CODES OVER AND
OVER)
⮚ THIS CLASS WILL BE TEST FOUNDATION FOR ALL TEST CLASSES
⮚ GENERALLY,WE WILL PUT HERE ONLY BEFORE AND AFTER PARTS(BEFORE
METHOD , BEFORE TEST , AFTER METHOD , AFTER TEST)
⮚ GET(STRING URL);,
ABSTRACT METHODS IN SELENIUM?
⮚ QUIT();,
⮚ CLOSE();,
⮚ GETWINDOWHANDLE();,
⮚ GETWINDOWHANDLES();,
⮚ GETTITLE();,
⮚ FINDELEMENT(); AND FINDELEMENTS();,
⮚ BACK();,FORWARD();,REFRESH();,
⮚ SENDKEYS();,
⮚ CLEAR();,
⮚ CLICK();,
⮚ GETCURRENTURL();
WHERE WE USE ENCAPSULATION IN OUR FRAMEWORK?
package newtest;

class EncapsulationExample{

private String empName;

private void modifyEmpName(String newName) {

empName = newName + " : He acts in BigBang Theory";


}
public String getEmpName(){

return empName;
}
public void setEmpName(String newName){
modifyEmpName(newName);
} }
public class EncapsulationTest{

public static void main(String args[]){


EncapsulationExample obj = new EncapsulationExample();
obj.setEmpName("Sheldon Cooper");
System.out.println(obj.getEmpName()); } }
WHERE WE USE ENCAPSULATION IN OUR FRAMEWORK?
public class Driver {
private static ThreadLocal<WebDriver> driverPool = new ThreadLocal<>();
private Driver() {
}
public static WebDriver get() {🡺get method
//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()); 🡺set method
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driverPool.set(new FirefoxDriver()); 🡺set method
break;
case "ie":
if (!System.getProperty("os.name").toLowerCase().contains("windows")) {
throw new WebDriverException("Your OS doesn't support Internet Explorer");
}
WebDriverManager.iedriver().setup();
driverPool.set(new InternetExplorerDriver());🡺set method
break;}}
//return corresponded to thread id webdriver object
return driverPool.get();
}
WHERE WE USE INHERITANCE IN OUR FRAMEWORK?
public class BasePage {

//When we use @FindBy annotation in this page.


public BasePage() {

PageFactory.initElements(MyDriver.get(), this);
}
public static void clearCookiees() {

Set<Cookie> a = MyDriver.get().manage().getCookies();
System.out.println(a);
//Delete all the cookies
MyDriver.get().manage().deleteAllCookies();
}
public void scrollDown(WebElement link) throws InterruptedException {

JavascriptExecutor js = (JavascriptExecutor) MyDriver.get();


/**
* this script must scroll, until link element is visible
* once link element visible, it will stop scrolling
* arguments[0] = means first webelement after comma (link)
* arguments it's an array of webelements after comma
* arguments[0] = link web element, it can be any web element
*/
Thread.sleep(3000);
js.executeScript("arguments[0].scrollIntoView(true)", link);
Thread.sleep(3000);
}
}
WHERE WE USE INHERITANCE IN OUR
FRAMEWORK?

public class AdvanceSearchPage extends BasePage {

public void verifyClickSearchButton() throws InterruptedException


{

WebElement link = clickSearchButton;


scrollDown(link);
BasePage.Threadwait();
}
HOW
• PARALLEL TEST TODIFFERENT
MEAN DO PARALLEL TESTING
TESTS WITH JUNIT?
OR SCENARIO WILL BE EXECUTED
ON DIFFERENT BROWSERS.BUT CROSS BROWSERS TEST MEAN SAME TESTS
WILL BE EXECUTE IN DIFFERENT BROWSERS.
⮚ PRIVATE STATIC THREADLOCAL<WEBDRIVER> DRIVERPOOL = NEW
THREADLOCAL<>();//IT IS CREATED MOR INSTANCE COPY
⮚ NEED MAVEN SURE FIRE PLUGIN
⮚ AND WE NEED THE RUN OUR CODES FROM TERMINAL
• TEST WILL BE RUN AS NUMBER OF FEATURE FILES.
⮚ ON TERMINAL WE CAN RUN SPECIFIC COMMAND LIKE
• MVN TEST -P CUCUMBERRUNNER
• MVN TEST -P REGRESSIONRUNNER
WHAT IS STEPS FOR RUN OUR CODES IN PARALLEL WITH CUCUMBER?
STEP 1:WE NEED THREADLOCAL<WEBDRIWER>

private static ThreadLocal<WebDriver> driverPool = new ThreadLocal<>();

STEP 2:WE NEED MAVEN SURE PLUGIN IN POM.XML

<profiles>
<profile>
<id>Cucumber</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<parallel>methods</parallel>
<perCoreThreadCount>false</perCoreThreadCount>
<threadCountMethods>10</threadCountMethods>
<includes>
<include>**/CucumberRunner.java</include>
<include>**/FailedRunner.java</include>
</includes>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

STEP 3:WE NEED TO RUN OUR CODE ON TERMINAL


⮚ SELENIUMWHAT
GRID ISISA SELENIUM
TOOL WHICHGRID AND
ALLOWS US CROSS BROWSING
TO RUN OUR TESTS ONTEST?
DIFFERENT
MACHINES AGAINST DIFFERENT BROWSERS.
• IT ALLOWS RUNNING TEST CASES IN PARALLEL THEREBY SAVING TEST EXECUTION TIME.
• IT ALLOWS MULTI-BROWSER TESTING
• IT ALLOWS US TO EXECUTE TEST CASES ON MULTI-PLATFORM
⮚ WITH SELENIUM GRID WE CAN RUN OUR CODES IN DIFFERENT
PLATFORM(MAC,WINDOWS,LINUX..E.T.C),IN DIFFERENT BROWSER(CHROME,FIREFOX,IE…
E.T.C) AND FROM LAST VERSION OF THE DRIVERS(LIKE CHROME OR FIREFOX)
• WHAT IS A HUB IN SELENIUM GRID?
• THE HUB IS THE CENTRAL POINT WHERE QA ENGINEERS LOAD TESTS INTO IT.
• HUB IS A MACHINE WHERE YOU ONLY RUN TESTS AGAINST IT
• A HUB IS A SERVER OR A CENTRAL POINT THAT CONTROLS THE TEST EXECUTIONS ON
DIFFERENT MACHINES.
• WHAT IS A NODE IN SELENIUM GRID?
• THE EXECUTION WILL BE DONE BY DIFFERENT MACHINES CALLED NODES.
• NODE IS THE MACHINE WHICH IS ATTACHED TO THE HUB. THERE CAN BE MULTIPLE
(PREFERABLY) NODES IN SELENIUM GRID.
⮚ mvn clean ==> delete target folderWHAT IS MVN COMMAND ?
⮚ mvn clean test ==> delete target folder and run cucumber tests
⮚ mvn clean verify ==> delete target folder, run cucumber test, generate cucumber HTML
report
⮚ mvn verify -Dbrowser="chrome"🡺run all test in chrome
⮚ mvn verify -Dbrowser="firefox"🡺run all test in firefox
⮚ mvn clean verify -P ==> delete target folder, run cucumber test, generate cucumber
HTML report or whatever was specified in Regression profile.
⮚ mvn test -P Cucumber🡺run cucumber runner in parallel
⮚ mvn test -P RegressionRunner🡺run Regression runner in parallel
⮚ mvn verify -Dcucumber.options="--tags @smoke“🡺run test cases which has @smoke
⮚ mvn verify -Dbrowser=firefox -Dcucumber.options="--tags @smoke_test"--> to run with
firefox and only specific tags
⮚ IN THE CASE OF ASSERTIONS, IF THE ASSERT CONDITION IS NOT MET, TEST
CASE EXECUTION WILL BETWEEN
DIFFERENCE BE ABORTED. THE
ASSERT AND REMAINING
VERIFY IN SELENIUM?TESTS ARE SKIPPED,
AND THE TEST CASE IS MARKED AS FAILED. THESE ASSERTIONS ARE USED AS
CHECKPOINTS FOR TESTING OR VALIDATING BUSINESS-CRITICAL
TRANSACTIONS.(FOR HANDLE THIS SITUATION USE TRY CATCH BLOCK).HARD
ASSERTION
⮚ IN CASE OF VERIFY, TESTS WILL CONTINUE TO RUN UNTIL THE LAST TEST IS
EXECUTED EVEN IF ASSERT CONDITIONS ARE NOT MET. VERIFY OR SOFT
ASSERTS WILL REPORT THE ERRORS AT THE END OF THE TEST. SIMPLY PUT,
TESTS WILL NOT BE ABORTED IF ANY CONDITION IS NOT MET. TESTERS NEED
TO INVOKE THE ASSERTALL() METHOD TO VIEW THE RESULTS.SOFT
ASSERTION
WHAT IS THE DIFFERENCES BETWEEN HARD AND SOFT ASSERT?
⮚ HARD ASSERT🡺THROWS AN EXCEPTION IMMEDIATELY AFTER THE ASSERT
FAILS AND CARRIES OUT WITH THE NEXT TEST CASE OF THE SUITE. IT DOES
NOT ALLOW FURTHER EXECUTION. WHOLE TEST CASE GETS FAILED IF AT
LEAST 1 HARD ASSERT FAILS. (USED FOR CRITICAL SITUATION)
⮚ SOFT ASSERT🡺DOES NOT THROW AN EXCEPTION IMMEDIATELY WHEN THE
ASSERTION FAILS, COLLECTS THEM AND CARRIES OUT WITH THE NEXT
VALIDATION. NEXT STEPS WOULD BE EXECUTED EVEN IF THE LINE
CONTAINING SOFT ASSERTION GETS FAILED(USED FOR NON-CRITICAL
SITUATION)
HOW CAN WE GET THE FONT SIZE, FONT COLOR, FONT
TEXT USED FOR THE PARTICULAR?

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“FONT-SIZE”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“FONT-
COLOR”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“TEST-
ALIGN”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“BACKGROUN
D-COLOR”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“FONT-
FAMILY”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“LINE-
HEIGHT”);

• IT’S LIKE THAT


DRIVER.FINDELEMENT(BY.ID()).GETCCSVALUE(“FONT-
WEIGHT”);
WHAT IS THE DIFFERENCE BETWEEN JOINS AND UNIONS?
⮚ JOINS🡺JOIN THE COLUMN
⮚ UNIONS🡺 JOIN THE ROW
WHAT IS THE DIFFERENCE BETWEEN INNER AND OUTER JOINS?
⮚ INNER JOIN🡺 RETURN MATCHING PARTS BETWEEN TABLES
⮚ OUTER JOIN🡺 RETURN MATCHING AND UNMATCHING PARTS
WHICH VERSION YOU USED?
• SELENIUM 3
• CUCUMBER 4
• JUNIT 5
• JAVA 8
WHAT IS
⮚ AN OBJECT REPOSITORY ISAOBJECT REPOSITORY?
CENTRALIZED STORAGE OF LOCATORS IN THE
FORM OF OBJECTS.
⮚ A REPOSITORY ALLOWS A TESTER TO STORE ALL THE OBJECTS THAT WILL
BE USED IN THE SCRIPTS IN ONE OR MORE CENTRALIZED LOCATIONS RATHER
THAN LETTING THEM BE SCATTERED ALL OVER THE TEST SCRIPTS.
⮚ EXCEL, XML, PROPERTY FILE,JSON FILE AND TEXT FILE.
SETTING
Setting USERNAMEFOR
Global A SINGLE
Git Username and AND ALL REPOSITORY
Password for All repositories
The global git username and password are associated with commits on all repositories on your
system that don’t have repository-specific values.
To set your global commit name and email address run the git config command with the --
global option:
git config --global user.name "Your Name“
git config --global user.email [email protected]
git config --global user.password “password“
Once done, you can confirm that the information is set by running:
git config -- global --list

Setting Git Username and Password for a Single Repository


If you want to use a different username or email address for a specific repository, run the git
config command without the --global option from within the repository directory.
Let’s say you want to set a repository-specific username and email address for a stored in
the directory. Set a

Git username and email address:


git config user.name "Your Name“
git config user.email "[email protected]"
FOR SINGLE REPOSITORY
SETTING USERNAMEFOR A SINGLE AND ALL REPOSITORY
⮚ GIT C0NFIG USER.NAME “NAME”
⮚ GIT CONFIG USER.NAME( OR git config --get user.name)
⮚ GIT CONFIG USER.EMAIL “EMAIL”
⮚ GIT CONFIG USER.EMAIL(OR git config --get user.email)
FOR ALL REPOSITORY
⮚ GIT C0NFIG -- GLOBAL USER.NAME “NAME”
⮚ GIT CONFIG -- GLOBAL USERNAME(OR git config --global --get user.name)
⮚ GIT CONFIG -- GLOBAL USER.EMAIL “EMAIL”
⮚ GIT CONFIG -- GLOBAL USER.EMAIL(OR git config --global --get
user.email )

⮚ GIT CONFIG --GLOBAL –LIST🡺SHOW US USERNAME,EMAIL AND PASSWORD


⮚ GIT CONFIG –LIST🡺SHOW US USERNAME,EMAIL,PASSWORD AND SOME INFO
CANCEL USERNAMEFOR A SINGLE AND ALL REPOSITORY
Cancel username,email or password for Single repository
• git config --unset user.name
• git config --unset user.email
• git config --unset user.password
Cancel username,email or password for All repository
• git config --global --unset user.name
• git config --global --unset user.email
• git config --global --unset user.password
⮚ Go to github CLONE A PROJECT?

⮚ Click code
⮚ Copy url address
⮚ Go to intellij
⮚ Go to VCS
⮚ Go git
⮚ Click clone
⮚ Pass url address that you copied
⮚ And then click clone
⮚ Go to github DOWNLOAD A PROJECT?

⮚ Download project and extract it


⮚ Go to IntelliJ
⮚ Right Click on project
⮚ Show in explorer/reveal in finder
⮚ Paste it in here
⮚ And the go intellij again
⮚ Click file
⮚ Click open
⮚ Find project and click ok
⮚ Go to github OPEN A REPOSITORY ON GITHUB?

⮚ Click the new


⮚ Name the repository
⮚ And click create repository
⮚ Go terminal on intellij
⮚ Write respectively
✔ git init
✔ git add .
✔ git commit –m “commits”
✔ git remote add origin https://github.com/serkanserdarusa/azure.git
✔ git push -u origin master
RENAME OR DELETE REPOSITORY ON GITHUB?
⮚ Go to github
⮚ Click repository which want you delete
⮚ Go to settings
⮚ Rename it or scroll down
⮚ And click delete this repository
⮚ A window will pops-up
⮚ Like 🡺Please type serkanserdarusa/azure to confirm.
⮚ Write it manually “serkanserdarusa/azure”
⮚ And click the red button “I understand the consequences,delete this
repository”
⮚ And confirm password
HOW CAN BRING DELETED FILES BACK BEFORE PUSH THEM?
⮚ DELETE SOMETHING ON YOUR FRAMEWORK
⮚ GIT STATUS(YOU ARE GONNA SEE DELETED FILES LIKE
SRC/TEST/RESOURCHES/FEATURES/SMOKETEST.FEATURE)
⮚ GIT RESET HEAD
⮚ GIT CHECKOUT
SRC/TEST/RESOURCHES/FEATURES/SMOKETEST.FEATURE
⮚ AND YOU WILL SEE THE FILE THAT YOU DELETED COMING BACK
• AFTER DO SOME CHANGES ON ORIGINAL DOCS(ON GITHUB) SAVE THE
GIT CONFLICT
CHANGES
• GO TO INTELLIJE AND CHANGE SOMETHING ON SAME DOCS
• GIT ADD .
• GIT COMMIT -M” “
• GIT PUSH ORIGIN MASTER
• AFTER THAT WRITE GIT PULL ORIGIN MASTER
• YOU THEN YOU WILL SEE CONFLICT
• DELETE WRONG ONE
• GIT ADD .
• GIT COMMIT -M” “
• GIT PUSH ORIGIN MASTER
• AFTER DO SOME CHANGES ON ORIGINAL DOCS(ON GITHUB) SAVE THE CHANGES
GIT CONFLICT
• GO TO INTELLIJ AND CHANGE SOMETHING ON SAME DOCS
• GIT ADD .
• GIT COMMIT -M” “
• GIT PUSH ORIGIN MASTER
• >>CONFLICT(REJECT) HAPPEN>>
• GO VCS AND CLICK FETCH
• THEN GO VCS AND CLICK MERGE CHANGES
• AND MARKED REMOTES/ORIGIN/SERKAN
• AND CLICK MERGE
• ONE WINDOWS WILL OPEN
• CHOOSE CORRECT ONE(RIGHT OR LEFT)
• CLICK MERGE
• AFTER DO SOME CHANGES ON ORIGINAL DOCS(ON GITHUB) SAVE THE
GIT CONFLICT
CHANGES
• GO TO INTELLIJ AND CHANGE SOMETHING ON SAME DOCS
• GIT ADD .
• GIT COMMIT -M” “
• GIT PUSH ORIGIN MASTER
• >>CONFLICT(REJECT) HAPPEN>>
• ON TERMINAL WRITE GIT FETCH
• GIT PULL ORIGIN MASTER
• FIX THE CONFLICT
• GIT ADD .
• GIT COMMIT -M” “
• GIT PUSH ORIGIN MASTER
• AFTER CREATING A NEW BRANCH AND ADDED SOME FILE OR TEST CASE HERE IS THE STEP
• GIT ADD . BRANCH-PULL-PUSH-MERGE PULL REQUEST
• GIT COMMIT -M” “
• GIT PUSH ORIGIN NEWBRANCHNAME(LIKE SERKAN)
• THEN GO TO GITHUB
• BASE🡺MASTER <======== COMPARE🡺SERKAN
• PULL REQUEST
• PUT THE REVIEWERS NAME FOR IN THE REVIEWERS
• AFTER COPY URL SENT HIM MESSAGE LIKE PLS APPROVED MY CHANGES
• CREATE PULL REQUEST
• AFTER REVIEWERS UPDATED MERGE PULL REQUEST
• CONFIRM MERGE
• GO TO INTELIJ OPEN TERMINAL
• GIT ADD .
• GIT COMMIT
• CHANGE BRANCH FROM SERKAN TO MASTER
• AND GIT PULL ORIGIN MASTER
• AFTER THIS STEP YOU WILL GET THE UPDATED VERSION OF THE PROJECT
GIT LOG🡺RETURNS THE HISTORY OF MY COMMITS
BRANCH-PULL-PUSH-MERGE PULL REQUEST
GIT LOG - - ONELINE🡺SHOWS ALL COMMITS YOU DID BY ORDER
GIT BRANCH –D SERKAN🡺DELETE SERKAN BRANCH
GIT CHECKOUT –B SERKAN🡺CREATE SERKAN BRANCH AND SWITCH TO
IT AUTOMATICALLY

You might also like