Software Testing Summary
Software Testing Summary
SUMMARY
• Software testing : it's a process of evaluating and verifying that a software
product or application functions correctly, securely, and efficiently according to
its specific requirements
SOFTWARE TESTING ADVANTAGES
• Software testing helps ensuring if there are any bugs or errors in the software
• bugs can be identified early and can be solved before delivery of the software
product
Early testing
Pesticide Paradox
• Software testing
Defect Clustering
principles
Testing is context dependent
• Exhaustive testing is not possible, we need the optimal amount of testing based on
the risk assessment of the application.
EARLY TESTING
• testing should start as early as possible , this will help reduce [1- tetsing effort ,2- defect
fixing cost, 3- testing time estimation]
PESTICIDE PARADOX
• Pesticide Paradox: means that the test cases need to be reviewed & revised
• helps in adding new & different test cases to help find more defects
DEFECT CLUSTRING
• Defect Clustering : means that we state that a small number of modules contain most
of the defects detected
• testing is done differently depending on the [1-context,-2 resources ,3- types of testing]
ABSENCE OF ERROR – FALLACY
ERROR DEFECT
it's used to ensure that software variation in the outcome of software against the
reason invalidthe
code , spelling mistakes
meets specfications expected
it's it's
a procedure to ensure
used to ensure the
that quality of
software
Goal it's a procedure used for finding and fixing defects in the
software products or services provided
meets the specfications product, building high quality product
to the customers by an organization
product -oriented
Access proccess-oriented
• risk assessment :means identifying, analyzing, and prioritizing potential failures or issues
in a system so testing efforts focus on what matters most
SOFTWARE TESTING LIFE CYCLE (STLC)
• STLC: sequence of testing activities used to ensure about the quality of the
software
•
Requirement analysis
Test execution
Test design
Test environemnt
steup
gather the requirement
• requirment analysis
activites
identify the required environment for testing
TEST PLANNING
• test team make test effort estimation for each included task in test plan
• we identify the deliverables [1- before ,2- during ,3- after] testing
• Test plan : low-level document , which used to determine the scope & objective
of the applied sowftare testing process
• we use the test plan to determine the entry & exit criteria
definition it's used to ensure that software it's set of postconditions that we must reach to be able
it's set of preconditions that must exist to
bemeets
able tothe
startspecfications
testing to set testing is completed
roles /responsibilities
Deliverables
TEST DESIGN
• we create test scenarios [- positive ,2- negative] based on the created test plan to
test the software
• we use test data [1- valid ,2- invalid] to help in designing test cases
• we also determine the number of test cases required for each test scenario
TEST SCENARIO TEMPLATE
• test case description: add description for test case to help identify it's purpose
• test data: data [1- valid ,2- invalid] needed for testing
• actual result: actual result that actually got after test execution
• status : it's set based on the comparison between the expected and actual result
• Test case status
passed failed
TEST ENVIRONMENT SETUP
• we define the required [1- hardware ,2- software] conditions to start testing
• we report the test execution results [1- number of testcases passed ,2- number of testcases failed]
• we make test summary reports for all test reuslts [1- number of executed test cases
,2- number of testcases passed ,3- number of testcases failed]
• we create metrics to help evaluate the test coverage of our testing process
• we make a Defect summary report for all detected defects during test execution
• we assign priority & severity for each detcted defect in the defect summary report
VERIFICATION V.S VALIDATION
VERIFICATION VALIDATION
Purpose Are we are building the product right Are we are building the right product
TDD V.S BDD
TDD BDD
concern white box ,black box test the behavior of the software
API testing
regression sanity
FUNCTIONAL TESTING
• Functional testing : it's a type of software testing where we test the software against
functional requirements
• Funactional testing is used to ensure that each fucntion in the software is working
correctly
FUNCTIONAL TESTING
Sol:-
• non-Functional tetsing : it's type of software testing where we test the software
against non-functional requirements
Sol:-
3- we take the actual results after applying chosen non-functional testing type
Performance testing : it's a type of non-functional software testing used for testing performance
of software
• we can apply stress tetsing by [1-increasing the numebr of users,2- loop count]
• Spike testing : makes sure the software can handle unexpected
increase/deacrease in user's load
• Endurance testing : makes sure the software can handle the expected load over
a long period of time
SECURITY TESTING
Secuity testing : it's a type of non-functional software testing used for ensure that software is secure against
unauthorized acess
USABILITY TESTING
Usability testing : it's a type of non-functional software testing used for test how easy is the software to use
STABILITY TESTING
Stability testing : it's a type of non-functional software testing used for test how stable is the software against
any crahses
RECOVERY TESTING
Recovery testing : it's a type of non-functional software testing used for test how is the software able to
recover after any failures
API TESTING
ApI testing is used to validate API responses(response status,response data, cookies, response headers
API testing allows us to test multiple ApI requests [1- GET ,2- POST ,3- PUT,4- PATCH,5- DELETE]
UAT TESTING
UAT testing : it's a type of software testing where we validate whether the software meets the user
requirements
maintainance testing : it's a type of software testing where we verify the software after any changes
1- code changes
3- bug fixing
• maintainance testing types
regression sanity
REGRESSION TESTING V.S SANITY TESTING
it's a type of software testing that is it's a subset of regression testing that done after any
definition done after any changes to ensure that changes to ensure that all related functioanlites are
all functionalities are working fine working fine
Accep
testing
System testing
Integration testing
Unit testing
UNIT TESTING
Unit testing : it's a level of software testing ,where each individual unit is tested separately
Sol:-
• modules are integarted together as one complete unit, we test this completed unit
Sol:-
1-higher level modules are tested first to facilitate testing the lower-level modules
Sol:-
1-lower level modules are tested first to facilitate testing the higher level modules
• System testing : it's a level of software testing , where we test the whole integrated system
Sol:-
1-we verify that whole integrated system works as expected
Goal
validate the software based on the
test the structure , data flow
requirements
internal
required not required
knownledge
• White-box testing techniques
equavilance
boundary value partitioning decsion table state transition
error guessing
GRAY-BOX TESTING
• Gary-box testing : its a combination of both white & black box testing
ACCEPTANCE TESTING
• Acceptance testing : it's a level of software testing , where we test the whole software against
the customer requirements
Sol:-
1-we can involve the user to verify whether the developed software meets his requirements
2- Using Acceptance testing, we can catch errors that developer might miss before deploying the
product
3- Acceptance testing gives stakeholders confidence that the product is ready for production
• Acceptance testing types
Alpha Beta
ALPHA V.S BETA
it's used to identify bugs before it's used to test software by Clients or End
definition it's used to ensure that software
releasing the software product to the Users who are not employees of the
meets
real the specfications
users organization
• Requirement Traceability Matrix (RTM): it's a document that maps and traces user
requirements with test cases
• Requirement Traceability Matrix is used to validate that all requirements are checked
with test cases such that no functionality is unchecked during Software testing
RTM TEMPLATE
• Code coverage: it's a measure which describes how much of the source code of the
program has been tested
• code coverage includes [1- statement coverage ,2 - branch coverage ,3- decision
coverage,4- path coverage]
• code coverage is important for finding the areas of the program not exercised by test
cases
• code coverage methods
• Defect managment: it includes set of activities for handling detected defect till
this defect is successfully fixed
Defect management cycle
•
Discovery
Defect reporting
Categorization
closure
Defect resolution
Verification
DISCOVERY
sol:-
sol:-
sol:-
2- developers start working on the assigned defects till they are fixed
3- developers send report to test manager when the defects are successfully fixed
VERIFICATION
sol:-
sol:-
sol:-
2- test manger take this defect report and send it to the management team to review
the feedback about testing team effort for defects handling
DEFECT DENSITY
• detected by: includes the name of tester who detect this defect
• pending retest: mean that is waiting for approval to retest again to ensure it's fixed successfully
• verified: means that the defect is reviewd by test lead afte retest and it is successfully fixed
• closed: means that the defect is fixed successully and closed by the QA team
• duplicated : means that the defect has been already detected before by another tester in the QA team
POSITIVE TESTING V.S NEGATIVE TESTING
Goal
ensure that software is woking fine under ensures that system can handle unexpcted
normal conditions conditions
SMOKE TESTING V.S SANITY TESTING
it's type of software testing where we it's type of software testing that is done after any
definition it's used to ensure that software
test the most critical functionalities changes to ensure that all related functioanlites are
meets
of the specfications
the software working fine
it'sit's used
type to ensure
of software that that
testing software
's used it's type of software testing that 's used to ensure that
Definition bug is successfully fixed and other existing
ensure the
to meets that specfications
bug is successfully fixed
functionalities are still working fine
definition it'sit's
typeused to ensure
of software that,where
testing software
tester it's type of software testing , where tester tests sepecifc
testmeets the specfications
the software randomly mdoule repeatdly to ensure that it is working correctly
and there is no bug in that module
definition it's used to ensure that software it's type of software testing , where tester tests the
it's type of software testing ,where tester
testmeets the specfications
the software manually by himself software using automation scripts
PRIORITY SEVERITY
definition it's used to ensure that software it's used to determine the impact of the bug on the
it's used to determine how important the
bug meets the
is to be specfications
solved software
how it works
Priority status is set based on customer Severity status is set based on the technical
requirements aspect of the product
ADHOC V.S EXPLORATORY
it'sit's
a type
usedoftosoftware
ensure testing where we
that software
Definition test test the without any it's a type of software testing where tester use his own
meets thesoftware
specfications experience in testing the software
documentation
programming
not required
required
skiils