Archive for août 2008

L’outil de test des applications web WebDriver

août 12, 2008

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.