Software testing :
Software testing Integration testing: with source code
Release / functional testing: black-box
Integration testing :
Integration testing Top-down: from skeleton to components
Bottom-up: from components to system
Release testing :
Release testing Choose inputs that generate error messages
Design inputs that cause overflow
Repeat inputs / series of inputs
Force generation of invalid outputs
Force computation results to be too large or too small
More testing :
More testing Performance testing:
Done after release testing
Component / unit testing:
Individual functions / methods
Object classes
Composite components
Interface testing
Parameters
Shared memory
Procedures
Message passing
Interface errors :
Interface errors Interface misuse -> parameters
Interface misunderstanding -> functionality
Timing errors
Interface testing :
Interface testing Test parameters to extreme values
Test pointers with ‘null’ values
Design tests that will cause a component to fail in procedural units
Stress testing in MPIs
With several components accessing memory change the order of each component
Test case design :
Test case design Requirements based testing: tests system requirements
Partition testing: I/O data grouped by common characteristics (ie negative numbers)
Structural testing: design tests that will “cover” every line of code
Additional reading :
Additional reading 23.4 Test automation