Guide to the Software Engineering Body of Knowledge (SWEBOK)
Guide to the Software Engineering Body of Knowledge ®
TABLE OF CONTENTS - CHAPTER 5
COPYRIGHT FOREWORD ASSOCIATE EDITORS INDUSTRIAL ADVISORY BOARD PANEL OF EXPERTS REVIEW TEAM PREFACE CHAPTER 1: INTRODUCTION TO THE GUIDE CHAPTER 2: SOFTWARE REQUIREMENTS CHAPTER 3: SOFTWARE DESIGN CHAPTER 4: SOFTWARE CONSTRUCTION CHAPTER 5: SOFTWARE TESTING ACRONYMS INTRODUCTION BREAKDOWN OF TOPICS 1. Software Testing Fundamentals 1.1. Testing-related terminology 1.1.1. Definitions of testing and related terminology 1.1.2. Faults vs. Failures 1.2. Key issues 1.2.2. Testing effectiveness/Objectives for testing 1.2.3. Testing for defect identification 1.2.4. The oracle problem 1.2.5. Theoretical and practical limitations of testing 1.2.6. The problem of infeasible paths 1.2.7. Testability 1.3. Relationships of testing to other activities 2. Test Levels 2.1. The target of the test 2.1.1. Unit testing 2.1.2. Integration testing 2.1.3. System testing 2.2. Objectives of Testing 2.2.1. Acceptance/qualification testing 2.2.2. Installation testing 2.2.3. Alpha and beta testing 2.2.4. Conformance testing/Functional testing/Correctness testing 2.2.5. Reliability achievement and evaluation 2.2.6. Regression testing 2.2.7. Performance testing 2.2.8. Stress testing 2.2.9. Back-to-back testing 2.2.10. Recovery testing 2.2.11.Configuration testing 2.2.12. Usability testing 2.2.13.Test-driven development 3. Test Techniques 3.1. Based on the software engineer's intuition and experience 3.1.1. Ad hoc testing 3.1.2. Exploratory testing 3.2. Specification-based techniques 3.2.1. Equivalence partitioning 3.2.2. Boundary-value analysis 3.2.3. Decision table 3.2.4. Finite-state machine-based 3.2.5. Testing from formal specifications 3.2.6. Random testing 3.3. Code-based techniques 3.3.1. Control-flow-based criteria 3.3.2. Data flow-based criteria 3.3.3. Reference models for code-based testing (flowgraph, call graph) 3.4. Fault-based techniques 3.4.1. Error guessing 3.4.2. Mutation testing 3.5. Usage-based techniques 3.5.1. Operational profile 3.5.2. Software Reliability Engineered Testing 3.6. Techniques based on the nature of the application 3.7. Selecting and combining techniques 3.7.1. Functional and structural 3.7.2. Deterministic vs. random 4. Test-related measures 4.1. Evaluation of the program under test 4.1.1. Program measurements to aid in planning and designing testing 4.1.2. Fault types, classification, and statistics 4.1.3. Fault density 4.1.4. Life test, reliability evaluation 4.1.5. Reliability growth models 4.2. Evaluation of the tests performed 4.2.1. Coverage/thoroughness measures 4.2.2. Fault seeding 4.2.3. Mutation score 4.2.4. Comparison and relative effectiveness of different techniques 5. Test Process 5.1. Practical considerations 5.1.1. Attitudes/Egoless programming 5.1.2. Test guides 5.1.3. Test process management 5.1.4. Test documentation and work products 5.1.5. Internal vs. independent test team 5.1.6. Cost/effort estimation and other process measures 5.1.7. Termination 5.1.8. Test reuse and test patterns 5.2. Test Activities 5.2.1. Planning 5.2.2. Test-case generation 5.2.3. Test environment development 5.2.4. Execution 5.2.5. Test results evaluation 5.2.6. Problem reporting/Test log 5.2.7. Defect tracking MATRIX OF TOPICS VS. REFERENCE MATERIAL RECOMMENDED REFERENCES FOR SOFTWARE TESTING APPENDIX A. LIST OF FURTHER READINGS APPENDIX B. LIST OF STANDARDS CHAPTER 6: SOFTWARE MAINTENANCE CHAPTER 7: SOFTWARE CONFIGURATION MANAGEMENT CHAPTER 8: SOFTWARE ENGINEERING MANAGEMENT CHAPTER 9: SOFTWARE ENGINEERING PROCESS CHAPTER 10: SOFTWARE ENGINEERING TOOLS AND METHODS CHAPTER 11: SOFTWARE QUALITY CHAPTER 12: RELATED DISCIPLINES OF SOFTWARE ENGINEERING APPENDIX A: KNOWLEDGE AREA DESCRIPTION SPECIFICATIONS FOR THE IRONMAN VERSION OF THE GUIDE TO THE SOFTWARE ENGINEERING BODY OF KNOWLEDGE APPENDIX B: EVOLUTION OF THE GUIDE TO THE SOFTWARE ENGINEERING BODY OF KNOWLEDGE APPENDIX C: ALLOCATION OF IEEE AND ISO SOFTWARE ENGINEERING STANDARDS TO SWEBOK KNOWLEDGE AREAS APPENDIX D: CLASSIFICATION OF TOPICS ACCORDING TO BLOOM’S TAXONOMY
ACRONYMS INTRODUCTION BREAKDOWN OF TOPICS 1. Software Testing Fundamentals 1.1. Testing-related terminology 1.1.1. Definitions of testing and related terminology 1.1.2. Faults vs. Failures 1.2. Key issues 1.2.2. Testing effectiveness/Objectives for testing 1.2.3. Testing for defect identification 1.2.4. The oracle problem 1.2.5. Theoretical and practical limitations of testing 1.2.6. The problem of infeasible paths 1.2.7. Testability 1.3. Relationships of testing to other activities 2. Test Levels 2.1. The target of the test 2.1.1. Unit testing 2.1.2. Integration testing 2.1.3. System testing 2.2. Objectives of Testing 2.2.1. Acceptance/qualification testing 2.2.2. Installation testing 2.2.3. Alpha and beta testing 2.2.4. Conformance testing/Functional testing/Correctness testing 2.2.5. Reliability achievement and evaluation 2.2.6. Regression testing 2.2.7. Performance testing 2.2.8. Stress testing 2.2.9. Back-to-back testing 2.2.10. Recovery testing 2.2.11.Configuration testing 2.2.12. Usability testing 2.2.13.Test-driven development 3. Test Techniques 3.1. Based on the software engineer's intuition and experience 3.1.1. Ad hoc testing 3.1.2. Exploratory testing 3.2. Specification-based techniques 3.2.1. Equivalence partitioning 3.2.2. Boundary-value analysis 3.2.3. Decision table 3.2.4. Finite-state machine-based 3.2.5. Testing from formal specifications 3.2.6. Random testing 3.3. Code-based techniques 3.3.1. Control-flow-based criteria 3.3.2. Data flow-based criteria 3.3.3. Reference models for code-based testing (flowgraph, call graph) 3.4. Fault-based techniques 3.4.1. Error guessing 3.4.2. Mutation testing 3.5. Usage-based techniques 3.5.1. Operational profile 3.5.2. Software Reliability Engineered Testing 3.6. Techniques based on the nature of the application 3.7. Selecting and combining techniques 3.7.1. Functional and structural 3.7.2. Deterministic vs. random 4. Test-related measures 4.1. Evaluation of the program under test 4.1.1. Program measurements to aid in planning and designing testing 4.1.2. Fault types, classification, and statistics 4.1.3. Fault density 4.1.4. Life test, reliability evaluation 4.1.5. Reliability growth models 4.2. Evaluation of the tests performed 4.2.1. Coverage/thoroughness measures 4.2.2. Fault seeding 4.2.3. Mutation score 4.2.4. Comparison and relative effectiveness of different techniques 5. Test Process 5.1. Practical considerations 5.1.1. Attitudes/Egoless programming 5.1.2. Test guides 5.1.3. Test process management 5.1.4. Test documentation and work products 5.1.5. Internal vs. independent test team 5.1.6. Cost/effort estimation and other process measures 5.1.7. Termination 5.1.8. Test reuse and test patterns 5.2. Test Activities 5.2.1. Planning 5.2.2. Test-case generation 5.2.3. Test environment development 5.2.4. Execution 5.2.5. Test results evaluation 5.2.6. Problem reporting/Test log 5.2.7. Defect tracking MATRIX OF TOPICS VS. REFERENCE MATERIAL RECOMMENDED REFERENCES FOR SOFTWARE TESTING APPENDIX A. LIST OF FURTHER READINGS APPENDIX B. LIST OF STANDARDS