Professional Documents
Culture Documents
Pr i n ci ple s a n d Pr a ct i ce s
Srinivasan Desikan
Director of Quality Assurance,
AgileSoftware Enterprise, Pvt. Ltd.
Bangalore, India
Gopalaswamy Ramesh
Consultant and Adjunct Professor,
International Institute of Information Technology,
Bangalore, India
PEARSON
Education
Editor in Chief: Prof H N Mahabala
Titles under the series include
Software Maintainence
Gopalaswamy Ramesh and Ramesh Bhattiprolu
Software Testing - Principles &Practices
Gopalaswamy Ramesh and Srinivasan Desikan
Managing Global Software Projects
Gopalaswamy Ramesh
Mobile Computing - Technology Applications &Service Creation
Asoke K Talukder and Roopa Yavagal
Copyright @ 2006 Dorling Kindersley (India) Pvt. Ltd.
This book is sold subject to the condition that it shall not, by way of trade or otherwise, be lent, resold,
hired out, or otherwise circulated without the publisher's prior written consent in any form of binding or
cover other than that in which it is published and without asimilar condition including this condition being
imposed on the subsequent purchaser and without limiting the rights under copyright reserved above, no
part of this publication may be reproduced, stored inor introduced into aretrieval system, or transmitted in
any form or by any means (electronic, mechanical, photocopying, recording or otherwise), without the prior
written permission of both the copyright owner and the above-mentioned publisher of this book.
ISBN 81-7758-295-X
First Impression, 2006
Second Impression, 2007
Published by Dorling Kindersley (India) Pvt. Ltd., licensees of Pearson Education in South Asia.
Head Office: 482, F.I.E., Patparganj, Delhi 110092, India.
Registered Office: 14Local Shopping Centre, Panchsheel Park, New Delhi 110017, India.
Laser typeset by Sigma Publishing Services, Chennai.
Printed in India by Baba Barkha Nath Printers.
,
j
Parents and Teachers who taught me the basics of
life and science
-Srinivasan Desikan
To the millions of differently-abled children who are
wrongly labeled as "disabled" because of the
inappropriate testing practices of our society
-Gopalaswamy Ramesh
I
The area of Software Testing has acquired wider horizon and significance. Customers demand
defect-free products; regulatory authorities go into the nitty-gritties of the tests to which apiece
of software issubjected, just aspharmaceutical companies aremandated to declarehow they test
the medicines before release. Most of thebooks available inthe market cover theoretical aspects
but very few address practical aspects. Toprepare students for acareer in testing and to be of
value to practitioners, one needs to provide apragmatic and practical view of testing, together
with theright balance of people, process and technology. Thisforms thebasis of thebook Software
Testing-Principles and Practices.
Asthetitleindicates, theemphasis isonprinciples andpractices. Thematerial inthisbook has
already been "Betatested" byseveral universities inIndiasuchasAnnaUniversity inChennai and
International Institute of Information Technology, Bangalore(iiit-b).iiit-bisalsoadopting thebook
for itsCenter of ExcellenceinSoftwareEngineering andfor itsM. Techstudents. Someconcepts in
thebook havealready beenpresented topractitioners through international conferences and guest
lectures by theauthors of thisbook.
Wehave added chapters that focus on managing geographically distributed teams. This is
especially relevant for multinational companies, where distributed teams in different continents
work together inunison-developing, testing and delivering products to aglobal customer base.
Wehaveincluded emerging trends intesting likeextremetesting, adhoctesting and soon.
Thecontents of this book can beused by practitioners to understand the state-of-practice in
thetesting industry. Thechapters onMetrics and Measurements, TestPlanning, TestManagement
andAutomation havebeen added tohelp thepractitioners adopt theseconcepts at work. Wehave
provided sufficient academic rigor tosatisfy thecontents of thesyllabi of thevarious universities.
Wewould liketothank Ms. Gayathri Chandrasekar, Testmanager at eFunds, Chennai for her
contributions tosomeof thechapters inthebook.
Srinivasan Desikan
Gopalaswamy Ramesh
Acknowledgements
Mygratitude areduetoall theprevious organizations (Wipro, Novell andTalisma) I worked with,
for the opportunities and infrastructure provided for meto learn thepractical aspects of testing
on thejob. My thanks are due to the testing professionals across the globe for interacting with
meand providing insights and information for developing this book. Last but not least, I would
liketo thank my wife, son and daughter for their sacrificesand support. I can be contacted at
srinivasan.desikan@gmail.com.
Srinivasan Desikan
I want tothank Prof. Mahabala, my Guru, who hasbeen achampion insoftware testing and has
motivated metowards it. Hehasbeenaconstant sourceof inspiration for meover thelast twenty
years. I alsowant to thank Department of Computer Science,Anna University and International
Institute of Information Technology,Bangalbreforenablingmetoteachcoursesof SoftwareTesting,
whichhasbeenasourceof learning. Myspecial thanks arealsodueto Prof. Sadagopan, for theiiit-
bPress initiative. Finally,I want toacknowledge thesupport of myfamily,without which I would
not havebeen abletogivethekindof effort that went intomaking thisbook. I canbecontacted at
gopalaswamyJamesh@yahoo.com.
Gopalaswamy Ramesh
_ _ _ _ - - - - - - - - - " ' I
Software is becoming ubiquitous in today's world. Customers' expectations have increased
dramatically and the old fate of resignation that "it is OK for software to fail, we will have to live
with it" issimply no longer applicable. Software isexpected to work, meeting customers' changing
demands, first time and every time, consistently and predictably. Earlier, the software systems
were used for back-office and non-critical operations of organizations. Now, more and more critical
applications are implemented globally. This increased expectation for error-free functioning of
software has increased the demand of quality output fromsoftware vendors. Intum, wehave seen
over the last decade, the focus has shifted from mere programming and development to a more
holistic goal of producing software that works first time and all the time, thus increasing the focus
on testing.
Testing, in particular, has attracted significant interest over the past decade. Consider the
following which tell the whole story:
~ the number of testing jobs has increased several-fold providing bright career opportunities;
~ the compensation levels of testing functions are on the rise;
~ testing has become amajor opportunity for outsourcing;
~ thenumber of conferences and similar events dedicated totesting has increased significantly
over the last fiveyears; and
~ more and more professionals are considering software testing as acareer.
Themodus operandi of testing has alsoundergone aradical change, inkeeping with theincreased
demand. Firstly, globalization is here to stay. Organizations today exploit the geographic time
difference and global talent by distributing development and testing teams in different continents,
working seamlessly together. Inorder tobesuccessful inthis new world order, anorganization must
master the art of working in geographically distributed teams. Secondly, testing has transformed
from an ad hoc and haphazard hit-and-run attempt to a systematic, planned activity, complete
with all processes and measured by scientific metrics. Thirdly, success in testing today requires
careful exploitation of various technologies to meet product's time to market requirements. Test
automation-automation of all parts of testing lifecycle-has become anecessity and isno longer
aluxury. Finally,people's aspirations intesting careers have alsoundergone aseachange-a successful
organization should show career paths for the testing professionals and nurture their talent to ensure
their longevity within the organization and within the testing profession.
This book has come in atimely fashion to address the needs of the practitioners and aspiring
testing professionals and students. Both Ramesh and Srinivasan, have brought to life their forty
Foreword
Wi::~I'~~I::;~I:_
~ 't:d_:!LibALwX@~~; -.' - - < ::;::-}'=
years of combined practical experience. Thisbook covers some of the aspects which areessential
for theindustry's success, but seldomtouched upon by other books, suchas:
ffi Balancebetween theory and practice: Most books, while trying to give theoretical rigor,
try tooversimplify thereal-lifeproblems. Theauthors haveconsistently started fromwhat
existsinthereal world and haveprovided thetheoretical foundation toaddress thereal life
situations.
ffi Balancebetween people, process, and technology issues: Successful organizations work
systematically, exploit technologies and leverage people. The authors have successfully
resisted the temptation of only discussing "cool technology issues" at the expense of
practicalities. As an example, you will find coverage of topics like automation (which is
technology-intensive), people and organizational structures (which ispeople-centric) and
test organization and reporting (whichisprocess-focused).
ffi A solid exposure to foundations, from a practical viewpoint of the practitioners: The
authors have covered all the different types of testing extensively. As an example, topics
likeInternationalization-which areconsidered esoteric-are discussed at length.
ffi Thisbook isthefirst that I know which has recognized and articulated theimportance of
globalization and explicitly discussed thevarious global teamstructures possible and the
issues thereof. Thisclearly demonstrates theauthors experience of leading global software
testing teams.
ffi This book covers some of the recognized methodologies for testing which have been
accepted and presented inseveral international testing conferences throughout theworld.
Inaddition toall of theabove, thepractical exercisesgivenat theend of thechapters will expose
the reader to therealities of testing. Theauthors' experience of teaching full semester courses on
software testing isevident invarious exercises. I amconfident that with the advent of this book,
such courses will spread tovarious collegesand universities, thereby formalizing software testing
asadiscipline and widening thenet for developing morecompetent testing professionals.
I wishthebook andtheauthors all successintheir continuing endeavor tocreateanenvironment
where softwaretesting isconsidered acritical phaseof anysoftwaredevelopment lifecycle,careers
intesting arevalued significantly, and testing develops asanengineering discipline.
Vikram Shah
VikramShahiscurrentlyservingintheBoardofDirectorsinSilverSoftware,IT-Peopleand
isanactivememberof BiTES(BoardforITeducationStandardsbyKarnatakagovernment).
Vikrammentorsstart-upInformationTechnologycompanies.VikramShahis an industry
veteranwithmorethan30yearsof experienceandiscurrentlyservingasMDof Independent
Technologies(INTEC).Inthepast heservedasMDof several companiessuchasMahindra
BritishTelecom,Novell,AndiamoSoftware,andTalismaSoftware.VikramdidBSinElectronics
fromBITS,Pilani andMSinComputerSciencefromUniversityof California,Berkeley.
"'$! ; C o n t e A t ! j s
\ ' , , ; . : : : " r - ' : , " , : '< ; : " " ~ : : : ) " : : " : !- ' . . f. " , : , : , ~ " , . : ~ : w. :
Pr eface
Acknowledgements
For ewor d
v
vi
Vll
Part I
IIPrin ciple s o f Te s t in g
.-s o ft ware De ve lo pme n t Life C ycle Mo de ls
1 . 1
1.2
1.3
1.4
1 . 5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
2.1
2.2
2 . 3
2.4
2.5
Context of Testing in Producing Software
About this Chapter
The Incomplete Car
Dijkstra's Doctrine
A Test in Time!
The Cat and the Saint
Test the Tests First!
The Pesticide Paradox
The Convoy and the Rags
The Policemen on the Bridge
The Ends of the Pendulum
Men in Black
Automation Syndrome
Putting it All Together
References
Problems and Exercises
Phases of Software Project
2.1.1 Requirements Gathering and Analysis
2.1.2 Planning
2.1.3 Design
2.1.4 Development or Coding
2.1.5 Testing
2.1.6 Deployment and Maintenance
Quality, Quality Assurance, and Quality Control
Testing, Verification, and Validation
Process Model to Represent Different Phases
Life Cycle Models
2.5.1 Waterfall Model
2.5.2 Prototyping and Rapid Application Development Models
3
4
6
7
8
9
11
12
1 2
14
1 5
1 6
1 9
2 0
2 2
2 3
23
25
2 6
26
26
2 6
27
27
27
2 7
2 9
31
3 2
3 2
34
"- - - - - - - - - - - - - - - - - - - - -
x Software Testing
2.5.3 Spiral or Iterative Model
2.5.4 The V Model
2.5.5 Modified V Model
2.5.6 Comparison of Various Life Cycle Models
References
Problems and Exercises
36
37
40
43
43
43
Part II
IIWhite Box Testing
3.1 What is White Box Testing?
3.2 Static Testing
3.2.1 Static Testing by Humans
3.2.2 Static Analysis Tools
3.3 Structural Testing
3.3.1 Unit/Code Functional Testing
3.3.2 Code Coverage Testing
3.3.3 Code Complexity Testing
3.4 Challenges in White Box Testing
References
Problems and Exercises
IIBlack Box Testing
47
48
48
49
53
56
56
57
63
67
68
68
73
4.1
4.2
4.3
4.4
4.5
What is Black Box Testing?
Why Black Box Testing?
When to do Black Box Testing?
How to do Black Box Testing?
4.4.1 Requirements Based Testing
4.4.2 Positive and Negative Testing
4.4.3 Boundary Value Analysis
4.4.4 Decision Tables
4.4.5 Equivalence Partitioning
4.4.6 State Based or Graph Based Testing
4.4.7 Compatibility Testing
4.4.8 User Documentation Testing
4.4.9 Domain Testing
Conclusion
References
Problems and Exercises
74
75
76
76
76
82
84
87
90
93
96
99
101
104
104
105
IIIIntegration Testing
5.1 What isIntegration Testing?
5.2 Integration TestingasaTypeof Testing
5.2.1 Top-DownIntegration
5.2.2 Bottom-UpIntegration
5.2.3 Bi-Directional Integration
5.2.4 SystemIntegration
5.2.5 ChoosingIntegration Method
5.3 Integration TestingasaPhaseof Testing
5.4 ScenarioTesting
5.4.1 SystemScenarios
5.4.2 UseCaseScenarios
5.5 DefectBash
5.5.1 ChoosingtheFrequency andDuration of DefectBash
5.5.2 SelectingtheRightProduct Build
5.5.3 Communicating theObjectiveof DefectBash
5.5.4 SettingupandMonitoringtheLab
5.5.5 TakingActionsandFixingIssues
5.5.6 Optimizing theEffortInvolvedinDefectBash
5.6 Conclusion
References
Problems andExercises
107
108
108
111
113
114
115
116
117
118
118
120
122
123
123
123
123
124
124
125
126
126
II' System and Acceptance Testing
6.1
6.2
6.3
6.4
6.5
SystemTestingOverview
WhyisSystemTestingDone?
Functional VersusNon-Functional Testing
Functional SystemTesting
6.4.1 Design/Architecture Verification
6.4.2 BusinessVertical Testing
6.4.3 Deployment Testing
6.4.4 BetaTesting
6.4.5 Certification, Standards andTestingfor Compliance
Non-Functional Testing
6.5.1 SettinguptheConfiguration
6.5.2 ComingupwithEntry/Exit Criteria
6.5.3 BalancingKeyResources
6.5.4 ScalabilityTesting
6.5.5 ReliabilityTesting
6.5.6 StressTesting
6.5.7 Interoperability Testing
127
128
130
131
133
134
135
136
137
140
141
142
143
143
145
149
153
156
6.6
6.7
Acceptance Testing
6.6.1 Acceptance Criteria
6.6.2 Selecting Test Cases for Acceptance Testing
6.6.3 Executing Acceptance Tests
Summary of Testing Phases
6.7.1 Multiphase Testing Model
6.7.2 Working Across Multiple Releases
6.7.3 Who Does What and When
References
Problems and Exercises
158
159
160
161
162
162
164
165
166
166
Performance Testing
169
7.1
7.2
7.3
7 . 4
7.5
7 . 6
Introduction
Factors Governing Performance Testing
Methodology for Performance Testing
7.3.1 Collecting Requirements
7.3.2 Writing Test Cases
7.3.3 Automating Performance Test Cases
7.3.4 Executing Performance Test Cases
7.3.5 Analyzing the Performance Test Results
7.3.6 Performance Tuning
7.3.7 Performance Benchmarking
7.3.8 Capacity Planning
Tools for Perform'ance Testing
Process for Performance Testing
Challenges
References
Problems and Exercises
170
170
173
174
176
177
177
179
182
184
186
187
188
190
191
192
Regression Testing
8.1 What is Regression Testing?
8.2 Types of Regression Testing
8.3 When to do Regression Testing?
8.4 How to do Regression Testing?
8.4.1 Performing an Initial "Smoke" or "Sanity" Test
8.4.2 Understanding the Criteria for Selecting the Test Cases
8.4.3 Classifying Test Cases
8.4.4 Methodology for Selecting Test Cases
8.4.5 Resetting t1).eTest Cases for Regression Testing
8.4.6 Concluding the Results of Regression Testing
193
194
195
196
197
198
199
200
201
202
205
III'Internationalization (IlSn)Testing
8 . 5
9.1
9.2
9.3
9 . 4
9.5
9.6
9.7
9.8
9.9
9.10
9.11
Best Practices in Regression Testing
References
Problems and Exercises
Introduction
Primer on Internationalization
9.2.1 Definition of Language
9.2.2 Character Set
9.2.3 Locale
9.2.4 Terms Used in This Chapter
Test Phases for Internationalization Testing
Enabling Testing
Locale Testing
Internationalization Validation
Fake Language Testing
Language Testing
Localization Testing
Tools Used for Internationalization
Challenges and Issues
References
Problems and Exercises
206
208
208
211
212
212
212
213
214
214
215
216
218
219
221
222
223
225
225
226
227
IIAd hoc Testing
10.1 Overview of Ad Hoc Testing
10.2 Buddy Testing
10.3 Pair Testing
10.3.1 Situations When Pair Testing Becomes Ineffective
10.4 Exploratory Testing
10.4.1 Exploratory Testing Techniques
10.5 Iterative Testing
10.6 Agile and Extreme Testing
10.6.1 XP Work Flow
10.6.2 Summary with an Example
10.7 Defect Seeding
10.8 Conclusion
References
Problems and Exercises
228
229
233
234
236
237
237
239
241
242
245
246
248
248
248
300
300
302
275
276
278
281
283
284
285
285
288
291
292
293
295
295
295
299
274
253
254
254
261
261
267
268
269
269
272
273
273
Usability and Accessibility Testing
12.1 What isUsability Testing?
12.2 Approach toUsability
12.3 WhentodoUsability Testing?
12.4 HowtoAchieveUsability?
12.5 Quality Factorsfor Usability
12.6 Aesthetics Testing
12.7 Accessibility Testing
12.7.1 BasicAccessibility
12.7.2 Product Accessibility
Toolsfor Usability
Usability LabSetup
TestRolesfor Usability
Summary
References
Problems andExercises
Testing of Object-Oriented Systems
11.1 Introduction
11.2 Primer onObject-Oriented Software
11.3 Differencesin00Testing
11.3.1 Unit Testingaset of Classes
11.3.2 Putting ClassestoWorkTogether-Integration Testing
11.3.3 SystemTestingandInteroperability of 00Systems
11.3.4 RegressionTestingof 00Systems
11.3.5 Toolsfor Testingof 00Systems
11.3.6 Summary
References
Problems andExercises
12.8
12.9
12.10
12.11
Part IV
xiv Software Testing
IIICommon People Issues
13.1 Perceptions andMisconceptions About Testing
13.1.1 "Testingisnot TechnicallyChallenging"
13.1.2 "TestingDoesNot ProvidemeaCareer Pathor Growth"
Part III
13.2
13.3
13.4
13.1.3 "I AmPut inTesting- What isWrongWithMe?!"
13.1.4 "TheseFolksAreMyAdversaries"
13.1.5 "TestingisWhatI CanDointheEndif I GetTime"
13.1.6 "ThereisnoSenseof Ownership inTesting"
13.1.7 "TestingisonlyDestructive"
ComparisonbetweenTestingandDevelopment Functions
Providing Career PathsforTestingProfessionals
TheRoleof theEcosystemandaCall forAction
13.4.1 Roleof EducationSystem
13.4.2 Roleof SeniorManagement
13.4.3 Roleof theCommunity
References
ProblemsandExercises
303
304
304
306
306
306
307
314
314
315
316
318
318
IIIOrganization Structuresfor Testing Teams 320
14.1 Dimensionsof Organization Structures 321
14.2 Structures inSingle-Product Companies 321
14.2.1 TestingTeamStructuresforSingle-Product Companies 322
14.2.2 Component-WiseTestingTeams 325
14.3 Structures forMulti-Product Companies 325
14.3.1 TestingTeamsasPart of "CTO'sOffice" 327
14.3.2 SingleTestTeamforAll Products 328
14.3.3 TestingTeamsOrganizedbyProduct 329
14.3.4 SeparateTestingTeamsforDifferentPhasesof Testing 329
14.3.5 HybridModels 331
14.4 Effectsof GlobalizationandGeographicallyDistributed Teams
onProduct Testing 331
14.4.1 BusinessImpact of Globalization 331
14.4.2 RoundtheClockDevelopment/TestingModel 332
14.4.3 TestingCompetency Center Model 334
14.4.4 ChallengesinGlobal Teams 336
14.5 TestingServicesOrganizations 338
14.5.1 BusinessNeedforTestingServices 338
14.5.2 DifferencesbetweenTestingasaServiceandProduct-
TestingOrganizations 338
14.5.3 Typical RolesandResponsibilitiesof TestingServicesOrganization 339
14.5.4 ChallengesandIssuesinTestingServicesOrganizations 342
14.6 SuccessFactorsforTestingOrganizations 344
References 346
ProblemsandExercises 346
Part V
Test Planning, Management, Execution, andReporting 351
15.1 Introduction 352
15.2 TestPlanning 352
15.2.1 PreparingaTestPlan 352
15.2.2 ScopeManagement: DecidingFeaturestobeTested/NotTested 352
15.2.3 DecidingTestApproach/Strategy 354
15.2.4 SettingupCriteriaforTesting 355
15.2.5 IdentifyingResponsibilities, Staffing,andTrainingNeeds 355
15.2.6 IdentifyingResourceRequirements 356
15.2.7 IdentifyingTestDeliverables 357
15.2.8 TestingTasks:SizeandEffortEstimation 357
15.2.9 ActivityBreakdownandScheduling 360
15.2.10CommunicationsManagement 361
15.2.11RiskManagement 362
15.3 TestManagement 366
15.3.1 Choiceof Standards 366
15.3.2 TestInfrastructureManagement 369
15.3.3 TestPeopleManagement 372
15.3.4 IntegratingwithProduct Release 373
15.4 TestProcess 374
15.4.1 PuttingTogetherandBaseliningaTestPlan 374
15.4.2 TestCaseSpecification 374
15.4.3 Updateof TraceabilityMatrix 375
15.4.4 IdentifyingPossibleCandidatesforAutomation 375
15.4.5 DevelopingandBaseliningTestCases 376
15.4.6 ExecutingTestCasesandKeepingTraceabilityMatrixCurrent 376
15.4.7 CollectingandAnalyzingMetrics 377
15.4.8 PreparingTestSummaryReport 377
15.4.9 RecommendingProduct ReleaseCriteria 377
15.5 TestReporting 378
15.5.1 RecommendingProduct Release 379
15.6 BestPractices 379
15.6.1 ProcessRelatedBestPractices 380
15.6.2 PeopleRelatedBestPractices 380
15.6.3 TechnologyRelatedBestPractices 380
AppendixA:TestPlanningChecklist 381
Appendix B:TestPlanTemplate 384
References 385
ProblemsandExercises 385
xVii
IIISoftware Test Automation 387
16.1 WhatisTestAutomation? 388
16.2 TermsUsedinAutomation 390
16.3 SkillsNeededforAutomation 392
16.4 What toAutomate, ScopeofAutomation 394
16.4.1 IdentifyingtheTypesof TestingAmenabletoAutomation 394
16.4.2 AutomatingAreasLessPronetoChange 395
16.4.3 AutomateTeststhat PertaintoStandards 395
16.4.4 Management AspectsinAutomation 396
16.5 DesignandArchitectureforAutomation 396
16.5.1 External Modules 397
16.5.2 ScenarioandConfigurationFileModules 398
16.5.3 TestCasesandTestFrameworkModules 398
16.5.4 ToolsandResultsModules 399
16.5.5 Report Generator andReports/MetricsModules 399
16.6 GenericRequirementsforTestTool/Framework 399
16.7 ProcessModel forAutomation 408
16.8 SelectingaTestTool 411
16.8.1 CriteriaforSelectingTestTools 412
16.8.2 StepsforToolSelectionandDeployment 415
16.9 Automationfor ExtremeProgrammingModel 415
16.10 ChallengesinAutomation 416
16.11 Summary 416
References 418
ProblemsandExercises 419
II' Test Metrics and Measurements 420
17.1
17.2
17.3
17.4
17.5
17.6
What areMetricsandMeasurements?
WhyMetricsinTesting?
Typesof Metrics
ProjectMetrics
17.4.1 EffortVariance(PlannedvsActual)
17.4.2 ScheduleVariance(PlannedvsActual)
17.4.3 EffortDistributionAcrossPhases
ProgressMetrics
17.5.1 TestDefectMetrics
17.5.2 Development DefectMetrics
Productivity Metrics
17.6.1 Defectsper 100Hoursof Testing
17.6.2 TestCasesExecutedper 100Hours of Testing
421
425
427
428
429
430
432
433
434
443
448
450
450
17.7
17.8
17.6.3 Test Cases Developed per 100Hours of Testing
17.6.4 Defects per 100Test Cases
17.6.5 Defects per 100Failed Test Cases
17.6.6 Test Phase Effectiveness
17.6.7 Closed Defect Distribution
Release metrics
Summary
References
Problems and Exercises
450
450
451
452
452
453
455
456
456
IIIllustrations
IIReferences and Bibliography
IIIndex
457
481
483
aQIOulllas
I
This part of thebook sets the context for theentire book.
Westart Chapter I, Principles of Testing, by discussing the
changes inthesoftwarescenarioover thelast fewyearsand
thedemands that thesechangesmakeonsoftwarequality.We
translate thesedemands into elevenbasic principles which
provideanchorstorest of thechapters. InChapter 2,Software
Development Life Cycles, wedefinekeytermslikeverification,
validation, quality assurance, andqualitycontrol,gointothe
details of thevarious lifecyclemodels and theimplication
of thesemodels onverificationandvalidation activities. We
alsointroducetheconceptsof entryandexitcriteriathat will
benecessary to understand the different phases of testing
later inthebook.
Inthis chapter-
./ Context of testing in producing software
./ About this chapter
./ Theincomplete car
./ Dijkstra's doctrine
./ A test in time!
./ Thecat and the saint
./ Test the tests first!
./ Thepesticide paradox
./ Theconvoy and the rags
./ Thepolicemen on the bridge
./ Theends of the pendulum
./ Men in black
./ Automation syndrome
./ Putting it all together
4 Software Testing
1.1 CONTEXT OF TESTING IN PRODUCING SOFTWARE
Almost everything weuse today has anelement of software init. Inthe
early days of evolution of software, theusers of softwareformed asmall
number compared to the total strength of an organization. Today, in a
typical workplace (andathome), just about everyoneuses acomputer and
software. Administrative staff useofficeproductivity software (replacing
the typewriters of yesteryears). Accountants and finance people use
spreadsheets and other financial packages tohelp themdo much faster
what theyused todowith calculators (orevenmanually). Everyoneinan
organization and at homeuses e-mail and theInternet for entertainment,
education, communication, interaction, and for getting any information
theywant. Inaddition, of course, the"technical" peopleuseprogramming
languages, modeling tools, simulation tools, and database management
systems for tasks that they were mostly executing manually a few
years earlier.
Theaboveexamplesarejust someinstanceswheretheuseof softwareis
"obvious" totheusers. However, softwareismoreubiquitous andpervasive
thanseenintheseexamples. Softwaretoday isascommonaselectricitywas
intheearlypart of thelastcentury.Almosteverygadget anddevicewehave
at home and at work isembedded with asignificant amount of software.
Mobilephones, televisions, wrist watches, andrefrigerators or any kitchen
equipment all haveembedded software.
Another interesting dimension is that software is being used now in
missioncritical situations wherefailureissimplyunacceptable. Thereisno
wayonecansuggest asolutionof "pleaseshutdown andreboot thesystem"
for a software that is in someone's pacemaker! Almost every servicewe
havetakenfor granted has software. Hanks,air trafficcontrols, carsareall
powered by softwarethat simply cannot affordtofail. Thesesystems have
torunreliably,predictably, all thetime, everytime.
This pervasiveness, ubiquity, and mission criticality places certain
demands onthewaythesoftwareisdevelopedanddeployed.
First, an organization that develops any form of software product
or servicemust put inevery effort to drastically reduce and, preferably,
eliminate any defects in each delivered product or service. Users are
increasingly intolerant of the hit-and-miss approach that characterized
software products. Fromthe point of view of a software development
organization also, it may not beeconomically viable to deliver products
with defects. For instance, imagine finding a defect in the software
embedded in atelevision after it is shipped to thousands of customers.
How isit possibletosend "patches" tothesecustomers and ask themto
"install thepatch?" Thus, theonly solution istodoit right thefirst time,
beforesending aproduct tothecustomer.
Second, defectsareunlikely toremainlatent forlong. Whenthenumber
of userswaslimitedandthewaytheyusedtheproduct wasalsopredictable
Principles of Testing 5
(andhighly restricted), it was quite possible that there could bedefects in
thesoftwareproduct that would never get detected or uncovered for avery
longtime. However, with thenumber of users increasing, thechances of a
defectgoingundetected arebecomingincreasingly slim. If adefectispresent
intheproduct, someone will hit upon itsooner than later.
Third, thenatureofusageofaproduct oraserviceisbecomingincreasingly
unpredictable. When bespoke software isdeveloped for aspecificfunction
for aspecificorganization (for example, apayroll package), the nature of
usageof theproduct canbepredictable. Forexample, users canonlyexercise
thespecificfunctionality provided inthebespoke software. Inaddition, the
developers of thesoftwareknowtheusers, their business functions, andthe
user operations. On the other hand, consider ageneric application hosted
ontheInternet. Thedevelopers of theapplication havenocOI],trol over how
someonewill usetheapplication. Theymay exerciseuntested functionality;
they may haveimproper hardware or softwareenvironments; or they may
not befullytrained ontheapplication andthus simply usetheproduct inan
incorrect orunintended manner. Despiteall this"mishandling," theproduct
should work correctly.
Finally,theconsequenceandimpact of everysingledefectneeds analysis,
especially for mission critical applications. It may beacceptabletosay that
99.9%of defects arefixedinaproduct for arelease, and only 0.1% defects
are outstanding. It appears to be an excellent statistics to go ahead and
releasetheproduct. However, if wemap the0.1%failureinmission critical
applications, thedatawill look likethis.
~ Atotal of 10,000incorrect surgery operations per week.
~ Threeairplane crashes every day.
~ Noelectricity for fivehours every week.
For sure, theabovedataisunacceptable for anyindividual, organization,
or government. Providing aworkaround, suchas"Incaseof fire, wear this
dress," or documenting afailure, such as "Youmay loseonly body parts
in caseof awrong airplane landing" would not be acceptable in cases of
mission critical applications.
This book focuses on software testing. Traditionally, testing is defined
as being narrowly confined to testing the program code. Wewould like
to consider testing in abroader context asencompassing all activities that
address the implications of producing quality products discussed above.
Producing asoftwareproduct entails several phases (suchasrequirements
gathering, design, andcoding) inaddition totesting(inthetraditional sense
of the term). Whiletesting is definitely oneof the factors (and one of the
phases) that contributes toahighquality product, italonecannot add quality
toaproduct. Proper interaction of testing with other phases isessential for
agoodproduct. Theseinteractions andtheir impact arecaptured inthegrid
inFigure1.1.
Figure 1.1
Relationship of
effectiveness of
testing to quality
of other phases.
Poor upstream activities
Right balance,
Implies heavy
Promotes teamwork,
dependence on testing
Delivers a quality
to detect and correct
product to customers
defects
HIGH REWORK COST
IDEAL STATE
Poor upstream activities AND
May lead to unexpected
poor testing
defects due to poor testing
NOT SUSTAINABLE
RISKY
Quality of Other Phases
If thequality of theother phases islowandtheeffectivenessof testing is
low(lower left-hand corner of thegrid), thesituation isnot sustainable. The
product will most likelygoout of business verysoon. Tryingtocompensate
for poor quality in other phases with increased emphasis on the testing
phase (upper left-hand corner of thegrid) islikelytoput high pressure on
everyone asthedefects get detected closer tothetimetheproduct isabout
tobereleased. Similarly,blindly believingother phases tobeof highquality
and having apoor testing phase (lower right-hand side of the grid) will
lead to the risky situation of unforeseen defects being detected at the last
minute. Theideal stateof courseiswhen high quality ispresent inall the
phases including testing (upper right-hand corner of thegrid). Inthis state,
thecustomers feel thebenefitsof quality andthispromotes better teamwork
andsuccessinanorganization. .
1.2 ABOUTTHIS CHAPTER
In this chapter, we discuss some of the basic principles of testing. We
believe that these principles are fundamental to the objective of testing,
namely, to provide quality products to customers. These principles also
formthe motivation for the rest of thebook. Thus this chapter acts as an
anchor for therest of thebook.
Thefundamental principles of testing areasfollows.
1. Thegoal of testingistofinddefectsbeforecustomersfindthemout.
2. Exhaustive testing isnot possible; program testing can only show
thepresence of defects, never their absence.
3. Testingapplies all through thesoftwarelifecycleand isnot anend-
of-cycleactivity.
4. Understand thereason behind thetest.
Principles of Testing
5. Testthetestsfirst.
6. Testsdevelop immunity and havetoberevised constantly.
7. Defects occur in convoys or clusters, and testing should focus on
theseconvoys.
8. Testingencompasses defect prevention.
9. Testingisafinebalance of defect prevention and defect detection.
10. Intelligent and well-planned automation is key to realizing the
benefits of testing.
11. Testingrequirestalented, committedpeoplewhobelieveinthemselves
andworkinteams.
Wewill takeupeachoftheseprinciplesinthesubsequent sections.Where
appropriate, wewill illustratetheprinciplewithasimplestoryfromoutside
thearenaof information technology todrivehomethepoint.
1.3 THE INCOMPLETECAR
Eventually, whatever asoftwareorganization develops should meet the
needs of thecustomer. Everything elseissecondary. Testingis ameans of
making surethat theproduct meets theneeds of thecustomer.
Wewould liketo assign abroader meaning to theterm"customer." It
does not mean just external customers. There are also internal customers.
For example, if aproduct isbuilt using different components fromdifferent
groups within an organization, the users of these different components
shouldbeconsideredcustomers, eveniftheyarefromthesameorganization.
Having this customer perspective enhances thequality of all theactivities
including testing.
Wecan take the internal customer concept a step further where the
development teamconsiders thetesting teamasitsinternal customer. This
waywecanensurethat theproduct isbuilt not onlyforusagerequirements
8 Software Testing
but also for testing requirements. This concept improves "testability" of
the product and improves interactions between the development and
testingteams.
Wewould liketo urge the reader to retain these two perspectives-
customer perspective and perspective of quality not being an add-on
in the end, but built in every activity and component right fromthe
beginning-throughout thebook.
If our jobis to giveacompletecar to the customer (and not ask the
customers topaint thecar) andif our intent istomakesurethecar works
as expected, without any (major) problems, then we should ensure
that wecatchand correct all the defectsinthecar ourselves. This is the
fundamental objectiveof testing.Anythingwedointesting, itbehovesusto
remember that.
1.4 DIJKSTRA'S DOCTRINE
Consider aprogram that issupposed to accept asix-character codeand
ensure that thefirst character isnumeric and rests of the characters are
alphanumeric. Howmany combinations of input data should wetest, if
our goal istotest theprogramexhaustively?
Thefirst character canbefilledup inoneof 10ways (thedigits 0-9).
Thesecondthrough sixthcharacterscaneachbefilledupin62ways(digits
0-9, lower caselettersa-z andcapital lettersA-Z). Thismeansthat wehave
atotal of 10x (62
5
) or 9,161,328,320valid combinations of values to test.
Assumingthat eachcombinationtakes 10secondstotest, testingall these
validcombinationswill takeapproximately 2,905years!
Therefore, after 2,905years, wemay concludethat all valid inputs are
accepted. But that is not the end of the story-what will happen to the
programwhenwegiveinvalid data? Continuing theaboveexample, if we
assume there are 10punctuation characters, then wewill have to spend
a total of 44,176years to test all the valid and invalid combinations of
input data.
All this just to accept one field and test it exhaustively.,Obviously,
exhaustivetestingof areal lifeprogramisnever possible.
All theabovemeanthat wecanchoosetoexecuteonly asubset of the
tests. Tobeeffective,weshould chooseasubset of tests that canuncover
the maximumnumber of errors. Wewill discuss in Chapter 4, on Black
BoxTesting, and Chapter 3, onWhiteBoxTesting, sometechniques such
as equivalencepartitioning, boundary value analysis, codepath analysis,
andsoonwhichhelpinidentifyingsubsetsof test casesthat haveahigher
likelihoodof uncoveringdefects.
Nevertheless, regardless of whichsubset of testcaseswechoose, wecan
never be100%surethat therearenodefectsleftout. Butthen, toextendan
oldcliche,nothingcanbecertainother thandeathandtaxes,yetweliveand
doother thingsbyjudiciouslymanagingtheuncertainties.
1.5 A TEST IN TIME!
Defects in aproduct can comefromany phase. Therecould have been
errors while gathering initial requirements. If a wrong or incomplete
requirement formsthebasisfor thedesignanddevelopment of aproduct,
then that functionality can never be realized correctly in the eventual
product. Similarly, when a product design-which forms the basis for
the product development (a La coding)-is faulty, then the code that
realizes the faulty design will alsonot meet the requirements. Thus, an
essential condition should bethat every phase of software development
(requirements, design, coding, andsoon) should catchandcorrect defects
at that phase, without lettingthedefectsseeptothenext stage.
Let us look at thecost implications of lettingdefects seepthrough. If,
during requirements capture, somerequirements areerroneously captured
andtheerror isnot detecteduntil theproduct isdeliveredtothecustomer,
theorganizationincursextraexpensesfor
ffi performing awrong designbased onthewrong requirements;
ffi transforming thewrong designintowrongcodeduring thecoding
phase;
ffi testing to make sure the product complies with the (wrong)
requirement; and
ffi releasingtheproduct withthewrongfunctionality.
.InFigure1.2thedefectsinrequirementsareshowningray.Thecoloured
figureisavailableonpage457.Asyoucansee, thesegrayboxesarecarried
forwardthroughthreeofthesubsequentstages-design, codin~andtesting.
I
10 Software. Testing
Figure 1.2
How defects from early
phases add to the
costs.
Requirement
Phase
Design
Phase
Coding
Phase
Testing
Phase
When this erroneous product reaches the customer after the testing
phase, thecustomer may incur apotential downtime that canresult inloss
of productivity or business. Thisintumwould reflect asalossof goodwill
to the software product organization. On top of this loss of goodwill, the
softwareproduct organization would havetoredo all thesteps listedabove,
inorder torectifytheproblem.
Similarly,when adefect isencountered during thedesign phase (though
therequirements werecaptured correctly, depicted by yellow), thecostsof
all of thesubsequent phases (coding, testing, andsoon) havetobeincurred
multiple times. However, presumably, thecostswould belower than inthe
first case, where eventherequirements werenot captured properly. Thisis
becausethedesignerrors (represented byyellowboxes) arecarriedforward
onlytothecodingandtestingphases. Similarly,adefectinthecodingphase
iscarriedforward tothetestingphase(greenboxes). Again, asfewer phases
are affected by this defect (compared to requirements defects or design
defects), wecanexpect that thecost of defectsincodingshould belessthan
theearlier defects. Ascanbeinferred fromtheabovediscussion, thecostof
adefect iscompounded depending onthedelay indetecting thedefect.
Hence, smaller thelagtimebetween defectinjection(i.e.,when thedefect
wasintroduced) anddefect detection (i.e.,whenthedefectwasencountered
and corrected), lesser aretheunnecessary costs. Thus, it becomes essential
Figure 1.3
Compounding effect
of defects on software
costs.
10x
Reqmts Design Coding Testing Post release
Principles afTeSting
to catchthedefects asearly aspossible. Industry data has reaffirmed these
findings. Whilethere isno consensus about thecostsincurred due to delay
in defect detection, adefect introduced during the requirement phase that
makes ittothefinal releasemay costasmuch asathousand times thecost of
detecting and correcting thedefect during requirements gathering itself.
1.6 THECATANDTHESAINT
Testingrequires asking about and understanding what you aretrying to
test, knowing what thecorrect outcome is, andwhy youareperforming any
test. If wecarry out tests without understanding why wearerunning them,
wewill endup inrunning inappropriate tests that donot address what the
product should do. Infact, it may eventurn out that theproduct ismodified
tomakesurethetestsarerun successfully, evenif theproduct doesnot meet
theintended customer needs!
Understanding therationale of why wearetesting certain functionality
leadstodifferent types of tests, whichwewill coverinPart II of thebook. We
do white box testing to check thevarious paths inthe codeand make sure
they areexercisedcorrectly. Knowing which codepaths should beexercised
foragiventest enablesmaking necessary changes toensure that appropriate
paths arecovered. Knowing theexternal functionality of what theproduct
should do, wedesignblackboxtests. Integration testsareused tomakesure
that thedifferent components fittogether. Internationalization testingisused
toensure that theproduct works with multiple languages found indifferent
parts of theworld. Regression testing isdone to ensure that changes work
asdesigned and donot haveany unintended side-effects.
12 $oftware Testing
1.7 TESTTHETESTSFIRST!
Fromtheaboveexample, it isclear that it istheaudiologist who has a
hearingproblem, notthepatient!Imagineifthedoctor prescribedatreatment
for thepatient assuming that thelatter couldnot hear at20feetand30feet.
Testsarealsoartifacts produced by human beings, much as programs
and documents are. Wecannot assumethat thetestswill beperfect either!
It isimportant tomakesurethat thetests themselves arenot faulty before
westart using them. Oneway of making surethat thetests aretested isto
document theinputs and expected outputs for agiven test and have this
description validated byanexpert or getitcounter-checkedbysomemeans
outside thetests themselves. For example, by givingaknown input value
and separately tracing out thepath tobefollowedby theprogram or the
process, one can manually ascertain the output that should be obtained.
Bycomparing this "known correct result" with theresult produced by the
product, theconfidencelevel ofthetestandtheproduct canbeincreased. The
practices of reviews andinspection andmeticulous test planning discussed
inChapter 3andChapter 15provide means totest thetest.
1.8 THEPESTICIDE PARADOX
Defectsarelikepests; testing islikedesigning theright pesticides tocatch
andkill thepests; andthetest casesthat arewritten arelikepesticides. Just
likepests, defects develop immunity against test cases! As and when we
writenewtest casesanduncover newdefectsintheproduct, other defects
that were"hiding" underneath showup.
Principle~ of Testing 13
There are two possible ways to explain how products develop this
"immunity" against test cases. Oneexplanation is that theinitial tests go
acertain distanceinto the codeand arestopped fromproceeding further
becauseof thedefectstheyencounter. Oncethesedefectsarefixed,thetests
proceedfurther, encounter newer parts of thecodethat havenot beendealt
withbefore, and uncover new defects. Thistakes a"whitebox" or acode
approach toexplainwhynewdefectsgetunearthed withnewer tests.
A second explanation for immunity is that when users (testers) start
using (exercising) aproduct, the initial defects prevent themfromusing
thefull external functionality. Astests arerun, defectsareuncovered, and
problems arefixed, users gettoexplorenewfunctionality that hasnot been
usedbeforeand thiscausesnewer defectstobeexposed. This"blackbox"
viewtakesafunctionality approach toexplainthecausefor this "morewe
test moredefectscorneup" phenomenon.
An alternative way of looking at this problemis not that the defects
developimmunity but thetestsgodeeper tofurther diagnoseaproblemand
thus eventually "kill thedefects." Unfortunately, giventhecomplexnature
of softwareandtheinteractions amongmultiple components, thisfinal kill
happens veryrarely.Defectsstill survivethetests, haunt thecustomers, and
causeuntold havoc.
Software Testing
Theneed for constantly revising the tests to be run, with the intent
of identifying new strains of the defects, will take us to test planning
and different types of tests, especially regression tests. Regression tests
acknowledge that new fixes (pesticides) can cause new "side-effects"
(new strains of pests) and can also cause some older defects to appear.
Thechallenge in designing and running regression tests centers around
designing theright teststocombatnewdefectsintroduced bytheimmunity
acquired by aprogram against oldtest cases. Wewill discuss regression
testsinChapter 8.
1.9 THE CONVOYAND THE RAGS
Defectsin aprogram alsotypically display this convoy phenomenon.
They occur inclusters. Glenford Myers, inhis seminal work on software
testing[MYER-79],proposed that theprobability of the existence of more errors
in a section of a program is proportional to the number of errors already found in
that section.
Thismaysoundcounter-intuitive, but canbelogicallyreasonedout. Afix
foronedefectgenerallyintroduces someinstabilityandnecessitatesanother
fix.All thesefixesproduce side-effectsthat eventually causetheconvoyof
defectsincertainparts of theproduct.
Fromatest planning perspective, this means that if wefind defectsin
a particular part of product, more-not less-effort should be spent on
testingthat part. Thiswill increasethereturn oninvestments intesting as
thepurpose of testingisfindthedefects. Thisalsomeans that whenever a
product undergoes anychange, theseerror-proneareasneedtobetestedas
theymayget affected. Wewill cover theseaspectsinChapter 8,Regression
Testing.
Figure 1.4
The number of defects
yet to be found
increases with the
number of defects
uncovered.
"0
c:
~
Q
Q)
.c
,g
~
e n
~
o
Number of defects found
A fix for a defect is made around certain lines of code. This fix can
produce side-effects around the same pieceof code. This sets in spiraling
changes totheprogram, all localized tocertain select portions of thecode.
When welook at the codethat got thefixesfor the convoy 6f defects, it is
likely tolook likeapieceof rag! Fixingatear inoneplaceinashirt would
most likely causedamage inanother place. Theonly long-termsolution in
suchacaseistothrowaway theshirt andcreateanewone.Thisamounts to
are-architecting thedesign andrewriting thecode.
1.10 THE POLICEMEN ON THE BRIDGE
Testersare probably best equipped to know the problems customers
mayencounter. Likethesecondpoliceofficerintheabovestory,theyknow
peoplefall andtheyknowwhypeoplefall.Rather thansimplycatchpeople
whofall (andtherebybeexposedtotheriskof amissedcatch), theyshould
alsolook at theroot causefor fallingand advisepreventive action. It may
not bepossiblefor testersthemselvestocarryout preventiveaction. Just as
thesecondpoliceofficerhad toenlist thehelp of anengineer toplug the
hole, testerswouldhavetoworkwithdevelopment engineers tomakesure
theroot causeof thedefectsareaddressed. Thetestersshould not feel that
by eliminating theproblems totally their jobsareat stake. Likethesecond
policeman, their careerscanbeenrichingandbeneficial totheorganization
if theyharness their defectdetectionexperienceandtransformsomeof itto
defectprevention initiatives.
Defectprevention isapart of atester's job. A career as atester canbe
enriching and rewarding, if wecanbalancedefect prevention and defect
detectionactivities. Someof thesecareer pathpossibilitiesareencapsulated
inathree-stagemodel inChapter 13,CommonPeopleIssues. Wewill now
visitthequestionof what istherightbalancebetweendefectprevention and
defectdetection.
1.11 THEENDSOFTHEPENDULUM
The eventual goal of any software organization is to ensure that the
customers get products that arereasonably freeof defects. Therearetwo
approaches toachievingthisgoal. Oneistofocusondefect detection and
correction and thesecondistofocusondefect prevention. Thesearealso
calledquality control focusandquality assurance focus.
Testing is traditionally considered as a quality control activity, with
anemphasis on defect detection and correction. Wewould liketo take a
broader viewof testingandbelievethat thereareaspectsof testingthat are
also defect prevention oriented. For example, oneof theaspects of white
box testing, discussed in Chapter 3, is static testing, that involves desk
checking, codewalkthroughs, codereviews, and inspection. Eventhough
thesearetraditionally consideredas"qualityassurance" activities, planning
for overall testing activities with anintent to deliver quality products to
customers, cannotbedoneeffectivelyunlesswetakeaholisticviewof what
canbedone using quality assurance and what canbedone with quality
control (orthetraditional definitionof testing).
Quality assuranceis normally associatedwith process models such as
CMM, CMMI, ISO9001,and soon. Quality control, on the other hand, is
associatedwith testing(that formthebulk of thediscussionsinthisbook).
This has caused an unnatural dichotomy between these two functions.
Unfortunately,organizationsviewthesetwofunctionsasmutually exclusive,
"either-or" choices. Wehave even heard statements such as "with good
processes,testingbecomesredundant" or"processesaremereoverheads-we
Principles of Testing
Figure 1.5
Quality control and
quality assurance as
two methods to achieve
quality.
Dp.fect Detection "
,
,
,
,
, ,
. .
. .
. .
. .
, ,
.......
Defect Prevention
.... \,
: ;
. ,
, ,
........
canfindout everything by testing." It isalmost asif therearetwo schools
of thought at either extremes of a pendulum-one rooting for defect
prevention (quality assurance) focus and the other rooting for the defect
detection(quality control) focus. Itisalsocommontofindanorganization
swinging from one extreme to another over time, like a pendulum
(Figure1.5).
Rather than view defect prevention and defect detection as mutually
exclusivefunctions or ends of apendulum, webelieveit isworthwhile to
view thesetwo as supplementary activities, being done in the right mix.
Figure 1.6gives adefect prevention-defect detection grid, which views
the two functions as two dimensions. Theright mix of the two activities
corresponds tochoosingtheright quadrant inthisgrid.
Whenthefocusondefectprevention islow, theemphasis ontheuseof
appropriate standards, reviews, andprocesses areverylow. Thisactsasan
ideal "breeding ground" for defects. Most of theeffortinensuring quality
of aproduct isleftinthehands of thetestingand defect detectionteam. If
thefocusondefectdetectionisalsolow(representedbythelower left-hand
quadrant), thisisabadstateforanorganization tobein. Lackof testingand
Figure 1.6
Relationship between
defect detection focus
and defect prevention
focus.
Last minute rushes
Higher people dependency
Testers as "heroes" and
"adversaries"
Not a healthy state!
Lack of standards foster
"defect breeding"
Lack of testing makes
defects reach the customers
May be resource intensive but
gives better payback
Institutionalizes quality
Makes quality visible to
customers
Double-edged sword!
Excessive process
orientation
Lack of testing makes
defects reach the customers