· Tech watch

Intégration pas à pas de tests Selenium dans Hudson

Pour n’importe quel projet informatique, il est capital de satisfaire les spécifications fonctionnelles. Pour un projet web, ces spécifications peuvent bien souvent être traduites en cas d’utilisation et plus particulièrement en tests Selenium.

Pour parfaire la qualité d’un projet il devient tout de suite intéressant d’inclure ces tests fonctionnels dans un processus d’intégration continue, dans notre cas, avec Hudson.

Nous allons voir dans cet article comment mettre en place, pas à pas, ce système.

Pré-requis

Installation de Tomcat

Pour fonctionner, Hudson nécessite un conteneur de servlet. Nous allons utiliser Tomcat dont la dernière version peut être téléchargée sur le site officiel.

Configuration de Tomcat

Pour pouvoir déployer Hudson, nous allons devoir accéder au Tomcat Manager. Ceci nécessitera une authentification qui ne sera possible qu’après avoir renseigné le fichier conf/tomcat-users.xml de la manière suivante :

<tomcat-users>
 <role rolename="manager"/>
 <user username="admin" password="admin" roles="manager"/>
</tomcat-users>

Installation d’Hudson

Dans un premier temps, nous allons télécharger la dernière version d’Hudson. Il faut maintenant lancer Tomcat par le startup adapté à votre système d’exploitation dans le répertoire bin de Tomcat. Dans le Tomcat Manager disponible à l’adresse http://localhost:8080/manager/html/, nous allons uploader le WAR d’Hudson depuis la section WAR file to deploy. Nous pouvons désormais accéder à Hudson depuis l’adresse http://localhost:8080/hudson/.

Installation de Ant

Pour lancer l’exécution des tests Selenium dans Hudson, nous allons utiliser Ant.

Remarque : Hudson est normalement capable de télécharger Ant et un JDK tout seul mais cette fonctionnalité ayant posé quelques problèmes durant la rédaction de cet article, nous allons l’installer manuellement.

Après avoir téléchargé l’archive, décompressons-la dans un répertoire de notre choix.

Installation de l’extension Selenium pour Firefox

Pour faciliter la saisie des tests Selenium, nous allons installer la dernière version de Selenium IDE depuis la page de téléchargements du site officiel de Selenium. Après un redémarrage de Firefox, Selenium IDE devrait figurer dans le menu Outils. Si nous cliquons dessus, l’interface suivante devrait s’ouvrir :

L’interface de saisie de test Selenium

Création d’un test avec Selenium IDE

Nous allons créer notre premier scénario Selenium visant à tester un résultat de recherche sur Google France. Pour cela, ouvrir un onglet à cette adresse puis afficher l’IDE. Par défaut, l’IDE enregistre nos interactions avec le navigateur. Nous allons maintenant effectuer les actions suivantes :

    • Renseigner le champ de recherche avec clever age
  • Cliquer sur le lien vers la page officielle de Clever Age

L’interface devrait contenir les informations suivantes :

Saisie du premier test Selenium

Nous pouvons maintenant arrêter l’enregistrement en appuyant sur le bouton rouge en haut à droite de l’IDE. Nous allons maintenant enrichir notre scénario d’un test sur le titre de la page. Pour cela nous allons ajouter une nouvelle ligne renseignée comme ceci :

    • Commande : assertTitle
  • Cible : Clever Age, digital architecture

Si nous lançons le test en l’état grâce au bouton Play entire test suite, nous obtenons un échec. En effet, les temps de chargement de la recherche Google et du site de Clever Age ne sont pas pris en compte et les actions sont effectuées trop rapidement. Nous allons donc ajouter deux pauses de 5000 millisecondes à chaque chargement. Le scénario devrait maintenant ressembler à ceci :

Le scénario enrichi des pauses et d’un test

Toutes les étapes du scénario sont vertes, le test est donc concluant. Nous allons donc maintenant sauvegarder ce scénario en tant que test JUnit. Pour cela ouvrir le menu Fichier, Exporter le test sous… puis sélectionner Java (JUnit) – Selenium RC. Nous allons sauvegarder notre test sous le nom MyFirstSeleniumTest.java.

Préparation d’un projet Eclipse

L’utilisation précédente de Selenium IDE nous a permis de créer facilement un test fonctionnel. L’export au format Selenium RC nous permettra d’automatiser ce test. Pour réaliser cette étape, nous devons avoir au préalable créer un projet (par exemple TestsSelenium) sur notre serveur Subversion. A partir de là, nous allons, au sein de la perspective SVN Repository Exploring d’Eclipse, faire un checkout du tronc en tant que nouveau projet Java.

La création du projet depuis Subversion

Nous allons ensuite ajouter un répertoire lib contenant :

    • junit-4.7.jar disponible ici
  • selenium-java-client-driver.jar disponible ici dans le projet Selenium RC

Ces deux jars vont permettre de résoudre les dépendances du test Selenium saisi précédement dans l’IDE que nous allons ajouter maintenant dans le package test du répertoire src. Nous allons maintenant ajouter dans un répertoire ant le fichier build.xml qui va orchestrer l’exécution des tests. Ce fichier est une version modifiée pour nos besoins de celui-ci. Le projet devrait maintenant ressembler à ceci :

L’arborescence du projet

Installation de Selenium RC

Pour exécuter le test Selenium saisi précédemment, nous allons installer un serveur d’exécution permettant de piloter les différents navigateurs installés sur la machine de test. Nous allons télécharger la dernière version de Selenium Remote Control sur le site officiel. Après avoir décompressé l’archive, lancer le serveur avec la commande suivante :

java -jar [Chemin vers l'archive décompressée]\selenium-server.jar -interactive

Configuration d’Hudson

Hudson doit maintenant être configuré pour fonctionner avec Ant. Nous allons donc spécifier dans le menu Administrer Hudson -> Configurer le système le chemin d’installation du JDK et de Ant.

Lors de la réalisation ce cet article, l’installation automatique s’est révélée erratique, nous allons donc opter pour l’installation manuelle comme ceci :

Configuration d’Hudson

Création d’un nouveau Job Hudson

Nous devons maintenant créer un projet d’intégration continue, un job avec le menu Nouveau job de la page principale. Utiliser le type Construire un projet free-style après l’avoir nommé.

Après validation, Hudson devrait afficher les détails du projet que nous allons renseigner comme ceci :

Gestion de code source

  • Subversion
  • URL du repository : l’URL du dépot SVN où réside le projet Eclipse réalisé ultérieurement (Par exemple svn://localhost/TestsSelenium)

Appeler Ant

  • Version de Ant : la version de Ant que nous avons installé précédement
  • Cibles : test
  • Fichier de build (dans la partie avancée) : Le chemin vers notre fichier de build (Par exemple trunk/ant/build.xml)

Exécution de notre première série de test

Maintenant que notre job est prêt, nous allons lancer sa première exécution qui devrait apparaitre dans le lanceur de build d’Hudson. Une fois l’exécution finie, le résultat devrait normalement être bleu pour signifier la réussite. Si nous cliquons sur le numéro de build (#1 si c’est la première exécution), nous pouvons obtenir plus de détails dans le console output :

Succès du job de compilation/test

Conclusion

Le couplage de Ant, Selenium et Hudson nous permet de mettre en place relativement facilement un ensemble de batteries de tests, et de mesurer leur évolution au fil du temps.

Selenium IDE nous a surtout aidé à gagner du temps dans la conception du test, et d’en gagner pour les futurs tests à venir.

5 commentaires

  1. hudson n’a pas besoin de tomcat pour fonctionner. il suffit d’exécuter le jar, et ça marche. de même des dépôts existent pour l’installer rapidement dans n’importe quelle distribution GNU/Linux

  2. Très bon article !
    Cependant votre solution reste un peu légère vis à vis des résultats issus des tests Selenium…
    JUnit ne permet pas de différencier les résultats des méthodes Verify et Assert.
    L’intégration des rapports Logging Selenium serait, à mon sens, l’idéal dans Hudson!

  3. Comment on fait pour l’intégration des rapports Logging Selenium dans hudson ?

  4. pouvez-vous nous donner les étapes à suivre pour intégrer le test de framework Q7 dans hudson?

  5. pouvez vous nous répondre à propos de l’intégration des rapports Logging Selenium dans hudson ???!!!

Les commentaires sont désormais fermés.