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:

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?