Tests de mutabilité
A.K.A. Mutation testing
C’est quoi un mutant?

Pas ça

C’est quoi des tests de mutabilité?

Exemple #1
def light?(switch)
switch ? :on : :off
end Original
def light?(switch)
true ? :on : :off
end Mutant
Test
expect(light?(true)).to be(:on) 
Les tests passent encore...
def light?(switch)
switch ? :on : :off
end Original
def light?(switch)
true ? :on : :off
end Mutant
Test
expect(light?(true)).to be(:on)
expect(light?(false)).to be(:off)
Le mutant est mort
Mutation testing pour tous
Ruby
Mutant - https://github.com/mbj/mutant
Python
MutPy - https://pypi.python.org/pypi/MutPy/0.4.0
Java
PIT - http://pitest.org/
PHP
Mutagenesis - https://github.com/padraic/mutagenesis