Outils de tests unitaires pour les applications web


Je m’intéresse ici aux frameworks Java de tests unitaires pour les applications web (côtés navigateur). Ils se basent souvent sur le framework Java de test unitaire JUnit. Ils peuvent en principe tester toutes les applications web quelque soit les technologies utilisées pour écrire ces applications web.

Il existe deux possibilités pour créer ces outils de tests. Soit fournir une API simulant un navigateur web, cette API utilisée dans le cadre de JUnit génère l’outil de test. La seconde possibilité est étendre JUnit. Ce framework est facilement extensible. Concrètement une classe peut hériter la classe TestCase. En fait on peut avoir des situations mixtes, où il existe une extension de la classe TestCase, mais où il possible d’utiliser seulement la classe TestCase et l’API de simulations du navigateur web.

Les framework trouvés sont :
httpUnit
htmlUnit
jWebUnit

HtmlUnit et httpUnit sont des API de simulation des navigateurs web. jWebUnit est une extension de JUnit mais peut être utilisée dans la première situation comme API de simulation de navigateur web avec JUnit.

Il existe sans doute d’autres projets similaires. J’ai ainsi trouvé le projet abandonné Jacobie, API de simulation d’Internet Explorer.

Après, on peut se pencher sur les outils de tests pour les applications Web se plaçant à niveau plus haut. Ils utilisent une syntaxe différente du langage java (fichier xml). Il peuvent faire des tests différents des tests unitaires comme les tests de charge.

Les outils trouvés sont :
WebTest (se basant sur htmlUnit)
OpenQA Selenium

HttpUnit

Outil libre(licence MIT, il s’agit d’une licence simpliste très courte de quelques lignes)
Dernière version 1.6.2 du 26/03/2006
projet démarré en 2000, 2 développeurs actifs ?
En fait le site sourceforge ne montre aucune activité au niveau du CVS.

Site web en anglais : http://httpunit.sourceforge.net/

Il s’agit d’une API de simulation d’un navigateur web pour un programme Java. Il est le projet le plus ancien. Il travaille plutôt au niveau des requêtes et des réponses http.
Le site manque de documentation sur le projet. Le forum est peu actif. La dernière version commence à dater.

htmlUnit

Outil libre(licence de type Apache)
Dernière version 1.12 du 10/08/2007
projet démarré en 2002, 8 développeurs actifs.
Site web en anglais : http://htmlunit.sourceforge.net/

Autres sites
Forum en anglais : http://www.nabble.com/HtmlUnit-f2597.html
Blog en anglais : http://mguillem.wordpress.com/

http://htmlunit.sourceforge.net/cgi-bin/browserVersion

script cgi pour créer des browseVersion dans htmlUnit. Instruction permettant de simuler un navigateur donné.

site de la société à l’origine de l’outil : http://www.gargoylesoftware.com
HtmlUnit est selon les explications du site officiel « un navigateur pour les programmes java ». Ce n’est pas au départ un outil de tests, mais un ensemble API de « bas niveau » de simulation des navigateurs web. On peut imaginer de nombreuses utilisations. Utilisé avec le Framework de test java JUnit, il devient un outil de test unitaire côtés présentation.

HtmlUnit a un support correct du JavaScript (dépendant de Rhino). Cependant le support n’est pas total pour les utilisations avancées (AJAX, GWT et librairie prototype), même si certaines simulations sont possibles.

HtmlUnit est utilisé par des outils de tests pour simuler les navigateurs web : JWebUnit, WebTest.

Le site du projet montre la qualité du développement : avec des métriques de code (JDepend Checkstyle), des tests unitaires. L’historique des versions est précise et indique clairement les modifications. Par contre la documentation manque un peu, il existe un des exemples simples mais il manque une documentation ou tutoriel complet.

Les statistiques de téléchargement sont relativement faibles (4702 téléchargements du binaire sur 5 mois).

HtmlUnit et HttpUnit sont assez similaires au niveau de l’objectif mais ont des implémentations différentes. HtmlUnit travaille plus au niveau de la page Html (classe HtmlPage) tandis que HttpUnit se place plus au niveau de la requête http (classe WebResponse). Une classe correspondant à la page Html n’existe pas dans le cas HttpUnit. A priori HtmlUnit est donc plus proche du comportement d’un navigateur web. Par contre, il est moins à l’aise avec des documents html mal écrits. Autre point assez secondaire, pour gérer les collections d’objets HttpUnit retourne souvent des tableaux d’objets tandis que HtmlUnit retourne des listes. Je préfère la seconde solution, plus propre même si en java il s’agit de listes d’objets et il faut connaître précisément le type d’objet utilisé.

jWebUnit

Outil libre (licence GPL)
Dernière version 1.4.1 du 05/05/2007
projet démarré en 2002, 1 développeur actif.

site web http://jwebunit.sourceforge.net/

JWebUnit est un outil de tests unitaires pour les applications web, côtés présentation. C’est une extension de JUnit.

Il s’agit d’une approche différente du htmlUnit plus proche d’un utilisateur web avec une API de plus haut niveau. L’exemple du test du site de Google montre que le code avec JWebUnit est deux fois plus concis qu’avec HtmlUnit.

L’architecture interne de JWebUnit montre que cet outil dépend HtmlUnit et de JUnit. JWebUnit utilise la possibilité « naturelle » d’extension de JUnit. Il étend la classe TestCase en fournissant une classe WebTestCase. JWebUnit fournit de nombreuses assertions supplémentaires adaptées au besoin des tests des applications web.

JWebUnit version stable (1.*) s’appuie sur HtmlUnit (version 1.11). Potentiellement, JWebUnit pourrait utiliser d’autres outils qu’HtmlUnit. C’est l’objectif de la version 2 de JWebUnit en cours de développement avec projet d’utilisation des outils HttpUnit, HtmlUnit Jacobie et Selenium RC (http://jwebunit.sourceforge.net/2.x/index.html). Pour l’instant, seule l’utilisation de selenium et de htmlUnit est possible. L’objectif de selenium est la possibilité d’exécuter le test directement dans un navigateur web.

Jacobie

Outil libre (licence GPL)
Dernière version 1.3 du 26/10/2005
projet démarré en 2005, abandonné en 2006.

Site web en anglais : http://jacobie.sourceforge.net/

Il s’agit d’une API Java pour utiliser Internet Explorer. Une application de cette API est la création de tests unitaires pour les applications web côtés présentation.
Le projet est abandonné depuis 2006. L’administrateur du projet conseille maintenant d’utiliser d’autres outils comme par exemple JWebUnit

Canoo WebTest

http://webtest.canoo.com/

conception complètement différente (automate de test pour les applications web)
utilise en interne HtmlUnitb (version 1.11)
4 développeur actifs, projet existant depuis 2001

OpenQA Selenium
Site Web

http://www.openqa.org/selenium/

Fiche outil httpUnit
1 Général
1.1 Nom du projet :
HttpUnit

1.2 Date création de la fiche
20/04/2008

1.3 Date de mise à jour de la fiche
20/04/2008

2 Présentation
2.1 site web

http://httpunit.sourceforge.net

2.2 objet du projet
outil de test des applications web

2.3 licence
Licence MIT (ou licence X11)

2.4 état du projet (actif/ inactif)
actif
remarque : ce projet est resté inactif plusieurs mois et semble reprendre

2.5 langage (et version)
Java version 1.4

2.6 numéro et date de la dernière version
version 1.6.2 du 26/03/2006

2.7 historique numéro et date de la première version connue
V 0.9 du 19/06/2000

3 Compilation du projet
3.1 résultat de la compilation à partir des sources de la dernière version
compilation ok
remarque l’archive source manque les jars mail.jar et activation.jar (Tomcat4.1)

3.2 type de gestionnaire des versions (CVS/SVN)
SVN
remarques :
commande à passer pour avoir la dernière version
svn checkout https://httpunit.svn.sourceforge.net/svnroot/httpunit/trunk/httpunit

3.3 résultat de la compilation à partir du gestionnaire des version
compilation ok
manque dans répertoire jars plusieurs archives

4 Tests unitaires
4.1 présence de test unitaire (oui / non)
Oui

4.2 framework de test unitaire (junit ou testNG version)
junit 3.8

4.3 résultat des tests unitaires
Non fait

4.4 couverture des unitaires avec Cobertura
Non fait

5 Application
Non fait

6 Notation avec la méthode QQOS
Non fait




You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

4 Responses to “Outils de tests unitaires pour les applications web”

  1. Jean-Marc Vanel Says:

    Je travaille sur mon serveur REST qui donne accès à un moteur de règles [1], et je me demande ce qui est le mieux comme outil de test, et après avoir lu cet article (merci !), j’hésite entre jWebUnit et HttpUnit.

    [1]EulerGUI serveur : http://sourceforge.net/apps/trac/eulergui/wiki/EulerGUIServer

  2. UGG Boots Says:

    This article was very useful for a paper I am writing for my thesis.

    Thanks

    Bernice Franklin

  3. ecommerce Says:

    Un grand merci pour cet article

  4. Summer Camps Says:

    Best you could edit the webpage subject Ait Chaker » Outils de tests unitaires pour les applications web to something more specific for your content you make. I enjoyed the blog post however.

Leave a Reply