So far we have covered program design and quite a lot about program specification and implementation.
We now turn to the related issues of ascertaining whether or not a program works as we hope it will and discovering why not when it does not.
- Validation: The process designed to increase our confidence that a program works as intended, which can be done through:
- Verification: A formal or informal argument that a program works on all possible inputs.
- Testing: The process of running a program on a set of test cases and comparing the actual results with expected results.
- Debugging: A process of ascertaining why a program is not functioning properly — finding and removing bugs.
- Defensive programming: The practice of writing programs in a way to ease the process of validation and debugging.
Types of Testing
Black-Box Testing
White-Box Testing
Testing Procedures
Testing Abstraction
Design Pattern IV
Coupling and Cohesion