Self-Testing: Software
Software self-testing proactively identifies weaknesses in software before they cause a visible failure
- helps prevent failure due to bugs that only appear in certain hardware/software configurations
- helps identify bugs that occur when software is driven into an untested state only reachable in a live system
- e.g., long uptimes, heavy load, unexpected requests
Examples
- fault injection (includes HW- and SW-induced faults that the SW is expected to handle): SCSI parity error, invalid return codes from operating system
- stress testing: heavy load, pathological requests
- scrubbing: restart/reboot long-running software