testing, reviews, and inspectionsdberry/courses/software.engr/... · 1998. 5. 3. · finding bugs...

231
Testing, Reviews, and Inspections Daniel M. Berry

Upload: others

Post on 16-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Testing, Reviews,and Inspections

Daniel M. Berry

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 2: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Syllabus

I. Background and Theory of InspectionsII. In-class Inspection of Instructor’s

DocumentI. Group Inspection of Document Provided by

One Member

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 3: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Outline -1

• Sources of information• Background• Bugs come early and stay• Finding bugs with reviews• Psychological impediments

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 4: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Outline -2

• Procedures for doing reviews• Experimental evidence• Why inspections work• Starting an inspection program• Evaluating effectiveness of program

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 5: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sources of Information -1

M.E. Fagan, Design and Code Inspections andProcess Control in the Development ofPrograms, Technical Report IBM-SSD TR21.572, IBM Corporation, December, 1974

M.E. Fagan, “Design and Code Inspections toReduce Errors in Program Development”, IBMSystems Journal 15:3, pp. 182–211, 1976

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 6: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sources of Information -2

T. Gilb and D. Graham, Software Inspection,Addison-Wesley, Wokingham, UK, 1993

R.G. Ebenau and S.H. Strauss, SoftwareInspection Process, McGraw Hill, New York,1994

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 7: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Background

• History• Definitions• Pithy Quotes

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 8: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

History -1

Inspection technique was developed byMichael E. Fagan at IBM Kingston.

Fagan was a certified quality engineer andstudied the methods of Deming and Juran.

He used inspection on a SW project he wasmanaging in 72–74, in effect applyingindustrial hardware quality methods to SW.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 9: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

History -2

It was very successful!

He reported results in a now famous 1976paper.

The method became very popular in IBM,although there was some resistance.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 10: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

History -3

AT&T Bell Labs started using technique in1977.

In 1986, a major Bell Labs SW developmentorganization with 200 people reported itsexperience with inspections:

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 11: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

History -4

• 14% productivity increase for a singlerelease

• better tracking and phasing• early defect density data improved 10-fold• staff credited inspection as an ‘‘important

influence on quality and productivity’’

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 12: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition -1

ANSI/IEEE Standard 729-1983 IEEE StandardGlossary of SE Terminology definesinspection as

“... a formal evaluation technique in whichsoftware requirements, design, or code areexamined in detail by a person or group otherthan the author to detect faults, violations ofdevelopment standards, and otherproblems....”

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 13: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition -2

The ANSI/IEEE Standard 1028-1988 IEEEStandard for Software Reviews and Auditsdefines the objectives of SW inspection as

“to detect and identify software elementsdefects. This is a rigorous, formal peerexamination that does the following:(1) Verifies that the software element(s) satisfy

its specifications.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 14: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition -3

(2) Verifies that the software element(s)conform to applicable standards.

(3) Identifies deviation from standards andspecifications.

(4) Collects software engineering data (forexample, defect and effort data).

(5) Does not examine alternatives or stylisticissues.”

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 15: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Pithy Quotes -1

Mostly from Gilb & Graham:

Gilb & Graham’s Prevention Principle:Prevention is better than cure.orAn ounce of prevention is worth a pound ofcure.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 16: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Pithy Quotes -2

Santayana’s Principle:Those who do not remember the past arecondemned to relive it.

The Sewing Principle:A stitch in time saves nine.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 17: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Bugs Come Early and Stay

• Recall the myth• Basic reality of bugs in design• Costs of finding bugs• Bugs probably required• Requirements are difficult

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 18: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Recall the Myth

Bug

The word itself is a myth.

It implies that a bug is something that anotherwise healthy program gets,

maybe as a result of contagion from sitting inthe same memory with other buggyprograms?!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 19: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Basic Reality of Bugs in Design -1

If a bug exists in a design, then if that designis implemented, the bug will be in the code,inevitably.

’Tis only logical!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 20: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Basic Reality of Bugs in Design -2

So the issue is not if there is a bug or if it willbe found, but ...

“By whom and when will the bug be found?”

• by developers before deliveryOR• by customer after delivery

Former is better both for costs and company’simage and customer good will.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 21: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Costs of Finding Bugs

Graphs on the next slides show that the lattercosts one to two orders of magnitude less.

Same and worse is true of hardware!!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 22: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

1

2

5

10

20

50

100

Preliminarydesign

Detaileddesign

Code anddebug

Integrate Validate Operation

Early Boehm Data

Rel

ativ

e co

st to

cor

rect

err

or

Phase in which error is detected

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 23: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Larger Software Projects

IBM-SSD

GTE

80%Median (TRW Survey)20%

SAFEGUARD

Smaller Software Projects

Boehm, 1980

1000

500

200

100

50

20

10

5

2

1Acceptance

MaintenanceTestIntegrationImplementation

DesignRequirements& Specification

Boehm 1981 Data

Rel

ativ

e co

st to

fix

faul

t

Phase in which fault was detected and fixed

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 24: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Boehm’s 1981 Numerical Data

Cost Stage1 requirements & specification3–6 design10 implementation15–40 integration30–70 acceptance test40–1000 operation/maintenance

(82 is IBM average)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 25: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

200

150

100

50

0Reqs Specs Plan Design Code Integ Maint

1 2 3 4 10

30

Schach’s SummaryR

elat

ive

cost

to fi

x fa

ult

Phase in which fault is detected and fixed

200

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 26: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Bugs Probably Required

The bug that shows up after delivery to theclient was probably required into the software,with probability 85%, according to BarryBoehm’s data, and with probability 56%according to DeMarco’s data.

Why?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 27: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Requirements are Difficult -1

Martin & Tsai’s study of requirement errors:

They conducted an experiment to identifylifecycle stages in which requirement errorsare found.

An experienced user produced a polished 10-page requirements document for a centralizedrailroad traffic controller.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 28: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Requirements are Difficult -2

Ten 4-person teams of software engineerswere given the requirements document inorder to find errors in it.

The user believed that the teams would findonly 1 or 2 errors.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 29: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Requirements are Difficult -3

92 errors, some very serious, were found!

The average team found only 35.5 errors, i.e.,it left 56.5 to be found downstream!

Many errors were found by only one team!

The errors of greatest severity were found bythe fewest teams!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 30: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Requirements are Difficult -4

CONCLUSIONS: Requirements are hard to getright!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 31: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Errorer

This is a new term I invented to describe theentire class of causes of errors. It includes allthe reasons that errors are put into programs,ranging from sloppiness, through writingsomething not intended, through notunderstanding the phenomena involved,through not understanding the user, to justnot being able to see the full picture.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 32: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs with Reviews

• Finding bugs earlier• Sad fact• True cost of reviews• Panicky manager• Pressman quotes Machiavelli

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 33: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -1

So the question is: “How do you find the bugsearlier?”

Answer: The same way as you find them later,by testing! Nu?!

But but ... this means that you cannot findthem earlier than the implementation/codingphase because you cannot run test casesbefore you have code to run! Nu!?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 34: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -2

Ah ... so let us redefine testing so that it canbe done on non-executable products likerequirements and designs

Testing includes reviewing (later we willdistinguish walkthroughs from inspections).

Let the good ol’ human keppele test therequirements and designs.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 35: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -3

But hey!!! Why not do this kind of testing onexecutable products too?

After all, humans can see and understandmuch more of a global picture than can acomputer, whose vision is very local andstupid.

OK, OK, but what do you review against?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 36: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -4

You review against the same thing that youtest against, i.e., an acceptability criterion, i.e,• test data and expected results derived from

requirements, OR,• that the product meets its requirements

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 37: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -5

So reviews are considered the testing of non-executable documents.

One should do reviews and traditional testing,if possible, on all deliverable products of thelifecycle, including test plans!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 38: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Finding Bugs Earlier -6

For test plans, the inspection is for coverageand conformance• that the test case input covers the input

domain• that the expected output for each test case

conforms to the requirements

Deliverable products are not considereddelivered unless they have passed inspectionand tests as applicable.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 39: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sad Fact -1

There is never enough time to do it right, butthere is always enough time to fix it or to do itover.

However, it always takes more time to fix itthan to have done it right or to do it over (noteven counting the fact that you have done ittwice).

When you fix it, it is always flaky and neverquite fixed.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 40: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sad Fact -2

“We don’t have time to do reviews |walkthroughs | inspections!”

If so, then you don’t have time to finish theproject at all,

because without the reviews, you will send outsomething unfinished if you send anything outat all!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 41: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sad Fact -3

What is doing it right?

It is testing or reviewing every product of thelifecycle at the time it is produced, beforegoing on to the next step.

It is fixing the bugs found in the reviewedproduct before going on to the next step.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 42: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sad Fact -4

Why?

Because, as shown in the graphs a few slidesback, the cost to fix a bug grows dramaticallywith any delay in its discovery or its fixing.

Contributing to this cost is the cost of redoinganything mistakenly done as an implication ofthe buggy part, i.e., of redoing anything that isundone by the fix.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 43: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

True Cost of Reviews -1

Introducing reviews, in all likelihood,decreases the total cost of a project.

Reviews find errors that are there already, sono matter what, any error a review finds earlierwould have to be dealt with at some time,possibly even after delivery of the software, ifthere were no review.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 44: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

True Cost of Reviews -2

But, fixing the error now is considerablycheaper than fixing it later (recall graph).

The question, then, is which is greater, thetime to review and fix it earlier or the time tofix it later?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 45: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

True Cost of Reviews -3

A five-person review costs five person-days.

Consider an error that takes one person-day tofix if found during the requirements phase:

Review + Review + Fix afterFix Reqs Fix Impl Deliveryiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

5+1 5+2 10

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 46: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

True Cost of Reviews -4

If n errors are found,

Review + Review + Fix afterFix Reqs Fix Impl Deliveryiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

5+n 5+2n 10n

Fix-after-delivery costs grow faster!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 47: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -1

There is a story of a Panicky Manager whoagreed to initiate inspections on the basis ofglowing predictions of improved productivityand reduced errors such as on these slidesdelivered by a slick software methodssalesperson ....

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 48: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -2

The software was estimated to require 50KLOC.

The basic level of COCOMO estimates for anembedded organization that 50 KLOC willrequire about 60PM to build.

The IBM rule of thumb is that inspection adds15% to the resources required, i.e., anadditional 9PM.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 49: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -3

“Nine PM! We don’t have that much available!The development budget is for 60PM and not aPSecond more!”

So where is the panicky manager going to getthe additional PM?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 50: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -4

The problem is that the panicky manager istaking the inspection PMs out of the wrongbudget!

It should come out of the post-developmentmaintenance budget!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 51: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -5

Data show that it takes 1.58 PHour to find asingle defect in inspections.

There are 1188 PH in 9PM, so one can expectto find 752 defects in 9PM.

It is known that it typically takes 9PH to fix adefect found after delivery.

So these 752 defects will require 51PM to fix,almost as long as it took to build the software.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 52: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -6

If the same defects are found earlier byinspection, say no later than coding stage,then it will take 1PH to fix each.

Therefore with inspections, these 752 defectswill require 5.7PM to fix.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 53: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -7

So,

W/O Inspection 60+51 = 111PMW Inspection 60+9+5.7 = 74.7PM,

a savings over the lifecycle of 32%.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 54: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Panicky Manager -8

This does not always solve the problem ofwhere to get the additional resources,because in some organizations, maintenanceis not budgeted; rather, developers arepressed into service, borrowed from their nextprojects.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 55: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Pressman quotes Machiavelli -1

“ ... some maladies, as doctors say, at thebeginning are easy to cure but difficult torecognize ... but in the course of time ...become easy to recognize but difficult tocure.”

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 56: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Pressman quotes Pressman

Indeed! But we just don’t listen when it comesto software. Every shred of evidence indicatesthat formal technical reviews (for example,inspections) result in fewer production bugs,lower maintenance costs, and higher softwaresuccess rates. Yet we’re unwilling to plan theeffort required to recognize bugs in their earlystage, even though bugs found in the fieldcost as much as 200 times more to correct.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 57: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

What Evidence?

We’ll look at some later, but first let’s attackthe psychology of resistance to reviews, andthen describe the procedures of doing reviewsin detail.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 58: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychological Impediments -1

• Heard during reviews• Necessity of reviews and tests• Implication of finding bug• Definition of testing• Implication of definition• Happiness at discovering a bug

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 59: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychological Impediments -2

• Shame in discovering bugs• Team ownership• Exposing errors to superiors• Adobe’s attitude• Bug-finding tools• A real tragedy

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 60: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Heard During Reviews

Complaining about the level of detail requiredin preparation of reviewed documents:

“But that’s so easy to (fix | deal with)!”

True, but if so, then how come it’s not already(fixed | dealt with)?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 61: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Necessity of Reviews and Tests

An old adage:

The work of the person or team that insists theloudest that no review or test is needed ismost in need of review or tests.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 62: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Implication of Finding Bug -1

Mills says:

“The best way to know that you have foundthe last bug is never to find the first bug.”

Any bug, even a tiny one, is a sign of an errorerin the development, and an errorer leads tolots of bugs, never just one.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 63: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Implication of Finding Bug -2Studies have shown the following bug arrivalgraph over the testing of one release.

Bugs

foun

dpe

r uni

t tim

e

Time

That is, they tend to arrive in bunches if theyarrive at all.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 64: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Implication of Finding Bug -3

faults

0

1

Number of faults already found

Probabilityof existenceof additional

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 65: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Implication of Finding Bug -4

Finding one bug is a symptom of an errorer.

There is no reason to expect that even a singleerrorer causes only one bug.

This applies both to semantic and syntaxerrors!

In particular, a syntax error is a symptom of asemantic error.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 66: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition of Testing -1

Often hear:

Testing is confirming that program works.

or

Testing is demonstrating that errors are notpresent.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 67: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition of Testing -2

Nonsense! wrong! bubbe meises!

Already know that:

Program testing can be used to show thepresence of errors but never their absence

— E.W. Dijkstra

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 68: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Definition of Testing -3

∴ The proper definition of testing is:

Testing is executing a program with theintention of finding errors. — G.Myers

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 69: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Implication of Definition

These quotes suggest a certain mind set fortesters.

They should be trying to find errors ratherthan trying to show that there are none.

Goals have a bad habit of turning into reality!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 70: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychology of Testing -1

A program is its programmer’s baby!

Thus, trying to find errors in one’s ownprogram is like trying to find defects in one’sown baby.

∴ It is best to have someone other than theprogrammer doing the testing.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 71: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychology of Testing -2

Tester must be highly skilled, experiencedprofessional.

Helps if he or she possesses a diabolical mind

“Heh ... Heh ... Heh!” — CountDracula

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 72: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychology of Testing -3

It is well known that what is achieved in anyendeavor depends a lot on what are the goals.

Myers says:

If your goal is to show absence of errors, youwill not discover many.

If your goal is to show presence of errors, youwill discover large percentage of them.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 73: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Psychology of Testing -4

If you are trying to show the program correct,your subconscious will manufacture safe testcases.

∴ Tester should be someone other than theprogrammer, who just loves bugs.

♥ ❤ ❥ ❦ ❧ ♥

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 74: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Happiness at Discovering a Bug

While it is painful to realize that your owncode has a bug, in terms of total effect, youshould be happier to find them before deliverythan after,

because, in any case, they will be found, if notby you, but by your customer!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 75: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Shame in Discovering Bugs -1

There should be no shame in finding bugs inyour code during review.

The shame is releasing the code with thesame bugs.

I consider myself to be a good programmer; Irelease only good code.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 76: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Shame in Discovering Bugs -2

But, I will let you in on a secret (sh! sh!)

When I am modifying previously written code,fully 50% of the lines that I write have bugs.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 77: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Shame in Discovering Bugs -3

It’s very hard to do modify existing code rightbecause of unanticipated ripple effects.

Therefore, I use defense mechanisms, reviewsand line-by-line changing/testing.

I end up releasing mostly bug-free code.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 78: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Knuth has No Shame! -1

Donald E. Knuth wrote TEX starting in May1977.

By Sept 1988, it had grown to 14 KLOC inPascal, and he sent in a final version of a “TheErrors of TEX” to be published in Software,Practice & Experience, July 1989.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 79: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Knuth has No Shame! -2

He proudly reported 867 errors, including badrequirements.

“But I see no harm in admitting the horribletruth of my tendency to err, when such detailsmight shed light on the problem of writinglarge programs. (Besides I am lucky enough tohave a secure job.)”

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 80: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Knuth has No Shame! -3

Knuth had published every version of thesource program and had a whole world of TEXhackers as inspectors.

He paid a small (≈ $20) monetary reward to thefirst person who found any particular error;thus he had motivated, “professional”inspectors!

All of this is described in open publications!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 81: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Team Ownership

It helps to change the philosophy of codeownership.

The team owns the code, and while individualswrite parts, it is the team that will release andstand behind the code.

This is a case of the team being more than thesum of its individuals.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 82: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

When is a bug a bug?

In line with the team ownership philosophy, abug should not be considered a bug unless itis in released code.

A bug inserted prior to inspections andremoved by inspection is considered the partof the normal process of softwaredevelopment.

Only bugs in released code are logged!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 83: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Exposing Errors to Superiors -1

But I don’t want my code reviewed becausethen my manager will know that the bugsfound came from me!

First, it is necessary to adopt the teamownership of code and bugs philosophy.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 84: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Exposing Errors to Superiors -2

Second, it is necessary that bugs found beforeand during inspection not be considered bugs,just hiccups!

Thirdly, the inspection procedure is adamantin insisting that the line manager of the authorof the inspected product not attend theinspection.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 85: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Adobe’s Attitude -1

I found the following pages in the manual forAdobe’s Acrobat 2.0.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 86: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Adobe Acrobat 2.0 Credits

EngineeringNabeel Al-Shamma

Ken AndersonKevin BinkleyRichard Cohn

Jim ColeGordon Dow

Mark EppersonNathan Graham

Ken GrantSteve Hawley

Steve HerskovitzPaul Holland

Karin JurcevichBennett Leeds

Eoin MacDonellWilliam McCoyCarl OrthliebMike OssesiaAllan Padgett

Daryoush PaknadMike Pell

Eswar PriyadarshanLindsay Sanford

Bob WulffBob Ayers

Ron GentilePaul Rovner

Mike Schuster

Quality AssuranceBrian Acton

Ben ArbogastJohn Brooks

Paul BurriesciTom Cane

Emily ClarkePeter Crandall

Greg ChristopherTonya Crutchfield

Jeff DoustChristopher Eastwood

Rob HeiserThomas Lindemuth

Patty MacSteve McShurleyTyrone Mendez

Will NaberDenis Neema

Vuong NguyenClare Park-Ha

Ravi PatilDina Sakahara

Jonathan SjørdalDeborah SmithDenis StroudBrent WalkerGreg WalkerRick WulffAda Yue

Customer and Sales SupportJamie BeverlyChris Everett

Jim GouldDavid Hackel

Erik LammerdingPeter MockEd SvobodaJT Wheeler

Developer SupportTim Bienz

John CiccarelliMark DonohoeJeff MatulichCarrie RequistTracey Stewart

InternationalGerard Ho

Christina LibermanBrigitte OzelloWiegert Tiere

Marketing CommunicationsGail BlumbergLinda Clarke

Molly DetwilerRobin EdwardsKaren Gordon

Min WangLisa Wehrer

Product MarketingRob BabcockJohn DawesPam DezielLaura Hull

Judy MulvennaSally Phillips

Christopher WarnockJena Yankovich

SalesShelley BakerJeff Bartlett

Kathy BaumanGary CosiminiDianne Eckloff

Scott FredricksonSusan FloodJoel Geraci

Paul GerlachJohn Henry GrossSandy HamrickJim Hilsenrod

Victoria HollandRich KennewickDevra Kudeviz

Eric LammerdingTom McKeownClinton Nagy

Scot ReidFrank RubinoEd Sanders Jr.Chas SchoenigElaine SingerMarcia WareJeff Weldon

TrainingSharon Anderson

Sue CrissmanNecia DoughtySandra KelchMatt Nielsen

Sarah Rosenbaum

Special ThanksBeverly Altschuler

Rick BrownChuck Geschke

John KunzeRebecca Michals

Kate OliverPat Pane

John PlaceDave PrattDeb Triant

John Warnock

and last but not least

Adobe Technical Publications

Page 87: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Adobe Acrobat 2.0 Credits

EngineeringNabeel Al-Shamma

Ken AndersonKevin BinkleyRichard Cohn

Jim ColeGordon Dow

Mark EppersonNathan Graham

Ken GrantSteve Hawley

Steve HerskovitzPaul Holland

Karin JurcevichBennett Leeds

Eoin MacDonellWilliam McCoyCarl OrthliebMike OssesiaAllan Padgett

Daryoush PaknadMike Pell

Eswar PriyadarshanLindsay Sanford

Bob WulffBob Ayers

Ron GentilePaul Rovner

Mike Schuster

Quality AssuranceBrian Acton

Ben ArbogastJohn Brooks

Paul BurriesciTom Cane

Emily ClarkePeter Crandall

Greg ChristopherTonya Crutchfield

Jeff DoustChristopher Eastwood

Rob HeiserThomas Lindemuth

Patty MacSteve McShurleyTyrone Mendez

Will NaberDenis Neema

Vuong NguyenClare Park-Ha

Ravi PatilDina Sakahara

Jonathan SjørdalDeborah SmithDenis StroudBrent WalkerGreg WalkerRick WulffAda Yue

Customer and Sales SupportJamie Beverly

Page 88: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Customer and Sales SupportJamie BeverlyChris Everett

Jim GouldDavid Hackel

Erik LammerdingPeter MockEd SvobodaJT Wheeler

Developer SupportTim Bienz

John CiccarelliMark DonohoeJeff MatulichCarrie RequistTracey Stewart

InternationalGerard Ho

Christina LibermanBrigitte OzelloWiegert Tiere

Marketing CommunicationsGail BlumbergLinda Clarke

Molly DetwilerRobin EdwardsKaren Gordon

Min WangLisa Wehrer

Product MarketingRob BabcockJohn DawesPam DezielLaura Hull

Judy MulvennaSally Phillips

Christopher WarnockJena Yankovich

SalesShelley BakerJeff Bartlett

Kathy BaumanGary CosiminiDianne Eckloff

Scott FredricksonSusan FloodJoel Geraci

Paul GerlachJohn Henry GrossSandy HamrickJim Hilsenrod

Victoria HollandRich KennewickDevra Kudeviz

Eric LammerdingTom McKeownClinton Nagy

Scot ReidFrank RubinoEd Sanders Jr.

Page 89: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Lisa Wehrer

Product MarketingRob BabcockJohn DawesPam DezielLaura Hull

Judy MulvennaSally Phillips

Christopher WarnockJena Yankovich

SalesShelley BakerJeff Bartlett

Kathy BaumanGary CosiminiDianne Eckloff

Scott FredricksonSusan FloodJoel Geraci

Paul GerlachJohn Henry GrossSandy HamrickJim Hilsenrod

Victoria HollandRich KennewickDevra Kudeviz

Eric LammerdingTom McKeownClinton Nagy

Scot ReidFrank RubinoEd Sanders Jr.Chas SchoenigElaine SingerMarcia WareJeff Weldon

TrainingSharon Anderson

Sue CrissmanNecia DoughtySandra KelchMatt Nielsen

Sarah Rosenbaum

Special ThanksBeverly Altschuler

Rick BrownChuck Geschke

John KunzeRebecca Michals

Kate OliverPat Pane

John PlaceDave PrattDeb Triant

John Warnock

and last but not least

Adobe Technical Publications

Page 90: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Adobe’s Attitude -2

Notice that:

• the two biggest groups are Development(Engineering) and the Quality Assurance

• the sizes of D and QA are about the same,(In fact, QA has one more than D!)

• D and QA have no members in common• D and QA get essentially equal and top

billing• Adobe products are good!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 91: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Bug-Finding Tools? -1

Why not let tools find defects in the code forus?

First it’s not clear that tools can find manyerrors beyond syntactic or so-called staticsemantic (the good ’ol halting problem rearsits ugly head!)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 92: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Bug-Finding Tools? -2

The Gilb & Graham Tools for Fools Principle:

Automated tools should be used to findproblems, but not if you must delaydetection until the fixing costs outweighthe advantage of automation.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 93: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Real Tragedy -1

At this company I know, among the dozenprojects they had going, only one project metits final deadline.

Nearly all of these deadlines had been slippedfrom earlier impossible deadlines.

The one project that met its deadline was theone that I helped out by moderatinginspections for it.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 94: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Real Tragedy -2

I had been called in by the Marketing VP touse inspections as a means to help a projectmake a one-month deadline for a trade show,at which they had committed to announce anddemonstrate the product.

Against the wishes of the President, the VP ofR&D, the Chief Programmer, and all theprogrammers, I instituted an inspection of theproduct.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 95: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Real Tragedy -3

Even though the Chief Programmer and theprogrammers were dragged kicking andscreaming into the inspection, the firstinspection found a whole lot of bugs,including one that would have killed theproduct and would have cost an unspecifiableamount of time to find and fix (so said adevelopment consultant observing theproject).

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 96: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Real Tragedy -4

A second inspection failed to find any newproblems and the project finished on time, theproduct was announced and demonstrated atthe trade show, and it won an award at thetrade show!

Sadly, the President, the VP of R&D stoodbehind the Chief Programmer, who wasopposed to inspection despite the success,and refused my offer to start a regularinspection program.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 97: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Real Tragedy -5

The company never met another deadline andis in complete doldrums, because it has notbeen able to meet the demands of the marketbefore its competitors did.

A real tragedy.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 98: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Procedures for Doing Reviews

Two kinds of reviews

g walkthroughs

g inspections

Latter more formal than first.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 99: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Outline of Discussion

g Common elementsg Differencesg Walkthroughsg Inspections

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 100: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Common Elements

Both:

g Review is an in-depth examination of somework product by a team of reviewers.

g Product is anything produced for thelifecycle, i.e., requirements, plans, design,code, test cases, documentation, manuals,everything!

g No meeting is more than 2 hours.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 101: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Common Elements

g The focus is on finding errors in theproduct,- not on correcting them, and- not in finding fault in producer of

product.

g It is essential that it not be used foremployee performance evaluation, either ofproducer or reviewers.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 102: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Not for Appraisal

This last point is critical.

If reviews are as effective in finding errors aswill be shown, then any manager that usesthem for evaluating producer or reviewers willkill the goose that lays the golden egg!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 103: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Differences -1

Atmosphere:

W: informal

I: formal

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 104: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Differences -2

Reviewers:

W: experts in the domain

I: trained, professional inspectors

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 105: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspectors Not Domain Experts? -1

But, but, ..., how can someone who does notunderstand the program be expected to findanything?

This is such waste of time, making someonewho knows nothing about the programexamine it carefully when someone whoknows it can find the errors much muchquicker.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 106: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspectors Not Domain Experts? -2

Well, the data, time and time again, do showthat inspections, as defined above, aresignificantly more effective in finding errorsthan walkthroughs, as defined above.

So, evidently, the lack of domain knowledge ofthe inspectors is not a problem.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 107: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspectors Not Domain Experts? -3

There is other evidence that in somecircumstances, a person who does not knowthe domain is more effective than someonewho does, because the former is less likelythan the latter to fall into the tacit assumptiontar pit.

An every-day occurrence of this phenomenonis that someone who has never seen an articlefinds more errors in proof-reading an article orbook than does the author.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 108: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspectors Not Domain Experts? -4

I know from one experience I had participatingin the inspection of requirements and designof some networking software that thisphenomenon applies to inspection.

I came to the meeting prepared with a 20 pagelist of possible problems in the document,while the members of the development teamparticipating in the inspection came with none(they thought there were no problems).

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 109: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspectors Not Domain Experts? -5

In this list were 5 really serious problemswhich the development team membersrecognized instantly when I asked seeminglyinnocent questions like “Why is this variableused here, but not here in this other modulethat #includes the module defining thevariable?”

In other words, I found errors that had beenjust under the noses of the development team.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 110: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Differences -3

Subject of review:

W: correctness of product, as seen by experts

I: correctness of product, according tochecklist of items to be examined

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 111: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Differences -4

Leader of discussion and session controller:

W: producer of product

I: official moderator of review team

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 112: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Walkthroughs

The producer presents product (if code, thenalso its documentation) and the reviewerscomment on the correctness of the product (ifcode, also consistency with documentation).

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 113: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspections

• Roles• Checklists• Steps• Users at Inspections• Caveats

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 114: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Roles

Inspection team members have specific roles:g moderatorg secretary (can be same as moderator)g inspectors (2)g producer(s)

- designer- programmer

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 115: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists -1

Product is examined relative to specificchecklists, e.g.,

g compliance to standardsg domain correctnessg consistency with requirement itemsg language usageg use-declaration type consistency

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 116: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists -2

g invocation interface consistency- formal-actual correspondence- return value

g use of correct dimensions (e.g. °C vs °F)g comment-code consistencyg avoidance of errors in historical list

(frequency ranked)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 117: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -1

5 Steps:

1. Overview given by producers to reviewers;at end of session, the relevant documentsare distributed to reviewers (could becombined with a walkthrough!)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 118: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -2

2. Reviewers prepare individually forinspection, try to understand the product indetail; should be aided by checklists;ranking lists by importance allowsfocusing on most important potentialerrors first. (Maybe each inspector canhave a different checklist.)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 119: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -3

3. Inspection session itself: moderator walksthrough the product line by line, askinginspectors for observed problems(sometimes hearing another’s fault reportstriggers discovery of more); within oneday, moderator produces written report onall faults found

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 120: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -4

4. Rework: the producer fixes the productaccording to list of faults in report

The producer might ask for assistance insolving the problem.

Gilb & Graham suggest brainstorming as away to get free flowing of ideas that mightprovide a solution.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 121: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -5

5. Follow up: the moderator makes sure thatall faults have been fixed and calls anotherinspection if more than 5% of the producthas been modified

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 122: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -6

In my opinion, we must always do one moreinspection than might seem necessary, i.e.,until inspection yields no new errors.

It is not safe to skip this last inspection, evenif there was only one itty-bitty, tiny little ol’ error; itsfixing might introduce a great big, ferociouserror!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 123: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Users at Inspections -1

It may also be useful to have a user as part ofthe inspection team, especially if arequirements document is being inspected,but also even if code is being inspected.

The first Airbus crash resulted from thecomputer shutting down the engine while theplane was in the air, as a result of aninconsistent state.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 124: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Users at Inspections -2

The fix was not to allow the engine to shutdown if the plane is still in the air.

A later crash came when the pilot could notturn off the engine in a plane that had justlanded!????

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 125: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Users at Inspections -3

The way the software detected that the planewas on the ground is by seeing that thewheels are spinning; if the wheels are notspinning, the plane is still in the air.

The crash happened when the plane landed ona wet runway; the wheels were not spinningand the engine would not turn off.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 126: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Users at Inspections -4

So the software was changed to use pressureon the wheels to determine if the wheel is onthe ground and the definition that the plane ison the ground if both wheels are on theground.

The next slanted landing resulted in a crashbecause the pilot could not turn off the enginesoon enough.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 127: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Users at Inspections -5

All of these problems could have beenavoided by having users, i.e., experiencedpilots, in the inspection teams.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 128: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Caveats

• Team members must read product beforemeeting.

• Meeting must not be longer than two hours.• Author’s boss cannot be present at the

meeting.• Inspectors must not consider solutions

during meeting.• Inspectors must not attack author; they can

criticize product.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 129: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Experimental Evidence -1

Experiments over several projects haveshown that inspections can be 4 times moreeffective than traditional testing and 2 timesmore effective than walkthroughs in findingerrors.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 130: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Experimental Evidence -2

• Effectiveness in finding bugs• Effectiveness & needed resources• Cost reduction• Time reduction• Defect reduction• Increased productivity• Unmentioned in ALL Reports• JPL study• Inspection meetings• Programmers’ surprise• Reeve’s rule of thumb

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 131: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -1

According to experiments by Fagan reportedin ’76, ...

67% of all errors eventually found for aparticular system, were found by codeinspection before unit testing, and

for a similar system, informal walkthroughswere used instead of inspection; the inspectedsystem had 38% fewer errors in the first sevenmonths of operation than the walkedthroughsystem.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 132: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -2

Jones reported in 1977, that ...

He examined the history of 10 million lines ofcode.

Inspection removed 85% of the total errorsfound.

No other technique, walkthrough, testing, etc.found even 50%.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 133: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -3

Jones reported in 1978, that ...

Inspection removed 70% of the total errorsfound in another set of projects.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 134: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -4a

Kitchenham reports that at ICL, in one project57.7% of the defects were found in inspectionsand only 4.1% of them were found in in-houseuse. The normal rates at the time was for11.2% of the defects to be found in in-houseuse.

The cost of finding one defect in designinspection was 1.58 work-hours. The cost offinding one defect without inspection was 8.47work-hours, more than 5 times more.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 135: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -4b

The total proportion of the development effortdevoted to inspections was only 6%.

Kitchenham feels that these figure would havebeen better if better training in inspection hadbeen given.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 136: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -5a

Grady reported in 1994, HP’s data over severalyears and projects:

The average effectiveness of codereading/code inspections was 4.4 times betterthan that of any other test technique.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 137: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness in Finding Bugs -5b

EffectivenessTesting (Defects found

Technique per hour)iiiiiiiiiiiiiiiiiiiiiiiiiiiiiRegular Use 0.210Black Box 0.282Glass Box 0.322Reading/ 1.057Inspections

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 138: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Effectiveness & Needed Resources

In another later experiment, Fagan found that...,

82% of all errors eventually detected inanother particular system were found bydesign and code inspection before unittesting.

He determined that 25% less programmerresources were needed than were estimatedby a technique that had been tuned to theorganization.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 139: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -1

Crossman reported in 1982, that ...

Code inspections led to a 95% reduction inmaintenance costs, that were predicted by anexperience-tuned estimation procedure.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 140: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -2a

Gilb & Graham report:

A production planning system consisted of800 programs.

In the middle of development, inspection wasstopped after 400 of them had been inspected,because people did not see the effect as aresult of not keeping data.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 141: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -2b

One year later, the maintenance cost of theprograms was measured, and ...

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 142: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -2c

The maintenance cost of the 400 inspection-managed programs was between 0.6 and 0.7minutes per line of code per year.

The maintenance cost of the 400 non-inspected programs was 7 minutes per line ofcode per year.

A 10 fold decrease with inspection!!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 143: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -3

Gilb & Graham report:

A bank’s software development departmentcompared the maintenance costs of 88,000lines of inspected COBOL code with those of900,000 lines of non-inspected COBOL code:

The inspected code cost 28 times less tomaintain than the non-inspected code.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 144: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Cost Reduction -4

Don O’Neill, in “National Software QualityExperiment: Results 1992-1995” Proceedingsof the 8th Annual Software TechnologyConference, 1996, reports that companies thatuse inspections have had a return oninvestment ranging from four to eight dollarssaved for every dollar spent.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 145: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Time Reduction -1

Gilb & Graham report that typical net savingsfor project development using inspections are35% to 50%.

In 1976, Fagan reported a 25% reduction ofschedule plans from a predicted 62programmer days to 46.5 programmer daysincluding the inspection. (and if, as usual,estimates normally err on the optimistic side,this is even more amazing)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 146: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Time Reduction -2

In 1975, Rodney Larson reported thatinspecting test plans, designs and casessaved 85% of the time normally needed dotests.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 147: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Defect Reduction -1

In 1980 IBM had the 11 development stages ofa large, 1⁄2M line networked operating systeminspected.

Their expectation at the time was for about800 bugs in trial site operation.

They got only 8.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 148: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Defect Reduction -2

The 500K-line, inspected space shuttlesoftware produced by IBM FSD had zeromission defects for the last 6 of the 9 1985missions.

Moreover, this SW is tailored for the nextmission in between missions.

Thus inspection helped eliminate rippleeffects of maintenance changes.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 149: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Increased Productivity -1

Fagan’s original article reports a 23% increasein coding productivity as a result ofinspection.

He later reports a 10% productivity increasewith informal moderator training, a 25%increase with formal moderator training anddesign change control, and a 40% increase byadding code change control, inspection oftests and fixes, and test defect tracking.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 150: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Increased Productivity -2a

IBM FSD collects 14 pages of parameters aftereach project.

In a 1977 report by Waltston and Felix, 30 FSDprojects using inspection were compared toabout 30 similar FSD projects using the olderstructured walkthrough technique.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 151: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Increased Productivity -2b

The median net delivered lines of non-comment code productivity rate per work-month was:• 300 for the 30 inspection-managed projects• 144 for the 30 structured-walkthrough-

managed projects

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 152: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -1

JPL is funded by NASA to conduct itsunmanned interplanetary space program.

Inspections were introduced in 1987 toimprove software quality by detecting errorsas early in the development lifecycle aspossible.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 153: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -2

JPL basically followed the Faigin process:

• inspections on all documents: softwarerequirements, architectural design, detaildesign, source code, test plans, and testprocedures

• a checklist tailored to JPL’s needs wasproduced for each document type

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 154: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -3

One mahor enhancement, a third hour to theinspection meeting, after the standard two-hour search for problems, to discuss possiblesolutions and clear up issues raised in thesearch meeting.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 155: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -4

They also introduced data collection to gatherdata which is the basis for this study.

J.C. Kelly, J.S. Sherif, and J. Hops “AnAnalysis of Defect Densities Found DuringSoftware Inspections”, Journal of Systemsand Software, 17:111-117, 1992.

Data were collected on 203 inspectionsperformed on 5 software-intensive projectsbetween February, 1987 and April, 1990.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 156: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -5

Nearly all team members were trained in a 1.5day course.

Although projects used Ada, C, and Simula, on16% of the inspections were performed oncode.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 157: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -6

1. Increasing the number of pages inspectedat once decreases the number of defectsfound.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 158: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -7

2. Significantly more defects were found perpage at the earlier phases of the lifecyle.The highest density was observed duringrequirements inspections. Fitting datashows:

Defects/Page = 3.19e − 0.61t

where t = 1, 2, 3, 4 for SWR, AD, DD, SCrespectively.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 159: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -8

3. The cost in staff hours to find and fixdefects was consistently low across alltypes of inspections, on average 1.1 hoursto find a defect and .5 hours to fix andcheck it, compared with 5-17 hoursrequired to fix defects found during formaltesting.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 160: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

JPL Study -9

4. A variety of defects are found throughinspections, with defects in clarity, logic,completeness, consistency, andfunctionality being the most prevalent.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 161: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspection Meetings -1

One problem that a lot of places report is thatof project delay due to difficulties schedulingthe inspection meeting.

A. Porter, H. Siy, and L. Votta report in a ICSE’97 paper that the inspection interval, i.e., thecalendar time needed to complete theinspection, is significantly longer than thework time needed to complete the inspection,leading to significant delays in projects.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 162: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspection Meetings -2

In any busy place, it is difficult to find acommon unscheduled two-hour slot for theinspection meeting.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 163: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Anywhere, Anytime Inspections -1

Perich, Perry, Porter, Votta and Wade in theirICSE ’97 paper suggest the use of the WWW toallow asynchronous inspection meetings thatseem to generate enough synergy between theinspectors to match the effectiveness ofinspection meetings.

Instead of having meetings, each inspectoradds his comments to a Web page maintainedon the company’s intranet.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 164: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Anywhere, Anytime Inspections -2

The synergy happens because each inspectorgets to read previously added comments andto build on them. Each inspector is urged tovisit the Web site more than once so that allinspectors get to read the comments of allothers.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 165: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Anywhere, Anytime Inspections -3

Perich, Perry, Porter, Votta and Wade reportthat the cost savings from just the reductionin paper work and the time savings from thereduction in distribution interval of theinspection package (sometimes involvinginternational mailings) have been substantial.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 166: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Anywhere, Anytime Inspections -4

Since there is no need to schedule a commonmeeting time, the asynchronous approachreduces the inspection interval significantly,leading to even more cost savings.

They also report that the new process is atleast as effective in terms of defect detectioneffectiveness as synchronous inspectionmeetings.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 167: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Value of Inspection Meetings

Indeed, experiments by Johnson and Tjahjonoreported in ICSE ’97 failed to show thatinspection meetings are more effective thanhaving inspectors file their independentlywritten private reports.

So with the cost reduction and inspectioninterval reduction coming from not havinginspection meetings, many places arebeginning to look at substitutes for inspectionmeetings.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 168: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Unmentioned in ALL Reports

What about the remaining 33%-15% errors notfound by inspections?

The customers found the rest! sigh!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 169: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Programmers’ Surprise

Gilb & Graham report:

One inspection user, with a very largesystems programming project, had finishedthree weeks before the official deadline. Theydidn’t believe it themselves. So, they spenttwo and a half weeks checking to see whatthey had missed. They found no defects(indeed there were virtually none, as it turnedout) and handed [the program] over officiallythree days early.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 170: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Reeve’s Rule of Thumb

As a rule of thumb, each major defect found atinspection will save nine-hours of downstreamcorrection effort.

The reported ranged of average effortdownstream to repair defects that could havebeen caught by inspection is from 4 (Gilb1988) to 30 hours (Doolan 1992),

and the average effort downstream to repairdefects caught by inspection is 9.3 hours(Reeve 1991)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 171: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Why Inspections Work

These are my feelings as to why they work!

• Why is inspection so good?• Inspection before compilation• The power of water coolers• Time estimation and testing• Sources of inspection savings• Summary of direct savings• Indirect benefits to management• Costs of inspection

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 172: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Why is Inspection So Good? -1

Why are inspections better than traditionaltesting?

g People think.g Test cases do not.

People see implications of even supposedlygood code.

People see reasons for errors that they find.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 173: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Why is Inspection So Good? -2

A test case exposes an error without exposingreasons; a person must then try to find thereasons and has to jump into the middle ofthings rather than having had the gentleintroduction of having examined every line ofthe code.

Also, multiple heads are better than one!

Most test case examination is done by oneperson, privately in his or her office!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 174: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Why is Inspection So Good? -3

Tony Hoare put it nicely.

“It’s much easier to find bugs in a line ofreasoning than in a line of code.”

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 175: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Why is Inspection So Good? -4

Also examining code 4 times is bound to findmore errors than 1 time.

No Inspection Inspectioniiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiwriting writing

walkthroughprivate readingpublic meeting

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 176: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspection before Compilation -1

Some insist on inspections before submissionto a compiler.

Why not just let the compiler find most errors?

Each syntax error can be a symptom of aserious semantic error.

The compiler finds the syntax error but not thesemantic error.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 177: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspection before Compilation -2

Only people can find semantic errors.

If you fix syntax errors with the aid of acompiler without seriously consideringsemantic implications, you can end up totallyoverlooking a serious semantic error.

Ah, but why not just have the person runningthe compiler think?

Again, multiple heads are better than one.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 178: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Inspection before Compilation -3

Also, there is a strong temptation to rushthrough the compilation, reducing theeffectiveness of the thinking.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 179: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

The Power of Water Coolers -1

Did you ever have the experience?

You’ve been running test cases and have beentrying to track down this one nasty bug fordays.

You’re exhausted and are standing next to thewater cooler kibbitzing with your fellowprogrammers and bitching about your stupidprogram.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 180: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

The Power of Water Coolers -2

Someone says, “What’s the problem?”

You start explaining it, and bingo, eureka, youor the someone else sees the solution!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 181: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

The Power of Water Coolers -3

There’s a story told of a manager that tried toput an end to everyone’s goofing off by thewater cooler, by having the water coolerremoved.

The manager saw the incidence of errors indelivered software go up!

The system staff started complaining about asudden increase in a demand for assistance,an increase that they could not handle.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 182: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

The Power of Water Coolers -4

An efficiency expert identified that the watercooler was not really for goofing off, but wasan essential debugging tool!

After the water cooler was brought back,things went back to normal.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 183: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Time Estimation and Testing

We now consider the problem of allocatingsufficient time for testing in a project plan.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 184: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

A Typical Pert Chart

A simple SW development Pert chart:

require-ments

testplan

testdata

testdrivers

producttest

ment

start

designdocu-

finishcode

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 185: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Criticality of Slippage -1

Look at Pert Chart!

What step is most critical to start on time tofinish on time?

What step is most critical to estimate itsduration accurately?

That is, for which step is a schedule slippageimpossible to recover from?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 186: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Criticality of Slippage -2

product test!

Because it is one of the last two and the otherone is not critical to the delivery on time.

Surprised?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 187: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Criticality of Slippage -3

Having reviews throughout the lifecyclereduces the risk of slippage inherent in havinga single or very few testing phases, as is thecase with having only unit and integrationtesting.

When inspections remove most of the defects,testing goes more smoothly, as there arefewer defects to find.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 188: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sources of Inspection Savings -1

Savings comes from avoiding following costs:

• downstream defect detection costs, i.e.,module tests, integration tests, field tests,etc

• overtime costs during frantic lastdays/weeks before deadlines

• re-testing necessitated by defect fixes

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 189: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Sources of Inspection Savings -2

• field service to deal with defects found bycustomers

• costs due to high turnover of overworked,burned-out professionals, i.e., recruitment,moving, training, etc.

• public relations and marketing costs tocompensate for poor product quality

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 190: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Summary of Direct Savings

• 30%–100% net productivity increases• 10%–30% net timescale reductions• 5 to 10 times reduction in test execution

costs and timescale• order of magnitude reduction in

maintenance costs• nearly automatic improvement of SE

quality and product quality• early or on-time delivery of systems

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 191: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Indirect Benefits to Management -1

Management gets what it inspects, not what itexpects! (Gilb)

• It gets fuller data about defects andproduct quality and the progress of thedevelopment.

• It gets satisfaction of ISO 9000 (and other)quality standards.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 192: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Indirect Benefits to Management -2

• It is able to encourage developers to takemore responsibility for the quality of theirown work,

partially because it will not have to put outas many fires with customers.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 193: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Costs of Inspection -1

Start up costs include costs of

• buy in• training• making checklists• getting used to doing inspections

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 194: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Costs of Inspection -2

Ongoing Inspection Costs:

• Inspections add 10–15% to the costs ofdevelopment.

• Besides the inspections themselves,people will end up spending more timepreparing their documents for inspections,but that will pay off in the long run.

• Also time must be allocated to allow peopleto do inspections properly.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 195: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Starting an Inspection Program

“OK, OK, you’ve convinced me! So now whatdo we do?”

Must start an inspection program!

• Steps• Checklists• What to inspect• Deal that cannot be refused• Best thing about inspection

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 196: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -1

1. Selling and buy-in

2. Trainingg aimed at management, programmers,

and inspectorsg explaining each’s roleg explaining proceduresg explaining checklistsg supervised practice inspections of

- instructor’s product- each other’s product

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 197: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -2

3. Recruit inspectors, people whose jobdefinitions include all that is necessary tocarry out inspections, includingpreparation for and attendance ofmeetings, code reading, etc.

4. Do it!

5. Inspect and evaluate the inspectionprocess for improvement.

6. Improve it!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 198: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -3

Doing it involves

g deciding what products (documents) are tobe inspected,

g making checklists for these products, andg making the 5 inspection steps part of the

schedule for each product, together withsupporting memos, signoffs, and whateverelse the organization requires for any othermilestone.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 199: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Steps -4

Don O’Neill, in “Issues in Software Inspection”IEEE SW January, 1997, reports that once youadopt software inspection and completetraining, your organization can detect 50% ofthe defects present. To achieve expertpractice, a detection rate of 60 to 90 percent,can take from 12 to 18 months. After 10 yearsof practice, IBM reported an 83% and AT&Treported a 92% defect detection rate.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 200: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists -1

For example, if code is to be checked, thechecklist can include items such as

g compliance to standardsg domain correctnessg consistency with requirement itemsg language usageg use-declaration type consistency

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 201: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists -2

g invocation interface consistency- formal-actual correspondence- return value

g use of correct dimensions (e.g. °C vs °F)g comment-code consistencyg avoidance of errors in historical list

(frequency ranked)

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 202: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists -3

The Ebenau and Strauss book is chock full ofgood checklists for a wide variety ofdocuments.

The Gilb and Graham book have some too.

You will no doubt find others.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 203: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -1

It has become clear in retrospect that thechecklists are the key!

An inspection is as good as its checklist,whether explicit or implicit (i.e., in theinspector’s mind).

Sometimes, how powerful inspections can bebecomes apparent only after seeing thechecklists.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 204: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -2

Thus, it is critical to turn these implicitchecklists into explicit.

It’s sort of like codifying expert knowledgefrom a human expert for an expert system.

To produce a checklist for inspecting modifiedcode for ripple effects, I thought about how Idesk check for this problem and wrote downthe danger signs I look for and the questions Iask as I find all uses of any identifierparticipating in modified code.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 205: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -3

But then the question naturally comes up!

Why bother with inspections?

Why not just give the programmers thechecklists and have them inspect the codethemselves?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 206: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -4

It’s the same as proofreading a book or article.

Most authors know all the grammar andlanguage rules.

Most authors know what they are trying tosay.

But in all the busy worrying about content andeverything else that goes into making goodwriting, authors make mistakes.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 207: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -5

When it comes to proofreading, the worstperson to do it is the author.

He or she sees what he or she has learned toexpect and not what is actually there.

Only another person can do an adequate jobof proofreading.

So inspection by another party is necessary.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 208: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -6

However, the best procedure is for thechecklist to be known by all.

The developers strive their damndest, throughdiscipline and desk checking, to give productsto inspection for which the inspection fails(i.e., the inspectors find no errors!).

The inspectors strive their damndest tosucceed.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 209: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklists are the Key -7

Sometimes the developers win, sometimes theinspectors win, and at all times, the teamwins!

Inspections work best when everyone is tryingto make them unnecessary

Unfortunately, the real threat of inspectionappears to be necessary to make people worklike this.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 210: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklist Effectiveness -1

Which is better?

• Inspectors have no checklist.• Inspectors have checklist.

With a checklist one is less likely to overlookan item on the list, but with a checklist, onemight overlook something not on the list infocusing on the list.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 211: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklist Effectiveness -2

Which is better?

• Each inspector has responsibility forspecific classes of faults.

• All inspectors search for whatever faultsthey can find.

With specific domains covered, faults in thosedomains are less likely to be missed, but withspecific domains covered, faults not in anyanticipated domain are more likely to bemissed.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 212: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklist Effectiveness -3

The three main approaches that are use arecombinations:

1. Ad Hoc: no checklist and all inspectorssearch for whatever they can find.

2. Checklist: checklist and all inspectorssearch for whatever they can find.

3. Scenario: checklist and each inspector hasresponsibility for specific classes of faults.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 213: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklist Effectiveness -4

A study by A. Porter and L. Votta has shown

1. The fault detection rate when usingScenarios was superior to that obtainedusing Ad Hoc or Checklist methods, byroughly 35%

2. Scenarios helped reviewers focus onspecific fault classes and, in comparison toAd Hoc or Checklist methods, did notcompromise their ability to detect otherclasses of faults.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 214: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Checklist Effectiveness -5

3. The Checklist method, the industrystandard, was no more effective than theAd Hoc method.

4. On the average, collection (inspection)meetings contributed nothing to faultdetection effectiveness.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 215: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

What to Inspect -1

In principle, any product can be inspected,even an inspection plan-and-checklist itself;all you need is a checklist of what to look forbased on some definition of quality orcorrectness of the product.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 216: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

What to Inspect -2

Any product that can give you trouble can besubjected to inspection.

For example, if you know that you havetrouble correcting bugs without introducingnew bugs, so initiate inspections of bugcorrection strategies, i.e., of the modificationsto the whole program that purport to fix a bug,and get multiple minds helping to find rippleeffects.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 217: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

But how do you inspect that ? -1

Sometimes people have difficulty seeing howto inspect a deliverable that does notrepresent a complete solution, but is just, saya preliminary design.

I claim that any deliverable product isinspectable relative to the very criteria bywhich it is decided whether or not to deliver itat this time.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 218: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

But how do you inspect that ? -2

If the author of the product can identify a pointat which he or she knows the product is readyto be seen by others and before that point itwas not, then the unspoken criteria, the basisfor his or her pride upon delivery of a goodproduct, are the criteria by which the productis to be inspected.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 219: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

But how do you inspect that ? -3

When I produce a preliminary design, eventhough it is purposely incomplete, there is acertain point at which it is complete enough toserve its purpose as a preliminary design.Whether the preliminary design meets itspurpose can be judged by others and is thusinspectable.

The checklist is a verbalization of theseunspoken criteria, of whether the productmeets its purpose.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 220: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Deal that Cannot Be Refused -1

Gilb & Graham tell the story of one projectmanager that pulled a neat trick to get peopleto buy into inspection and to defuse potentialarguments that people were not given enoughtime to do proper inspections.

He simply declared all deadlines extended by15% for any project that agreed to doinspections.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 221: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Deal that Cannot Be Refused -2

15% was simply the historical gross cost atIBM of doing full inspections.

He ended up winning more than he gave away,as they used only 4–5% additional time!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 222: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Best Thing About Inspection -1

The best thing about instigating an inspectionprogram, as a means to improve softwarequality and productivity is that:

It can be introduced without having to changeanything else you’re doing.

You can piggyback it on your current processand methods.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 223: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Best Thing About Inspection -2

You will notice an immediate improvementanyway.

Furthermore, as you build up a friendlycompetition to deliver for inspection onlyproducts that cause the inspection team tofail, you will begin to notice other ways toimprove your process and methods.

Only, now the motivation to try new processesand methods will come from within.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 224: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Evaluating Program’s Effectiveness

There are two ways to evaluate effectivenessof your inspection program:

• feelings• data

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 225: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Feelings

Programmers know when they are doingbetter!

After all, students know how they’ve done ontheir bagrut exams, baccalaureate exams,Regent’s exams, SATs, GREs, etc. evenbefore they get the results, in fact even beforethey leave the room.

But feelings can be deceiving, so ... getDATA!!!

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 226: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Data -1

Since the purpose of inspections is to spend alittle extra development resources tosignificantly reduce defects and total lifecycleresources, the important data to collect foreach project are:

• resource expenditures• defect reports (but only after inspection!),

particularly after delivery

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 227: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Data -2

A primary concern is to show pay-off, i.e., ROI,and to show it as soon as possible.

Most organizations do keep these items ofdata even if they are not collecting them totrack inspections, just for budgeting andaccountability purposes.

So the organization must start collecting thesedata now, and it must try to dig these data upfor past projects.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 228: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Data -3

If it can find the data for the past projects,then it will be able to demonstrateeffectiveness sooner.

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 229: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Conclusion -1

We covered:

• Sources of information• Background• Bugs come early and stay• Finding bugs with reviews• Psychological impediments

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 230: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

Conclusion -2

• Procedures for doing reviews• Experimental evidence• Why inspections work• Starting an inspection program• Evaluating effectiveness of program

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection

Page 231: Testing, Reviews, and Inspectionsdberry/COURSES/software.engr/... · 1998. 5. 3. · Finding Bugs Earlier -3 But hey!!! Why not do this kind of testing on executable products too?

1995 Daniel M. Berry Software Enginering Testing, Reviews, and Inspection