- Testing at different levels: units, integrated units, software complete
- Testing types: negative, combinatorial, fault injection, risk controls challenge, boundary, corner cases, stress, power fail/low/intermittent,
- Software testing coordinated with system testing: What should software do when subjected to EMI? What are acceptable failure states? Mix coverage
- Platform (and hardware) variants and OS versions: Use risk analysis to determine impact of variants and/or versions, then scale.
- Planning and understanding of software testing prior to shipment versus built-in self tests (i.e., if software configuration can change in the field)
- Coverage of requirements, coverage of risk controls
- Planned exploratory testing
Software Design Verification is not just to satisfy the requirements of design, though it starts there. Testing must also include actual use environment, or simulated environment, prior to design validation activities.
Software Design Verification is not a substitute for design validation
Software that has a direct effect on safety should be tested and verified with more scrutiny.