Page 224 -
P. 224
Chapter 8 Software testing 207
Input Test Data I e Inputs Causing
Anomalous
Behavior
System
Figure 8.1 An Output Test Results O e Outputs Which Reveal
input-output model the Presence of
of program testing Defects
Barry Boehm, a pioneer of software engineering, succinctly expressed the difference
between them (Boehm, 1979):
‘Validation: Are we building the right product?’
‘Verification: Are we building the product right?’
Verification and validation processes are concerned with checking that software
being developed meets its specification and delivers the functionality expected by the
people paying for the software. These checking processes start as soon as requirements
become available and continue through all stages of the development process.
The aim of verification is to check that the software meets its stated functional and
non-functional requirements. Validation, however, is a more general process. The aim
of validation is to ensure that the software meets the customer’s expectations. It goes
beyond simply checking conformance with the specification to demonstrating that the
software does what the customer expects it to do. Validation is essential because, as
I discussed in Chapter 4, requirements specifications do not always reflect the real
wishes or needs of system customers and users.
The ultimate goal of verification and validation processes is to establish confi-
dence that the software system is ‘fit for purpose’. This means that the system must
be good enough for its intended use. The level of required confidence depends on the
system’s purpose, the expectations of the system users, and the current marketing
environment for the system:
1. Software purpose The more critical the software, the more important that it is
reliable. For example, the level of confidence required for software used to con-
trol a safety-critical system is much higher than that required for a prototype
that has been developed to demonstrate new product ideas.
2. User expectations Because of their experiences with buggy, unreliable software,
many users have low expectations of software quality. They are not surprised
when their software fails. When a new system is installed, users may tolerate