Preface
Acknowledgments
PART I:PREUMINARIES
1.BASKS OF SOFTWAAE TESTING
1.1.Humans,ERRORS,AND TESTING
1.1.1.Errors,faults,and failures
1.1.2.Test automation
1.1.3.Developer and tester as two roles
1.2.SOFTWARE QUALITY
1.2.1.Quality attributes
1.2.2.Reliability
1.3.REQUIREMENTS,BEHAVIOR,AND CORRECTNESS
1.3.1.lnput domain and program correctness
1.3.2.Valid and invalid inputs
1.4.CORRECTNESS VERSUS RELIABILITY
1.4.1.Correctness
1.4.2.Reliability
1.4.3.Program use and the operational profile
1.5.TESTING AND DEBUGGING
1.5.1.Preparing a test plan
1.5.2.Constructing test data
1.5.3.Executing the program
1.5.4.Specifying program behavior
1.5.5.Assessing the correctness of program behavior
1.5.6.Construction of oracles
1.6.TEST METRICS
1.6.1.Organizational metrics
1.6.2.Project metrics
1.6.3.Process metrics
1.6.4.Product metrics:Generic
1.6.5.Product metrics:OO software
1.6.6.Progress monitoring and trends
1.6.7.Static and dynamic metrics
1.6.8.Testability
1.7.SOFTWARE AND HARDWARE TESTING
1.8.TESTING AND VERIFICATION
1.9.DEFECT MANAGEMENT
1.10.EXECUTION HISTORY
1.11.TEST-GENERATION STRATEGIES
1.12.STATIC TESTING
1.12.1.Walkthroughs
1.12.2.lnspections
1.12.3.Use of static code analysis tools in static testing
1.12.4.Software complexity and static testing
1.13.MODEL-BASED TESTING AND MODEL CHECKING
1.14.CONTROL-FLOW GRAPH
1.14.1.Basic block
1.14.2.Flow graph:Definition and pictorial representation
1.14.3.Path
1.15.DOMINATORS AND POSTDOMINATORS
1.16.PROGRAM-DEPENDENCE GRAPH
1.16.1.Data dependence
1.16.2.Control dependence
1.17.STRINGS,LANGUAGES,AND REGULAR EXPRESSIONS
1.18.TYPES OF TESTING
1.18.1.Classifier C1:Source of test generation
1.18.2.Classifier C2:Life cycle phase
1.18.3.Classifier C3:Goal-directed testing
1.18.4.Classifier C4:Artifact under test
1.18.5.Classifier C5:Test process models
1.19.THE SATURATION EFFECT
1.19.1.Confidence and true reliability
1.19.2.Saturation region
1.19.3.False sense of confidence
1.19.4.Reducing△
1.19.5.lmpact on test process
Summary
Bibliographic Notes
Exercises
PART II:TEST GENERATION
2.TEST GENERATION FROM REQUIREMENTS
2.1.INTRODUCTION
2.2.THE TEST-SELECTION PROBLEM
2.3.EQUIVALENCE PARTITIONING
2.3.1.Faults targeted
2.3.2.Relations and equivalence partitioning
2.3.3.Equivalence classes for variables
2.3.4.Unidimensional versus multidimensional partitioning
2.3.5.A systematic procedure for equivalence partitioning
2.3.6.Test selection based on equivalence classes
2.3.7.GUI design and equivalence classes
2.4.BOUNDARY-VALUE ANALYSIS
2.5.CATEGORY-PARTITION METHOD
2.5.1.Steps in the category-partition method
2.6.CAUSE-EFFECT GRAPHING
2.6.1.Notation used in cause—effect graphing
2.6.2.Creating cause—effect graphs
2.6.3.Decision table from cause—effect graph
2.6.4.Heuristics to avoid combinatorial explosion
2.6.5.Test generation from a decision table
2.7.TEST GENERATION FROM PREDICATES
2.7.1.Predicates and boolean expressions
2.7.2.Fault model for predicate testing
2.7.3.Predicate constraints
2.7.4.Predicate-testing criteria
2.7.5.Generating BOR-,BRO-,AND BRE-adequate tests
2.7.6.Cause—effect graphs and predicate testing
2.7.7.Fault propagation
2.7.8.Predicate testing in practice
Summary
Bibliographic Notes
Exercises
3.TEST GENERATION FROM FINTE-STATE MODELS
3.1.SOFTWARE DESIGN AND TESTING
3.2.FINITE-STATE MACHINES
3.2.1.Excitation using an input sequence
3.2.2.Tabular representation
3.2.3.Properties of FSM
3.3.CONFORMANCE TESTING
3.3.1.Reset inputs
3.3.2.The testing problem
3.4.A FAULT MODEL
3.4.1.Mutants of FSMs
3.4.2.Fault coverage
3.5.CHARACTERIZATION SET
3.5.1.Construction of the k-equivalence partitions
3.5.2.Deriving the characterization set
3.5.3.ldentification sets
3.6.THE W-METHOD
3.6.1.Assumptions
3.6.2.Maximum number of states
3.6.3.Computation of the transition cover set
3.6.4.Constructing Z
3.6.5.Deriving a test set
3.6.6.Testing using the W-method
3.6.7.The error-detection process
3.7.THE PARTIAL W-METHOD
3.7.1.Testing using the Wp-method for m=n
3.7.2.Testing using the Wp-method for m>n
3.8.THE UIQ-SEQUENCE METHOD
3.8.1.Assumptions
3.8.2.UIO sequences
3.8.3.Core and noncore behavior
3.8.4.Generation of UIO sequences
3.8.5.Distinguishing signatures
3.8.6.Test generation
3.8.7.Test optimization
3.8.8 Fault detection
3.9.AUTOMATA THEORETIC VERSUS CONTROL-FLOW-BASED TECHNIQUES
3.9.1.n-switch-cover
3.9.2.Comparing automata-theoretic methods
Summary
Bibliographic Notes
Exercises
4.TEST GENERATION FROM COMBINATORIAL DESIGNS
5.TEST SELECTION,MINIMIZATIONS,AND PAIAAITIZATION FROM REGRESSION TESTING
PART III:TEST ADEQUACY ASSESSMENT AND ENHANCEMENT
6.TEST ADEQUACY:ASSESSMENT USING CONTROL FLOW AND DATA FLOW
7.TEST-ADEQUACY ASSESSMENT USING PROGRAM MUTATION