Verification and Validation

Steven Zeil

Last modified: Mar 11, 2014

Verification & Validation: assuring that a software system meets the users’ needs

Principal objectives:

1. The Process

Verification & Validation

Testing

What Can We Find?

2. Non-Testing V&V

Static Verification

Verifying the conformance of a software system and its specification without executing the code

Static verification effectiveness

It has been claimed that

2.1 Code Review

Inspecting the code in an effort to detect errors

Desk Checking

Inspection

Inspection pre-conditions

Inspection procedure

Inspection teams

Inspection rate

Inspection checklists

Inspection checks

What kinds of faults would appear in a checklist?

Inspection checks

Inspection checks

Inspection checks

Inspection checks

Inspection checks

Inspection checks

Inspection checks

2.2 Mathematically-based verification

Program proving

Program verification arguments

Model Checking

2.3 Static analysis tools

Static analysis checks

What kinds of faults can be detected by static analysis?

Static analysis checks

Static analysis checks

Static analysis checks

Static analysis checks

2.4 Cleanroom software development

The name is derived from the ‘Cleanroom’ process in semiconductor fabrication. The philosophy is defect avoidance rather than defect removal.

Cleanroom process teams

Specification team.
Responsible for developing and maintaining the system specification
Development team.
Responsible for developing and verifying the software. The software is {\em NOT} executed during this process
Certification team.
Responsible for developing a set of statistical tests to exercise the software after development.

Reliability growth models used to determine when reliability is acceptable

3. Testing

Testing stages

Testing goals

3.1 Unit Testing

By testing modules in isolation from the rest of the system

Main challenge is how to test in isolation

Scaffolding

To do Unit tests, we have to provide replacements for parts of the program that we will omit from the test.

Drivers

A driver is test scaffolding that calls the module being tested.

Stubs

Replacements for code begin called from the unit under test

3.2 Integration Testing

Integration testing is testing that combines several modules, but still falls short of exercising the entire program all at once.

Types of testing

4. The Testing Process

Testing Process Components