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
- Un serveur VCS (Version Control System) ? en l’occurence, Subversion
- Un IDE Eclipse installé
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 :
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 :
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 :
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.
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 :
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 :
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 :
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.
Erwan
12 mai 2010
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
Fabien
13 mai 2010
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!
tati.tanya
16 décembre 2010
Comment on fait pour l’intégration des rapports Logging Selenium dans hudson ?
Helper
4 juin 2012
pouvez-vous nous donner les étapes à suivre pour intégrer le test de framework Q7 dans hudson?
Anonyme
21 mai 2013
pouvez vous nous répondre à propos de l’intégration des rapports Logging Selenium dans hudson ???!!!