stryker-mutator / stryker-handbook

A comprehensive guide to the stryker ecosystem
Apache License 2.0
71 stars 11 forks source link

Discussion: How to arrange mutant levels? #33

Open richardwerkman opened 4 years ago

richardwerkman commented 4 years ago

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

richardwerkman commented 4 years ago

@nicojs @Mobrockers @hugo-vrijswijk your thoughts?

rouke-broersma commented 4 years ago
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.