You are previewing Software Testing: Concepts and Operations.
O'Reilly logo
Software Testing: Concepts and Operations

Book Description

Explores and identifies the main issues, concepts, principles and evolution of software testing, including software quality engineering and testing concepts, test data generation, test deployment analysis, and software test management

This book examines the principles, concepts, and processes that are fundamental to the software testing function. This book is divided into five broad parts. Part I introduces software testing in the broader context of software engineering and explores the qualities that testing aims to achieve or ascertain, as well as the lifecycle of software testing. Part II covers mathematical foundations of software testing, which include software specification, program correctness and verification, concepts of software dependability, and a software testing taxonomy. Part III discusses test data generation, specifically, functional criteria and structural criteria. Test oracle design, test driver design, and test outcome analysis is covered in Part IV. Finally, Part V surveys managerial aspects of software testing, including software metrics, software testing tools, and software product line testing.

  • Presents software testing, not as an isolated technique, but as part of an integrated discipline of software verification and validation

  • Proposes program testing and program correctness verification within the same mathematical model, making it possible to deploy the two techniques in concert, by virtue of the law of diminishing returns

  • Defines the concept of a software fault, and the related concept of relative correctness, and shows how relative correctness can be used to characterize monotonic fault removal

  • Presents the activity of software testing as a goal oriented activity, and explores how the conduct of the test depends on the selected goal

  • Covers all phases of the software testing lifecycle, including test data generation, test oracle design, test driver design, and test outcome analysis

  • Software Testing: Concepts and Operations is a great resource for software quality and software engineering students because it presents them with fundamentals that help them to prepare for their ever evolving discipline.

    Table of Contents

    1. Cover
    2. Title page
    3. Preface
      1. ACKNOWLEDGMENT
    4. Part I: Introduction to Software Testing
      1. 1 Software Engineering: A Discipline Like No Other
        1. 1.1 A YOUNG, RESTLESS DISCIPLINE
        2. 1.2 AN INDUSTRY UNDER STRESS
        3. 1.3 LARGE, COMPLEX PRODUCTS
        4. 1.4 EXPENSIVE PRODUCTS
        5. 1.5 ABSENCE OF REUSE PRACTICE
        6. 1.6 FAULT-PRONE DESIGNS
        7. 1.7 PARADOXICAL ECONOMICS
        8. 1.8 CHAPTER SUMMARY
        9. 1.9 BIBLIOGRAPHIC NOTES
      2. 2 Software Quality Attributes
        1. 2.1 FUNCTIONAL ATTRIBUTES
        2. 2.2 OPERATIONAL ATTRIBUTES
        3. 2.3 USABILITY ATTRIBUTES
        4. 2.4 BUSINESS ATTRIBUTES
        5. 2.5 STRUCTURAL ATTRIBUTES
        6. 2.6 CHAPTER SUMMARY
        7. 2.7 EXERCISES
        8. 2.8 BIBLIOGRAPHIC NOTES
      3. 3 A Software Testing Lifecycle
        1. 3.1 A SOFTWARE ENGINEERING LIFECYCLE
        2. 3.2 A SOFTWARE TESTING LIFECYCLE
        3. 3.3 THE V-MODEL OF SOFTWARE TESTING
        4. 3.4 CHAPTER SUMMARY
        5. 3.5 BIBLIOGRAPHIC NOTES
    5. Part II: Foundations of Software Testing
      1. 4 Software Specifications
        1. 4.1 PRINCIPLES OF SOUND SPECIFICATION
        2. 4.2 RELATIONAL MATHEMATICS
        3. 4.3 SIMPLE INPUT OUTPUT PROGRAMS
        4. 4.4 RELIABILITY VERSUS SAFETY
        5. 4.5 STATE-BASED SYSTEMS
        6. 4.6 CHAPTER SUMMARY
        7. 4.7 EXERCISES
        8. 4.8 PROBLEMS
        9. 4.9 BIBLIOGRAPHIC NOTES
      2. 5 Program Correctness and Verification
        1. 5.1 CORRECTNESS: A DEFINITION
        2. 5.2 CORRECTNESS: PROPOSITIONS
        3. 5.3 VERIFICATION
        4. 5.4 CHAPTER SUMMARY
        5. 5.5 EXERCISES
        6. 5.6 PROBLEMS
        7. 5.7 BIBLIOGRAPHIC NOTES
      3. 6 Failures, Errors, and Faults
        1. 6.1 FAILURE, ERROR, AND FAULT
        2. 6.2 FAULTS AND RELATIVE CORRECTNESS
        3. 6.3 CONTINGENT FAULTS AND DEFINITE FAULTS
        4. 6.4 FAULT MANAGEMENT
        5. 6.5 CHAPTER SUMMARY
        6. 6.6 EXERCISES
        7. 6.7 PROBLEMS
        8. 6.8 BIBLIOGRAPHIC NOTES
      4. 7 A Software Testing Taxonomy
        1. 7.1 THE TROUBLE WITH HYPHENATED TESTING
        2. 7.2 A CLASSIFICATION SCHEME
        3. 7.3 TESTING TAXONOMY
        4. 7.4 EXERCISES
        5. 7.5 BIBLIOGRAPHIC NOTES
    6. Part III: Test Data Generation
      1. 8 Test Generation Concepts
        1. 8.1 TEST GENERATION AND TARGET ATTRIBUTES
        2. 8.2 TEST OUTCOMES
        3. 8.3 TEST GENERATION REQUIREMENTS
        4. 8.4 TEST GENERATION CRITERIA
        5. 8.5 EMPIRICAL ADEQUACY ASSESSMENT
        6. 8.6 CHAPTER SUMMARY
        7. 8.7 EXERCISES
        8. 8.8 BIBLIOGRAPHIC NOTES
        9. 8.9 APPENDIX: MUTATION PROGRAM
      2. 9 Functional Criteria
        1. 9.1 DOMAIN PARTITIONING
        2. 9.2 TEST DATA GENERATION FROM TABULAR EXPRESSIONS
        3. 9.3 TEST GENERATION FOR STATE BASED SYSTEMS
        4. 9.4 RANDOM TEST DATA GENERATION
        5. 9.5 TOURISM AS A METAPHOR FOR TEST DATA SELECTION
        6. 9.6 CHAPTER SUMMARY
        7. 9.7 EXERCISES
        8. 9.8 BIBLIOGRAPHIC NOTES
      3. 10 Structural Criteria
        1. 10.1 PATHS AND PATH CONDITIONS
        2. 10.2 CONTROL FLOW COVERAGE
        3. 10.3 DATA FLOW COVERAGE
        4. 10.4 FAULT-BASED TEST GENERATION
        5. 10.5 CHAPTER SUMMARY
        6. 10.6 EXERCISES
        7. 10.7 BIBLIOGRAPHIC NOTES
    7. Part IV: Test Deployment and Analysis
      1. 11 Test Oracle Design
        1. 11.1 DILEMMAS OF ORACLE DESIGN
        2. 11.2 FROM SPECIFICATIONS TO ORACLES
        3. 11.3 ORACLES FOR STATE-BASED PRODUCTS
        4. 11.4 CHAPTER SUMMARY
        5. 11.5 EXERCISES
      2. 12 Test Driver Design
        1. 12.1 SELECTING A SPECIFICATION
        2. 12.2 SELECTING A PROCESS
        3. 12.3 SELECTING A SPECIFICATION MODEL
        4. 12.4 TESTING BY SYMBOLIC EXECUTION
        5. 12.5 CHAPTER SUMMARY
        6. 12.6 EXERCISES
        7. 12.7 BIBLIOGRAPHIC NOTES
      3. 13 Test Outcome Analysis
        1. 13.1 LOGICAL CLAIMS
        2. 13.2 STOCHASTIC CLAIMS: FAULT DENSITY
        3. 13.3 STOCHASTIC CLAIMS: FAILURE PROBABILITY
        4. 13.4 CHAPTER SUMMARY
        5. 13.5 EXERCISES
        6. 13.6 PROBLEMS
        7. 13.7 BIBLIOGRAPHIC NOTES
    8. Part V: Management of Software Testing
      1. 14 Metrics for Software Testing
        1. 14.1 FAULT PRONENESS
        2. 14.2 FAULT DETECTABILITY
        3. 14.3 ERROR DETECTABILITY
        4. 14.4 ERROR MASKABILITY
        5. 14.5 FAILURE AVOIDANCE
        6. 14.6 FAILURE TOLERANCE
        7. 14.7 AN ILLUSTRATIVE EXAMPLE
        8. 14.8 CHAPTER SUMMARY
        9. 14.9 EXERCISES
        10. 14.10 BIBLIOGRAPHIC NOTES
      2. 15 Software Testing Tools
        1. 15.1 A CLASSIFICATION SCHEME
        2. 15.2 SCRIPTING TOOLS
        3. 15.3 RECORD-AND-REPLAY TOOLS
        4. 15.4 PERFORMANCE-TESTING TOOLS
        5. 15.5 ORACLE DESIGN TOOLS
        6. 15.6 EXCEPTION DISCOVERY
        7. 15.7 COLLABORATIVE TOOLS
        8. 15.8 CHAPTER SUMMARY
      3. 16 Testing Product Lines
        1. 16.1 PLE: A STREAMLINED REUSE MODEL
        2. 16.2 TESTING ISSUES
        3. 16.3 TESTING APPROACHES
        4. 16.4 ILLUSTRATION
        5. 16.5 CHAPTER SUMMARY
        6. 16.6 EXERCISES
        7. 16.7 PROBLEMS
        8. 16.8 BIBLIOGRAPHIC REFERENCES
    9. Bibliography
    10. Index
    11. End User License Agreement