Accéder au contenu principal

Mutation Testing, Introduction


Voici une bref introduction aux tests par mutation, que j'ai mis en place dans une mission chez mon client du moment.

Le but du mutation testing est de vérifier dans un premier temps si notre couverture de tests est fiable. En effet, il n'y pas de que la couverture de tests qui compte, mais également leur pertinence et leur efficacité. En quelques mot, il s'agit de mesurer le comportement de notre harnais de tests face à du code qui mute (refactoring, correction de bug, refonte d'architecture, etc...) et ainsi déterminer si celui-ci couvre bien le cas pour lequel il a été conçu.

Le principe étant lors de l'exécution des tests de faire muter notre code source et ainsi s'assurer que les mutants ont bien été éliminés : on entend par mutants, les parties de code source ayant muté. Il devient alors évident qu'un test bien fait se plantera dès lors qu'il rencontrera du code ayant un comportement autre que celui de prévu (il existe malheureusement des cas ou la mutation est "légitime"). Si ce n'est pas le cas, c'est que votre test n'est bon et qu'il ne couvre pas correctement votre implémentation.

Pour un peu plus de détail sur la mise en place du mutation testing, n'hésitez pas à aller voir mon article sur mon Wiki pro Reservoir code.

Introduction au Mutation Testing

Bonne lecture,

Crédit photo : https://pixabay.com/fr/users/jackmac34-483877/

Commentaires

Posts les plus consultés de ce blog

Faire sa machine virtuelle sous Debian ARM avec QEMU

Introduction L'objet de ce article est de vous expliquer comment faire  pas à pas,  sa machine virtuelle Debian Wheezy   tournant sur un processeur ARM   avec QEMU . Il est relativement simple de trouver des ressources à ce sujet sur le Web, mais je voulais apporter ma pierre à l'édifice sous forme d'un petit  tutorial prêt à l'emploi. A propos d'ARM et d'émulation, il faut savoir qu'au jour d'aujourd'hui, VirtualBox est incapable de virtualiser un OS tournant sur ARM, cela m'a donc obligé à m'intéresser de plus prêt à QEMU. Et si vous vous demandez pourquoi, je veux émuler de l'ARM, vous le serez au prochain épisode... QEMU QEMU est un logiciel développé à l'origine par le célébrissime programmeur  Fabrice Bellard . Le succès de cet émulateur vient principalement du fait, qu'il est tout aussi capable d'émuler que de virtualiser. La principale différence entre l'émulation et la virtualisation est qu'un

Retour sur Rework

Je me suis pour une fois sorti la tête des ouvrages techniques, de mon GoogleReader/programming/languages et autres joyeusetés de ce genre, pour me plonger dans le livre à la mode, Rework . Ce livre co-écrit par Jason Fried et David Heinemeier Hansson est un cookbook destiné aussi bien aux boss, qu'à leurs employés, désirant comprendre et décrypter les clés de la réussite de cette entreprise : 37signals , qui est au passage la boite qui a crée le website Basecamp et le framework ROR . L'ensemble repose sur un enchainement intéressant de chapitres courts mais percutants, avec des illustrations assez plaisantes. Tout est écrit en noir & blanc dans un anglais assez compréhensif, qui permet de le terminer en un clin d'œil, si vous n'avez pas fait comme moi et pris des notes quasiment à chaque chapitre. Je ne vais pas coucher toutes mes notes sur cette page, mais vous en énumérez les premiers points qui m'ont le plus marqué, car ce livre a été pour moi et sera je

Releaser avec Maven sur github

Le but de l'exercice est de releaser un projet Maven simple en utilisant le maven-release-plugin via Cygwin sur la plateforme github . En effet, la procédure serait aussi simple que sur Subversion , à la condition d'avoir ses settings et ses POM au carré, ce que nous allons voir de suite. Pour mener à bien l'opération, les pré-requis sont les suivants : Avoir un environnement de développement sous Cygwin , le mien étant Windows XP SP3 / Cygwin 2.712 , / java 1.6.0_17 / git 1.7.1 avec une auto-complétion des commandes git bien pratique, Avoir une configuration Maven opérationnelle dans le sens où vous avez accès aux maximums de repositories publics et une plateforme d'hébergement/déploiement pour vos archives. La mienne étant Maven 2.2.1 / Nexus™ Open Source Edition 1.7.1. J'avoue avoir de la chance, car j'utilise pour mes tests, ma plateforme d'entreprise (chez Vidal) configurée aux petits oignons par mon collègue Thierry que je salue au pass