{"product_id":"handbook-of-software-fault-localization-9781119291800","title":"Handbook of Software Fault Localization","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eHandbook of Software Fault Localization  \u003cp\u003e \u003cb\u003eA comprehensive analysis of fault localization techniques and strategies \u003c\/b\u003e \u003c\/p\u003e\u003cp\u003eIn \u003ci\u003eHandbook of Software Fault Localization: Foundations and Advances\u003c\/i\u003e, distinguished computer scientists Prof. W. Eric Wong and Prof. T.H. Tse deliver a robust treatment of up-to-date techniques, tools, and essential issues in software fault localization. The authors offer collective discussions of fault localization strategies with an emphasis on the most important features of each approach.  \u003c\/p\u003e\u003cp\u003eThe book also explores critical aspects of software fault localization, like multiple bugs, successful and failed test cases, coincidental correctness, faults introduced by missing code, the combination of several fault localization techniques, ties within fault localization rankings, concurrency bugs, spreadsheet fault localization, and theoretical studies on fault localization.  \u003c\/p\u003e\u003cp\u003eReaders will benefit from the authors' straightforward discussions of how to a\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eEditor Biographies xv\u003c\/p\u003e \u003cp\u003eList of Contributors xvii\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Software Fault Localization: an Overview of Research, Techniques, and Tools 1\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eW. Eric Wong, Ruizhi Gao, Yihao Li, Rui Abreu, Franz Wotawa, and Dongcheng li\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e1.1 Introduction 1\u003c\/p\u003e \u003cp\u003e1.2 Traditional Fault Localization Techniques 14\u003c\/p\u003e \u003cp\u003e1.2.1 Program Logging 14\u003c\/p\u003e \u003cp\u003e1.2.2 Assertions 14\u003c\/p\u003e \u003cp\u003e1.2.3 Breakpoints 14\u003c\/p\u003e \u003cp\u003e1.2.4 Profiling 15\u003c\/p\u003e \u003cp\u003e1.3 Advanced Fault Localization Techniques 15\u003c\/p\u003e \u003cp\u003e1.3.1 Slicing-Based Techniques 15\u003c\/p\u003e \u003cp\u003e1.3.2 Program Spectrum-Based Techniques 20\u003c\/p\u003e \u003cp\u003e1.3.2.1 Notation 20\u003c\/p\u003e \u003cp\u003e1.3.2.2 Techniques 21\u003c\/p\u003e \u003cp\u003e1.3.2.3 Issues and Concerns 27\u003c\/p\u003e \u003cp\u003e1.3.3 Statistics-Based Techniques 30\u003c\/p\u003e \u003cp\u003e1.3.4 Program State-Based Techniques 32\u003c\/p\u003e \u003cp\u003e1.3.5 Machine Learning-Based Techniques 34\u003c\/p\u003e \u003cp\u003e1.3.6 Data Mining-Based Techniques 36\u003c\/p\u003e \u003cp\u003e1.3.7 Model-Based Techniques 37\u003c\/p\u003e \u003cp\u003e1.3.8 Additional Techniques 41\u003c\/p\u003e \u003cp\u003e1.3.9 Distribution of Papers in Our Repository 45\u003c\/p\u003e \u003cp\u003e1.4 Subject Programs 47\u003c\/p\u003e \u003cp\u003e1.5 Evaluation Metrics 50\u003c\/p\u003e \u003cp\u003e1.6 Software Fault Localization Tools 53\u003c\/p\u003e \u003cp\u003e1.7 Critical Aspects 58\u003c\/p\u003e \u003cp\u003e1.7.1 Fault Localization with Multiple Bugs 58\u003c\/p\u003e \u003cp\u003e1.7.2 Inputs, Outputs, and Impact of Test Cases 60\u003c\/p\u003e \u003cp\u003e1.7.3 Coincidental Correctness 63\u003c\/p\u003e \u003cp\u003e1.7.4 Faults Introduced by Missing Code 64\u003c\/p\u003e \u003cp\u003e1.7.5 Combination of Multiple Fault Localization Techniques 65\u003c\/p\u003e \u003cp\u003e1.7.6 Ties Within Fault Localization Rankings 67\u003c\/p\u003e \u003cp\u003e1.7.7 Fault Localization for Concurrency Bugs 67\u003c\/p\u003e \u003cp\u003e1.7.8 Spreadsheet Fault Localization 68\u003c\/p\u003e \u003cp\u003e1.7.9 Theoretical Studies 70\u003c\/p\u003e \u003cp\u003e1.8 Conclusion 71\u003c\/p\u003e \u003cp\u003eNotes 73\u003c\/p\u003e \u003cp\u003eReferences 73\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Traditional Techniques for Software Fault Localization 119\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eYihao Li, Linghuan Hu, W. Eric Wong, Vidroha Debroy, and Dongcheng li\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e2.1 Program Logging 119\u003c\/p\u003e \u003cp\u003e2.2 Assertions 121\u003c\/p\u003e \u003cp\u003e2.3 Breakpoints 124\u003c\/p\u003e \u003cp\u003e2.4 Profiling 125\u003c\/p\u003e \u003cp\u003e2.5 Discussion 128\u003c\/p\u003e \u003cp\u003e2.6 Conclusion 130\u003c\/p\u003e \u003cp\u003eReferences 131\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Slicing-Based Techniques for Software Fault Localization 135\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eW. Eric Wong, Hira Agrawal, and Xiangyu Zhang\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e3.1 Introduction 135\u003c\/p\u003e \u003cp\u003e3.2 Static Slicing-Based Fault Localization 136\u003c\/p\u003e \u003cp\u003e3.2.1 Introduction 136\u003c\/p\u003e \u003cp\u003e3.2.2 Program Slicing Combined with Equivalence Analysis 137\u003c\/p\u003e \u003cp\u003e3.2.3 Further Application 138\u003c\/p\u003e \u003cp\u003e3.3 Dynamic Slicing-Based Fault Localization 138\u003c\/p\u003e \u003cp\u003e3.3.1 Dynamic Slicing and Backtracking Techniques 144\u003c\/p\u003e \u003cp\u003e3.3.2 Dynamic Slicing and Model-Based Techniques 145\u003c\/p\u003e \u003cp\u003e3.3.3 Critical Slicing 148\u003c\/p\u003e \u003cp\u003e3.3.3.1 Relationships Between Critical Slices (CS) and Exact Dynamic Program Slices (DPS) 149\u003c\/p\u003e \u003cp\u003e3.3.3.2 Relationship Between Critical Slices and Executed Static Program Slices 150\u003c\/p\u003e \u003cp\u003e3.3.3.3 Construction Cost 150\u003c\/p\u003e \u003cp\u003e3.3.4 Multiple-Points Dynamic Slicing 151\u003c\/p\u003e \u003cp\u003e3.3.4.1 BwS of an Erroneous Computed Value 152\u003c\/p\u003e \u003cp\u003e3.3.4.2 FwS of Failure-Inducing Input Difference 152\u003c\/p\u003e \u003cp\u003e3.3.4.3 BiS of a Critical Predicate 154\u003c\/p\u003e \u003cp\u003e3.3.4.4 MPSs: Dynamic Chops 157\u003c\/p\u003e \u003cp\u003e3.3.5 Execution Indexing 158\u003c\/p\u003e \u003cp\u003e3.3.5.1 Concepts 159\u003c\/p\u003e \u003cp\u003e3.3.5.2 Structural Indexing 161\u003c\/p\u003e \u003cp\u003e3.3.6 Dual Slicing to Locate Concurrency Bugs 165\u003c\/p\u003e \u003cp\u003e3.3.6.1 Trace Comparison 165\u003c\/p\u003e \u003cp\u003e3.3.6.2 Dual Slicing 168\u003c\/p\u003e \u003cp\u003e3.3.7 Comparative Causality: a Causal Inference Model Based on Dual Slicing 173\u003c\/p\u003e \u003cp\u003e3.3.7.1 Property One: Relevance 174\u003c\/p\u003e \u003cp\u003e3.3.7.2 Property Two: Sufficiency 175\u003c\/p\u003e \u003cp\u003e3.3.8 Implicit Dependences to Locate Execution Omission Errors 177\u003c\/p\u003e \u003cp\u003e3.3.9 Other Dynamic Slicing-Based Techniques 179\u003c\/p\u003e \u003cp\u003e3.4 Execution Slicing-Based Fault Localization 179\u003c\/p\u003e \u003cp\u003e3.4.1 Fault Localization Using Execution Dice 179\u003c\/p\u003e \u003cp\u003e3.4.2 A Family of Fault Localization Heuristics Based on Execution Slicing 181\u003c\/p\u003e \u003cp\u003e3.4.2.1 Heuristic I 182\u003c\/p\u003e \u003cp\u003e3.4.2.2 Heuristic II 183\u003c\/p\u003e \u003cp\u003e3.4.2.3 Heuristic III 185\u003c\/p\u003e \u003cp\u003e3.4.3 Effective Fault Localization Based on Execution Slices and Inter-block Data Dependence 188\u003c\/p\u003e \u003cp\u003e3.4.3.1 Augmenting a Bad \u003ci\u003eD\u003c\/i\u003e\u003csup\u003e(1) \u003c\/sup\u003e189\u003c\/p\u003e \u003cp\u003e3.4.3.2 Refining a Good \u003ci\u003eD\u003c\/i\u003e\u003csup\u003e(1) \u003c\/sup\u003e190\u003c\/p\u003e \u003cp\u003e3.4.3.3 An Incremental Debugging Strategy 191\u003c\/p\u003e \u003cp\u003e3.4.4 Other Execution Slicing-Based Techniques in Software Fault Localization 193\u003c\/p\u003e \u003cp\u003e3.5 Discussions 193\u003c\/p\u003e \u003cp\u003e3.6 Conclusion 194\u003c\/p\u003e \u003cp\u003eNotes 195\u003c\/p\u003e \u003cp\u003eReferences 195\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Spectrum-Based Techniques for Software Fault Localization 201\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eW. Eric Wong, Hua Jie Lee, Ruizhi Gao, and Lee Naish\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e4.1 Introduction 201\u003c\/p\u003e \u003cp\u003e4.2 Background and Notation 203\u003c\/p\u003e \u003cp\u003e4.2.1 Similarity Coefficient-Based Fault Localization 204\u003c\/p\u003e \u003cp\u003e4.2.2 An Example of Using Similarity Coefficient to Compute Suspiciousness 205\u003c\/p\u003e \u003cp\u003e4.3 Insights of Some Spectra-Based Metrics 210\u003c\/p\u003e \u003cp\u003e4.4 Equivalence Metrics 212\u003c\/p\u003e \u003cp\u003e4.4.1 Applicability of the Equivalence Relation to Other Fault Localization Techniques 217\u003c\/p\u003e \u003cp\u003e4.4.2 Applicability Beyond Fault Localization 218\u003c\/p\u003e \u003cp\u003e4.5 Selecting a Good Suspiciousness Function (Metric) 219\u003c\/p\u003e \u003cp\u003e4.5.1 Cost of Using a Metric 219\u003c\/p\u003e \u003cp\u003e4.5.2 Optimality for Programs with a Single Bug 220\u003c\/p\u003e \u003cp\u003e4.5.3 Optimality for Programs with Deterministic Bugs 221\u003c\/p\u003e \u003cp\u003e4.6 Using Spectrum-Based Metrics for Fault Localization 222\u003c\/p\u003e \u003cp\u003e4.6.1 Spectrum-Based Metrics for Fault Localization 222\u003c\/p\u003e \u003cp\u003e4.6.2 Refinement of Spectra-Based Metrics 227\u003c\/p\u003e \u003cp\u003e4.7 Empirical Evaluation Studies of SBFL Metrics 232\u003c\/p\u003e \u003cp\u003e4.7.1 The Construction of D ∗ 234\u003c\/p\u003e \u003cp\u003e4.7.2 An Illustrative Example 235\u003c\/p\u003e \u003cp\u003e4.7.3 A Case Study Using D ∗ 237\u003c\/p\u003e \u003cp\u003e4.7.3.1 Subject Programs 237\u003c\/p\u003e \u003cp\u003e4.7.3.2 Fault Localization Techniques Used in Comparisons 238\u003c\/p\u003e \u003cp\u003e4.7.3.3 Evaluation Metrics and Criteria 239\u003c\/p\u003e \u003cp\u003e4.7.3.4 Statement with Same Suspiciousness Values 240\u003c\/p\u003e \u003cp\u003e4.7.3.5 Results 241\u003c\/p\u003e \u003cp\u003e4.7.3.6 Effectiveness of D ∗ with Different Values of ∗ 247\u003c\/p\u003e \u003cp\u003e4.7.3.7 D ∗ Versus Other Fault Localization Techniques 248\u003c\/p\u003e \u003cp\u003e4.7.3.8 Programs with Multiple Bugs 251\u003c\/p\u003e \u003cp\u003e4.7.3.9 Discussion 255\u003c\/p\u003e \u003cp\u003e4.8 Conclusion 261\u003c\/p\u003e \u003cp\u003eNotes 262\u003c\/p\u003e \u003cp\u003eReferences 263\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Statistics-Based Techniques for Software Fault Localization 271\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eZhenyu Zhang and W. Eric Wong\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e5.1 Introduction 271\u003c\/p\u003e \u003cp\u003e5.1.1 Tarantula 272\u003c\/p\u003e \u003cp\u003e5.1.2 How It Works 272\u003c\/p\u003e \u003cp\u003e5.2 Working with Statements 274\u003c\/p\u003e \u003cp\u003e5.2.1 Techniques Under the Same Problem Settings 275\u003c\/p\u003e \u003cp\u003e5.2.2 Statistical Variances 275\u003c\/p\u003e \u003cp\u003e5.3 Working with Non-statements 283\u003c\/p\u003e \u003cp\u003e5.3.1 Predicate: a Popular Trend 283\u003c\/p\u003e \u003cp\u003e5.3.2 BPEL: a Sample Application 285\u003c\/p\u003e \u003cp\u003e5.4 Purifying the Input 286\u003c\/p\u003e \u003cp\u003e5.4.1 Coincidental Correctness Issue 286\u003c\/p\u003e \u003cp\u003e5.4.2 Class Balance Consideration 287\u003c\/p\u003e \u003cp\u003e5.5 Reinterpreting the Output 288\u003c\/p\u003e \u003cp\u003e5.5.1 Revealing Fault Number 288\u003c\/p\u003e \u003cp\u003e5.5.2 Noise Reduction 291\u003c\/p\u003e \u003cp\u003eNotes 292\u003c\/p\u003e \u003cp\u003eReferences 293\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Machine Learning-Based Techniques for Software Fault Localization 297\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eW. Eric Wong\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e6.1 Introduction 297\u003c\/p\u003e \u003cp\u003e6.2 BP Neural Network-Based Fault Localization 298\u003c\/p\u003e \u003cp\u003e6.2.1 Fault Localization with a BP Neural Network 298\u003c\/p\u003e \u003cp\u003e6.2.2 Reduce the Number of Candidate Suspicious Statements 302\u003c\/p\u003e \u003cp\u003e6.3 RBF Neural Network-Based Fault Localization 304\u003c\/p\u003e \u003cp\u003e6.3.1 RBF Neural Networks 304\u003c\/p\u003e \u003cp\u003e6.3.2 Methodology 305\u003c\/p\u003e \u003cp\u003e6.3.2.1 Fault Localization Using an RBF Neural Network 306\u003c\/p\u003e \u003cp\u003e6.3.2.2 Training of the RBF Neural Network 307\u003c\/p\u003e \u003cp\u003e6.3.2.3 Definition of a Weighted Bit-Comparison-Based Dissimilarity 309\u003c\/p\u003e \u003cp\u003e6.4 C4.5 Decision Tree-Based Fault Localization 309\u003c\/p\u003e \u003cp\u003e6.4.1 Category-Partition for Rule Induction 309\u003c\/p\u003e \u003cp\u003e6.4.2 Rule Induction Algorithms 310\u003c\/p\u003e \u003cp\u003e6.4.3 Statement Ranking Strategies 310\u003c\/p\u003e \u003cp\u003e6.4.3.1 Revisiting Tarantula 310\u003c\/p\u003e \u003cp\u003e6.4.3.2 Ranking Statements Based on C4.5 Rules 312\u003c\/p\u003e \u003cp\u003e6.5 Applying Simulated Annealing with Statement Pruning for an SBFL Formula 314\u003c\/p\u003e \u003cp\u003e6.6 Conclusion 317\u003c\/p\u003e \u003cp\u003eNotes 317\u003c\/p\u003e \u003cp\u003eReferences 317\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Data Mining-Based Techniques for Software Fault Localization 321\u003cbr\u003e \u003c\/b\u003e\u003ci\u003ePeggy Cellier, Mireille Ducassé, Sébastien Ferré, Olivier Ridoux, and W. Eric Wong\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e7.1 Introduction 321\u003c\/p\u003e \u003cp\u003e7.2 Formal Concept Analysis and Association Rules 324\u003c\/p\u003e \u003cp\u003e7.2.1 Formal Concept Analysis 325\u003c\/p\u003e \u003cp\u003e7.2.2 Association Rules 327\u003c\/p\u003e \u003cp\u003e7.3 Data Mining for Fault Localization 329\u003c\/p\u003e \u003cp\u003e7.3.1 Failure Rules 329\u003c\/p\u003e \u003cp\u003e7.3.2 Failure Lattice 331\u003c\/p\u003e \u003cp\u003e7.4 The Failure Lattice for Multiple Faults 336\u003c\/p\u003e \u003cp\u003e7.4.1 Dependencies Between Faults 336\u003c\/p\u003e \u003cp\u003e7.4.2 Example 341\u003c\/p\u003e \u003cp\u003e7.5 Discussion 342\u003c\/p\u003e \u003cp\u003e7.5.1 The Structure of the Execution Traces 342\u003c\/p\u003e \u003cp\u003e7.5.2 Union Model 343\u003c\/p\u003e \u003cp\u003e7.5.3 Intersection Model 343\u003c\/p\u003e \u003cp\u003e7.5.4 Nearest Neighbor 343\u003c\/p\u003e \u003cp\u003e7.5.5 Delta Debugging 344\u003c\/p\u003e \u003cp\u003e7.5.6 From the Trace Context to the Failure Context 344\u003c\/p\u003e \u003cp\u003e7.5.7 The Structure of Association Rules 345\u003c\/p\u003e \u003cp\u003e7.5.8 Multiple Faults 345\u003c\/p\u003e \u003cp\u003e7.6 Fault Localization Using N-gram Analysis 346\u003c\/p\u003e \u003cp\u003e7.6.1 Background 347\u003c\/p\u003e \u003cp\u003e7.6.1.1 Execution Sequence 347\u003c\/p\u003e \u003cp\u003e7.6.1.2 N-gram Analysis 347\u003c\/p\u003e \u003cp\u003e7.6.1.3 Linear Execution Blocks 349\u003c\/p\u003e \u003cp\u003e7.6.1.4 Association Rule Mining 349\u003c\/p\u003e \u003cp\u003e7.6.2 Methodology 350\u003c\/p\u003e \u003cp\u003e7.6.3 Conclusion 353\u003c\/p\u003e \u003cp\u003e7.7 Fault Localization for GUI Software Using N-gram Analysis 353\u003c\/p\u003e \u003cp\u003e7.7.1 Background 354\u003c\/p\u003e \u003cp\u003e7.7.1.1 Representation of the GUI and Its Operations 354\u003c\/p\u003e \u003cp\u003e7.7.1.2 Event Handler 356\u003c\/p\u003e \u003cp\u003e7.7.1.3 N-gram 356\u003c\/p\u003e \u003cp\u003e7.7.2 Association Rule Mining 357\u003c\/p\u003e \u003cp\u003e7.7.3 Methodology 357\u003c\/p\u003e \u003cp\u003e7.7.3.1 General Approach 358\u003c\/p\u003e \u003cp\u003e7.7.3.2 N-gram Fault Localization Algorithm 358\u003c\/p\u003e \u003cp\u003e7.8 Conclusion 360\u003c\/p\u003e \u003cp\u003eNotes 361\u003c\/p\u003e \u003cp\u003eReferences 361\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Information Retrieval-Based Techniques for Software Fault Localization 365\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eXin Xia and David Lo\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e8.1 Introduction 365\u003c\/p\u003e \u003cp\u003e8.2 General IR-Based Fault Localization Process 368\u003c\/p\u003e \u003cp\u003e8.3 Fundamental Information Retrieval Techniques for Software Fault Localization 369\u003c\/p\u003e \u003cp\u003e8.3.1 Vector Space Model 369\u003c\/p\u003e \u003cp\u003e8.3.2 Topic Modeling 370\u003c\/p\u003e \u003cp\u003e8.3.3 Word Embedding 371\u003c\/p\u003e \u003cp\u003e8.4 Evaluation Metrics 372\u003c\/p\u003e \u003cp\u003e8.4.1 Top-k Prediction Accuracy 372\u003c\/p\u003e \u003cp\u003e8.4.2 Mean Reciprocal Rank (MRR) 373\u003c\/p\u003e \u003cp\u003e8.4.3 Mean Average Precision (MAP) 373\u003c\/p\u003e \u003cp\u003e8.5 Techniques for Different Scenarios 374\u003c\/p\u003e \u003cp\u003e8.5.1 Text of Current Bug Report Only 374\u003c\/p\u003e \u003cp\u003e8.5.1.1 VSM Variants 374\u003c\/p\u003e \u003cp\u003e8.5.1.2 Topic Modeling 375\u003c\/p\u003e \u003cp\u003e8.5.2 Text and History 376\u003c\/p\u003e \u003cp\u003e8.5.2.1 VSM Variants 376\u003c\/p\u003e \u003cp\u003e8.5.2.2 Topic Modeling 378\u003c\/p\u003e \u003cp\u003e8.5.2.3 Deep Learning 378\u003c\/p\u003e \u003cp\u003e8.5.3 Text and Stack\/Execution Traces 379\u003c\/p\u003e \u003cp\u003e8.6 Empirical Studies 380\u003c\/p\u003e \u003cp\u003e8.7 Miscellaneous 383\u003c\/p\u003e \u003cp\u003e8.8 Conclusion 385\u003c\/p\u003e \u003cp\u003eNotes 385\u003c\/p\u003e \u003cp\u003eReferences 386\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Model-Based Techniques for Software Fault Localization 393\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eBirgit Hofer, Franz Wotawa, Wolfgang Mayer, and Markus Stumptner\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e9.1 Introduction 393\u003c\/p\u003e \u003cp\u003e9.2 Basic Definitions and Algorithms 395\u003c\/p\u003e \u003cp\u003e9.2.1 Algorithms for MBD 401\u003c\/p\u003e \u003cp\u003e9.3 Modeling for MBD 404\u003c\/p\u003e \u003cp\u003e9.3.1 The Value-Based Model 405\u003c\/p\u003e \u003cp\u003e9.3.2 The Dependency-Based Model 409\u003c\/p\u003e \u003cp\u003e9.3.3 Approximation Models for Debugging 413\u003c\/p\u003e \u003cp\u003e9.3.4 Other Modeling Approaches 416\u003c\/p\u003e \u003cp\u003e9.4 Application Areas 417\u003c\/p\u003e \u003cp\u003e9.5 Hybrid Approaches 418\u003c\/p\u003e \u003cp\u003e9.6 Conclusions 419\u003c\/p\u003e \u003cp\u003eNotes 420\u003c\/p\u003e \u003cp\u003eReferences 420\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Software Fault Localization in Spreadsheets 425\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eBirgit Hofer and Franz Wotawa\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e10.1 Motivation 425\u003c\/p\u003e \u003cp\u003e10.2 Definition of the Spreadsheet Language 427\u003c\/p\u003e \u003cp\u003e10.3 Cones 430\u003c\/p\u003e \u003cp\u003e10.4 Spectrum-Based Fault Localization 431\u003c\/p\u003e \u003cp\u003e10.5 Model-Based Spreadsheet Debugging 435\u003c\/p\u003e \u003cp\u003e10.6 Repair Approaches 440\u003c\/p\u003e \u003cp\u003e10.7 Checking Approaches 443\u003c\/p\u003e \u003cp\u003e10.8 Testing 445\u003c\/p\u003e \u003cp\u003e10.9 Conclusion 446\u003c\/p\u003e \u003cp\u003eNotes 446\u003c\/p\u003e \u003cp\u003eReferences 447\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Theoretical Aspects of Software Fault Localization 451\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eXiaoyuan Xie and W. Eric Wong\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e11.1 Introduction 451\u003c\/p\u003e \u003cp\u003e11.2 A Model-Based Hybrid Analysis 452\u003c\/p\u003e \u003cp\u003e11.2.1 The Model Program Segment 452\u003c\/p\u003e \u003cp\u003e11.2.2 Important Findings 454\u003c\/p\u003e \u003cp\u003e11.2.3 Discussion 454\u003c\/p\u003e \u003cp\u003e11.3 A Set-Based Pure Theoretical Framework 455\u003c\/p\u003e \u003cp\u003e11.3.1 Definitions and Theorems 455\u003c\/p\u003e \u003cp\u003e11.3.2 Evaluation 457\u003c\/p\u003e \u003cp\u003e11.3.3 The Maximality Among All Investigated Formulas 461\u003c\/p\u003e \u003cp\u003e11.4 A Generalized Study 462\u003c\/p\u003e \u003cp\u003e11.4.1 Spectral Coordinate for SBFL 462\u003c\/p\u003e \u003cp\u003e11.4.2 Generalized Maximal and Greatest Formula in F 464\u003c\/p\u003e \u003cp\u003e11.5 About the Assumptions 465\u003c\/p\u003e \u003cp\u003e11.5.1 Omission Fault and 100% Coverage 465\u003c\/p\u003e \u003cp\u003e11.5.2 Tie-Breaking Scheme 467\u003c\/p\u003e \u003cp\u003e11.5.3 Multiple Faults 467\u003c\/p\u003e \u003cp\u003e11.5.4 Some Plausible Causes for the Inconsistence Between Empirical and Theoretical Analyses 468\u003c\/p\u003e \u003cp\u003eNotes 469\u003c\/p\u003e \u003cp\u003eReferences 470\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Software Fault Localization for Programs with Multiple Bugs 473\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eRuizhi Gao, W. Eric Wong, and Rui Abreu\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e12.1 Introduction 473\u003c\/p\u003e \u003cp\u003e12.2 One-Bug-at-a-Time 474\u003c\/p\u003e \u003cp\u003e12.3 Two Techniques Proposed by Jones et al. 475\u003c\/p\u003e \u003cp\u003e12.3.1 J1: Clustering Based on Profiles and Fault Localization Results 476\u003c\/p\u003e \u003cp\u003e12.3.1.1 Clustering Profile-Based Behavior Models 476\u003c\/p\u003e \u003cp\u003e12.3.1.2 Using Fault Localization to Stop Clustering 478\u003c\/p\u003e \u003cp\u003e12.3.1.3 Using Fault Localization Clustering to Refine Clusters 479\u003c\/p\u003e \u003cp\u003e12.3.2 J2: Clustering Based on Fault Localization Results 480\u003c\/p\u003e \u003cp\u003e12.4 Localization of Multiple Bugs Using Algorithms from Integer Linear Programming 481\u003c\/p\u003e \u003cp\u003e12.5 MSeer: an Advanced Fault Localization Technique for Locating Multiple Bugs in Parallel 483\u003c\/p\u003e \u003cp\u003e12.5.1 MSeer 485\u003c\/p\u003e \u003cp\u003e12.5.1.1 Representation of Failed Test Cases 485\u003c\/p\u003e \u003cp\u003e12.5.1.2 Revised Kendall tau Distance 486\u003c\/p\u003e \u003cp\u003e12.5.1.3 Clustering 488\u003c\/p\u003e \u003cp\u003e12.5.1.4 MSeer: a Technique for Locating Multiple Bugs in Parallel 494\u003c\/p\u003e \u003cp\u003e12.5.2 A Running Example 496\u003c\/p\u003e \u003cp\u003e12.5.3 Case Studies 499\u003c\/p\u003e \u003cp\u003e12.5.3.1 Subject Programs and Data Collections 499\u003c\/p\u003e \u003cp\u003e12.5.3.2 Evaluation of Effectiveness and Efficiency 501\u003c\/p\u003e \u003cp\u003e12.5.3.3 Results 503\u003c\/p\u003e \u003cp\u003e12.5.4 Discussions 510\u003c\/p\u003e \u003cp\u003e12.5.4.1 Using Different Fault Localization Techniques 510\u003c\/p\u003e \u003cp\u003e12.5.4.2 Apply MSeer to Programs with a Single Bug 510\u003c\/p\u003e \u003cp\u003e12.5.4.3 Distance Metrics 512\u003c\/p\u003e \u003cp\u003e12.5.4.4 The Importance of Estimating the Number of Clusters and Assigning Initial Medoids 514\u003c\/p\u003e \u003cp\u003e12.6 Spectrum-Based Reasoning for Fault Localization 514\u003c\/p\u003e \u003cp\u003e12.6.1 Barinel 515\u003c\/p\u003e \u003cp\u003e12.6.2 Results 517\u003c\/p\u003e \u003cp\u003e12.7 Other Studies 518\u003c\/p\u003e \u003cp\u003e12.8 Conclusion 520\u003c\/p\u003e \u003cp\u003eNotes 521\u003c\/p\u003e \u003cp\u003eReferences 522\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Emerging Aspects of Software Fault Localization 529\u003cbr\u003e \u003c\/b\u003e\u003ci\u003eT.H. Tse, David Lo, Alex Gorce, Michael Perscheid, Robert Hirschfeld, and W. Eric Wong\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e13.1 Introduction 529\u003c\/p\u003e \u003cp\u003e13.2 Application of the Scientific Method to Fault Localization 530\u003c\/p\u003e \u003cp\u003e13.2.1 Scientific Debugging 531\u003c\/p\u003e \u003cp\u003e13.2.2 Identifying and Assigning Bug Reports to Developers 532\u003c\/p\u003e \u003cp\u003e13.2.3 Using Debuggers in Fault Localization 534\u003c\/p\u003e \u003cp\u003e13.2.4 Conclusion 538\u003c\/p\u003e \u003cp\u003e13.3 Fault Localization in the Absence of Test Oracles by Semi-proving of Metamorphic Relations 538\u003c\/p\u003e \u003cp\u003e13.3.1 Metamorphic Testing and Metamorphic Relations 539\u003c\/p\u003e \u003cp\u003e13.3.2 The Semi-proving Methodology 541\u003c\/p\u003e \u003cp\u003e13.3.2.1 Semi-proving by Symbolic Evaluation 541\u003c\/p\u003e \u003cp\u003e13.3.2.2 Semi-proving as a Fault Localization Technique 542\u003c\/p\u003e \u003cp\u003e13.3.3 The Need to Go Beyond Symbolic Evaluation 543\u003c\/p\u003e \u003cp\u003e13.3.4 Initial Empirical Study 543\u003c\/p\u003e \u003cp\u003e13.3.5 Detailed Illustrative Examples 544\u003c\/p\u003e \u003cp\u003e13.3.5.1 Fault Localization Example Related to Predicate Statement 544\u003c\/p\u003e \u003cp\u003e13.3.5.2 Fault Localization Example Related to Faulty Statement 548\u003c\/p\u003e \u003cp\u003e13.3.5.3 Fault Localization Example Related to Missing Path 552\u003c\/p\u003e \u003cp\u003e13.3.5.4 Fault Localization Example Related to Loop 556\u003c\/p\u003e \u003cp\u003e13.3.6 Comparisons with Related Work 558\u003c\/p\u003e \u003cp\u003e13.3.7 Conclusion 560\u003c\/p\u003e \u003cp\u003e13.4 Automated Prediction of Fault Localization Effectiveness 560\u003c\/p\u003e \u003cp\u003e13.4.1 Overview of PEFA 561\u003c\/p\u003e \u003cp\u003e13.4.2 Model Learning 564\u003c\/p\u003e \u003cp\u003e13.4.3 Effectiveness Prediction 564\u003c\/p\u003e \u003cp\u003e13.4.4 Conclusion 564\u003c\/p\u003e \u003cp\u003e13.5 Integrating Fault Localization into Automated Test Generation Tools 565\u003c\/p\u003e \u003cp\u003e13.5.1 Localization in the Context of Automated Test Generation 566\u003c\/p\u003e \u003cp\u003e13.5.2 Automated Test Generation Tools Supporting Localization 567\u003c\/p\u003e \u003cp\u003e13.5.3 Antifragile Tests and Localization 568\u003c\/p\u003e \u003cp\u003e13.5.4 Conclusion 568\u003c\/p\u003e \u003cp\u003eNotes 569\u003c\/p\u003e \u003cp\u003eReferences 569\u003c\/p\u003e \u003cp\u003eIndex 581\u003c\/p\u003e","brand":"John Wiley and Sons Ltd","offers":[{"title":"Default Title","offer_id":49407029674327,"sku":"9781119291800","price":85.46,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119291800.jpg?v=1730497931","url":"https:\/\/bookcurl.com\/products\/handbook-of-software-fault-localization-9781119291800","provider":"Book Curl","version":"1.0","type":"link"}