Testing and Debugging
Testing and Debugging
TOPICS
A strategic approach to software testing
Unit Testing Integration Testing
Validation Testing
System Testing The ART of Debugging
Summary
towards the of integration entire computer based system. Different testing techniques are required at different points in time. Testing is conducted by the s/w developer and ITG ( Independent Test Group ) for large projects. Testing and Debugging are different and Debugging is essential in any testing strategy.
Syed Mujahid Hussain Naqvi
V& V goals
Verification and validation should establish
confidence that the software is fit for purpose. This does NOT mean completely free of defects. Rather, it must be good enough for its intended use and the type of use will determine the degree of confidence that is needed.
V & V confidence
Depends on systems purpose, user expectations and
marketing environment
Software function The level of confidence depends on how critical the software is to an organisation. User expectations Users may have low expectations of certain kinds of software. Marketing environment Getting a product to market early may be more important than finding defects in the program.
behaviour is observed
STRATEGIC APPROACH
Issues to be addressed to develop a successful
manner long before testing commences. State testing objectives explicitly. Understand the users of the software. Develop testing plan that emphasizes rapid cycle testing.
STRATEGIC APPROACH
Issues to be addressed to develop a successful
testing. Conduct formal technical reviews to assess test strategy and test cases. Develop continuous improvement approach
UNIT TESTING
Unit testing -- focuses on the smallest element of
UNIT TESTING
Unit Test Generation Considerations:
Review Design information - develop unit test cases.
interface local data structures boundary conditions independent paths error handling paths
driver
Module to be tested stub stub
Syed Mujahid Hussain Naqvi
Test cases
Interface considerations # of input parameters = # arguments? Parameter and argument attributes match? Parameter and argument units match? Order correct (if important)? Number and order of arguments for built-ins? References to parms not associated with entry point? Attempt to modify input-only arguments? Global variable definitions consistent? Constraints passed as arguments?
INTEGRATION TESTING
A systematic approach for constructing program
structure while conducting tests to uncover errors associated with interfacing. Tendency for Non-Incremental integration.. Big Bang approach . Chaos !! ( usually ). Incremental integration - program is constructed and tested in small segments.
Top-Down Integration testing Bottom-Up Integration testing
INTEGRATION TESTING
INTEGRATION TESTING
Top-Down Approach Begin construction and testing with main module.
Stubs are substituted for all subordinate modules.
modules. Tests are conducted as each module is integrated. On completion of each set of tests, another stub is replaced with the real module. Regression testing may be conducted to ensure that new errors have not been introduced.
Top-Down Approach :
Advantages:
INTEGRATION TESTING
Verifies major control or decision points early in the test process. With the use of depth-first integration testing, a complete function of the software can be demonstrated. -Confidence builder for developer/customer. Since stubs replace lower level modules, no significant data can flow upwards to the main module.
Disadvantages:
INTEGRATION TESTING
Bottom Up Approach :
This approach begins construction and testing with
Low-level modules are combined into clusters. A driver is written to coordinate test case input and output. The cluster is tested. Drivers are removed and clusters are combined moving upward in the program hierarchy.
Bottom Up Approach
Bottom Up Approach
Advantages:
INTEGRATION TESTING
Easier test case design and lack of stubs. The program as an entity is does not exist until the last module is added.
Disadvantages:
Regression Testing Re-execution of some subset of tests already conducted to ensure that the new changes do not have unintended side effects.
INTEGRATION TESTING
software functions Additional tests that focus on functions that are likely to be affected by the change. Tests that focus on software components that have changed.
Syed Mujahid Hussain Naqvi
INTEGRATION TESTING
1
Scope of testing
2
Test plan
3
Test Procedure n
4
Actual Test Results
5
Ref. & Appendix
Environment Test Schedule Unit Test / Resources phases test case and Overhead data Test builds software environment Order of Integration
Syed Mujahid Hussain Naqvi
VALIDATION TESTING
It provides final assurance that software meets all
After each validation test case either software conforms to specs or a deviation from specs is detected and a deficiency list needs to be worked. Alpha and Beta testing
Alpha test -- At developers site by customer. Beta test -- At customers site in a live environment.
Syed Mujahid Hussain Naqvi
SYSTEM TESTING
A series of tests to verify that all system
SYSTEM TESTING
Stress Testing: Executes the system in a manner that demands resources in abnormal quantity, frequency or volume. Performance Testing: To test the run time performance of a system within the context of an integrated system.
System Test
Acceptance Test
Developers
Early Unit Integ User Eval Test
Development Environment
Users
when a test case uncovers an error, it is the debugging process that results in the removal of the error. Debugging is an ART. The external manifestation of the error and the cause of the error normally do not share an obvious relationships.
Debugging Approaches Brute force : - Take memory dumps, invoke run time traces. Least efficient and quite common. Backtracking :- Once an error is uncovered, trace your way back to the cause of the error. Cause Elimination : - Isolate potential causes, devise cause hypotheses tests to isolate bug. Use of debugging tools
COMMENTS
testing ?
Developers have a vested interest in demonstrating
that their software is error-free. Developers (psychologically) feel that testing is destructive.
When are we done with testing ? You are never done with testing, the burden shifts from you to the customer.
SUMMARY
technical effort in the software process. Objective of Software testing -- To uncover errors, maintain software quality. Steps : Unit, Integration, Validation, System. Debugging is often an art and the most valuable resource is often the counsel of other software engineers.