By
SATYANANDARAM N
Why debugging is needed
Program analysis tool
Integrating testing
Identifying errors in a program code and then
fix them up are known as debugging
Approaches for debugging:
▪ Brute Force Method:
▪ This is the least efficient common method of debugging
▪ The program is loaded with print statements to print the
intermediate values which help to find the error
statement
Approaches for debugging:
▪ Backtracking:
▪ Beginning from the statement at which an error
symptom has been observed
▪ The source code is traced backwards until the error is
discovered
▪ Cause Elimination method:
▪ Based on the list of causes which have contributed the
error symptom is developed
▪ we have to prepare test case for error and apply it to
eliminate the error
Debugging is often carried out by
programmers
It requires a deep understanding of the
program design
Partial understanding of the system design
and implementation may require more effort
to debug
After every round of error-fixing, regression
testing must performed
An automated tool that takes code as input
and produces reports such as its size,
complexity and programming standards
Two broad categories
▪ Static Analysis tools
▪ compilers
▪ Dynamic Analysis tools
▪ Testing with full test suite
▪ Post execution analysis and reports
Involves integrating components to create a
system or sub-system.
May involve testing an incremental procedure
to be delivered to the customer.
Two phases:
▪ Integration testing - the testing team can have
the access over source code. The system
components will tested and integrated
accordingly.
▪ Release testing - the test team test the complete
system to be delivered as a black-box.
Involves with building a system from its
components and testing it to fix the problems
during the components interactions.
Top-down integration
▪ Develop the skeleton of the system and populate
it with components.
Bottom-up integration
▪ Integrate infrastructure components then add
functional components.
To simplify the error localisation, systems
should be integrated as incrementally.
A T1
T1
A
T1 T2
A B
T2
T2 B T3
T3
B C
T3 T4
C
T4
D T5
Test sequence 1 Test sequence 2 Test sequence 3
Alpha Testing (Verification testing)
▪ real world operating environment
▪ simulated data, in a lab setting
▪ systems professionals present
▪ observers, record errors, usage problems, etc.
Beta Testing (Validation Testing)
▪ live environment, using real data
▪ no systems professional present
▪ performance (throughout, response-time)
▪ peak workload performance, human factors test,
methods and procedures, backup and recovery - audit
It is to check the performance of Non-Functional
requirements
several types of performance testing can be
done
▪ Stress testing:
▪ it evaluates the system performance
▪ By providing the abnormal and even illegal input conditions
to stress the capabilities of the software
▪ Input data volume, input data rate, processing time,
utilization of memory are tested
▪ Ex: an operating system is supposed to support 15 multi-
programmed jobs, the system is stressed by attempting to
run 15 or more jobs simultaneously
Volume Testing:
▪ To check whether the data structures (arrays, queues,
stacks, etc..) have been designed to successfully
extraordinary situations
▪ Ex: a compiler might be tested to check whether the
symbol table overflows when a very large program is
compiled
Configuration Testing:
▪ It analyze the system behavior in various hardware
and software configurations specified in the
requirements
Compatibility Testing:
▪ This testing is required when the system is
integrated with other types of systems
Regression Testing:
▪ This testing is required when the system has
upgraded with an existing system to fix some
bugs or enhance the functionality and
performance
Recovery Testing:
▪ It checks the response of the system in case of faults,
or loss of power, devices, services, data etc..
Maintenance Testing:
▪ It is verified that the equipment exist and they
perform properly
Documentation Testing:
▪ It is checked that the required user manuals,
maintenance manuals, and technical manuals exist
and are consistent
It focuses on internal logic of a program ( testing in
small
It performed early in the testing process
Based on the control structures of a method we have
to derive the test cases
▪ Ensures that all independent paths within a module have
been executed at least once
▪ Executes all logical decisions on their true and false side
▪ Executes all loops at their boundaries and within their
operational bounds
▪ Executes internal data structures to ensure their validity
It focuses on functional requirements of
software and it enables the software engineer
to derive sets of input conditions for all
functional requirements
It is not the alternative approach to white box
technique, it discovers a different class of
errors
It applied during the later stages of testing
It attempts to find errors in following
categories.
▪ Incorrect or missing functions
▪ Interface errors
▪ Errors in data structures or external database
access
▪ Initialization and termination errors
It demonstrate that a function properly
accepting the input and producing the output
correctly.