L'outil de capture (ou locator) Agilitest

L’outil de capture Agilitest, un outil puissant au service de la robustesse des tests

20 juin 2019

Les clients qui nous ont déjà reçus pour une présentation dans leurs locaux le savent : l’outil de capture Agilitest est un composant essentiel de la solution qui permet de sélectionner les éléments d’UI à capturer et à ré-utiliser dans les tests en tant que cibles d’actions. Présentation détaillée de cet outil au service de l’ergonomie de l’automaticien, et de la robustesse des tests !

Qu’est-ce que l’outil de capture ?

Lors du déroulement d’un test manuel ou d’un test automatisé, il est indispensable de définir la cible de chaque action programmée dans le scénario. Par exemple, une action de type « clic » nécessite un élément cible sur lequel interagir afin que le test clique sur le bon bouton, ou le bon élément d’interface.

C’est l’outil de capture Agilitest – également appelé locator – qui permet de définir ces cibles d’actions. Il permet d’aller loin dans l’identification des composants de vos applications, pour mettre en place des règles de détection sur mesure avec les attributs pertinents.

En pratique, l’outil de capture permet de survoler les éléments d’interface graphique de vos applications web, mobile, desktop, ou les structures de données (XML pour vos webservices SOAP, JSON pour vos webservices REST).

Pour chaque élément ainsi survolé, l’outil de capture vous présente l’arborescence dans laquelle il se situe, et les attributs qu’il possède.

C’est le même outil de capture qui permet de capturer des balises HTML du DOM de vos applications web, les Widgets de vos applications desktop ou mobiles, ou encore une présentation graphique des structures de données de vos webservices.

En ce sens, l’outil de capture Agilitest est graphique, polyvalent, et au service de l’aspect multicanal que nous affectionnons.

Ouverture du locator

L’outil de capture Agilitest ne doit pas être exécuté de but en blanc dès l’ouverture du logiciel, car ce dernier nécessite d’ouvrir l’applicatif sur lequel vous voulez l’exécuter. En toute logique, pour capturer un élément, il faut une application sur laquelle capturer !

Pour commencer, vous devez créer un projet, puis créer un nouveau composant de type Script ATS. Ensuite vous devez créer une action d’ouverture de canal, comme par exemple un canal navigateur Chrome. Vous pouvez exécuter cette première action avec le bouton à droite de la ligne.

Icône « Capturer » sur le coté gauche de la fenêtre Agilitest

Après l’ouverture du canal, vous pouvez enfin ouvrir l’outil de capture avec l’icône « Capturer » en forme de loupe qui se situe dans le bandeau en bas à droite de Agilitest.

Utilisation du locator

L’outil de capture Agilitest est composé d’une « Fenêtre de capture« . Son premier bouton permet de basculer entre le mode de capture HTML (pour les applis web) et le mode de capture système pour les éléments desktop. En haut à droite de cette fenêtre, vous retrouvez les coordonnées x,y du curseur qui peuvent être utiles pour définir des clics excentrés par rapport à l’élément ciblé.

La fenêtre de capture Agilitest (en haut à gauche)

Le survol de la souris de chaque élément de votre application s’accompagne d’une info-bulle spécifiant son type (soit le nom de la balise HTML pour le web, soit le nom du composant GUI pour le desktop).

La touche Ctrl permet de capturer l’élément survolé. Là intervient la seconde fenêtre « Parents de l’élément capturé » qui affiche l’élément capturé (tout en bas) et qui retrace tout ses parents jusqu’à la racine de l’application. Ces parents se déplient en accordéon, et on peut cocher les attributs que l’on souhaite retenir pour effectuer la détection de l’élément. Ces attributs sont de type class, id, name, voire même attributs CSS pour les applications web. Ou encore, ils peuvent être du type TitleBar, Button, TabItem pour les applications desktop.

Fenêtre des parents de l’élément capturé. Notez l’icône « Statistiques » en haut

Enfin, l’icône « Glisser déposer dans l’éditeur » permet d’utiliser cette règle de détection dans l’élément dans une action Agilitest. On peut glisser-déposer soit à la suite des dernières lignes du test (info-bulle Créer une action) soit à l’intérieur d’une ligne d’action dans la partie « Elément d’interface ».

Fonctionnalités avancées du locator

Statistiques sur l’élément capturé

Sur la fenêtre « Parents de l’élément capturé », le bouton Statistiques permet de vérifier si les attributs cochés permettent de reconnaitre l’élément de manière unique sur la page.

Un clic sur le bouton « Statistiques » permet de confirmer ou d’infirmer l’unicité de l’élément coché selon la règle de détection choisie

Selon la structure de l’application, il peut être normal de reconnaitre plusieurs éléments à partir de la même règle de détection (par exemple plusieurs éléments de menu) et on pourra ensuite spécifier dans Agilitest lequel retenir par son numéro d’index.

Mais de manière générale, il est préférable d’identifier les éléments de manière unique, et de recourir pour cela aux id lorsque cela est possible.

Expressions régulières (regex)

Les expressions régulières peuvent être exploitées dans l’outil de capture Agilitest pour matcher des parties d’attributs.

Par exemple, certaine librairies Javascript sont connues pour randomiser certaines parties d’id ou de classes. On observe alors des id du type « btn-XYhSj02-01 ». On devine que la première partie « btn » est fixe et que la seconde partie « 01 » également, seule la partie centrale est suceptible de varier.

On peut alors matcher cet id avec une expression régulière du type btn-.{7}-01.

Possibilité de renseigner des expressions régulières au lieu de valeurs textuelles

L’utilisation des expressions régulières apporte une couche de difficulté supplémentaire, mais leur utilisation permet de traiter simplement les cas de figure les plus délicats. La difficulté associée aux expressions régulières est donc un moindre mal.

Reconnaissance graphique d’éléments

La reconnaissance graphique est possible avec Agilitest, elle permet de détecter la présence d’un élément sur l’application et d’en compter le nombre d’occurrences. S’il n’est pas conseillé de délaisser le système de capture par attributs HTML, la reconnaissance graphique est complémentaire dans des cas d’usage bien précis.

Par exemple, lorsque l’élément voulu ne possède aucun id ni aucune classe exploitable, la reconnaissance graphique est exploitable. Et encore, même sur les applications les moins bien dotées en attributs, des astuces existent.

Lorsque l’application comporte une inclusion de code Java, Flash, ou 3D, l’outil de capture ne sera pas toujours capable de plonger dans l’arborescence de l’application pour présenter les différents éléments d’interface de manière structurée. Dans ce cas, la reconnaissance graphique vous permet d’effectuer des actions ou des contrôles même en présence de framework de programmation peu coopératifs avec Agilitest. En savoir plus sur la reconnaissance graphique.

Présentation vidéo de la fonctionnalité de capture

Voici ci-dessous une vidéo de 7 minutes qui présente toutes les fonctionnalités développées ci-dessus. Télécharger la vidéo.

Présentation de l’outil de capture Agilitest en 7 minutes

Pourquoi nous avons développé un tel outil

La simplicité d’abord

Agilitest est un produit qui se veut simple et utilisable par une équipe de validation fonctionnelle non experte en développement logiciel.

Par conséquent, tout ce qui fait appel à un background technique en développement, ou qui est trop difficile pour un non-expert est écarté.

Pour la mise au point de cet outil, le paradigme KISS s’est naturellement appliqué pour proposer un outil simple et performant.

Locator Agilitest vs. outils pour les développeurs

Certains développeurs web peuvent se demander l’intérêt de l’outil de capture Agilitest par rapport au panneau d’outils pour les développeurs proposés par les navigateurs avec la touche F12.

La question ne se pose pas longtemps tant l’outil de capture Agilitest se situe à un niveau supérieur :

  • l’outil de capture Agilitest est multi-navigateurs : Chrome, Firefox, IE, Edge, Opera sont traités de manière identique ;
  • l’outil de capture Agilitest est multi-canal et utilisable sur : applications web, webservices, applications desktop, applications mobiles ;
  • l’outil de capture Agilitest ne se limite pas à survoler les éléments, il permet de régler finement les règles de détection et de tester leur unicité sur l’écran de l’application ;
  • l’outil de capture Agilitest propose la reconnaissance graphique d’éléments en plus de la reconnaissance des attributs HTML.

Locator Agilitest vs. XPaths

De nombreux logiciels du secteur du test utilisent XPath comme système d’interrogation et de détection d’éléments dans une application.

La détection est bien souvent assistée, et permet une relative facilité dans la création d’une expression XPath. Cette dernière est donc créée et utilisée, bien souvent sans que l’automaticien ni le testeur fonctionnel n’aient eu l’occasion de la relire et de la réviser au vu de leur connaissance de l’application.

Et à vrai dire… c’est souvent mieux comme cela tant les expressions XPath générées automatiquement peuvent être lourdes à lire par un être humain. Et lorsque l’application évolue lors d’une mise à jour, ces expressions XPath se cassent bien souvent, entrainant un test KO et un besoin de maintenance… jusqu’à la prochaine mise à jour de l’application ! Cela est particulièrement vrai avec les frameworks Javascript (comme ExtJS) qui randomisent les id d’éléments rendant leur utilisation difficile.

Cela fait à notre avis deux raisons de ne pas utiliser la technologie XPath dans Agilitest :

  • Pas d’expressions XPath générées automatiquement sans révision de l’automaticien ou du testeur fonctionnel
  • Pas de test systématiquement KO après mise à jour de l’application.

Enfin, l’outil de capture Agilitest nous semble plus simple et agréable à utiliser.

Si vous êtes un utilisateur XPath convaincu, n’hésitez pas à partager votre retour d’utilisation avec nous.

Conclusion

Et voilà, à présent vous savez tout sur l’outil de capture Agilitest, de son fonctionnement jusqu’à la manière dont il se compare avec d’autres outils du secteur.

Si nous devions résumer les principales forces de ce locator, ce serait sa simplicité pour l’utilisateur quelle que soit la technologie employée, et la robustesse des tests atteinte grâce à son utilisation.