selenium

Selenium - cinématiques et tests unitaires pour application web

Présentation de Sélénium

Selenium est l'outil idéal pour automatiser des cinématiques web et en sortir en un rien de temps des tests unitaires! Selenium est à la base un plugin Firefox permettant d'enregistrer à la volée une séquence de commandes exécutées sur votre navigateur web afin de les rejouer.
Il permet d'exécuter la séquence en mode debugger (avec breakpoints, en pas à pas etc...), et d'ajouter facilement des instructions : assertion, test de contenu d'un champ, attente de fin d'un appel Ajax etc...
La séquence est ensuite enregistrable au format HTML, et peut être partagée avec d'autres développeurs.
Elle peut également être exportée dans tous types de langages (PHP, Java, Python, Perl...) sous la forme de tests unitaires, pouvant être exécutés côté serveur.

Pour installer Selenium :
sous Firefox, installer le module Selenium IDE disponible à l'URL suivante : http://release.seleniumhq.org/selenium-ide/1.0.8/selenium-ide-1.0.8.xpi.
Des plugins s'interfaçant à Selenium sont également disponibles, tels que Highlight Elements pour mettre en couleur l'élément concerné par l'instruction en cours, Selenium IDE Buttons pour disposer des boutons d'ouvertures à ajouter à la barre d'outils, Flow Control pour pouvoir ralentir la vitesse d'exécution du script etc...

Pour exploiter les tests unitaires de Selenium sous Netbeans (pour la ligne de commande, on verra une autre fois, on est plus au moyen-âge) :
1) Installer PEAR (procédure sous Windows) :

  • Assurez vous que le répertoire de PHP est dans votre PATH
  • Exécutez php go-pear.php
  • Répondez aux questions, et installez PEAR dans un répertoire tout propre (comme c:/www/pear)
  • Executez le fichier PEAR_ENV.reg du répertoire de PEAR qui découle de l'installation
  • Si ce n'est pas le cas, ajouter le répertoire de PEAR contenant le fichier pear.bat au PATH
  • Récupérez la liste des mises à jour avec pear update-channels
  • Mettez à jour les paquets avec pear upgrade-all
  • Assurez vous que le répertoire des librairies de PEAR (sous-répertoire PEAR) est inclus dans le fichier php.ini

2) Installer PHPUnit :

  • Ajoutez les canaux :
  • pear channel-discover pear.phpunit.de
  • pear channel-discover components.ez.no
  • pear channel-discover pear.symfony-project.com
  • Ajoutez le paquet PHPUnit : pear install phpunit/PHPUnit

3) Faire tourner tout ça sous Netbeans :

  • Installer le plugin Selenium Module for PHP
  • Aller dans Outils/Options/PHP/Unit Testing et définir le chemin menant vers phpunit.bat
  • Attendre que Netbeans finisse de ramer
  • Pendant ce temps, ajouter le chemin menant vers firefox.exe au PATH (Netbeans doit être redémarré pour qu'il soit pris en compte)
  • Attendre que Netbeans finisse de ramer
  • Si le chemin vers phpunit.bat est bon, les options Run tests etc... devraient être disponible en faisant un clic-droit sur le projet

4) Ajouter un test Selenium :

  • Faites Nouveau fichier -> Selenium Test Case for PHP
  • La première fois sur un projet, Netbeans va vous demander où stocker les fichiers de test. Mettez ça dans un beau répertoire, par exemple tests, quelque part dans votre projet
  • Donnez lui un super nom
  • Hop! Un fichier de test vide est crée. Il contient une fonction setUp() qui initialise les fixtures, et une fonction testMyTestCase. Netbeans ajoute en dessous de Source File un regoupement nommé Selenium Test Files, qui pointe justement vers le répertoire test
  • Il ne vous reste plus qu'à replacer allègrement le code PHP exporté par Selenium dans votre test
  • Clic droit sur le projet -> Run Selenium Tests lance les tests unitaires Selenium, et vous dit s'ils se sont bien passés. Vous pouvez maintenant savoir si vous avez tout fait foirer avec vos régressions.

Voilà. Il n'y a plus qu'à lancer les tests Selenium en ligne de commande sur un serveur de dév, depuis une tâche planifiée ou depuis un commit post-hook du SVN, et l'on obtient un serveur d'intégration continue. (enfin je m'emballe)

Articles liés