Work In Progress
- Backlog
Foreword
Preface
- How To Read This Book
- Who Should Read This Book
Acknowledgements
1.Introduction
2.Basics of Mutation Testing
- 2.1Source Code and Unit Tests
- 2.2Mutations, Mutants and Mutators
- 2.3Killed and Surviving Mutants
- 2.4Equivalent Mutants
- 2.5Higher Order Mutations
3.A Practical Example
4.Does Mutation Testing Work?
5.Relation to Other Testing Techniques
- 5.1Unit Testing
- 5.2Test Coverage
- 5.3Static Code Analysis
- 5.4Mutation Testing and the TDD Workflow
- 5.5Fuzz Testing
6.History of Mutation Testing
7.Mutation Testing Techniques
- 7.1How to Create Mutants
- 7.2Selecting and Prioritizing Unit Tests
- 7.3Infinite Loops
8.How to Use Mutation Testing
- 8.1Daily Use for a Developer
- 8.2Daily Use in a Project
- 8.3Daily Use for a Tester
- 8.4Introducing Mutation Testing into a Project
9.Mutators
- 9.1Comparison Boundary Mutators
- 9.1.1Greater-than into Greater-than-or-equal-to Mutator
- 9.1.2Greater-than-or-equal-to into Greater-than Mutator
- 9.1.3Less-than into Less-than-or-equal-to Mutator
- 9.1.4Less-than-or-equal-to into Less-than Mutator
- 9.2Conditionals Negation Mutators
- 9.2.1Equal-to into Not-equal-to Mutator
- 9.2.2Not-equal-to into Equal Mutator
- 9.2.3Greater-than into Less-than-or-equal-to Mutator
- 9.2.4Greater-than-or-equal-to into Less-than Mutator
- 9.2.5Less-than into Greater-than-or-equal-to Mutator
- 9.2.6Less-than-or-equal-to into Greater-than Mutator
- 9.3Equality versus Identity Mutators
- 9.3.1Equal-to into Identical-to Mutator
- 9.3.2Identical-to into Equal-to Mutator
- 9.4Remove and Negate Conditionals Mutators
- 9.4.1Conditional into True
- 9.4.2Conditional into False
- 9.4.3Negation of Conditional
- 9.5Arithmetic Mutators
- 9.5.1Addition into subtraction
- 9.5.2Subtraction into addition
- 9.5.3Multiplication into division
- 9.5.4Division into multiplication
- 9.5.5Remainder into multiplication
- 9.5.6And into or
- 9.5.7Or into and
- 9.5.8Xor into and
- 9.5.9Bitwise-shift-left into bitwise-shift-right
- 9.5.10Bitwise-shift-right into bitwise-shift-left
- 9.5.11Unsigned-bitwise-shift-right into bitwise-shift-left
- 9.6Increments Mutators
- 9.6.1Increment into decrement
- 9.6.2Decrement into increment
- 9.7Invert Negatives Mutators
- 9.8Inline Constant Mutators
- 9.9Return Values Mutators
- 9.10Method Call Mutators
- 9.10.1Void Method Call Deletion
- 9.10.2Non-Void Method Call Deletion
- 9.10.3Constructor Call Deletion
- 9.10.4Naked Receiver Mutator
- 9.11Member Variable Mutators
- 9.12Switch Mutators
- 9.13Regular Expressions Mutators
- 9.14Concurrency Mutators
- 9.15Interface Mutators
- 9.15.1Interface Method Deletion
- 9.15.2Empty Class Method Deletion
- 9.15.3Method Visibility Reduction
- 9.15.4Attribute Visibility Reduction
- 9.15.5Class Visibility Reduction
- 9.15.6Empty Interface Deletion
- 9.15.7Empty Class Deletion
- 9.16Inheritance Mutators
- 9.16.1Class Extension Deletion
- 9.16.2Interface Implementation Deletion
- 9.16.3Interface Extension Deletion
10.Tools
- 10.1Recommended Tools
- 10.2C
- 10.2.1Proteum
- 10.3C#
- 10.3.1Visual Mutator
- 10.3.2NinjaTurtles
- 10.3.3CREAM
- 10.3.4Nester
- 10.4C++
- 10.4.1PlexTest
- 10.5Fortran-77
- 10.5.1Mothra
- 10.6Go
- 10.6.1Go-mutesting
- 10.6.2Mutator
- 10.6.3Manbearpig
- 10.6.4Golang-mutation-testing
- 10.7Haskell
- 10.7.1MuCheck
- 10.8Java
- 10.8.1LittleDarwin
- 10.8.2Major
- 10.8.3Jumble
- 10.8.4µJava
- 10.8.5PIT
- 10.8.6Javalanche
- 10.8.7Simple Jester
- 10.8.8Jester
- 10.8.9Mutator
- 10.9Javascript
- 10.9.1Stryker
- 10.9.2Mutagen
- 10.9.3Grunt-mutation-testing
- 10.9.4Mutandis
- 10.9.5AjaxMutator
- 10.10Perl
- 10.10.1Devel::Mutator
- 10.11PHP
- 10.11.1Humbug
- 10.11.2MutaTesting
- 10.12Python
- 10.12.1Cosmic Ray
- 10.12.2Mutmut
- 10.12.3MutPy
- 10.12.4Elcap
- 10.12.5PyMuTester
- 10.12.6Pester
- 10.13Ruby
- 10.13.1Mutiny
- 10.13.2Mutant
- 10.13.3Heckle
- 10.13.4Boo_hiss
- 10.14Smalltalk
- 10.14.1SMutant
- 10.14.2MuTalk
Glossary
References
Photo Credits
Index
- A
- B
- F
- M
- P
- R
- S
- T
- U
- V