Software Testing
• Software testing is defined as the execution of a program to find its
faults. While more time typically is spent on testing than in any other
phase of software development, there is considerable confusion
about its purpose.
• Many software professionals, for example, believe that tests are run
to show that the program works rather than to learn about its faults
How to define Software Testing Principles
• Testing
The execution of a program to find its faults
• Verification
The process of proving the programs correctness.
• Validation
The process of finding errors by executing the program in a real environment
• Debugging
Diagnosing the error and correct it
Testing Principles: To remove as many defects as possible before test since the
quality improvement potential of testing is limited
Testing Levels
• Unit testing
• Integration testing
• System testing
• Acceptance testing
Unit testing
• The most ‘micro’ scale of testing.
• Tests done on particular functions or code modules.
• Requires knowledge of the internal program design and code.
• Done by Programmers (not by testers).
Unit testing
Objectives To test the function of a program or unit of
code such as a program or module
To test internal logic
To verify internal design
To test path & conditions coverage
To test exception conditions & error
handling
When After modules are coded
Input Internal Application Design
Master Test Plan
Unit Test Plan
Output Unit Test Report
Who Developer
Methods White Box testing techniques
Test Coverage techniques
Tools Debug
Re-structure
Code Analyzers
Path/statement coverage tools
Education Testing Methodology
Effective use of tools
Integration Testing
• Testing of combined parts of an application to
determine their functional correctness.
• ‘Parts’ can be
• code modules
• individual applications
• client/server applications on a network.
Types of Integration Testing
Big Bang testing: Big Bang Integration Testing is an integration
testing strategy wherein all units are linked at once, resulting in a
complete system. When this type of testing strategy is adopted, it is
difficult to isolate any errors found, because attention is not paid to
verifying the interfaces across individual units.
Top Down Integration testing: testing form the top of the
module hierarchy and work down to the bottom. Modules
are added in descending hierarchical order.
Bottom Up Integration testing:
testing from the bottom of the hierarchy and works up to the
top. Modules are added in ascending hierarchical order.
System Testing & Acceptance Testing
• the process in which a quality • Acceptance Testing: Acceptance
assurance (QA) team evaluates testing is a quality assurance (QA)
how the various components of process that determines to what
an application interact together in degree an application meets end
the full, integrated system or users' approval
application.
System Testing
Objectives To verify that the system components perform
control functions
To perform inter-system test
To demonstrate that the system performs both
functionally and operationally as specified
To perform appropriate types of tests relating
to Transaction Flow, Installation, Reliability,
Regression etc.
When After Integration Testing
Input Detailed Requirements & External Application
Design
Master Test Plan
System Test Plan
Output System Test Report
Who Development Team and Users
Methods Problem
/ Configuration
Management
Tools Recommended set of tools
Education Testing Methodology
Effective use of tools
Acceptance Testing
Objectives To verify that the system meets
the user requirements
When After System Testing
Input Business Needs & Detailed
Requirements
Master Test Plan
User Acceptance Test Plan
Output User Acceptance Test report
Who Users / End Users
Methods Black Box techniques
Problem / Configuration
Management
Tools Compare, keystroke capture & playback,
regression testing
Education Testing Methodology
Effective use of tools
Product knowledge
Business Release Strategy
Testing methodologies
Black box testing
White box testing
Incremental testing
Thread testing
• Black box testing
• No knowledge of internal design or code
required.
• Tests are based on requirements and
functionality
• White box testing
• Knowledge of the internal program design and code
required.
• Tests are based on coverage of code
statements,branches,paths,conditions.
BLACK BOX - TESTING TECHNIQUE
• Incorrect or missing functions
• Interface errors
• Errors in data structures or external database access
• Performance errors
• Initialization and termination errors
Black box / Functional testing
• Based on requirements and functionality
• Not based on any knowledge of internal
design or code
• Covers all combined parts of a system
• Tests are data driven
White box testing / Structural testing
• Based on knowledge of internal logic of an
application's code
• Based on coverage of code statements,
branches, paths, conditions
• Tests are logic driven
White Box - testing technique
• All independent paths within a module have been
exercised at least once
• Exercise all logical decisions on their true and false
sides
• Execute all loops at their boundaries and within their
operational bounds
• Exercise internal data structures to ensure their
validity
Functional testing
• Black box type testing geared to functional requirements of
an application.
• Done by testers.
System testing
• Black box type testing that is based on overall requirements
specifications; covering all combined parts of the system.
End-to-end testing
• Similar to system testing; involves testing of a complete
application environment in a situation that mimics real-world
use.
Sanity testing
• Initial effort to determine if a new software
version is performing well enough to accept
it for a major testing effort.
Regression testing
• Re-testing after fixes or modifications of the
software or its environment.
Major Testing Types
Stress / Load Testing
Performance Testing
Recovery Testing
Conversion Testing
Usability Testing
Configuration Testing
Stress / Load Test: Evaluates a system or component at
or beyond the limits of its specified requirements.
• Determines the load under which it fails and
how.
Performance Test: Evaluate the compliance of a
system or component with specified
performance requirements.
• Often performed using an automated test
tool to simulate large number of users.
Recovery Test: Confirms that the system recovers
from expected or unexpected events without loss of
data or functionality.
Eg. Shortage of disk space, Unexpected loss of communication,
Power out conditions
Conversion Test: Testing of code that is used to convert data from
existing systems for use in the newly replaced systems
Usability Test: Testing the system for the users to learn and use the
product.
Configuration Test
• Examines an application's requirements for pre-
existing software, initial states and configuration
in order to maintain proper functionality.