Archive for mai 2007

L’outil de test DBUnit

mai 28, 2007

Cet article concerne toujours les tests unitaires et les frameworks de type xUnit. Rappelons que la référence pour le monde java est JUnit. Je sais il manque un article sur JUnit, il viendra un jour.

DBUnit est une solution pour la mise en place de tests unitaires dans le cadre d’application Java mettant en oeuvre des bases de données relationnelles. La version actuelle, la 2.2 date du 27/12/2006. Le site du projet est http://dbunit.sourceforge.net/. Le projet est resté semble-t-il plusieurs mois en sommeil, mais maintenant il est à nouveau actif. Comme d’habitude la documentation n’est pas satisfaisante !

DBUnit fonctionne comme une extension de JUnit. Pour rappel, dans JUnit, il existe deux classes importantes les « TestCase » qui sont les tests unitaires et les « TestSuite » qui regroupent un ensemble de tests (donc des TestCase ou des TestSuite). Le principe de DBUnit est d’étendre la classe TestCase avec la classe DBTestCase. Cette classe comporte les méthodes permettant d’alimenter le contenu des tables de la base de données avec les données que vous désirez. Ces données peuvent être définit dans un fichier XML. Enfin DBUnit vous fournit des assertions supplémentaires permettant de comparer le contenu d’une table avec un contenu attendu défini dans un fichier XML.

Il est possible de faire les tests unitaires uniquement avec JUnit. C’était effectivement la voie que j’avais prise. Mais finalement, une fois que j’ai réussit à faire fonctionner DBUnit, j’ai réellement trouvé l’outil intéressant.

L’outil htmlunit

mai 24, 2007

Cet article concerne encore les outils de tests. htmlunit est un outil de tests unitaires des sites web. Il fait partie de la grande famille des outils xUnit dont le fameux JUnit. Ce dernier est l’outil de référence des tests unitaires pour le langage Java.

Le site de cet outil est http://htmlunit.sourceforge.net. Le début du projet remonte à 2002 et la version actuelle 1.11 date du 15 mars 2007. Le projet semble avancer régulièrement avec 3 administrateurs et 8 développeurs déclarés sur le site de sourceforge.
L’utilisation est proche de JUnit, htmlunit fournit des classes java pour écrire des tests sur le site web. Il s’agit en quelque sorte d’un robot de test. L’objectif des promoteurs du projet est de faire du TDD, ou « Test Driven Development » au niveau des interfaces web. Je reste cependant encore assez dubitatif sur la démarche TDD.

Le projet souffre d’un manque de documentation comme de nombreux projet libre. Cependant le site comporte quelques exemples d’utilisation faciles à mettre en oeuvre notamment avec Eclipse. Maintenant, la mise en oeuvre d’htmlunit dans un vrai projet web ne me semble pas très évident.

Enfin un point pour moi assez symbolique de ce projet est que le code source en java est accompagné des tests unitaires pour être utilisé avec JUnit. Ce sujet est certainement à approfondir, de même que les tests unitaires en général.

L’outil Jester

mai 20, 2007

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.

Retrouver jar à partir du nom d’une classe

mai 13, 2007

Le site suivant www.jarfinder.com permet de retrouver l’éventuel jar manquant dans une application java. A partir du nom d’une classe, il permet de retrouver les jars contenant cette classe. Ce petit utilitaire, j’en suis persuadé sera utile à tous les développeurs java.

L’association animation langue et la revue MAG

mai 8, 2007

L’association Belge (côtés francophone) « animation langue » met à jour un site web http://www.animationlangues.be/ concernant l’apprentissage des langues, essentiellement l’anglais, le néerlandais et exceptionnellement un peu d’allemand. Elle édite une revue mensuelle MAG avec un CD, pour moitié en anglais et l’autre moitié en néerlandais. Cette revue est très agréable, avec des articles assez variés, avec une tendance écologiste qui me plaît. Même si elle n’a pas la qualité des revues commerciales, elle reste très intéressante. Il s’agit certainement de la seule revue pour l’apprentissage du néerlandais accessible. Elle est disponible uniquement par abonnement de 6 mois minimum. Si vous connaissez d’autres revues concernant le néerlandais, vous pouvez me contacter.