Selenium : Outil de tests fonctionnels libre

#outil#selenium#test#usine logicielle

Par rapport aux offres concurrentes, quelle valeur peut-on accorder à l’outil de tests fonctionnels Selenium, logiciel libre aujourd’hui relativement bien abouti ?

L’histoire Selenium

L’histoire commence en 2004, dans la société ThoughtWorks. Jason Huggins développe une solution nommée « JavaScriptTestRunner » afin d’évaluer les coûts et les temps de latence d’une application web interne. En présentant son travail à ses collègues, ces derniers voient un potentiel important dans cet outil, notamment pour une réutilisation à d’autres applications web. Ainsi, dans le courant de l’année 2004, Paul Hammant propose de créer un projet open source d’outil de test : Selenium. L’idée est d’avoir un outil dont le « moteur » supporte n’importe quel langage de programmation. ThoughtWorkers se sert alors de Selenium dans ses bureaux pour tester des projets commerciaux et contribue ainsi à améliorer Selenium. L’outil profite de nombreux ajouts de fonctions, du fait que le projet soit open source, et dispose maintenant d’une communauté fixe appelée « Selenium Contributors » (Contributeurs de Selenium), dont une partie d’entre eux sont des employés de Google. Ces derniers s’occupent ainsi de la pérennité et du support de Selenium.

A quoi servent les outils d’industrialisation de tests fonctionnels ?

De nombreux éditeurs et développeurs travaillent sur des projets où les différentes versions de leur projet se succèdent, sans pouvoir garantir le bon fonctionnement des modules antérieurs précédemment validés. Ainsi, tout développeur doit à un moment donné être testeur pour affirmer si, oui ou non, le projet est toujours opérationnel dans sa globalité. Cette phase de test qui consiste à valider que l’ajout de nouveaux modules n’impacte pas les plus anciens, s’appelle le test de non régression. Cette phase peut être menée manuellement pour des projets de petite envergure mais devient vite problématique lorsque les projets sont plus conséquents. Ainsi, plutôt que d’effectuer les tests manuellement, on peut opter pour une solution d’automatisation. Grâce à des outils de tests fonctionnels, on peut générer les scenarii de tests d’une application en enregistrant toutes les actions effectuées par l’utilisateur (mouvement de souris, clic sur une zone, frappe au clavier, etc.…) via un assistant ou à partir d’un programme. On obtient un script de test qui peut être rejoué de manière automatique, exécutant chacune des étapes enregistrées. Celui-ci détecte les erreurs rencontrées, qui sont des différences par rapport aux résultats attendus, et va généralement proposer à l’issue du rejeu un rapport récapitulatif synthétisant les différentes anomalies relevées.

La suite Selenium

Selenium est constitué d’une suite d’outils destinée à automatiser des tests d’application web exclusivement (Internet, Extranet, intranet). Selenium ne permet en effet de tester que les applications accessibles depuis un navigateur, sans prise en compte des clients riches (Ajax, ExtJS, GWT…). Ces outils sont tous des logiciels développés par la communauté Open Source. Loin des tarifs exercés par les différents éditeurs de ce genre de solution, Selenium est proposé gratuitement puisque libre et dispose de mises à jour régulières mises en ligne sur le site web de la communauté grâce à une participation active autour de cet outil. Le premier outil proposé fut Selenium Remote Control en mars 2006. Il en découla d’autres outils venant compléter l’offre, notamment Selenium IDE en juin 2008, Selenium GRID, Selenium Core, CubicTest. La communauté s’étant élargie tout au long de ces années, ces outils disposent aujourd’hui d’un support adéquat grâce à l’élaboration de documentation diffusée sur le site, mais aussi grâce aux nombreux forums de discussions traitant sur les divers problèmes rencontrés par les utilisateurs. Les débuts sont donc fortement facilités pour appréhender au mieux ces outils.

Selenium s’exécute sur tous systèmes d’exploitation mais certaines fonctionnalités de l’offre se limitent à Firefox. Ces outils permettent de travailler sur les langages les plus répandus, tels que C#, JAVA, Perl, PHP, Python, Ruby. Pour des tests fonctionnels, la suite propose les outils suivants :

  • Selenium IDE :

Cet outil est la base de la suite. Il se présente sous forme d’extension à installer sous Firefox et permet l’enregistrement des scenarii de tests d’applications web à partir de ce navigateur ainsi que l’exécution de ces tests. C’est un environnement de développement qui permet d’enregistrer son test, de le rejouer pour vérification et enfin de l’exporter en le générant sous différents langages. Ainsi, ce code généré peut s’exécuter sous Selenium RC, permettant alors de mettre par exemple en place des conditions. Attention, toute modification manuelle du code entraîne l’impossibilité de réutiliser l’outil Selenium IDE par la suite.


Figure 1 : Enregistrement d’un scénario à partir de Selenium IDE

  • Selenium RC :

Selenium RC se comporte comme un serveur qui permet de contrôler le navigateur web (IE7, Firefox, Safari, Opéra…) en local ou sur un autre ordinateur. Pour cela, Il exécute le code généré au préalable par Selenium IDE.

  • Selenium Grid :

Selenium Grid permet de lancer plusieurs instances de Selenium RC afin d’exécuter les tests sur différents systèmes d’exploitation et différents navigateurs.

  • CubicTest :

Cet outil intègre les mêmes fonctions que Selenium IDE mais se détache de Firefox et opère sous Eclipse. De plus, son principal avantage est de proposer une vision graphique sous Eclipse des tests enregistrés afin d’en avoir une meilleure visibilité. Il permet ainsi de rester sous un même IDE, Eclipse en l’occurrence, tout au long de l’élaboration d’un test.


Figure 2 : Edition d’un test avec l’interface graphique de CubicTest (sous Eclipse)

Points forts et Points faibles

Points Forts :

  • Simplicité pour l’enregistrement de test
  • Nombreux langages supportés
  • Gratuité

Points Faibles :

  • Edition du code final difficile (si le test intègre des conditions)
  • Utilisation d’un autre IDE souvent essentiel (ex : Eclipse)
  • Multiplicité des outils : obligation de faire un choix entre la simplicité et la puissance.

Conclusion

La suite Selenium fait partie des rares outils d’industrialisation de tests fonctionnels libre et gratuit. La solution offre par ailleurs un enregistrement aisé des tests et les différents outils sont dans l’ensemble simples à utiliser et accompagnés d’une documentation officielle mise en ligne sur le site web. En revanche, ses nombreuses évolutions ont ce jour abouti à une multiplicité importante des outils, se différenciant des offres payantes réunissant toutes les fonctions dans une même interface. Selenium se révèle par ailleurs limité lors de l’édition de scenarii complexes, obligeant à passer par un IDE externe tel que Eclipse, ce qui se traduit en phase de production par du codage bas niveau. Dans le cadre de projets d’entreprise voués a évoluer régulièrement dans le temps, l’offre Selenium peut alors se révéler trop restrictive, les scripts générés ne pouvant être maintenus en s’appuyant sur les fonctionnalités offertes par les différents outils composant l’offre.