l’annuaire des projets libres Ohloh.net

Ohloh.net est un annuaire des projets Open Source. Il rassemble des métriques et des analyses concernant des milliers de projets libres. Il propose des analyse de code avec le nombre de fichiers, le pourcentage de commentaire. Il analyse les différentes licences et met en évidence les conflits potentiels. D’autres métriques sont disponibles.

J’ai voulu tester ce site pour comparer les projets de test des applications web en Java : HtmlUnit, HttpUnit et JWebUnit. L’ordre précédent est celui de l’importance décroissante des projet. J’ai tout de même un doute sur l’unité (année homme).

  • HtmlUnit : 18 utilisateurs, coût du projet 118 années homme
  • HttpUnit : 6 utilisateurs, coût du projet 7 années homme
  • WebUnit : 3 utilisateurs, coût du projet 2 années homme

Les chiffres sont cependant faussés. Le projet HttpUnit est passé de CVS à SVN. Cette information n’a pas été reportée dans ohloh.net

comparaison des projet HtmlUnit HttpUnit JWebUnit



 Créer plusieurs profils utilisateur avec Mozilla Firefox

Le problème est assez simple : j’apprécie le navigateur Mozilla Firefox. Il existe en effet de nombreux plugins qui me sont utiles dans le travail de développement web. Citons Selenium IDE, Firebug, Web Developer. Ils sont nombreux et j’ai tendance à en installer beaucoup voir trop.

Le risque est d’avoir un navigateur éléphantesque avec des fuites de mémoire. Un autre point est le cycle de développement beaucoup plus lent au niveau de ces plugins par rapport au navigateur. Des failles de sécurité sont parfois non corrigées. Lors de nouvelles versions majeures du navigateur, certains plugins peuvent ne plus fonctionner.

La solution est de créer plusieurs profils utilisateur. Il suffit d’ajouter l’option « -P » à l’exécutable firefox.exe. Fermez ensuite toutes les sessions Firefox et démarrez le navigateur. Une boite de dialogue de gestion et de choix des profils utilisateur apparaît. Il est donc possible de créer de nouveaux profils et de changer le nom des profils existants. La création d’un nouveau profil engendre un profil sans aucun plugin complémentaire.

Il est donc possible de créer les profils selon vos besoins. Je pense créer trois profils un profil simple sans aucun plugin pour la navigation, un autre pour les tests des applications web avec Selenium et enfin un éléphant pour le développement web.



 Violet UML Editor, un éditeur de diagramme UML

Violet UML Editor est un outil simple pour écrire rapidement des diagrammes UML. Son ambition est bien moins importante que les outils de modélisation UML comme BOUML ou ArgoUML. Il s’agit d’un outil libre, sous licence GPL. Le site web est http://alexdp.free.fr/violetumleditor. La dernière version est la 0.21.1 datant de l’été 2007.

Un point assez agaçant pour est que cet outil fonctionne sous Java 6. Je travaillais en Java 5. J’ai du passer à cette version du langage Java, et configurer quelques variables d’environnement sur mon poste pour évaluer cet outil. L’utilisation est assez simple. Il suffit d’utiliser la commande java -jar com.horstmann.violet-0.21.1.jar ou double cliquer sur l’archive. Il s’agit alors d’une application graphique Java autonome.

Il existe une version pour l’EDI Eclipse : Violet UML Editor Plugin for Eclipse. En fait, il suffit de mettre le jar utilisé pour l’application autonome dans le répertoire plugins d’Eclipse. Le fonctionnement similaire à l’application Java autonome est tout à fait correct .

Un avantage de cet outil est sa simplicité. Il démarre rapidement. Il est très facile à prendre en main. Son interface graphique est soignée. Il est facile à comprendre qu’avec un outil aussi simple, il est difficile d’aller très loin. En effet, il permet de dessiner les diagrammes UML, mais il n’existe pas de projet UML et d’existence des éléments en dehors des graphiques. Il n’est pas possible de générer du code ou de faire une démarche MDA avec un tel outil.

Cet outil est libre, il est donc possible de recompiler les sources. Les différentes versions sur le site de sourcefourge comportent à la fois l’archive jar et le code source. Il est également possible d’utiliser le code source présent sur dépôt CVS. Le projet utilise en effet ce gestionnaire de versions. La commande suivante permet de récupérer le code source.

cvs -z3 -d:pserver:anonymous@violet.cvs.sourceforge.net:/cvsroot/violet co -P Violet

La compilation du projet n’a pas posé de problème particulier. J’ai utilisé la tache ant (build.xml) trouvé dans le code source. Dans ce fichier, j’ai du corrigé le répertoire eclipsedir (en fait le répertoire plugin d’Eclipse). Pour que la tâche ant fonctionne correctement, il faut mettre dans la variable d’environnement JAVA_HOME, le répertoire du jdk version 6. Notons l’absence de test unitaire. Cependant comme il s’agit d’un outil purement graphique, écrire des tests unitaires n’est pas forcement une tâche évidente. Surprise, en regardant le fichier build.xml, il est possible de recompiler le projet pour la version 5 du langage Java !

<javac srcdir=”${srcdir}” destdir=”${builddir}” deprecation=”true” debug=”true” source=”1.5″ target=”1.5″>

Voici deux images, la première représente Violet UML en application autonome et la seconde l’apparition de Violet UML dans les menus d’Eclipse.



 L’outil de test des applications web WebDriver

WebDriver est un nouvel outil de test des applications web. Il s’agit d’un projet faisant partie du site code.google.com, qui regroupe des projets développés par les employés de cette entreprise. le site de WebDriver est http://code.google.com/p/webdriver/. Une présentation vidéo de cet outil lors du GTAC 2007 (Google’s Test Automation Conference) est disponible sur le site YouTube .

Il s’agit d’une API Java permettant de simuler ou de piloter un navigateur web. L’équipe à l’origine de WebDriver parle de navigateur idéalisé. WebDriver est similaire aux outils comme htmlUnit, HttpUnit, JWebUnit, ou Selenium Remote Control. Il fait partie des outils de test des applications web.

L’API WebDriver est de haut niveau, comme celle de JWebUnit par opposition aux API de bas niveau HtmlUnit et HttpUnit. Le but est de simuler un utilisateur manipulant une interface web, pas analyser ou manipuler les requêtes web. Comme JWebUnit, WebDriver utilise des API de plus bas niveau dans la pratique uniquement HtmlUnit. Il reste cependant ouvert à utilisation d’autres API comme Selenium RC. JWebUnit dans sa version 2 devrait permettre l’utilisation en plus d’HtmlUnit de Selenium RC, HttpUnit et Jacobie.

WebDriver est en fait une interface qui peut utiliser des implémentations différentes. Ces implémentations sont soit des API de bas niveau qui simulent des navigateurs web comme HtmlUnit, soit des outils pilotant des navigateurs web. Il s’agit de Firefox, et Internet Explorer pour Windows, Safara pour Mac OS X. Une implémentation utilisant un navigateur web permet d’avoir un support natif du Javascript et de suivre visuellement les tests. Donc, il est donc possible de vérifier leur fonctionnement et de les faire évoluer. Par contre, cette méthode est plus lente que des tests utilisant un simulation d’un navigateur web. Un simulateur est plus rapide mais propose un support imparfait du javascript.

Contrairement aux outils concurrents, l’API de WebDriver est très simple. L’API tourne autour de deux classes WebDriver (le navigateur) et WebElement (un élément dans page courante). Les API de HttpUnit et HtmlUnit sont à côté complexes. Le choix de l’implémentation de la classe WebDriver définit le type d’implémentation utilisé (HtmlUnit, Firefox, IE ou Safari).

Dans la pratique, cet outil est disponible en version « alpha ». La version du 31/07/2008 que j’ai évaluée n’est utilisable uniquement avec les implémentations HtmlUnit et Firefox. Il suffit de changer l’instruction d’initialisation de la classe WebDriver pour choisir l’implémentation Firefox ou HtmlUnit.

Voici des exemples de code:

WebDriver driver;
driver = new FirefoxDriver(); //piloter Firefox
driver = new HtmlDriver(); //utiliser HtmlUnit

Il faut mettre de temps à autre des « pause » pour pouvoir visualiser le résultat.

Thread.sleep(tempo); //tempo est grand pour Firefox mettre 1 pour htmlUnit.

WebDriver souffre de limitations : il est instable et sa documentation est partielle. Je ne le conseille pas pour une utilisation dans un projet important. Les outils matures dans le domaine des tests des applications web sont plutôt HtmlUnit et JWebUnit.



 Le test de performance JavaScript SunSpider

SunSpider est un test de performance du moteur de JavaScript. Ce test a été écrit par l’équipe de WebKit le moteur de rendu HTML présent dans les navigateurs sous Mac OS, comme Safari. Ce benchmark exécute 5 fois une série de tests et fournit une moyenne.

Le JavaScript est assez important pour les utilisateurs des applications web. En effet, le type de code est exécuté sur le client et non le serveur. L’importance de ce langage s’est accrue avec le Web 2.0. Cependant, la performance du moteur de JavaScript n’est qu’un élément dans le performance globale du navigateur web. Cela ne présume pas de la performance globale du navigateur.

Les résultats suivants ont été obtenus sur Windows Vista avec les navigateurs actifs, les plus courants dans leurs dernières versions stables. Google Chrome avec son tout nouveau moteur V8 obtient un résultat remarquable. Par contre celui d’Internet Explorer 7 est médiocre, en effet le moteur de JavaScript de ce navigateur est de conception ancienne et devrait être remplacé dans la version 8.

Navigateur Version Résultat
Google Chrome 0.2.149.29 3 301 ms
Firefox 3.01 5 558 ms
Safari 3.1.2 7 019 ms
Opera 9.52 7 931
K Melon 1.5 15 321 ms
SeaMonkey 1.1.11 21 422 ms
Flock 1.2.5 23 214 ms
IE 7 58 033 ms