Software Testing:
A Craftsman's Approach,
5th Edition
The following is an outline including parts, chapters, sections, and major sub-sections:
PART I A Mathematical Context
1 A Perspective on Testing
1.1 Basic Definitions
1.2 Test Cases
1.3 Insights from a Venn Diagram
1.4 Identifying Test Cases
1.5 Fault Taxonomies
1.6 Levels of Testing
Exercises
References
2 Examples
2.1 Structural Elements of Pseudo-code and Java
2.2 The Triangle Problem
2.3 The NextDate Function
2.4 The Foodies-Wish-List Online Shopping Application
2.5 The Garage Door Controller
2.6 Examples in Exercises
2.6.1 The Quadrilateral Program
2.6.2 The NextWeek Function
2.6.3 The Windshield Wiper Controller
Exercises
References
3 Discrete Math for Testers
3.1 Set Theory
3.2 Functions
3.3 Relations
3.4 Propositional Logic
Exercises
Reference
4 Graph Theory for Testers
4.1 Graphs
4.2 Directed Graphs
4.3 Graphs for Testing
4.3.1 Program Graphs
4.3.2 Finite State Machines
4.3.3 Petri Nets
4.3.4 Event-Driven Petri Nets
4.3.5 Statecharts
Exercises
Reference
PART II Unit Testing
5 Boundary Value Testing
5.1 Normal Boundary Value Testing
5.2 Robust Boundary Value Testing
5.3 Worst Case Boundary Value Testing
5.4 Special Value Testing
5.5 Examples
5.6 Random Testing
5.7 Guidelines for Boundary Value Testing
Exercises
References
6 Equivalence Class Testing
6.1 Equivalence Classes
6.2 Traditional Equivalence Class Testing
6.3 Improved Equivalence Class Testing
6.4 Equivalence Class Test Cases for the Triangle Problem
6.5 Equivalence Class Test Cases for the NextDate Function
6.6 Equivalence Class Test Cases for the completeOrder Method
6.7 “Edge Testing”
6.8 Reflections on Invalid Classes
6.9 Guidelines and Observations
Exercises
References
7 Decision Table-Based Testing
7.1 Decision Tables
7.2 Decision Table Techniques
7.3 Test Cases for the Triangle Problem
7.4 Test Cases for the NextDate Function
7.5 Cause and Effect Graphing
7.6 Guidelines and Observations
Exercises
References
8 Code-Based Testing
8.1 Program Graphs
8.2 DD-Paths
8.3 Code Coverage Metrics
8.4 Basis Path Testing
8.4.1 McCabe’s Basis Path Method
8.4.2 Observations on McCabe’s Basis Path Method
8.4.3 Essential Complexity
8.5 Guidelines and Observations
Exercises
References
9 Testing Object-Oriented Software
9.1 Unit Testing Frameworks
9.1.1 Common Unit Testing Frameworks
9.1.2 JUnit Examples
9.2 Mock Objects and Automated Object Mocking
9.3 Dataflow Testing
9.4 Object-Oriented Complexity Metrics
9.5 Issues in Testing Object-Oriented Software
9.6 Slice-Based Testing
9.6.1 Example
9.6.2 Style and Technique
9.6.3 Slice Splicing
9.6.4 Program Slicing Tools
Exercises
References
10 Retrospective on Unit Testing
10.1 The Test Method Pendulum
10.2 Traversing the Pendulum
10.3 Insurance Premium Case Study
10.4 Specification-Based Testing
10.5 Guidelines
Exercises
References
PART III Beyond Unit Testing
11 Life Cycle-Based Testing
11.1 Traditional Waterfall Testing
11.2 Testing in Iterative Lifecycles
11.3 Agile Testing
11.4 Remaining Questions
11.5 Pros, cons, and Open Questions of TDD
11.6 Retrospective on MDD vs TDD
References
12 Integration Testing
12.1 Decomposition-Based Integration
12.2 Call Graph-Based Integration
12.3 Path-Based Integration
12.4 Example: Procedural integrationNextDate
12.5 Example: O-O integrationNextDate
12.6 Model-Based Integration Testing
Exercises
References
13 System Testing
13.1 Threads
13.2 Identifying Threads in Single-Processor Applications
13.3 Identifying Threads in Systems of Systems
13.4 System Level Test Cases
13.5 Coverage Metrics for System Testing
13.6 Long Versus Short Test Cases
13.6.1 Supplemental Approaches to System Testing
13.6.2 Operational Profiles
13.6.2.1 Risk-Based Testing
13.7 Non-functional System Testing
Exercises
References
14 Model-Based Testing
14.1 Testing Based on Models
14.2 Appropriate Models
14.3 Commercial Tool Support for Model-Based Testing
Exercises
References
15 Software Complexity
15.1 Unit Level Complexity
15.1.1 Cyclomatic Complexity
15.1.1.1 “Cattle Pens” and Cyclomatic Complexity
15.1.1.2 Node Outdegrees and Cyclomatic Complexity
15.1.1.3 Decisional Complexity
15.1.2 Computational Complexity
15.1.2.1 Halstead’s Metrics
15.1.2.2 Example: Day of Week with Zeller’s Congruence
15.2 Integration Level Complexity
15.3 Software Complexity Example
15.4 Object-Oriented Complexity
15.5 System Level Complexity
Exercise
References
16 Testing Systems of Systems
16.1 Characteristics of Systems of Systems
16.2 Sample Systems of Systems
16.3 Software Engineering for Systems of Systems
16.4 Communication Primitives for Systems of Systems
16.5 Effect of Systems of Systems Levels on Prompts
Exercises
References
17 Feature Interaction Testing
17.1 Feature Interaction Problem Defined
17.2 Types of Feature Interactions
17.2.1 Input Conflict
17.2.2 Output Conflict
17.2.3 Resource Conflict
17.3 A Taxonomy of Interactions
17.3.1 Static Interactions in a Single Processor
17.3.2 Static Interactions in Multiple Processors
17.3.3 Dynamic Interactions in a Single Processor
17.3.4 Dynamic Interactions in Multiple Processors
17.4 Interaction, Composition, and Determinism
Exercises
References
18 Case Study: Testing Event-Driven Systems
18.1 The Garage Door Controller Problem Statement
18.2 Modeling with Behavior Driven Development (BDD)
18.3 Modeling with Extended Finite State Machines
18.4 Modeling with Swim Lane Event-Driven Petri Nets
18.5 Deriving Test Cases from Swim Lane Event-Driven Petri Nets
18.6 Failure Mode Event Analysis (FMEA)
Exercises
References
19 A Closer Look at All Pairs Testing
19.1 The All Pairs Technique
19.2 A Closer Look at the NIST Study
19.3 Appropriate Applications for All-Pairs Testing
19.4 Recommendations for All Pairs Testing
Exercises
References
20 Software Technical Reviews
20.1 Economics of Software Reviews
20.2 Types of Reviews
20.3 Roles in a Review
20.4 Contents of an Inspection Packet
20.5 An Industrial-Strength Inspection Process
20.6 Effective Review Culture
20.7 Inspection Case Study
References
21 Epilogue: Software Testing Excellence
21.1 Craftsmanship
21.2 Best Practices of Software Testing
21.3 Our Top 10 Best Practices for Software Testing Excellence
21.4 Mapping Best Practices to Diverse Projects
21.5 An Extreme Example
References
Appendix A: Complete Technical Inspection Packet
Appendix B: Foodies Wish List Example