L’outil Jester

Jester est un outils testant la qualité des tests unitaires écrits dans le cadre du framework JUnit. Il teste les tests… Il recherche les parties de codes non couvertes par les tests unitaires. Je suis tombé par hasard sur cet outil durant ma lecture du livre « Test Driven Development » de Kent Beck.

Cet outil se base sur le principe de « Mutation testing » ou « Mutation analysis » qui peut être transcrit en français par « test par mutation ». Le principe est le suivant, on injecte artificiellement des fautes dans un programme (le mutant) et on regarde si les tests sur le programme détecte l’erreur (killed mutant). Le problème de ce principe est que le nombre de modifications peut devenir grand.

A la fin de la première partie du livre de Kent Beck, on obtient un petit programme en java avec 5 objets et un ensemble de tests unitaires associés à ces objets. Jester trouve très facilement la seule méthode non testée, laissée ainsi volontairement par l’auteur. Pour le reste Jester montre que le code est bien couvert par les tests unitaires. L’ajout du test manquant est assez simple. Au final, le développeur est satisfait car il a été plus loin qu’écrire du simple code, il tente de prouver que son code est exact.
En fait, il faut relativiser le montre joie car générer les mutants n’est pas simple. Jester se base sur un ficher de configuration « mutations.jcg ». Lorsqu’on regarde le nombre de mutants générés dans l’exemple de Kent Beck avec la la configuration par défaut de Jester, seuls 5 mutants ont été générés et sur les 5 classes deux n’avaient pas de mutants. En modifiant ce fichier, j’ai réussit à passer à 8 mutants et à trouver une autre méthode non couverte par les tests. Mais encore une fois l’écriture du test était très simple.

Maintenant, le problème est toujours de passer d’un exemple de démonstration à un cadre réel de travail. Pour ma part, j’en suis encore loin car les tests unitaires sont rarement écrits dans le cadre de mon travail. Donc avant de tester les tests, il faudrait déjà les écrire…

Le site de jester est http://jester.sourceforge.net/. la dernière version est la 1.37 datant de février 2005. Depuis plus rien, mais la version est question est un peu rudimentaire mais utilisable. Les transpositions pour Python (Pester) et C# (Nester) semblent abandonnés. Si vous avez Python d’installer vous pouvez profiter de rapport sous format html, vous indiquant clairement les parties de code non testées.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s


%d blogueurs aiment cette page :