Mutation testing, avez vous validé la qualité de vos tests ?

21 min
Julien Braure, Lead Tech @DeliaTechnologies
Replay du
12/3/2020

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 deux "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 un test FAIL 4. Répéter avec une 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.

Mutation testing, avez vous validé la qualité de vos tests ?

21 min
Julien Braure, Lead Tech @DeliaTechnologies
Replay du
12/3/2020

Suivez les questions et commentaires sur Youtube

Je regarde sur YouTube

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 deux "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 un test FAIL 4. Répéter avec une 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.

Explorez le sujet à votre rythme en téléchargeant notre présentation
Télécharger la présentation
Découvrez nos liens utiles

Mutation testing, avez vous validé la qualité de vos tests ?

21 min
Julien Braure, Lead Tech @DeliaTechnologies
Replay du
12/3/2020

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 deux "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 un test FAIL 4. Répéter avec une 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.

D'autres webinars pour vous

Tous nos webinars →