[Title Page] [TOC] [Prev] [Next] [End]
Abstract
Keywords
Acknowledgments
Disclaimer
Executive Summary
1 Introduction
- 1.1 Software testing
- 1.2 Software complexity measurement
- 1.3 Relationship between complexity and testing
- 1.4 Document overview and audience descriptions
2 Cyclomatic Complexity
- 2.1 Control flow graphs
- 2.2 Definition of cyclomatic complexity, v(G)
- 2.3 Characterization of v(G) using a basis set of control flow paths
- 2.4 Example of v(G) and basis paths
- 2.5 Limiting cyclomatic complexity to 10
3 Examples of Cyclomatic Complexity
- 3.1 Independence of complexity and size
- 3.2 Several flow graphs and their complexity
4 Simplified Complexity Calculation
- 4.1 Counting predicates
- 4.2 Counting flow graph regions
- 4.3 Use of automated tools
5 Structured Testing
- 5.1 The structured testing criterion
- 5.2 Intuition behind structured testing
- 5.3 Complexity and reliability
- 5.4 Structured testing example
- 5.5 Weak structured testing
- 5.6 Advantages of automation
- 5.7 Critical software
6 The Baseline Method
- 6.1 Generating a basis set of paths
- 6.2 The simplified baseline method
- 6.3 The baseline method in practice
- 6.4 Example of the baseline method
- 6.5 Completing testing with the baseline method
7 Integration Testing
- 7.1 Integration strategies
- 7.2 Combining module testing and integration testing
- 7.3 Generalization of module testing criteria
- 7.4 Module design complexity
- 7.5 Integration complexity
- 7.6 Incremental integration
8 Testing Object-Oriented Programs
- 8.1 Benefits and dangers of abstraction
- 8.2 Object-oriented module testing
- 8.3 Integration testing of object-oriented programs
- 8.4 Avoiding unnecessary testing
9 Complexity Reduction
- 9.1 Actual complexity and realizable complexity
- 9.2 Removing control dependencies
- 9.3 Trade-offs when reducing complexity
10 Essential Complexity
- 10.1 Structured programming and maintainability
- 10.2 Definition of essential complexity, ev(G)
- 10.3 Examples of essential complexity
11 Maintenance
- 11.1 Effects of changes on complexity
- 11.1.1 Effect of changes on cyclomatic complexity
- 11.1.2 Effect of changes on essential complexity
- 11.1.3 Incremental reengineering
- 11.2 Retesting at the path level
- 11.3 Data complexity
- 11.4 Reuse of testing information
12 Summary by Lifecycle Process
- 12.1 Design process
- 12.2 Coding process
- 12.3 Unit testing process
- 12.4 Integration testing process
- 12.5 Maintenance process
13 References
Appendix A Related Case Studies
- A.1 Myers
- A.2 Schneidewind and Hoffman
- A.3 Walsh
- A.4 Henry, Kafura, and Harris
- A.5 Sheppard and Kruesi
- A.6 Carver
- A.7 Kafura and Reddy
- A.8 Gibson and Senn
- A.9 Ward
- A.10 Caldiera and Basili
- A.11 Gill and Kemerer
- A.12 Schneidewind
- A.13 Case study at Stratus Computer
- A.14 Case study at Digital Equipment Corporation
- A.15 Case study at U.S. Army Missile Command
- A.16 Coleman et al
- A.17 Case study at the AT&T Advanced Software Construction Center
- A.18 Case study at Sterling Software
- A.19 Case Study at GTE Government Systems
- A.20 Case study at Elsag Bailey Process Automation
- A.21 Koshgoftaar et al
Appendix B Extended Example
- B.1 Testing the blackjack program
- B.2 Experimental comparison of structured testing and branch coverage
CONTENTS
Abstract
Keywords
Acknowledgments
Executive Summary
1 Introduction
- 1.1 Software testing
- 1.2 Software complexity measurement
- 1.3 Relationship between complexity and testing
- 1.4 Document overview and audience descriptions
2 Cyclomatic Complexity
- 2.1 Control flow graphs
- 2.2 Definition of cyclomatic complexity, v(G)
- 2.3 Characterization of v(G) using a basis set of control flow paths
- 2.4 Example of v(G) and basis paths
- 2.5 Limiting cyclomatic complexity to 10
3 Examples of Cyclomatic Complexity
- 3.1 Independence of complexity and size
- 3.2 Several flow graphs and their complexity
4 Simplified Complexity Calculation
- 4.1 Counting predicates
- 4.2 Counting flow graph regions
- 4.3 Use of automated tools
5 Structured Testing
- 5.1 The structured testing criterion
- 5.2 Intuition behind structured testing
- 5.3 Complexity and reliability
- 5.4 Structured testing example
- 5.5 Weak structured testing
- 5.6 Advantages of automation
- 5.7 Critical software
6 The Baseline Method
- 6.1 Generating a basis set of paths
- 6.2 The simplified baseline method
- 6.3 The baseline method in practice
- 6.4 Example of the baseline method
- 6.5 Completing testing with the baseline method
7 Integration Testing
- 7.1 Integration strategies
- 7.2 Combining module testing and integration testing
- 7.3 Generalization of module testing criteria
- 7.4 Module design complexity
- 7.5 Integration complexity
- 7.6 Incremental integration
8 Testing Object-Oriented Programs
- 8.1 Benefits and dangers of abstraction
- 8.2 Object-oriented module testing
- 8.3 Integration testing of object-oriented programs
- 8.4 Avoiding unnecessary testing
9 Complexity Reduction
- 9.1 Actual complexity and realizable complexity
- 9.2 Removing control dependencies
- 9.3 Trade-offs when reducing complexity
10 Essential Complexity
- 10.1 Structured programming and maintainability
- 10.2 Definition of essential complexity, ev(G)
- 10.3 Examples of essential complexity
11 Maintenance
- 11.1 Effects of changes on complexity
- 11.1.1 Effect of changes on cyclomatic complexity
- 11.1.2 Effect of changes on essential complexity
- 11.1.3 Incremental reengineering
- 11.2 Retesting at the path level
- 11.3 Data complexity
- 11.4 Reuse of testing information
12 Summary by Lifecycle Process
- 12.1 Design process
- 12.2 Coding process
- 12.3 Unit testing process
- 12.4 Integration testing process
- 12.5 Maintenance process
13 References
Appendix A Related Case Studies
- A.1 Myers
- A.2 Schneidewind and Hoffman
- A.3 Walsh
- A.4 Henry, Kafura, and Harris
- A.5 Sheppard and Kruesi
- A.6 Carver
- A.7 Kafura and Reddy
- A.8 Gibson and Senn
- A.9 Ward
- A.10 Caldiera and Basili
- A.11 Gill and Kemerer
- A.12 Schneidewind
- A.13 Case study at Stratus Computer
- A.14 Case study at Digital Equipment Corporation
- A.15 Case study at U.S. Army Missile Command
- A.16 Coleman et al
- A.17 Case study at the AT&T Advanced Software Construction Center
- A.18 Case study at Sterling Software
- A.19 Case Study at GTE Government Systems
- A.20 Case study at Elsag Bailey Process Automation
- A.21 Koshgoftaar et al
Appendix B Extended Example
- B.1 Testing the blackjack program
- B.2 Experimental comparison of structured testing and branch coverage
Abstract
Keywords
Acknowledgments
Disclaimer
Executive Summary
1 Introduction
- 1.1 Software testing
- 1.2 Software complexity measurement
- 1.3 Relationship between complexity and testing
- 1.4 Document overview and audience descriptions
2 Cyclomatic Complexity
- 2.1 Control flow graphs
- 2.2 Definition of cyclomatic complexity, v(G)
- 2.3 Characterization of v(G) using a basis set of control flow paths
- 2.4 Example of v(G) and basis paths
- 2.5 Limiting cyclomatic complexity to 10
3 Examples of Cyclomatic Complexity
- 3.1 Independence of complexity and size
- 3.2 Several flow graphs and their complexity
4 Simplified Complexity Calculation
- 4.1 Counting predicates
- 4.2 Counting flow graph regions
- 4.3 Use of automated tools
5 Structured Testing
- 5.1 The structured testing criterion
- 5.2 Intuition behind structured testing
- 5.3 Complexity and reliability
- 5.4 Structured testing example
- 5.5 Weak structured testing
- 5.6 Advantages of automation
- 5.7 Critical software
6 The Baseline Method
- 6.1 Generating a basis set of paths
- 6.2 The simplified baseline method
- 6.3 The baseline method in practice
- 6.4 Example of the baseline method
- 6.5 Completing testing with the baseline method
7 Integration Testing
- 7.1 Integration strategies
- 7.2 Combining module testing and integration testing
- 7.3 Generalization of module testing criteria
- 7.4 Module design complexity
- 7.5 Integration complexity
- 7.6 Incremental integration
8 Testing Object-Oriented Programs
- 8.1 Benefits and dangers of abstraction
- 8.2 Object-oriented module testing
- 8.3 Integration testing of object-oriented programs
- 8.4 Avoiding unnecessary testing
9 Complexity Reduction
- 9.1 Actual complexity and realizable complexity
- 9.2 Removing control dependencies
- 9.3 Trade-offs when reducing complexity
10 Essential Complexity
- 10.1 Structured programming and maintainability
- 10.2 Definition of essential complexity, ev(G)
- 10.3 Examples of essential complexity
11 Maintenance
- 11.1 Effects of changes on complexity
- 11.1.1 Effect of changes on cyclomatic complexity
- 11.1.2 Effect of changes on essential complexity
- 11.1.3 Incremental reengineering
- 11.2 Retesting at the path level
- 11.3 Data complexity
- 11.4 Reuse of testing information
12 Summary by Lifecycle Process
- 12.1 Design process
- 12.2 Coding process
- 12.3 Unit testing process
- 12.4 Integration testing process
- 12.5 Maintenance process
13 References
Appendix A Related Case Studies
- A.1 Myers
- A.2 Schneidewind and Hoffman
- A.3 Walsh
- A.4 Henry, Kafura, and Harris
- A.5 Sheppard and Kruesi
- A.6 Carver
- A.7 Kafura and Reddy
- A.8 Gibson and Senn
- A.9 Ward
- A.10 Caldiera and Basili
- A.11 Gill and Kemerer
- A.12 Schneidewind
- A.13 Case study at Stratus Computer
- A.14 Case study at Digital Equipment Corporation
- A.15 Case study at U.S. Army Missile Command
- A.16 Coleman et al
- A.17 Case study at the AT&T Advanced Software Construction Center
- A.18 Case study at Sterling Software
- A.19 Case Study at GTE Government Systems
- A.20 Case study at Elsag Bailey Process Automation
- A.21 Koshgoftaar et al
Appendix B Extended Example
- B.1 Testing the blackjack program
- B.2 Experimental comparison of structured testing and branch coverage
[Title Page] [TOC] [Prev] [Next] [End]