Session

Mutation Testing

Manual testing, on a fait mieux... Automated Unit Testing, un bon début. Integration Testing, un cran plus haut. Et après ?

Lors de nos procédures de tests, le code-coverage est (trop) souvent la metric reine mise en avant. Cependant, c'est plutôt le nombre d'assertions qui prime. Le code-coverage étant surtout le nombre de lignes ayant été exécutées durant les tests.

En poussant à l'extrême, on peut facilement imaginer un code 100% "couvert" par les tests, mais avec 0 assertion... Ces tests "blancs" passeront donc quelques soient les entrées et n'apporteront aucune valeur ajoutée.

Une autre hantise du testeur est de ne jamais faire confiance à un test que l'on a jamais vu "FAIL".

C'est là que le Mutation Testing entre en scène !

Des frameworks existent (Infection en PHP, PIT en Java... ) qui, à partir des 2 "artifacts" déjà présents dans votre projet, le code source et les tests existants, vont simplement :

1. Modifier votre code (1 modification = 1 mutation)
2. Faire tourner les tests
3. S'attendre à ce que vos tests "détectent" cette mutation en reportant au moins 1 test FAIL
4. Répéter avec 1 nouvelle mutation

Cette approche simple et peu coûteuse permet d'avoir un bon retour sur la qualité et la valeur réelle de vos tests. Le tout avec le plaisir infini de tuer des mutants ;-)

Julien Braure

Delia Technologies - CTO

Nantes, France

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top