stryker-handbook
stryker-handbook copied to clipboard
Discussion: How to arrange mutant levels?
In stryker-net we want to introduct a new feature: mutant levels. By setting a higher mutation level, more complex mutants are placed. All higher levels include the lower level mutations as well. Maybe we can think of universal levels for each stryker. So the levels mean the same thing across stryker.
My current proposal for the levels is:
Mutations | Level |
---|---|
Arithmetic Operators | Basic |
Block (if we ever get it done) | Basic |
Equality Operators | Standard |
Boolean Literals | Standard |
Assignment statements | Standard |
Collection initializer | Standard |
Unary Operators | Standard |
Update Operators | Standard |
String Literals and Constants | Standard |
Bitwise Operators | Standard |
Checked Statements | Advanced |
Linq Methods | Advanced |
Regex (coming soon...) | Advanced |
Advanced Linq Methods | Complete |
Advanced Regex | Complete |
This proposal is for mutators as a whole, but I can imagine that some mutations inside the mutator belong to another level than others. For example:
> to <
basic
> to =>
advanced
@nicojs @Mobrockers @hugo-vrijswijk your thoughts?
Mutations | Level |
---|---|
Arithmetic Operators | Basic |
Block (if we ever get it done) | Basic |
Equality Operators | Standard |
Boolean Literals | Standard |
Assignment statements | Standard |
Collection initializer | Standard |
Unary Operators | Standard |
Update Operators | Standard |
String Literals and Constants | Standard |
Checked Statements | Standard |
Linq | Advanced |
Regex | Complete |
Bitwise Operators | Complete |
For the Bitwise operators I am thinking mostly about XOR mutations.
I would lean more to something like this, but I would prefer if Linq and Regex are split into standard advanced and complete because I would not expect most linq mutators to be disabled by default. For regex we need to find the right balance between ease to fix and amount of mutations this adds to the run time.