Outil de test: Automatiser vos tests UI avec Selenium

SELENIUM EN BREF

Contrairement à ce que beaucoup de personnes pensent, Selenium n’est pas un outil de test. Il ne vous permettra pas d’avoir des scripts avec des notions de tests, étapes, des vérifications (assertions), des résultats et reporting de test.

Selenium, c’est un automate de navigateurs. Plus précisément, il propose une suite d’outils pour interagir avec des navigateurs et planifier les exécutions des scripts. Vous pouvez l’utiliser à des fins de tests mais aussi pour tous autres besoins nécessitant de manipuler un navigateur.

Pour cela, Selenium peut être découpé en 3 grandes fonctionnalités:

  • Selenium WebDriver
  • Selenium IDE
  • Selenium Grid

Selenium WebDriver

Selenium WebDriver est celui qui nous intéresse particulièrement car c’est lui qui sera au cœur de la manipulation du navigateur.

Selenium WebDriver est disponible dans les langages Ruby, Java, Python, C#, C# NuGet et Javascript.

Il supporte officiellement les navigateurs Firefox, Chrome, Opera, Edge, IE11, Safari sur Windows, Linux ou encore MacOs. Pour maintenir ces supports à jour, Selenium s’appuie en fait sur des WebDriver le plus souvent développés et maintenus par des communautés dédiées. La liste est disponible dans la section « Browser » du site officiel.

Pour des tests sur téléphones mobiles (applications natives, hydrides ou web mobile), il faudra se tourner vers Appium.

Selenium IDE

C’est une extension Firefox ou Chrome pour rapidement faire des scripts en mode enregistrement/rejeu.

Ces scripts sont ensuite exportables en langages de plus haut niveau cités ci-dessus mais demanderont d’être retravailler pour assurer une maintenabilité dans le temps.

Selenium IDE n’apporte pas beaucoup d’intérêt si votre besoin est de construire un framework d’automatisation. Il sera en revanche pratique pour démarrer sur Selenium ou faire des rapides scripts de reproduction de bug pour les développeurs.

Selenium grid

Selenium Grid va vous être utile pour construire votre architecture de test et gérer l’évolutivité de vos exécutions.

C’est avec le grid que vous allez orchestrer des exécutions sur plusieurs machines avec divers OS et divers navigateur. Le grid sera capable de rediriger l’exécution vers la bonne machine.

Pour aller encore plus loin sur l’évolutivité et célérité de votre infrastructure d’exécution, vous pouvez allez voir Zalenium qui vous ouvrira le monde de Docker et Kubernetes.

POINTS FORTS ET AXES d’AMÉLIORATION

Selenium a beaucoup de points forts en commençant par les nombreux langages qu’ils supportent. Le support de quasiment tous les navigateurs du moment en fait un bon candidat pour vos tests UI.

Selenium est gratuit (sous licence Apache 2.0) et dispose d’une très forte communauté (souvent anglophone): forum, blog, articles sur le minitry of testing et la TAU qui propose des cours.

Toutefois, tout n’est pas si simple. Le plus gros frein que je vois à Selenium est le fait qu’il n’embarque pas nativement un framework de test. Il vous faudra en trouver un compatible avec le langage que vous avez choisi (ex: Junit pour Java, Pytest pour Python). Quelques initiatives ont vu le jour pour simplifier tout ça comme Robot Framework (Python) ou NoraUI (java).

Autrement dit, des compétences en développement logiciels seront requises ainsi que des compétences en architectures logicielles pour réduire les coûts de maintenance à terme (approches POM, principes SOLID, …).

Notons qu’on entend parfois dire que Selenium est instable. La plupart du temps, c’est le code du test et l’usage de Selenium qui est fait qui rend le test « flaky ».

Il est aussi vrai que dans quelques cas, les problèmes viennent du WebDriver. Et c’est là le second gros axe d’amélioration. Le webDriver est un logiciel qui peut lui même être défaillant. Cette dépendance au webDriver vous obligera à devoir gérer ces derniers. Souvent une montée de version de navigateur oblige à monter de version de webDriver. Et selon les communautés, des évolutions majeures (« breaking changes » en anglais) surviennent et vous obligent à adapter vos tests.

CONCLUSION

Selenium sera certainement un très bon allié pour atteindre vos besoins d’automatisation des tests UI.

Même si l’outil est gratuit, gardez en tête que le coût de mise en place et maintenance sera certain et dépendra de vos compétences en développement

Si vous débutez en automatisation, n’avez jamais développé ou n’avez aucune idée de ce qu’est une bonne architecture logiciel, il vous sera difficile d’obtenir un résultat satisfaisant (dans le sens où vous allez y passer plus de temps que vous espériez). L’avantage de Selenium, c’est que vous allez pouvoir vite monter en compétence grâce à sa très grande communauté.

Publié par

Benjamin Butel

Passionné de test logiciel depuis plus de 10 ans, je prends plaisir à partager ma passion sur La Taverne, au sein du Ministry of testing Rennes, sur LinkedIn et Twitter (@BenjaminButel)

9 commentaires sur « Outil de test: Automatiser vos tests UI avec Selenium »

  1. Bonjour Benjamin,

    Merci pour l article .
    J’ai une petite question :j’ai un petit souci avec les scripts selenuim sous java , parfois mes tests passent parfois ils bloquent , j’essaie de changer des explicitly /implicitely. Wait qui fonctionnent parfois et parfois non , quand je vérifie les log ,je trouve que selenuim clique des sur le champs demandé et des fois non , avez vous une explication svp?

    J’aime

  2. Bonjour
    je vous remercie pour cet article, Selenium est un outil que je viens de découvrir dans ma formation de testeur ; ayant seulement des notions de Python, je me demande quel degré de maitrise un testeur doit avoir en développement pour faire de l’automatisation de façon autonome?
    Faudra t’il devenir un DEV ? si oui, n’est-ce pas trop demandé aux testeurs d’avoir 2 casquettes?
    Merci

    J’aime

    1. Bonjour,
      Le degrés de maitrise va essentiellement dépendre du contexte dans lequel on intervient.
      Si le rôle est d’être un automaticien alors des compétences de dev seront clairement requises. Et cela même si des outils no code ou codeless émergent. L’automaticien devra aussi maitriser des outils avec code pour être pertinent dans ses argumentations.

      Pour un testeur dans un contexte où il est peu amené à côtoyer des équipes de dev, ses appétences techniques se focaliseront sur les besoins directement liés au métier sous test et les outils associés. on y trouvera peut-être des outils d’automatisation no code/codeless mais pas toujours 🙂

      Enfin, dans un contexte agile, les compétences du testeur sont seront fortement challengées car il devra avoir des appétences métier et techniques (dev, ops, securité, ….) sans parler des compétences orientées vers l’humain. Je vous conseille de lire le lire de Janet Gregory et Lisa Crispin, Agile Testing Condensed qui en parle. Une version fr est disponible à la vente ici: https://leanpub.com/agiletestingcondensed-fr

      En espérant vous avoir répondu au mieux

      J’aime

Laisser un commentaire