Foundations of Software Testing: Fundamental Algorithms and Techniques

Book description

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

Table of contents

  1. Preface (1/2)
  2. Preface (2/2)
  3. Acknowledgments
  4. Preliminaries
    1. Basics of Software Testing
      1. Humans, Errors, and Testing
      2. Software Quality
      3. Requirements, Behavior, and Correctness
      4. Correctness Versus Reliability
      5. Testing and Debugging (1/2)
      6. Testing and Debugging (2/2)
      7. Test Metrics (1/2)
      8. Test Metrics (2/2)
      9. Software and Hardware Testing
      10. Testing and Verification
      11. Defect Management
      12. Execution History
      13. Test-Generation Strategies
      14. Static Testing
      15. Model-Based Testing and Model Checking
      16. Control-Flow Graph (1/2)
      17. Control-Flow Graph (2/2)
      18. Dominators and Postdominators
      19. Program-Dependence Graph
      20. Strings, Languages, and Regular Expressions
      21. Types of Testing (1/3)
      22. Types of Testing (2/3)
      23. Types of Testing (3/3)
      24. The Saturation Effect
      25. Summary
      26. Bibliographic Notes
      27. Exercises
  5. Test Generation
    1. Test Generation from Requirements
      1. Introduction
      2. The Test-Selection Problem
      3. Equivalence Partitioning (1/5)
      4. Equivalence Partitioning (2/5)
      5. Equivalence Partitioning (3/5)
      6. Equivalence Partitioning (4/5)
      7. Equivalence Partitioning (5/5)
      8. Boundary-Value Analysis (1/2)
      9. Boundary-Value Analysis (2/2)
      10. Category-Partition Method (1/2)
      11. Category-Partition Method (2/2)
      12. Cause-Effect Graphing (1/4)
      13. Cause-Effect Graphing (2/4)
      14. Cause-Effect Graphing (3/4)
      15. Cause-Effect Graphing (4/4)
      16. Test Generation from Predicates (1/7)
      17. Test Generation from Predicates (2/7)
      18. Test Generation from Predicates (3/7)
      19. Test Generation from Predicates (4/7)
      20. Test Generation from Predicates (5/7)
      21. Test Generation from Predicates (6/7)
      22. Test Generation from Predicates (7/7)
      23. Summary
      24. Bibliographic Notes
      25. Exercises (1/2)
      26. Exercises (2/2)
    2. Test Generation from Finite-State Models
      1. Software Design and Testing
      2. Finite-State Machines (1/2)
      3. Finite-State Machines (2/2)
      4. Conformance Testing
      5. A Fault Model (1/2)
      6. A Fault Model (2/2)
      7. Characterization Set (1/2)
      8. Characterization Set (2/2)
      9. The W-Method (1/2)
      10. The W-Method (2/2)
      11. The Partial W-Method (1/2)
      12. The Partial W-Method (2/2)
      13. The UIO-Sequence Method (1/6)
      14. The UIO-Sequence Method (2/6)
      15. The UIO-Sequence Method (3/6)
      16. The UIO-Sequence Method (4/6)
      17. The UIO-Sequence Method (5/6)
      18. The UIO-Sequence Method (6/6)
      19. Automata Theoretic Versus Control-Flow-Based Techniques (1/2)
      20. Automata Theoretic Versus Control-Flow-Based Techniques (2/2)
      21. Summary
      22. Bibliographic Notes
      23. Exercises (1/2)
      24. Exercises (2/2)
    3. Test Generation from Combinatorial Designs
      1. Combinatorial Designs (1/2)
      2. Combinatorial Designs (2/2)
      3. A Combinatorial Test-Design Process
      4. Fault Model
      5. Latin Squares
      6. Mutually Orthogonal Latin Squares
      7. Pairwise Design: Binary Factors
      8. Pairwise Design: Multivalued Factors (1/2)
      9. Pairwise Design: Multivalued Factors (2/2)
      10. Orthogonal Arrays
      11. Covering and Mixed-Level Covering Arrays
      12. Arrays of Strength >2
      13. Generating Covering Arrays (1/2)
      14. Generating Covering Arrays (2/2)
      15. Summary
      16. Bibliographic Notes
      17. Exercises
    4. Test Selection, Minimization, and Prioritization for Regression Testing
      1. What is Regression Testing?
      2. Regression-Test Process (1/2)
      3. Regression-Test Process (2/2)
      4. RTS: The Problem
      5. Selecting Regression Tests
      6. Test Selection Using Execution Trace (1/3)
      7. Test Selection Using Execution Trace (2/3)
      8. Test Selection Using Execution Trace (3/3)
      9. Test Selection Using Dynamic Slicing (1/3)
      10. Test Selection Using Dynamic Slicing (2/3)
      11. Test Selection Using Dynamic Slicing (3/3)
      12. Scalability of Test-Selection Algorithms
      13. Test Minimization
      14. Test Prioritization
      15. Tools for Regression Testing
      16. Summary
      17. Bibliographic Notes (1/2)
      18. Bibliographic Notes (2/2)
      19. Exercises (1/2)
      20. Exercises (2/2)
  6. Test Adequacy Assessment and Enhancement
    1. Test-Adequacy: Assessment Using Control Flow and Data Flow
      1. Test Adequacy: Basics (1/3)
      2. Test Adequacy: Basics (2/3)
      3. Test Adequacy: Basics (3/3)
      4. Adequacy Criteria Based on Control Flow (1/8)
      5. Adequacy Criteria Based on Control Flow (2/8)
      6. Adequacy Criteria Based on Control Flow (3/8)
      7. Adequacy Criteria Based on Control Flow (4/8)
      8. Adequacy Criteria Based on Control Flow (5/8)
      9. Adequacy Criteria Based on Control Flow (6/8)
      10. Adequacy Criteria Based on Control Flow (7/8)
      11. Adequacy Criteria Based on Control Flow (8/8)
      12. Data-Flow Concepts (1/3)
      13. Data-Flow Concepts (2/3)
      14. Data-Flow Concepts (3/3)
      15. Adequacy Criteria Based on Data Flow (1/3)
      16. Adequacy Criteria Based on Data Flow (2/3)
      17. Adequacy Criteria Based on Data Flow (3/3)
      18. Control Flow Versus Data Flow
      19. The Subsumes Relation
      20. Structural and Functional Testing
      21. Scalability of Coverage Measurement
      22. Summary
      23. Bibliographic Notes (1/2)
      24. Bibliographic Notes (2/2)
      25. Exercises (1/2)
      26. Exercises (2/2)
    2. Test-Adequacy Assessment Using Program Mutation
      1. Introduction
      2. Mutation and Mutants (1/2)
      3. Mutation and Mutants (2/2)
      4. Test Assessment Using Mutation (1/3)
      5. Test Assessment Using Mutation (2/3)
      6. Test Assessment Using Mutation (3/3)
      7. Mutation Operators
      8. Design of Mutation Operators
      9. Founding Principles of Mutation Testing
      10. Equivalent Mutants
      11. Fault Detection Using Mutation
      12. Types of Mutants
      13. Mutation Operators for C (1/8)
      14. Mutation Operators for C (2/8)
      15. Mutation Operators for C (3/8)
      16. Mutation Operators for C (4/8)
      17. Mutation Operators for C (5/8)
      18. Mutation Operators for C (6/8)
      19. Mutation Operators for C (7/8)
      20. Mutation Operators for C (8/8)
      21. Mutation Operators for Java (1/2)
      22. Mutation Operators for Java (2/2)
      23. Mutation Operators for Fortran 77, C, and Java: A Comparison
      24. Tools For Mutation Testing
      25. Mutation Testing Within Budget
      26. Summary
      27. Bibliographic Notes (1/3)
      28. Bibliographic Notes (2/3)
      29. Bibliographic Notes (3/3)
      30. Exercises (1/2)
      31. Exercises (2/2)
    3. References (1/8)
    4. References (2/8)
    5. References (3/8)
    6. References (4/8)
    7. References (5/8)
    8. References (6/8)
    9. References (7/8)
    10. References (8/8)
  7. Subject Index (1/7)
  8. Subject Index (2/7)
  9. Subject Index (3/7)
  10. Subject Index (4/7)
  11. Subject Index (5/7)
  12. Subject Index (6/7)
  13. Subject Index (7/7)
  14. Name Index

Product information

  • Title: Foundations of Software Testing: Fundamental Algorithms and Techniques
  • Author(s): Aditya P. Mathur
  • Release date: March 2007
  • Publisher(s): Pearson India
  • ISBN: 9788131707951