Verification and Validation

Steven Zeil

Last modified: Mar 11, 2014

Contents:
1. The Process
2. Non-Testing V&V
2.1 Code Review
2.2 Mathematically-based verification
2.3 Static analysis tools
2.4 Cleanroom software development
3. Testing
3.1 Unit Testing
3.2 Integration Testing
4. The Testing Process

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

Principal objectives:

1. The Process


Verification & Validation


Testing


What Can We Find?

Industry figures of 1–3 faults per 100 statements are quite common.

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


Stages of static analysis

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