An in-depth review of key techniques in software error detection Software error detection is one of the most challenging problems in software engineering. Now, you can learn how to make the most of software testing by selecting test cases to maximize the probability of revealing latent errors. Software Error Detection through Testing and Analysis begins with a thorough discussion of test-case selection and a review of the concepts, notations, and principles used in the book. Next, it covers: Code-based test-case selection methods Specification-based test-case selection methods Additional advanced topics in testing Analysis of symbolic trace Static analysis Program instrumentation Each chapter begins with a clear introduction and ends with exercises for readers to test their understanding of the material. Plus, appendices provide a logico-mathematical background, glossary, and questions for self-assessment. Assuming a basic background in software quality assurance and an ability to write nontrivial programs, the book is free of programming languages and paradigms used to construct the program under test.
Software Error Detection through Testing and Analysis is suitable as a professional reference for software testing specialists, software engineers, software developers, and software programmers. It is also appropriate as a textbook for software engineering, software testing, and software quality assurance courses at the advanced undergraduate and graduate levels.
J. C. Huang is Professor Emeritus in the Department of Computer Science at the University of Houston. Professor Huang's areas of research include software engineering, program analysis and testing, software tools, real-time systems, software design, and system architecture.
Preface. 1 Concepts, Notation, and Principles. 1.1 Concepts, Terminology, and Notation. 1.2 Two Principles of Test-Case Selection. 1.3 Classification of Faults. 1.4 Classification of Test-Case Selection Methods. 1.5 The Cost of Program Testing. 2 Code-Based Test-Case Selection Methods. 2.1 Path Testing. 2.2 Statement Testing. 2.3 Branch Testing. 2.4 Howden's and McCabe's Methods. 2.5 Data-Flow Testing. 2.6 Domain-Strategy Testing. 2.7 Program Mutation and Fault Seeding. 2.8 Discussion. Exercises. 3 Specification-Based Test-Case Selection Methods. 3.1 Subfunction Testing. 3.2 Predicate Testing. 3.3 Boundary-Value Analysis. 3.4 Error Guessing. 3.5 Discussion. Exercises. 4 Software Testing Roundup. 4.1 Ideal Test Sets. 4.2 Operational Testing. 4.3 Integration Testing. 4.4 Testing Object-Oriented Programs. 4.5 Regression Testing. 4.6 Criteria for Stopping a Test. 4.7 Choosing a Test-Case Selection Criterion. Exercises. 5 Analysis of Symbolic Traces. 5.1 Symbolic Trace and Program Graph. 5.2 The Concept of a State Constraint. 5.3 Rules for Moving and Simplifying Constraints. 5.4 Rules for Moving and Simplifying Statements. 5.5 Discussion. 5.6 Supporting Software Tool. Exercises. 6 Static Analysis. 6.1 Data-Flow Anomaly Detection. 6.2 Symbolic Evaluation (Execution). 6.3 Program Slicing. 6.4 Code Inspection. 6.5 Proving Programs Correct. Exercises. 7 Program Instrumentation. 7.1 Test-Coverage Measurement. 7.2 Test-Case Effectiveness Assessment. 7.3 Instrumenting Programs for Assertion Checking. 7.4 Instrumenting Programs for Data-Flow-Anomaly Detection. 7.5 Instrumenting Programs for Trace-Subprogram Generation. Exercises. Appendix A: Logico-Mathematical Background. Appendix B: Glossary. Appendix C: Questions for Self-Assessment. Bibliography. Index.