0% found this document useful (0 votes)
1K views

Software Testing Fundamentals

This document provides an overview of software testing fundamentals. It defines software testing as executing a program to find defects by checking if the actual behavior matches the expected behavior. The document discusses the importance of testing and describes different approaches to testing like the big bang approach and TQM approach. It also covers testing principles, objectives, and the role of testing at different stages of the software development life cycle.
Copyright
© © All Rights Reserved
0% found this document useful (0 votes)
1K views

Software Testing Fundamentals

This document provides an overview of software testing fundamentals. It defines software testing as executing a program to find defects by checking if the actual behavior matches the expected behavior. The document discusses the importance of testing and describes different approaches to testing like the big bang approach and TQM approach. It also covers testing principles, objectives, and the role of testing at different stages of the software development life cycle.
Copyright
© © All Rights Reserved
You are on page 1/ 93

SOFTWARE TESTING

FUNDAMENTALS

Dr.P.Keerthika/Associate Professor/Department of
CSE/ Kongu Engineering College
Software Testing
Why Testing is important?
BASICS OF SOFTWARE TESTING
Overview
• Introduction
• Testing – Definition
• Approaches to Testing
• Essentials of Software Testing
• Principles of Software Testing
• Salient Features of Software Testing
• Test Policy & Challenges
• Test Strategy
• Test Planning
• Cost of Testing
• Categories of defect
• Developing Test Methodologies
• Testing Process
• Testing MEthodologies
Software Testing - Definition
• Execution of a work product with intent to find a
defect
• Detecting the difference between existing and
required conditions and to evaluate software
features
• As a process, designed to
– Prove that the program is error/defect free
– Establish that the software that software performs
functions correctly and fit for use
– Establish that all functional expectations are available
Software Verification & Validation

Comparing a work product with Checking the outcome of developed


processes, standards & product with respect to expectation
guidelines of customers
Cost of Software Verification &
Validation
• If done first time – comes under appraisal cost
• If repeated times – comes under failure cost – for
organizations undergoing testing
• Software Testing – finding the difference between actual
behaviour and expected behaviour of an application
• Stages of ST as per SDLC
– Feasibility testing Begins at start of project
– Contract Testing
– Requirements Testing
– Design Testing
– Coding Testing
– Acceptance Testing Continues till the end of project
Historical Perspective of Testing
• Debugging Oriented Testing
– Developers tests – not documented
• Demonstration Oriented Testing
– Testers - through demonstration
• Destruction Oriented Testing
– Negative way of testing – change in tester‟s responsibility
• “proving that software doesnot fail at some abnormal instances” instead of
“proving that software works under normal conditions”
• Evaluation Oriented Testing
– Evaluation based on metrics/parameters
• Prevention Oriented Testing
– Followed by highly matured organizations
– To make it defect-free
Why Testing Necessary
• Understanding of customer requirements differ from person
to person
– So, to be checked at each stage of SDLC
• Developers think what they developed is always right &
satisfies user requirements
– but not correct - it should be assessed.
• Different entities – involved in different phases
– may be gaps between requirements, design, coding
• May have integration issues
– unit, integration testing
• Blind fold thoughts of developers
– So, testers should challenge them
Approaches to Testing
 Approaches
 Big
Bang Approach
 TQM Approach

 TQM as against Big Bang Approach


 Characteristics of Big Bang Approach
 TQM in Cost Perspective
1. Big Bang Approach
 Testing after development completed
 System testing/final testing – done before releasing
the software
 Last part of SDLC as per waterfall model
 Final product tested- before release
 Has main thrust on black box testing
1. Big Bang Approach
• Phase-wise defect distribution
Development Phase Percentage of Defects
Requirements 58
Design 35
Coding 5
Other 2

• Characteristics
– All defects found in last phase
– Cost-huge
– Huge rework, retesting, scrap, sorting of software components
– No corrective & preventive actions – arise from these defects
– Regression testing – correcting defects leads to creation of new defects –
dependent components affected
1. Big Bang Approach
• Organizations following Big Bang Approach
– Are less matured
– May spend huge cost of failure
– Needs several retesting & Regression Testing
– Observables:
• Verification activities (during SDLC) – can find 2/3 of total
defects
• Validation activities (in unit testing) – can find ¾ of remaining
defects
• Verification activities (during System testing) – 10% of total
defects
• Remaining 5% to 10% defects – identified only when the product
reaches customer – unless the organization takes preventive
measures
doesn’t
Big Bang Preventive Measures
go for
2. TQM Approach
• TQM Cost Triangle
– Stages of maturity
• 0 – highly matured
– No need of verification/validation
– Quality is free
• 1 – Verification done
– Will have appraisal cost
• 2 – validation
– filters the defects escaped from verification
– High validation cost
• 3 – defects found by customer
– Results in 1000 times much higher cost
2. TQM Approach
 Less defects produced
 Very few defects undetected
 Defect removal costs
 After coding (approx. 10 times >) before coding
 During Production (approx. 100 times>) before coding

 TQM – aims at reducing cost of development, cost


of quality by continual improvement
TQM Cost Perspective
• Green Money / Cost of Prevention
– Money spent on defining process, training people, developing quality
– Investment in doing quality work
– Improves profitability
• Blue Money / Cost of Appraisal
– Cost incurred in development, 1st time review/testing
– Doesn‟t return profit
– Includes all appraisal techniques used during SDLC such as 1st time
verification/validation
• Red Money / Cost of Failure
– Pure loss for organization
– Money lost in rework, sorting, scrap
– Directly reduces profit
– Customer doesn‟t pay for it
– Includes cost incurred in re-inspection, re-testing, regression testing
Views of Testing
 Manager‟s View:
 Product must be safe, reliable, when used by users
 Satisfy user requirements

 Testing process- should uncover defects & give


confidence to customer
 Tester‟s View:
 To discover defects, faults, weakness of product
 Customer‟s View:
 Testingmust give confidence
 All defects removed

 s/w must be defect-free by testing


Objectives of Testing
 Must find
 What should be done & What should not be done
 Deviation from requirement specification

 Risks- what should be done

 Software Testing
A SQA activity – in many places
 But in Reality - it is a Quality Control (QC) activity
Basic Principles of Testing
 Define the expected output or result for each test
case
 Defects may be in the product or test case or test
plan
 Developers or the development teams must not test
their own products
 Inspect the results of each test completely and
carefully
 Used to identify the weak processes, build right
processes and improve the process capability
Basic Principles of Testing
 Include test cases for invalid and unexpected
conditions
 Test the program to see if it does what it is not
supposed to do and what it is supposed to do
 Do not plan tests with an assumption that no error
will be found
 The probability of locating more errors in any
module is directly proportional to the no. of errors
already found in that module
Successful Testers & Test Cases
 Successful Testers – must conduct SWOT analysis of
software and the processes used to make it
 Successful Test Case – must consider all cases - +ve,
-ve, all scenarios
Testing during SDLC
 Requirement Testing
 Mock running of future application using requirement statements
 Completeness of Requirement statements
 User Expectation clarity
 Measurability of expected results
 Testability, Traceability of requirements at the end

 Design Testing
 completeness

 Code Testing
 Readability, maintainability in future, ability to integration testing

 Test Scenario & Test Case Testing


 Should be feasible
 Should coverall requirements
 Test Case – should cover all scenarios
Requirement Traceability Matrix
 Tracing from requirements to coding, design….
 A blueprint of software under development
 Matrix Structure
Requirement Traceability Matrix
 Advantages:
 Used to understand the software in a better way
 Helps in tracing if any software requirement is not
implemented (OR) any gaps between requirements
and design & code &…
 Entire software can be tracked completely

 Test case failure can be tracked completely

 Problems:
 Theoretically – all software must have
 In reality – most software doesnot have

WHY???????
Requirement Traceability Matrix
 Why???
 If number of requirements is high,
 Preparing RTM is difficult
 One-one, Many – one, one- many, many - many
relationships exist
 Needs more efforts to connect columns and rows
 Requirementschanges frequently
 Customer doesn‟t find any use of it – hence, will not pay
for it.
Requirement Traceability Matrix
 Horizontal Traceability
 Traced from requirement ---through----test results
 Vertical Traceability
 A requirement may have child requirements – Tracing from parent to
child requirements
 Bidirectional Traceability
 Horizontal in both directions – requirements to results, results to
requirements RISK TRACEABILITY MATRIX
 Risk Traceability
 Tracing the possibility of risk of failure
Essentials of Software Testing
 SWOT Analysis
 Strengths
 Identifying strong areas
 Weakness
 Failure possibilities
 Opportunity
 Identifying space for improvement
 Threats
 Identifying risks that results in failure
Workbench
 Tester‟s Workbench
Workbench
 Tester‟s Workbench
 For creating test strategy
Input
 Test plan
Do Process
 Writing test scenario

 Writing test cases Check Process


 Test execution Output
 Defect Management
Standards & Tools
 Retesting

 Regression Testing Rework


Important Features of Testing
Process
 It is a destructive process, but a constructive destruction
 Testing needs a sadistic approach with a consideration that
there is a defect
 Testers should identify the risks to the users and test the product
accordingly
 If the test does not detect the defect, then it is an unsuccessful
test
 A test that detects the defects is a valuable investment for
development and the customer
 Helps in product improvement
 Identifies the weaker areas of the processes used for S/W development,
improves the processes and results in customer satisfaction
Important Features of Testing
Process
 It is risky to develop a software and leave it untested
before delivery
 Reducing the coverage of testing is a risk associated with
the S/W
 Testing must give the desired level of confidence to the users
that the product will not fail

 With high pressure to deliver a software as quickly as


possible, Test process must provide maximum value in
shortest time frame
Important Features of Testing
Process
 Highest payback comes from detecting defect early in SDLC
and preventing defect leakage/defect migration from one
phase to another
 It is always economical to fix the defects as and when they appear and
conduct an analysis to find its root cause
 Phase contamination – uncorrected defects in the phase where it is
detected leads to leakage of the defects to the next stage and creates
problem
 Organizations‟ aim must be “defect prevention rather than
finding and fixing a defect”
 Consider testing as a defect-prevention mechanism
 Requires analysis of root cause and defect prevention mechanism to
prevent recurrence and removal of potential problems
Misconceptions about Testing
 Anyone can do testing, & no special skills are
required for testing
 Testers can test quality of product at the end of
development process
 Defects found in testing are blamed on developers
 Defects found by customers are blamed on testers
Principles of Testing
 Programmers/Team must avoid testing their own
work products
 Thoroughly inspect results of each test to find
potential improvements
 Initiate actions for correction, corrective action and
preventive action
Salient Features of Good Testing
 Capturing user requirements
 Testers need to analyze and document the requirements so that they can write test scenarios and test
cases
 Capturing user needs
 Present and future requirements, process requirements, and implicit requirements
 Design objectives
 They state the reason for choosing a particular approach to build a S/W
 Functional , UI, and performance requirements and other such requirements need to be tested
 User interfaces
 Users ability to interact with the system, receive error messages, and act according to the instructions
 Displays and reports generated by the system
 Internal structures
 Guided by software designs and guidelines used in design and development
 Ex: commenting standards to be used
 Execution of code
 Prove that application, module and program work correctly as per the requirements
Test Policy
 How testing should be done
 Can be defined by Senior Management – covering
all aspects of testing
 Decides the framework of testing and its status in
the mission of achieving customer satisfaction
Test Strategy / Test Approach
 Defines the action part of the test policy
 Differ from
 product to product
 customer to customer

 time to time

 Examples
 Definition
of functional coverage/requirement
coverage/feature coverage of a particular product
 How much testing would be done manually

 What can be automated?

 Number of Testers / developers


Test planning
 1st activity of the test team
 Should talk about limitations and constraints of testing
 Should talk about risks assumptions during testing
 Plan testing efforts adequately with an assumptions
that defects are there
 If defects are not found, it is failure of testing activity
 Successful tester is not one who appreciates
development but one finds defect in the product
 Testing is not a formality to be completed at the end
of the development cycle
Testing process & no of defects
found
 We assume that
“If more number of defects found then chances of
customer finding the defects is reduced”
 Actually
“If more number of defects found then there is a
probability of finding some more defects”
Test team efficiency
 dependent on organization culture.
 Test manager should be aware of the efficiency of
the test team.
 Often, Assess the test team efficiency.
 Efficient Test team : less iteration of testing is
required
 Less Efficient Development team : more iterations
needed in fixing defects.
Test team efficiency
 If there are 100 defects in a product then
if testing is 90% efficient - > It can find 90
errors
 If there are 200 defects in a product
if testing is 90% efficient - > It can find 180
errors.
Test team efficiency
Defects introduced during development= x
Total defects found by test team =y
( includes both defects introduced during development & others)

Defects found that does not belongs to defects


introduced during development =z

Test team Efficiency = (y-z) / x


Mutation testing
 is a type of white box testing where we mutate (change)
certain statements in the source code and check if
the test cases are able to find the errors
 Test Cases:
 Designed & executed to find defects
 If test cases – not capable of finding defects – loss for an
Organization
 Test case efficiency
 Defects deliberately introduced by development = X
 Defects found by test cases in original program =Y

 Defects found by test cases in mutant = Z

 Test Case Efficiency = (Z-Y)/X


Test Team Approach
 The test team is defined by the type of
organization and the type of product being
developed
 Four different approaches
 Location of the test team in an organization
 Independent Test Team
 Test team reporting to Development manager
 Matrix Organization

 Developersbecoming testers
 Independent testing team – outside organization

 Domain experts doing software testing


Location of Test Team - Independent Test Team

 Independent of development activities and


does not report to the development group
 Reports only to the senior management

 Test manager is essential to lead the test

team

Senior
Management

Development Team Test Team


Location of Test Team - Independent Test Team

Advantages
 Test team is not under delivery pressure

 Test team is not under a pressure of „not finding‟ a defect


 Independent view about a product is obtained

 Expert guidance and mentoring is given by the test manager

Disadvantages
 Always „us‟ Vs „them‟ mentality between the development

and test team


 Testers may not have a good understanding of the

development process
 Management may be excessively inclined towards either of
the team
Location of Test Team - Test Team Reporting to
Development Manager

 Test team reports to the development


manager and hence involved from start of
the project.
Development
Manager

Development Test Team


Team
Location of Test Team - Test Team
Reporting to Development Manager
 Advantages
 Better cooperation between the development and test
team

 Test team can be involved in development and


verification/validation activities.

 This gives them a good understanding of the


requirements and the development process
Location of Test Team - Test Team
Reporting to Development Manager
 Disadvantages

 Expert guidance by the test manager may not be


available

 Sometimes the development managers are more


inclined towards development team
Location of Test Team – Matrix
Organization
 Effort is made to achieve the advantages of both
the approaches and get rid of the drawbacks of
them
 Test team reports functionally to the development
manager and administratively to the test
manager
Developers Becoming Testers
 Developers in the initial stages of SDLC take
the role of testers in the later stages
 Suitable when the application is technologically

heavy or simple
Developers Becoming Testers -
Advantages
 Developers are not in need of knowledge
transfer.
 Developers have better understanding of

design and coding and does the testing easily


 Developers have the capability to adapt to

automation testing
 Less costly as there is no separate test team

 Psychological acceptance is not an issue as


they themselves find the defect
Developers Becoming Testers-
Disadvantages
▪ Developers may not find value in performing
testing.
▪ They may be blindfolded in understanding the
requirements or selection of approach and may
not be willing to find defects.
▪ They may concentrate more on development
activities.
▪ Development needs more f creation skill while
testing needs destruction skill.
Independent Testing Team
 Separate testing team with independent
responsibility of testing
 People in the team have sufficient knowledge

and skill to perform testing


Independent Testing Team-
Advantages
 The team concentrate more on test planning,
test strategies and approach, test artifacts, etc.
 Have independent view about the work

products
 Special skill required to do special tests may

be available with the team


 Testers work for customers
Independent Testing Team-
Disadvantages
 Additional cost for the organization

 Testing team needs ramping up and


knowledge transfer

 Organizations need to check for jealousy


between development and test team
Domain Experts Doing Software
Testing
 Organizations employ domain experts to do
testing
 Useful in system testing and acceptance testing

where domain specific testing is required


Domain Experts Doing Software
Testing- Advantages
 “Fitness for use” can be tested; Experts test the
software from user‟s perspective
 Domain experts assist the developers about he

defects and customer expectations.


 Also interpret requirements in the correct

context
 They understand the scenario faced by the

actual users
Domain Experts Doing Software
Testing - Disadvantages
 Domain experts may not understand what a
customer is looking for

 It is very difficult to get domain experts in


diverse areas for a project in diverse domains

 Huge cost as these experts cost much more


than the developers and testers.
Process problems faced by Testing
 „Q‟ Organizations consider that defects are due to
incorrect process
 Incorrect process leads to 90% of working problems
 If software testing process is faulty, it introduce
defects which are not found during testing but found
by a customer
 Those defects may be „Not a defect‟, „duplicate‟,
„cannot be reproduced‟, „out of scope‟.
Constituents of Processes
 People
 Material
 Machines
 Methods
People
 Customer / user – Specifying requirements
 Business analyst / system analyst – Documenting
requirements
 Test managers/ test leads – Defines test plans and
test artifacts
 Testers – defines test scenarios, cases, test data.
 Personal attributes and capabilities may create
problems in development and testing.
 Proper skill sets may not be available.
Material
 Requirement doc, Development standards, Test
standards, Guidelines and other material are not
available.
 Those documents are not clear and incomplete.
 Test plan, project plan, organization process
document may be faulty
 Test tools and defect tracking tools not available.
Machines
 Test cases-uses various machines, simulators and
environmental factors for representing real life
scenarios.
 Problems may be generated for wrong
environmental configurations.
 Usage of wrong tools.
Methods
 Methods for test planning and risk analysis are not
clear.
 Defining test cases, test scenarios, test data may not
be proper.
Economics of testing
 Cost of T. Curve is
guided by,
 Testteam efficiency
 Defect fixing efficiency

 Defect introduction index of development team

 Cost of customer dissatisfaction is guided by,


 Customer - supplier relationship
 If more projects successful, customer will be confident
Cost Aspect of Testing
Cost of quality = Cost of prevention + Cost of
appraisal + Cost of failure

Cost of quality is 50% of the cost of the product


(Reduce the cost of the testing to the maximum extent)

Cost of product = cost for development + cost for testing


Cost Aspect of Testing –
Resources for development
Cost Aspect of Testing –
Cost of development

Cost of development =
[no of resources for development project]
[ cost of capturing requirements, conducting analysis,
asking queries, elicitation of requirements + design
cost (both high level and low level design) + coding
cost (integrating & creating final product)]
Cost Aspect of Testing
 Assessment of Cost of Testing
 Cost of Prevention in testing
 Cost of Appraisal in Testing
 Cost of failure in Testing
Cost Aspect of Testing
 Assessment of Cost of Testing
 Based on
 Type of application
 Development and Testing methodology
 Domain and Technological aspects
 Maturity of Development and testing processes
 Cost of testing – based on
 Size
 Importance of an application to a user
 K f(x)
 K- constant

 F(x) – function of size of an application


Cost Aspect of Testing
 Cost of Prevention in testing
 Cost spent in creation of verification & validation
artifacts
 Cost spent in training

 Cost spent in preventing defects


 Planning for Verification & validation
 Writing test cases, scenarios,…
 Test team competency, training….

 Cost of Appraisal in Testing


 First time verification & validation testig
Cost Aspect of Testing
 Cost of failure in Testing
 Calculated on the basis of
 Historicaldata, pre-exit without testing
 No. of test cases per iteration
 No. of iteration
 Regression testing
 Retesting
Establishing Testing Policy
 Testing driven by
 Test policy
 What should/should not be done
 Test strategy/approach
 Stepsinvolved
 Can be discussed with user

 Test planning
 Should contain test objectives, methods applied for defining
test scenario, test cases and test data
 Test objectives
 What is the target
 Methods - applied for testing efforts are defined at organizational levels
Structured Approach to Testing
 Testing – done at all phases of SDLC
 Wastes in Testing – due to Wrong approach
 Waste in wrong development
 Waste in testing to detect defects

 Wastage as wrong specifications, designs, codes,


documents
 Mustbe replaced by correct spec, designs, codes &
documents
 Wastage as system must be retested to ensure that the
corrections are correct
Categories of Defects
 Must be defined in test plan
 Differ from organization to organization, project to project,
customer to customer
 Categories:
 On the basis of requirement specification
 Variance from product specifications, requirement specification -
Responsible for „producer‟s gap‟
 Variance from user expectations – Responsible for „user‟s gap‟

 Types of defects
 Misinterpretation of specifications
 Missing specifications
 Features not supported
 Root causes of defects
Defect, Error, Mistake in software
Developing Test Strategy
 Select and rank test factors for the given
application
 Identify the system development phases and
related test factors
 Identify associated risks with each selected test
factor in case if it is not achieved
 Identify phase in which risks of not meeting a test
factor need to be addressed
Developing Test Methodologies
(Test Plan)
 Acquire and study test strategy as defined earlier
 Determine the type of development project being
executed
 Based on different organization
 Based on criticality
 Life
affecting software
 Huge money affecting software

 Determine the type of software system being made


 Identify tactical risks related to development
 Structural risks
 Technical risks
Developing Test Methodologies
(Test Plan)
 Determine when testing must occur during life cycle
 Steps to develop customized test strategy
 Select and rank test factors as expected by customer
 Identify system development phase where these factors
must be controlled Test Strategy Matrix

 Identify business risks for software under development

 Place risks in matrix in- order to analyze


Developing Test Methodologies
(Test Plan)
 Types of development methodology impact test plan
decisions
Testing Process
 Defining test policy
 Defining test strategy
 Preparing test plan
 Establishing test objectives to be achieved
 Design test scenarios and test cases
 Writing/reviewing test cases
 Defining test data
 Creation of test bed
 Executing test cases
 Test result
 Test result analysis
 Performing retesting/regression testing when defects are resolved by
development team
 Root cause analysis & corrective/preventive actions
Test Methodologies/Approaches
 Black box testing
 Product tested as per s/w specifications, requirement
spec.
 By business analysts/system analyst/customer

 White box testing


 Software is tested for structures, architecture, design,
coding, standards….
 Gray box testing
 Combination of both
 Combined wherever necessary – depending on the
requirements of the product
Black box testing
 Considers general functionalities as in requirement
spec
 Advantages:
 Proves functionality of software as what it should do/
should not do
 Disadvantages:
 Logical
error in coding-missed
 Same code tested many times
Black box testing
 Test case designing methodologies
 Designing test cases for Black box testing – difficult
 Test scenarios can be used for defining test cases

 Test data definition


 Techniques
 Equivalence partitioning
 Boundary value analysis
 Cause and effect graph
 State transition testing
 Use case based testing
 Error guessing
White Box Testing
 Done on the basis of Internal structure of software
 Reviews of requirements, design, codes
 Advantages:
 For verification
 Ensures whether procedures, methods followed properly

 Gives early warnings-if something wrong

 Disadv:
 Does not check – user requirements-met correctly
 Does not report whether decisions made are based on
requirements
 Use of checklists
White box testing
 Test case designing methodologies
 Techniques
 Statement coverage
 Decision coverage
 Condition coverage
 Path coverage
 Logic coverage
Gray Box Testing
 Both verification & Validation
 Advantages:
 Tested - Both functionally and structurally
 Disadvantage:
 Usually done by automation tools
 Hence, understanding is tough
Skills required by Tester
 Testing Tips
 Testing must occur throughout SDLC

 Testing must cover functional/structural parts

 Skills – General, Testing Skills


 General Skills
 Written & verbal presentation skills
 Effective listening skill
 Facilitation skill
 Software development, operations & maintenance
 Continuous education
Skills required by Tester
 Testing Skills  Execution of test plan
 Continuous improvement of
 Concepts of testing
testing process
 Levels of testing
 Reduce software development
 Techniques for verification & risk
validation
 Perform testing effectively
 Selection & use o testing tools
 Uncover maximum number of
 Knowledge of testing defects
standards
 Use business logic
 Risk assessment and
management
 Developing test plan
 Defining acceptance criteria
 Checking of testing process
Thank you

You might also like