did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9788131716601

Foundations of Software Testing

by
  • ISBN13:

    9788131716601

  • ISBN10:

    8131716600

  • Edition: 1st
  • Format: Hardcover
  • Copyright: 2008-04-07
  • Publisher: Addison-Wesley Professional
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $74.99

Summary

This book presents sound engineering approaches for software test generation, selection, minimization, assessment, and enhancement. Using numerous examples, it offers a lucid description of a wide range of techniques for a variety of testing-related tasks.

Author Biography

Aditya P. Mathur is Professor and Head, Department of Computer Science, at Purdue University, Indiana

Table of Contents

Prefacep. xiii
Acknowledgmentsp. xix
Preliminariesp. 1
Basics of Software Testingp. 3
Humans, errors, and testingp. 4
Errors, faults, and failuresp. 5
Test automationp. 7
Developer and tester as two rolesp. 7
Software qualityp. 8
Quality attributesp. 8
Reliabilityp. 10
Requirements, behavior, and correctinessp. 11
Input domain and program correctnessp. 12
Valid and invalid inputsp. 13
Correctness versus reliabilityp. 15
Correctnessp. 15
Reliabilityp. 16
Program use and the operational profilep. 16
Testing and debuggingp. 17
Preparing a test planp. 17
Constructing test datap. 18
Executing the programp. 20
Specifying program behaviorp. 21
Assessing the correctness of program behaviorp. 24
Construction of oraclesp. 26
Test metricsp. 27
Organizational metricsp. 28
Project metricsp. 29
Process metricsp. 29
Product metrics: Genericp. 29
Product metrics: OO softwarep. 31
Progress monitoring and trendsp. 32
Static and dynamic metricsp. 32
Testabilityp. 33
Software and hardware testingp. 34
Testing and verificationp. 36
Defect managementp. 37
Execution historyp. 38
Test-generation strategiesp. 39
Static testingp. 41
Walkthroughsp. 42
Inspectionsp. 42
Use of static code analysis tools in static testingp. 43
Software complexity and static testingp. 44
Model-based testing and model checkingp. 45
Control-flow graphp. 46
Basic blockp. 46
Flow graph: Definition and pictorial representationp. 48
Pathp. 50
Dominators and postdominatorsp. 54
Program-dependence graphp. 56
Data dependencep. 56
Control dependencep. 57
Strings, languages, and regular expressionsp. 59
Types of testingp. 60
Classifier C1: Source of test generationp. 61
Classifier C2: Life cycle phasep. 64
Classifier C3: Goal-directed testingp. 65
Classifier C4: Artifact under testp. 68
Classifier C5: Test process modelsp. 70
The saturation effectp. 74
Confidence and true reliabilityp. 75
Saturation regionp. 76
False sense of confidencep. 76
Reducing [Delta]p. 77
Impact on test processp. 78
Summaryp. 79
Bibliographic Notesp. 80
Exercisesp. 85
Test Generationp. 89
Test Generation from Requirementsp. 91
Introductionp. 92
The test-selection problemp. 93
Equivalence partitioningp. 95
Faults targetedp. 96
Relations and equivalence partitioningp. 97
Equivalence classes for variablesp. 102
Unidimensional versus multidimensional partitioningp. 106
A systematic procedure for equivalence partitioningp. 108
Test selection based on equivalence classesp. 114
GUI design and equivalence classesp. 117
Boundary-value analysisp. 119
Category-partition methodp. 125
Steps in the category-partition methodp. 125
Cause-effect graphingp. 132
Notation used in cause-effect graphingp. 133
Creating cause-effect graphsp. 136
Decision table from cause-effect graphp. 140
Heuristics to avoid combinatorial explosionp. 145
Test generation from a decision tablep. 148
Test generation from predicatesp. 149
Predicates and boolean expressionsp. 150
Fault model for predicate testingp. 152
Predicate constraintsp. 154
Predicate-testing criteriap. 156
Generating BOR-, BRO-, and BRE-adequate testsp. 158
Cause-effect graphs and predicate testingp. 173
Fault propagationp. 174
Predicate testing in practicep. 176
Summaryp. 180
Bibliographic Notesp. 181
Exercisesp. 184
Test Generation from Finite-State Modelsp. 193
Software design and testingp. 194
Finite-state machinesp. 196
Excitation using an input sequencep. 200
Tabular representationp. 201
Properties of FSMp. 202
Conformance testingp. 203
Reset inputsp. 205
The testing problemp. 207
A fault modelp. 208
Mutants of FSMsp. 211
Fault coveragep. 213
Characterization setp. 214
Construction of the k-equivalence partitionsp. 215
Deriving the characterization setp. 218
Identification setsp. 221
The w-methodp. 221
Assumptionsp. 222
Maximum number of statesp. 222
Computation of the transition cover setp. 223
Constructing Zp. 224
Deriving a test setp. 225
Testing using the W-methodp. 226
The error-detection processp. 228
The partial w-methodp. 229
Testing using the Wp-method for m = np. 231
Testing using the Wp-method for m > np. 234
The UIO-sequence methodp. 236
Assumptionsp. 237
UIO sequencesp. 237
Core and noncore behaviorp. 239
Generation of UIO sequencesp. 241
Distinguishing signaturesp. 253
Test generationp. 256
Test optimizationp. 258
Fault detectionp. 259
Automata theoretic versus control-flow-based techniquesp. 262
n-switch-coverp. 265
Comparing automata-theoretic methodsp. 267
Summaryp. 269
Bibliographic Notesp. 270
Exercisesp. 273
Test Generation from Combinatorial Designsp. 279
Combinatorial designsp. 280
Test configuration and test setp. 281
Modeling the input and configuration spacesp. 281
A combinatorial test-design processp. 287
Fault modelp. 289
Fault vectorsp. 291
Latin squaresp. 292
Mutually orthogonal latin squaresp. 294
Pairwise design: binary factorsp. 296
Pairwise design: multivalued factorsp. 301
Shortcomings of using MOLS for test designp. 309
Orthogonal arraysp. 309
Mixed-level orthogonal arraysp. 311
Covering and mixed-level covering arraysp. 314
Covering arraysp. 314
Mixed-level covering arraysp. 314
Arrays of strength >2p. 315
Generating covering arraysp. 316
Summaryp. 326
Bibliographic Notesp. 327
Exercisesp. 330
Test Selection, Minimizations, and Priaritization for Regression Testingp. 335
What is regression testing?p. 336
Regression-test processp. 337
Test revalidation, selection, minimization, and prioritizationp. 338
Test setupp. 339
Test sequencingp. 340
Test executionp. 342
Output comparisonp. 343
RTS: the problemp. 343
Selecting regression testsp. 344
Test allp. 345
Random selectionp. 345
Selecting modification-traversing testsp. 345
Test minimizationp. 346
Test prioritizationp. 347
Test selection using execution tracep. 347
Obtaining the execution tracep. 348
Selecting regression testsp. 350
Handling function callsp. 355
Handling changes in declarationsp. 355
Test selection using dynamic slicingp. 358
Dynamic slicingp. 360
Computation of dynamic slicesp. 360
Selecting testsp. 362
Potential dependencep. 363
Computing the relevant slicep. 367
Addition and deletion of statementsp. 367
Identifying variables for slicingp. 369
Reduced dynamic-dependence graphp. 369
Scalability of test-selection algorithmsp. 371
Test minimizationp. 373
The set-cover problemp. 374
A procedure for test minimizationp. 375
Test prioritizationp. 377
Tools for regression testingp. 381
Summaryp. 384
Bibliographic Notesp. 385
Exercisesp. 391
Test Adequacy Assessment and Enhancementp. 399
Test Adequacy: Assessment using Control Flow and Data Flowp. 401
Test adequacy: basicsp. 402
What is test adequacy?p. 402
Measurement of test adequacyp. 403
Test enhancement using measurements of adequacyp. 405
Infeasibility and test adequacyp. 409
Error detection and test enhancementp. 411
Single and multiple executionsp. 414
Adequacy criteria based on control flowp. 415
Statement and block coveragep. 415
Conditions and decisionsp. 418
Decision coveragep. 420
Condition coveragep. 422
Condition/decision coveragep. 424
Multiple condition coveragep. 426
Linear code sequence and jump (LCSAJ) coveragep. 429
Modified condition/decision coveragep. 433
MC/DC-adequate tests for compound conditionsp. 434
Definition of MC/DC coveragep. 440
Minimal MC/DC testsp. 448
Error detection and MC/DC adequacyp. 448
Short-circuit evaluation and infeasibilityp. 450
Tracing test cases to requirementsp. 452
Data-flow conceptsp. 454
Definitions and usesp. 455
c-use and p-usep. 456
Global and local definitions and usesp. 457
Data-flow graphp. 458
Def-clear pathsp. 460
Def-use pairsp. 461
Def-use chainsp. 462
A little optimizationp. 463
Data contexts and ordered data contextsp. 464
Adequacy criteria based on data flowp. 467
c-use coveragep. 468
p-use coveragep. 469
all-uses coveragep. 471
k-dr chain coveragep. 471
Using the k-dr chain coveragep. 473
Infeasible c-uses and p-usesp. 474
Context coveragep. 475
Control flow versus data flowp. 478
The subsumes relationp. 480
Structural and functional testingp. 482
Scalability of coverage measurementp. 483
Summaryp. 486
Bibliographic Notesp. 487
Exercisesp. 494
Test-Adequacy Assessment Using Program Mutationp. 502
Introductionp. 503
Mutation and mutantsp. 504
First-order and higher-order mutantsp. 505
Syntax and semantics of mutantsp. 506
Strong and weak mutationsp. 509
Why mutate?p. 511
Test assessment using mutationp. 512
A procedure for test-adequacy assessmentp. 512
Alternate procedures for test-adequacy assessmentp. 520
Distinguished versus killed mutantsp. 521
Conditions for distinguishing a mutantp. 522
Mutation operatorsp. 524
Operator typesp. 525
Language dependence of mutation operatorsp. 527
Design of mutation operatorsp. 529
Goodness criteria for mutation operatorsp. 529
Guidelinesp. 530
Founding principles of mutation testingp. 531
The competent programmer hypothesisp. 531
The coupling effectp. 532
Equivalent mutantsp. 532
Fault detection using mutationp. 533
Types of mutantsp. 536
Mutation operators for Cp. 537
What is not mutated?p. 537
Linearizationp. 538
Execution sequencep. 540
Effect of an execution sequencep. 543
Global and local identifier setsp. 544
Global and local reference setsp. 544
Mutating program constantsp. 547
Mutating operatorsp. 549
Mutating statementsp. 555
Mutating program variablesp. 570
Mutation operators for javap. 575
Traditional mutation operatorsp. 577
Inheritencep. 578
Polymorphism and dynamic bindingp. 581
Method overloadingp. 582
Java-specific mutation operatorsp. 584
Mutation operators for fortran 77, C, and java: a comparisonp. 585
Tools for mutation testingp. 588
Mutation testing within budgetp. 590
Prioritizing functions to be mutatedp. 590
Selecting a subset of mutation operatorsp. 591
Summaryp. 593
Bibliographic Notesp. 594
Exercisesp. 606
Referencesp. 615
Subject Indexp. 653
Name Indexp. 685
Table of Contents provided by Ingram. All Rights Reserved.

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program