{"product_id":"software-testing-9781118662878","title":"Software Testing","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eExplores 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\u003cbr\u003e\u003cbr\u003e\u003c\/b\u003eThis 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 Pa\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003ePreface xiv\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I Introduction to Software Testing 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Software Engineering: A Discipline Like No Other 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 A Young, Restless Discipline 3\u003c\/p\u003e \u003cp\u003e1.2 An Industry Under Stress 5\u003c\/p\u003e \u003cp\u003e1.3 Large, Complex Products 5\u003c\/p\u003e \u003cp\u003e1.4 Expensive Products 7\u003c\/p\u003e \u003cp\u003e1.5 Absence of Reuse Practice 9\u003c\/p\u003e \u003cp\u003e1.6 Fault-Prone Designs 9\u003c\/p\u003e \u003cp\u003e1.7 Paradoxical Economics 10\u003c\/p\u003e \u003cp\u003e1.7.1 A Labor-Intensive Industry 10\u003c\/p\u003e \u003cp\u003e1.7.2 Absence of Automation 11\u003c\/p\u003e \u003cp\u003e1.7.3 Limited Quality Control 11\u003c\/p\u003e \u003cp\u003e1.7.4 Unbalanced Lifecycle Costs 12\u003c\/p\u003e \u003cp\u003e1.7.5 Unbalanced Maintenance Costs 12\u003c\/p\u003e \u003cp\u003e1.8 Chapter Summary 13\u003c\/p\u003e \u003cp\u003e1.9 Bibliographic Notes 13\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Software Quality Attributes 14\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Functional Attributes 15\u003c\/p\u003e \u003cp\u003e2.1.1 Boolean Attributes 15\u003c\/p\u003e \u003cp\u003e2.1.2 Statistical Attributes 15\u003c\/p\u003e \u003cp\u003e2.2 Operational Attributes 17\u003c\/p\u003e \u003cp\u003e2.3 Usability Attributes 18\u003c\/p\u003e \u003cp\u003e2.4 Business Attributes 19\u003c\/p\u003e \u003cp\u003e2.5 Structural Attributes 20\u003c\/p\u003e \u003cp\u003e2.6 Chapter Summary 21\u003c\/p\u003e \u003cp\u003e2.7 Exercises 21\u003c\/p\u003e \u003cp\u003e2.8 Bibliographic Notes 22\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 A Software Testing Lifecycle 23\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 A Software Engineering Lifecycle 23\u003c\/p\u003e \u003cp\u003e3.2 A Software Testing Lifecycle 27\u003c\/p\u003e \u003cp\u003e3.3 The V-Model of Software Testing 32\u003c\/p\u003e \u003cp\u003e3.4 Chapter Summary 33\u003c\/p\u003e \u003cp\u003e3.5 Bibliographic Notes 34\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II Foundations of Software Testing 35\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Software Specifications 37\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Principles of Sound Specification 38\u003c\/p\u003e \u003cp\u003e4.1.1 A Discipline of Specification 38\u003c\/p\u003e \u003cp\u003e4.2 Relational Mathematics 39\u003c\/p\u003e \u003cp\u003e4.2.1 Sets and Relations 39\u003c\/p\u003e \u003cp\u003e4.2.2 Operations on Relations 39\u003c\/p\u003e \u003cp\u003e4.2.3 Properties of Relations 41\u003c\/p\u003e \u003cp\u003e4.3 Simple Input Output Programs 42\u003c\/p\u003e \u003cp\u003e4.3.1 Representing Specifications 42\u003c\/p\u003e \u003cp\u003e4.3.2 Ordering Specifications 46\u003c\/p\u003e \u003cp\u003e4.3.3 Specification Generation 48\u003c\/p\u003e \u003cp\u003e4.3.4 Specification Validation 53\u003c\/p\u003e \u003cp\u003e4.4 Reliability Versus Safety 60\u003c\/p\u003e \u003cp\u003e4.5 State-based Systems 61\u003c\/p\u003e \u003cp\u003e4.5.1 A Relational Model 62\u003c\/p\u003e \u003cp\u003e4.5.2 Axiomatic Representation 64\u003c\/p\u003e \u003cp\u003e4.5.3 Specification Validation 70\u003c\/p\u003e \u003cp\u003e4.6 Chapter Summary 72\u003c\/p\u003e \u003cp\u003e4.7 Exercises 72\u003c\/p\u003e \u003cp\u003e4.8 Problems 76\u003c\/p\u003e \u003cp\u003e4.9 Bibliographic Notes 78\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Program Correctness and Verification 79\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Correctness: A Definition 80\u003c\/p\u003e \u003cp\u003e5.2 Correctness: Propositions 83\u003c\/p\u003e \u003cp\u003e5.2.1 Correctness and Refinement 83\u003c\/p\u003e \u003cp\u003e5.2.2 Set Theoretic Characterizations 85\u003c\/p\u003e \u003cp\u003e5.2.3 Illustrations 86\u003c\/p\u003e \u003cp\u003e5.3 Verification 88\u003c\/p\u003e \u003cp\u003e5.3.1 Sample Formulas 89\u003c\/p\u003e \u003cp\u003e5.3.2 An Inference System 91\u003c\/p\u003e \u003cp\u003e5.3.3 Illustrative Examples 94\u003c\/p\u003e \u003cp\u003e5.4 Chapter Summary 98\u003c\/p\u003e \u003cp\u003e5.5 Exercises 99\u003c\/p\u003e \u003cp\u003e5.6 Problems 100\u003c\/p\u003e \u003cp\u003e5.7 Bibliographic Notes 100\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Failures, Errors, and Faults 101\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Failure, Error, and Fault 101\u003c\/p\u003e \u003cp\u003e6.2 Faults and Relative Correctness 103\u003c\/p\u003e \u003cp\u003e6.2.1 Fault, an Evasive Concept 103\u003c\/p\u003e \u003cp\u003e6.2.2 Relative Correctness 104\u003c\/p\u003e \u003cp\u003e6.3 Contingent Faults and Definite Faults 107\u003c\/p\u003e \u003cp\u003e6.3.1 Contingent Faults 107\u003c\/p\u003e \u003cp\u003e6.3.2 Monotonic Fault Removal 109\u003c\/p\u003e \u003cp\u003e6.3.3 A Framework for Monotonic Fault Removal 114\u003c\/p\u003e \u003cp\u003e6.3.4 Definite Faults 114\u003c\/p\u003e \u003cp\u003e6.4 Fault Management 116\u003c\/p\u003e \u003cp\u003e6.4.1 Lines of Defense 116\u003c\/p\u003e \u003cp\u003e6.4.2 Hybrid Validation 118\u003c\/p\u003e \u003cp\u003e6.5 Chapter Summary 121\u003c\/p\u003e \u003cp\u003e6.6 Exercises 122\u003c\/p\u003e \u003cp\u003e6.7 Problems 123\u003c\/p\u003e \u003cp\u003e6.8 Bibliographic Notes 124\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 A Software Testing Taxonomy 125\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 The Trouble with Hyphenated Testing 125\u003c\/p\u003e \u003cp\u003e7.2 A Classification Scheme 126\u003c\/p\u003e \u003cp\u003e7.2.1 Primary Attributes 127\u003c\/p\u003e \u003cp\u003e7.2.2 Secondary Attributes 131\u003c\/p\u003e \u003cp\u003e7.3 Testing Taxonomy 136\u003c\/p\u003e \u003cp\u003e7.3.1 Unit-Level Testing 136\u003c\/p\u003e \u003cp\u003e7.3.2 System-Level Testing 138\u003c\/p\u003e \u003cp\u003e7.4 Exercises 139\u003c\/p\u003e \u003cp\u003e7.5 Bibliographic Notes 140\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III Test Data Generation 141\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Test Generation Concepts 143\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 Test Generation and Target Attributes 143\u003c\/p\u003e \u003cp\u003e8.2 Test Outcomes 146\u003c\/p\u003e \u003cp\u003e8.3 Test Generation Requirements 148\u003c\/p\u003e \u003cp\u003e8.4 Test Generation Criteria 152\u003c\/p\u003e \u003cp\u003e8.5 Empirical Adequacy Assessment 155\u003c\/p\u003e \u003cp\u003e8.6 Chapter Summary 160\u003c\/p\u003e \u003cp\u003e8.7 Exercises 161\u003c\/p\u003e \u003cp\u003e8.8 Bibliographic Notes 162\u003c\/p\u003e \u003cp\u003e8.9 Appendix: Mutation Program 163\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Functional Criteria 165\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Domain Partitioning 165\u003c\/p\u003e \u003cp\u003e9.2 Test Data Generation from Tabular Expressions 171\u003c\/p\u003e \u003cp\u003e9.3 Test Generation for State Based Systems 176\u003c\/p\u003e \u003cp\u003e9.4 Random Test Data Generation 184\u003c\/p\u003e \u003cp\u003e9.5 Tourism as a Metaphor for Test Data Selection 188\u003c\/p\u003e \u003cp\u003e9.6 Chapter Summary 190\u003c\/p\u003e \u003cp\u003e9.7 Exercises 190\u003c\/p\u003e \u003cp\u003e9.8 Bibliographic Notes 192\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Structural Criteria 193\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Paths and Path Conditions 194\u003c\/p\u003e \u003cp\u003e10.1.1 Execution Paths 194\u003c\/p\u003e \u003cp\u003e10.1.2 Path Functions 196\u003c\/p\u003e \u003cp\u003e10.1.3 Path Conditions 201\u003c\/p\u003e \u003cp\u003e10.2 Control Flow Coverage 202\u003c\/p\u003e \u003cp\u003e10.2.1 Statement Coverage 202\u003c\/p\u003e \u003cp\u003e10.2.2 Branch Coverage 204\u003c\/p\u003e \u003cp\u003e10.2.3 Condition Coverage 207\u003c\/p\u003e \u003cp\u003e10.2.4 Path Coverage 209\u003c\/p\u003e \u003cp\u003e10.3 Data Flow Coverage 214\u003c\/p\u003e \u003cp\u003e10.3.1 Definitions and Uses 214\u003c\/p\u003e \u003cp\u003e10.3.2 Test Generation Criteria 217\u003c\/p\u003e \u003cp\u003e10.3.3 A Hierarchy of Criteria 220\u003c\/p\u003e \u003cp\u003e10.4 Fault-Based Test Generation 220\u003c\/p\u003e \u003cp\u003e10.4.1 Sensitizing Faults 221\u003c\/p\u003e \u003cp\u003e10.4.2 Selecting Input Data for Fault Sensitization 225\u003c\/p\u003e \u003cp\u003e10.4.3 Selecting Input Data for Error Propagation 227\u003c\/p\u003e \u003cp\u003e10.5 Chapter Summary 228\u003c\/p\u003e \u003cp\u003e10.6 Exercises 229\u003c\/p\u003e \u003cp\u003e10.7 Bibliographic Notes 232\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart IV Test Deployment and Analysis 233\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Test Oracle Design 235\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Dilemmas of Oracle Design 235\u003c\/p\u003e \u003cp\u003e11.2 From Specifications to Oracles 238\u003c\/p\u003e \u003cp\u003e11.3 Oracles for State-Based Products 242\u003c\/p\u003e \u003cp\u003e11.3.1 From Axioms to Oracles 243\u003c\/p\u003e \u003cp\u003e11.3.2 From Rules to Oracles 244\u003c\/p\u003e \u003cp\u003e11.4 Chapter Summary 250\u003c\/p\u003e \u003cp\u003e11.5 Exercises 251\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Test Driver Design 253\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Selecting a Specification 253\u003c\/p\u003e \u003cp\u003e12.2 Selecting a Process 255\u003c\/p\u003e \u003cp\u003e12.3 Selecting a Specification Model 257\u003c\/p\u003e \u003cp\u003e12.3.1 Random Test Generation 257\u003c\/p\u003e \u003cp\u003e12.3.2 Pre-Generated Test Data 263\u003c\/p\u003e \u003cp\u003e12.3.3 Faults and Fault Detection 266\u003c\/p\u003e \u003cp\u003e12.4 Testing by Symbolic Execution 269\u003c\/p\u003e \u003cp\u003e12.5 Chapter Summary 274\u003c\/p\u003e \u003cp\u003e12.6 Exercises 275\u003c\/p\u003e \u003cp\u003e12.7 Bibliographic Notes 279\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Test Outcome Analysis 280\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Logical Claims 281\u003c\/p\u003e \u003cp\u003e13.1.1 Concrete Testing 281\u003c\/p\u003e \u003cp\u003e13.1.2 Symbolic Testing 282\u003c\/p\u003e \u003cp\u003e13.1.3 Concolic Testing 283\u003c\/p\u003e \u003cp\u003e13.2 Stochastic Claims: Fault Density 284\u003c\/p\u003e \u003cp\u003e13.3 Stochastic Claims: Failure Probability 287\u003c\/p\u003e \u003cp\u003e13.3.1 Faults are Not Created Equal 287\u003c\/p\u003e \u003cp\u003e13.3.2 Defining\/Quantifying Reliability 289\u003c\/p\u003e \u003cp\u003e13.3.3 Modeling Software Reliability 291\u003c\/p\u003e \u003cp\u003e13.3.4 Certification Testing 294\u003c\/p\u003e \u003cp\u003e13.3.5 Reliability Estimation and Reliability Improvement 295\u003c\/p\u003e \u003cp\u003e13.3.6 Reliability Standards 299\u003c\/p\u003e \u003cp\u003e13.3.7 Reliability as an Economic Function 300\u003c\/p\u003e \u003cp\u003e13.4 Chapter Summary 307\u003c\/p\u003e \u003cp\u003e13.5 Exercises 308\u003c\/p\u003e \u003cp\u003e13.6 Problems 310\u003c\/p\u003e \u003cp\u003e13.7 Bibliographic Notes 310\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart V Management of Software Testing 311\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Metrics for Software Testing 313\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Fault Proneness 314\u003c\/p\u003e \u003cp\u003e14.1.1 Cyclomatic Complexity 315\u003c\/p\u003e \u003cp\u003e14.1.2 Volume 316\u003c\/p\u003e \u003cp\u003e14.2 Fault Detectability 317\u003c\/p\u003e \u003cp\u003e14.3 Error Detectability 320\u003c\/p\u003e \u003cp\u003e14.4 Error Maskability 323\u003c\/p\u003e \u003cp\u003e14.5 Failure Avoidance 324\u003c\/p\u003e \u003cp\u003e14.6 Failure Tolerance 326\u003c\/p\u003e \u003cp\u003e14.7 An Illustrative Example 327\u003c\/p\u003e \u003cp\u003e14.7.1 Cyclomatic Complexity 327\u003c\/p\u003e \u003cp\u003e14.7.2 Volume 328\u003c\/p\u003e \u003cp\u003e14.7.3 State Redundancy 328\u003c\/p\u003e \u003cp\u003e14.7.4 Functional Redundancy 328\u003c\/p\u003e \u003cp\u003e14.7.5 Non-injectivity 329\u003c\/p\u003e \u003cp\u003e14.7.6 Non-determinacy 329\u003c\/p\u003e \u003cp\u003e14.7.7 Summary 330\u003c\/p\u003e \u003cp\u003e14.8 Chapter Summary 330\u003c\/p\u003e \u003cp\u003e14.9 Exercises 331\u003c\/p\u003e \u003cp\u003e14.10 Bibliographic Notes 332\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15 Software Testing Tools 333\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e15.1 A Classification Scheme 333\u003c\/p\u003e \u003cp\u003e15.2 Scripting Tools 334\u003c\/p\u003e \u003cp\u003e15.2.1 CppTest 334\u003c\/p\u003e \u003cp\u003e15.2.2 SilkTest 335\u003c\/p\u003e \u003cp\u003e15.3 Record-and-Replay Tools 336\u003c\/p\u003e \u003cp\u003e15.3.1 TestComplete 336\u003c\/p\u003e \u003cp\u003e15.3.2 Selenium IDE 337\u003c\/p\u003e \u003cp\u003e15.4 Performance-Testing Tools 338\u003c\/p\u003e \u003cp\u003e15.4.1 LoadRunner 338\u003c\/p\u003e \u003cp\u003e15.4.2 Grinder 339\u003c\/p\u003e \u003cp\u003e15.4.3 QF-Test 340\u003c\/p\u003e \u003cp\u003e15.4.4 Appvance PerformanceCloud 340\u003c\/p\u003e \u003cp\u003e15.4.5 JMeter 341\u003c\/p\u003e \u003cp\u003e15.5 Oracle Design Tools 342\u003c\/p\u003e \u003cp\u003e15.5.1 JUnit 342\u003c\/p\u003e \u003cp\u003e15.5.2 TestNG 343\u003c\/p\u003e \u003cp\u003e15.6 Exception Discovery 343\u003c\/p\u003e \u003cp\u003e15.6.1 Rational Purify 343\u003c\/p\u003e \u003cp\u003e15.6.2 Astree 344\u003c\/p\u003e \u003cp\u003e15.7 Collaborative Tools 345\u003c\/p\u003e \u003cp\u003e15.7.1 FitNesse 345\u003c\/p\u003e \u003cp\u003e15.8 Chapter Summary 345\u003c\/p\u003e \u003cp\u003e\u003cb\u003e16 Testing Product Lines 347\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e16.1 PLE: A Streamlined Reuse Model 347\u003c\/p\u003e \u003cp\u003e16.2 Testing Issues 351\u003c\/p\u003e \u003cp\u003e16.3 Testing Approaches 353\u003c\/p\u003e \u003cp\u003e16.4 Illustration 354\u003c\/p\u003e \u003cp\u003e16.4.1 Domain Analysis 354\u003c\/p\u003e \u003cp\u003e16.4.2 Domain Modeling 356\u003c\/p\u003e \u003cp\u003e16.4.3 A Reference Architecture 359\u003c\/p\u003e \u003cp\u003e16.4.4 Domain Implementation 360\u003c\/p\u003e \u003cp\u003e16.4.5 Testing at Domain Engineering 365\u003c\/p\u003e \u003cp\u003e16.4.6 Testing at Application Engineering 369\u003c\/p\u003e \u003cp\u003e16.5 Chapter Summary 372\u003c\/p\u003e \u003cp\u003e16.6 Exercises 372\u003c\/p\u003e \u003cp\u003e16.7 Problems 372\u003c\/p\u003e \u003cp\u003e16.8 Bibliographic References 373\u003c\/p\u003e \u003cp\u003eBibliography 374\u003c\/p\u003e \u003cp\u003eIndex 377\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49406902698327,"sku":"9781118662878","price":88.16,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781118662878.jpg?v=1730497501","url":"https:\/\/bookcurl.com\/products\/software-testing-9781118662878","provider":"Book Curl","version":"1.0","type":"link"}