Le mutation testing existe depuis plus de 40 ans, mais c’est seulement dans les années 80 que des outils logiciel ont vu le jour. Le principe du mutation testing est d’apporter des modifications ou mutations (mutators) au code afin de déterminer si la suite de tests unitaires attrape ces changements. Si ce n’est pas le cas, c’est que vos tests sont incomplets et doivent être améliorés. L’article suivant présente l’utilisation du logiciel Humbug pour PHP.

Exemple de mutation

Par exemple, l’outil Humbug pourrait remplacer le symbole + par – dans une fonction. Tout cela se passe en mémoire et ne modifie pas votre code sur disque.

Si vos tests ne permettent pas de repérer ce changement, c’est que vos tests sont incomplets !

Les mutators

Les tests ne se limitent pas à seulement 1 changement de symbole, en fait l’outil peut exécuter plus d’une dizaine de changements. Voici une liste de plusieurs autres mutators possibles.

Original

Avec mutation

Original

Avec mutation

+

/=

*=

+

%=

*=

*

/

**=

/=

/

*

&

|

%

*

|

&

**

/

^

&

+=

-=

~

-=

+=

>>

<<

*=

/=

<<

>>

 

Tests très lent

Il est à noter que l’exécution de ces tests peut être très longue et que l’outil Humbug est en version Alpha. En échange de ces désagréments, vous pourrez vérifier en profondeur la qualité de vos tests unitaires !

Afin d’accélérer l’exécution de ces tests, pensez à migrer vers super fast PHP 7.

Humbug en exécution

Humbug sur Github

https://github.com/padraic/humbug

Humbug is a Mutation Testing framework for PHP to measure the real effectiveness of your test suites and assist in their improvement. It eats Code Coverage for breakfast.

Présentation d’introduction sur Humbug

http://fr.slideshare.net/markredeman/mutation-testing-in-php-with-humbug

Facebook Comments

0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.