You are on page 1of 14

Software Testing:

Verification and Validation


• Verification
“Are we building the product right?”

• Validation
“Are we building the right product?”

Barry Boehm, 1979

Ch.19 - Verification & Validation Tuesday, December 7, 2021 1


Verification and Validation
Techniques

• Static Techniques
– Software Inspections
(against source code)

• Dynamic Techniques
– Software Testing
(requires executable program)

Ch.19 - Verification & Validation Tuesday, December 7, 2021 2


Verification and Validation
Static techniques

• Software Inspections
– of requirements documents
– of design documents (design reviews)
– of source code (code reviews)
– automated static analysis

Ch.19 - Verification & Validation Tuesday, December 7, 2021 3


Verification and Validation
Dynamic techniques

• Software Testing
– specification vs. implementation
• Defect testing [Ch.20]
– verifying non-functional requirements (e.g.
performance; reliability)
• Statistical testing [Ch.21]
– automated dynamic analysis (if applicable)

Ch.19 - Verification & Validation Tuesday, December 7, 2021 4


Verification and Validation
Goals

• Establish that software is fit for purpose,


not “bug-free”
• “Good enough” depends on:
– Software function (critical nature?)
– User expectations
– Market
• competition, price

Ch.19 - Verification & Validation Tuesday, December 7, 2021 5


Testing vs. Debugging

• Verification and Validation


– looking and categorizing existence of system
defects [example] [bug list]
– “What?”

• Debugging
– locating and correcting these defects
– “Why?”

Ch.19 - Verification & Validation Tuesday, December 7, 2021 6


Regression Testing

• Canned test runs to verify that new defects


were not introduced during “debugging”
session.
• Not exhaustive
• Targeted to a particular interface
– components, sub-systems, integrated system
• Different levels (lengths) of regression tests
– Targeted regressions
Ch.19 - Verification & Validation Tuesday, December 7, 2021 7
The Test Plan
• Planning should begin right after
requirements specification
– Acceptance tests can be written then
• System, sub-system tests can be written
against designs

Ch.19 - Verification & Validation Tuesday, December 7, 2021 8


The Test Plan

Requir ements System System Detailed


specification specification design design

System Sub-system Module and


Acceptance
integration integration unit code
test plan
test plan test plan and tess

Acceptance System Sub-system


Service
test integration test integration test

Ch.19 - Verification & Validation Tuesday, December 7, 2021 9


Software Inspections (code reviews)

• >60% of program errors can be detected in


code review [Fagan86]
• >90% if more formal approach used (e.g.
“Cleanroom” process) [Mills87]
(We’ll talk about Cleanroom later)

Ch.19 - Verification & Validation Tuesday, December 7, 2021 10


Software Inspections (code reviews)
• Why are reviews more effective for finding defects
in systems/subsystems (i.e., before acceptance
testing)?
– Bugs are often masked by other bugs
– Leverage domain/programming knowledge
• inspectors are skilled programmers

• Common practice: code reviews and then


acceptance testing
– reviews can also help with development of tests

Ch.19 - Verification & Validation Tuesday, December 7, 2021 11


Software Inspections (code reviews)

• Sample procedure:
– Announce review meeting in advance (a week?)
– Provide design document, implementation
overview, and pointer to code
– Reviewers read code (and make notes) in
advance of meeting
– During meeting, directives recorded by Scribe
– Testers/documenters attend too
Ch.19 - Verification & Validation Tuesday, December 7, 2021 12
Automated Static Analysis

• CASE tools that catch program curiosities


that are usually indicative of bugs:
– unreachable code
– uninitialized variables
– unreferenced variables

• Programming language dependent


– e.g., LINT (for C)

Ch.19 - Verification & Validation Tuesday, December 7, 2021 13


Automated Dynamic Analysis

• Tools which do bookkeeping while program


is run/tested.
• Can find some dynamic problems that
compiler cannot catch (depends on
language…)
• C/C++ tools: Purify, BoundsChecker

Ch.19 - Verification & Validation Tuesday, December 7, 2021 14

You might also like