3.1 Testing and Verification
Verification
Verification aims at ensuring that the system (or software) fulfills the requirements. Verification is often done on the running system itself, at the risk of missing defects that are not observed during testing. Static analysis tries to analyze the entire behavior of software, but is essentially undecidable and thus cannot be done automatically on arbitrary systems.
Watch
Verification: Static and Dynamic Analysis (4:37)
Read
Wikipage article on verification and validation Links to an external site.
Reflect
- What systems and software that have been verified thoroughly?
- What kinds of verification and validation are required by safety and security standards?
- How does "performance qualification" (in the wikipedia article) interact with certification?
Software Testing
Good software testing goes beyond automating test execution. It is important to distinguish how test cases and their inputs are designed: based on the requirements or the implementation. In the latter case, different types of code coverage give an indication of how thorough tests are.
Watch
Software Testing (9:50)
Read
Wikipedia pages on:
- Software Testing Links to an external site. (first four sections)
- Code coverage Links to an external site.
Reflect
- How have you designed your test cases in the past?
- How do you choose your inputs?
- What levels of testing (unit, system, integration) are you familiar with?