Archive for juin 2008

l’annuaire des projets libres Ohloh.net

juin 17, 2008

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
  • HtmlUnit : 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

Publicités

Outils de test d’application web en Ruby

juin 3, 2008

J’ai repris récemment l’ensemble des outils de test d’application web utilisant le langage Ruby. Au départ, je cherchais des outils pilotant des navigateurs web. La solution la plus prometteuse était watir. L’environnement que j’utilise maintenant est Windows Vista avec le navigateur Internet Explorer 7. Les autres navigateurs que j’utilise ici sont Safari, SeaMonkey, Opera, Firefox et Flock.

Pour commencer, il faut installer le langage Ruby. Pour Windows, il existe la version 1.8.6. L’installation ne pose pas de problème. Double click sur un exécutable. Watir est une librairie Ruby qui pilote Internet Explorer. Associé avec la librairie de test du langage Ruby (Test::Unit), elle permet de tester les application web. Watir peut cependant servir à d’autres tâches d’automatisation. Test::Unit est la version pour le langage Ruby du framework xUnit. A titre de comparaison, la version pour le langage Java est JUnit. Test::Unit est installé par défaut avec le langage Ruby. La version de Watir est la 1.5.4 datant du 08/04/2008.

L’installation de Watir ne pose pas de problème, il suffit d’utiliser les commandes « gem ». L’archive est sous le forme d’un fichier gem.

gem install –local watir

Watir fonctionnait correctement sur des anciennes versions de Windows comme XP. Mais sur Windows Vista, cette librairie semble inutilisable. En effet, le navigateur démarre, même si la gestion des onglets est assez étrange. Par contre, il n’est pas possible d’aller plus loin comme remplir des champs ou cliquer sur des bouton. Cela semble provenir d’un problème de sécurité au niveau du système.

Il existe des portage de watir en java avec watij et en C# avec WatiN. Je n’ai testé que Watij qui pose exactement le même problème que Watir sous Windows Vista.

Il existe également des librairies en Ruby pour piloter les autres navigateurs. Safariwatir permet de piloter le navigateur Safari sous Mac OS uniquement (pas sous Windows). Il n’a donc pas beaucoup d’intérêt dans mes environnements techniques. Firewatir concerne le navigateur. Il fonctionne correctement sous Windows Vista (enfin !). La dernière version est la 1.1.1 du 08/04/2008. L’illustration avec le google test peut être la suivante :


require "firewatir"
test_site = "http://www.google.com"
ff = FireWatir::Firefox.new
ff.goto test_site
ff.text_field(:name, "q").set "pickaxe" # "q" is the name of the search field
ff.button(:name, "btnG").click # "btnG" is the name of the Search button

La seconde piste pour utiliser le langage Ruby pour les tests des applications web est d’utiliser la suite d’outils Selenium. Selenium remote control permet de faire des tests en pilotant des navigateurs web. Il n’est pas limité à un navigateur. Il n’est pas limité au seul langage Ruby. Il est possible par exemple d’utiliser le langage Java. Contrairement à Watir, Selenium est orienté exclusivement outil de test.

L’installation de la librairie Ruby est assez simple. L’archive Selenium remote control contient un serveur dans le dossier selenium-server. Le lancement de ce serveur se fait en double clickant sur l’archive selenium-server.jar ou par la commande java -jar selenium-server.jar. Le serveur utilise par défaut le port 4444.

Il est possible d’utiliser Selenium remote control avec 6 langages de programmation différents : dotnet, java, perl, php, python et Ruby. Pour utiliser le langage Ruby, il faut placer le fichier selenium.rb du dossier selenium-ruby-client-driver-* dans le dossier \lib\ruby\1.8 de l’installation du langage Ruby.

Selenium remote control permet de faire des tests en ruby avec de nombreux navigateurs. Il faut mettre au préalable l’exécutable correspondant au navigateur dans le path de Windows. Sous Windows Vista, les navigateurs IE, Firefox et Opera fonctionnent. Cela ne fonctionne pas pour les navigateurs Safari, Seamonkey et Flock. Voici un exemple du « google test » dans le cas du navigateur Firefox.


require "Selenium"
browser = Selenium::SeleniumDriver.new("localhost",4444,"*firefox","http://www.google.fr");
browser.start;
browser.open("http://www.google.fr");
puts browser.get_title();

Le troisième paramètre de l’operateur new définit le type de navigateur. « iexplore » pour IE, « *safari » pour Safari et « *opera » pour Opera. Si le navigateur n’est pas dans la liste des navigateurs par défaut, il est possible d’utiliser « *custom » suivi du chemin complet de l’exécutable du navigateur.


#browser = Selenium::SeleniumDriver.new("localhost",4444,"*custom E:/program/opera/Opera.exe","http://www.google.fr");