14
Thursday, August 25, 2022 Ch.19 - Verification & Va lidation 1 Software Testing: Verification and Validation Verification “Are we building the product right?” Validation “Are we building the right product?” Barry Boehm, 1979

Software Testing - Verification

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 1

Software Testing: Verification and Validation

• Verification “Are we building the product right?”

• Validation “Are we building the right product?”

Barry Boehm, 1979

Page 2: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 2

Verification and ValidationTechniques

• Static Techniques– Software Inspections

(against source code)

• Dynamic Techniques– Software Testing

(requires executable program)

Page 3: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 3

Verification and ValidationStatic techniques

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

Page 4: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 4

Verification and ValidationDynamic 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)

Page 5: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 5

Verification and ValidationGoals

• Establish that software is fit for purpose,not “bug-free”

• “Good enough” depends on:– Software function (critical nature?)– User expectations– Market

• competition, price

Page 6: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 6

Testing vs. Debugging

• Verification and Validation– looking and categorizing existence of system

defects [example] [bug list]– “What?”

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

Page 7: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 7

• 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

Regression Testing

Page 8: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 8

• Planning should begin right after requirements specification– Acceptance tests can be written then

• System, sub-system tests can be written against designs

The Test Plan

Page 9: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 9

The Test Plan

Requirementsspecification

Systemspecification

Systemdesign

Detaileddesign

Module andunit codeand tess

Sub-systemintegrationtest plan

Systemintegrationtest plan

Acceptancetest plan

ServiceAcceptance

testSystem

integration testSub-system

integration test

Page 10: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 10

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)

Page 11: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 11

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

Page 12: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 12

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

Page 13: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 13

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)

Page 14: Software Testing - Verification

Saturday, April 8, 2023Ch.19 - Verification & Validation 14

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