État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 4.1: Automatisation assistée

Chapitre 2 par Micro Focus

Abaisser les barrières de l'automatisation des tests avec Computer Vision

Métier ●●●○○
Technique ●●○○○

Download the "Section 4.1: Automate & See" as a PDF

Use the site navigation to visit other sections and download further PDF content

 

By submitting this form, I understand that my data will be processed by Sogeti as described in the Privacy Policy.

L'automatisation des tests basée sur l'IA réduit considérablement le temps nécessaire à la conception, à la construction et à la maintenance des tests, car les objets sont identifiés simplement en les regardant. En outre, les équipes peuvent utiliser le même test sans changement sur plusieurs appareils et plateformes.

La montée en puissance des efforts de transformation numérique pousse les organisations à effectuer des tests sur un nombre croissant de plateformes et à obtenir les résultats le plus rapidement possible. Les tests manuels n'étant pas assez rapides, les équipes se tournent vers l'automatisation des tests. Mais les techniques traditionnelles d'automatisation des tests logiciels ne sont efficaces que jusqu'à un certain point. Elles reposent sur l'identification des objets à l'écran par leur représentation interne, comme les coordonnées, le nom de la classe, le type, la position spécifique dans le code HTML d'une page Web, ou de nombreuses autres options possibles. Cette méthode d'identification des objets peut être très fragile. Même un petit changement dans la description de l'objet peut faire en sorte que le moteur d'exécution des tests ne trouve pas l'objet. Les inconvénients de ces techniques empêchent les équipes de faire évoluer leur automatisation des tests vers les niveaux dont elles ont besoin.

Les défis les plus courants de l'automatisation des tests sont les suivants :

  • Obstacles à la création de tests: Il faut du temps pour construire et concevoir des tests efficaces, et beaucoup d'efforts sont nécessaires pour identifier de manière unique les objets à l'écran qui font partie du test.
  • Acquisition des bonnes compétences : Tous les membres de l'équipe ne possèdent pas les compétences nécessaires pour créer et maintenir des tests automatisés efficaces et réutilisables.
  • Couverture insuffisante des tests : Les équipes doivent prendre en charge un éventail toujours plus large de plates-formes, de dispositifs et de systèmes d'exploitation, ce qui oblige les testeurs à personnaliser les tests pour chaque environnement.
  • Maintenance incessante des tests : Une modification mineure de l'interface utilisateur peut faire échouer les tests, même si le flux du test n'est pas affecté. Les tests qui s'appuient sur des propriétés d'objets uniques peuvent être sensibles à ce type de changement, qui se produit fréquemment. Par conséquent, les testeurs doivent mettre à jour les tests et s'assurer qu'ils fonctionnent toujours sur chaque environnement à prendre en charge.
  • Le temps d'exécution des tests est trop long : Même si un ensemble de tests s'exécute sans interruption, l'exécution complète de tous les tests peut prendre beaucoup de temps.

Nos recherches chez Micro Focus ont révélé que la détection automatisée des objets est la clé pour réduire ces obstacles - et même en éliminer certains complètement. Si un humain n'a pas besoin de savoir comment un objet de l'interface utilisateur est représenté en interne, il devrait être possible de développer une approche d'identification des objets tout aussi agnostique et pilotée par la machine.

Techniques d'IA pour la détection automatique d'objets

Notre objectif était de développer un moteur d'IA qui reconnaît les objets sans connaître leur représentation interne. Cet objectif a été atteint en combinant des algorithmes basés sur l'IA qui reconnaissent les objets de manière précise et cohérente, quel que soit le dispositif ou l'environnement.

 

Figure: UFT One using computer vision to identify objects while recording a test

 

Figure: UFT One utilisant la vision par ordinateur pour identifier des objets pendant l'enregistrement d'un test

 

Par exemple, une étape de test peut nécessiter de cliquer sur l'icône du panier d'achat sur une application mobile. Le moteur d'IA doit être capable de localiser l'icône du panier d'achat sur l'écran actuel sans le savoir :

  • Si l'écran est sur un appareil mobile.
  • Si l'appareil fonctionne sous Android ou iOS.
  • Si l'écran est un navigateur de bureau.
  • S'il s'agit de Chrome, Firefox, Edge ou d'un autre navigateur.

En bref, l'étape "Cliquer sur le panier" devrait fonctionner en toute circonstance avec le moteur d'IA.

Cette capacité a été mise en œuvre avec succès dans la famille de produits d'automatisation des tests logiciels Micro Focus UFT. Les techniques d'IA utilisées dans le moteur comprennent la vision par ordinateur par le biais d'un réseau neuronal artificiel et la reconnaissance optique des caractères.

Computer vision

Computer Vision (en français "vision par ordinateur") est la capacité d'extraire des informations des images. Notre moteur d'IA comprend la composition d'un écran et le décompose en objets uniques qu'il contient.

En termes d'architecture, nous avons implémenté le moteur d'IA comme un module séparé. Plutôt que de le limiter à un produit spécifique, n'importe lequel de nos produits de test peut théoriquement utiliser le moteur. Le premier produit qui s'intègre au moteur d'IA est Micro Focus UFT One, notre outil phare d'automatisation des tests.

Un test UFT One GUI consiste en un script de test qui contient plusieurs étapes de test. Une étape est une déclaration qui exécute une action sur l'application testée (AUT). Un exemple de pseudo-code pourrait être "Cliquez sur le panier" ou "Entrez 2 dans la zone de texte 'Combien d'articles'". Notez que bien qu'un script de test typique comprenne d'autres types d'étapes comme des calculs ou une logique d'application, cette discussion concerne les étapes impliquant des objets à l'écran, comme leur manipulation, ou l'exécution de points de contrôle ou de validations sur ceux-ci.

Lorsque le moteur d'exécution de tests d'UFT One rencontre une étape avec un objet, il présente l'objet au moteur d'IA, qui invoque son algorithme CV pour rechercher l'objet à l'écran. S'il trouve l'objet, le moteur d'IA renvoie des métadonnées sur son emplacement au moteur d'exécution des tests d'UFT One. Celui-ci exécute alors l'action requise sur l'objet : cliquer dessus, saisir du texte, le sélectionner, etc.

Plus important encore, le moteur d'IA ne sait rien de l'implémentation de l'objet. Il traite l'objet comme une image, quel que soit le dispositif ou la plateforme d'où il provient.

La capacité de Computer Vision est soutenue par un réseau de neurones artificiels (ANN), une structure en couches d'algorithmes qui classifient les objets. Nous entraînons notre ANN avec un grand nombre d'objets visuels, ce qui donne un modèle qui identifie les objets qu'il est susceptible de rencontrer dans les applications testées (AUT). Ainsi, lorsque le moteur d'IA est chargé de localiser un objet spécifique, il utilise le modèle pour identifier une correspondance dans l'AUT.

Reconnaissance optique de caractères

La reconnaissance optique de caractères (ROC) identifie le texte stocké dans une image - ou dans une partie d'une image - et le convertit en texte codé par ordinateur. Notre moteur d'IA utilise l'OCR pour identifier les objets textuels. Ces objets peuvent eux-mêmes faire partie du test, ou ils peuvent servir d'indice pour identifier l'emplacement relatif de l'objet. Cette capacité est utile si un objet apparaît plusieurs fois sur un écran. Par exemple, un écran de connexion peut comporter deux zones de texte, une pour le nom d'utilisateur et une pour le mot de passe. L'OCR permet d'identifier laquelle des deux boîtes de texte est la bonne. L'OCR peut également identifier un bouton par sa légende textuelle.

Données d'apprentissage

Un moteur d'IA dépend d'un modèle finement ajusté pour déterminer avec précision ce que représente un objet. Cependant, de par sa nature, l'IA n'est pas parfaitement précise. Bien que nous nous efforcions continuellement d'améliorer sa précision, il peut arriver qu'elle identifie mal un objet. C'est pourquoi nous proposons un mécanisme par lequel l'utilisateur peut augmenter notre ensemble de données d'apprentissage en nous envoyant des informations anonymes sur un objet non reconnu. Nous utilisons ces informations pour réentraîner le modèle, augmentant ainsi la probabilité de reconnaître l'objet lorsqu'il est rencontré.

Ce mécanisme nous permet d'apprendre en permanence des scénarios de production et d'améliorer le modèle qui sous-tend notre moteur d'IA.

L'importance du découplage

Nous avons conçu notre moteur d'IA indépendamment d'UFT One car il s'agit d'un service que plusieurs clients peuvent potentiellement utiliser. Les autres avantages du découplage du moteur d'IA nous permettent de :

  • Émettre des mises à jour du modèle indépendamment du produit qui l'utilise.
  • Décharger le calcul sur une machine dédiée de grande puissance pour augmenter la vitesse de calcul.

Mise à jour du modèle

Nous affinons continuellement le modèle en y ajoutant de nouveaux objets et en affinant la façon dont il classe les objets identifiés. En découplant le modèle du moteur d'IA, nous pouvons fournir à nos utilisateurs des mises à jour du modèle uniquement. Les utilisateurs peuvent appliquer ces mises à jour à leur convenance sans avoir à attendre la sortie d'un nouveau produit.

Se délester des calculs

Ce n'est un secret pour personne que l'IA peut impliquer des calculs lourds et fastidieux qui ralentissent les tests. Ce problème est un anathème pour ce que nous résolvons avec notre moteur d'IA. Pour surmonter les ralentissements, nous avons appliqué plusieurs techniques pour augmenter la vitesse d'exécution des tests basés sur l'IA. Par exemple, les mécanismes de mise en cache qui reconnaissent les résultats des calculs précédents (sans stocker l'image réelle) évitent de répéter les calculs.

Mais nous avons également découplé le mécanisme de calcul lui-même. Par conséquent, les utilisateurs peuvent installer le moteur sur un ordinateur puissant et dédié. Les ordinateurs équipés d'unités de traitement graphique (GPU) sont particulièrement efficaces pour les calculs basés sur l'IA. En utilisant le moteur, un utilisateur peut tirer parti de la puissance dédiée du GPU en tant que service d'IA à distance.

Une seule machine de calcul très puissante peut servir à plusieurs machines d'exécution de tests. Il n'est pas nécessaire de coupler chaque machine d'exécution de test à une machine de calcul dédiée.

Utilisation de maquettes pour les tests

Les méthodes traditionnelles d'automatisation des tests qui reposent sur les propriétés des objets exigent que l'AUT soit présent et fonctionne partiellement. Par conséquent, l'équipe doit attendre que l'AUT commence à écrire des scripts.

Comme notre moteur d'IA est agnostique quant à l'implémentation de l'AUT, la présence de l'AUT n'est pas nécessaire. Le moteur d'IA peut identifier des objets à partir d'une capture d'écran d'une application. Il peut même identifier des objets à partir d'une maquette d'écran dessinée à la main si les objets sont dessinés avec une précision raisonnable. Une application plus conventionnelle de cette capacité consiste à identifier des objets à partir d'une maquette réalisée par un graphiste.

 

Figure: UFT One identifying objects from a mockup screenshot

 

Figure: UFT One identifiant des objets à partir d'une capture d'écran de maquette

 

Avec cette capacité, les concepteurs de tests prennent une longueur d'avance en utilisant une représentation graphique de l'interface utilisateur dans un format commun, tel que JPG ou PNG. Ils peuvent commencer à écrire des scripts avant même que les développeurs ne commencent à travailler sur l'implémentation. Les objets que le moteur d'IA identifie sont mis en évidence sur l'image. Le testeur peut simplement glisser et déposer ces objets en surbrillance dans le script de test. Les objets sont convertis en leur représentation appropriée basée sur l'IA, et leurs actions par défaut sont déclenchées.

L'utilisation de maquettes permet aux testeurs de créer un script de travail qu'ils peuvent exécuter dès que l'AUT est disponible. Au final, toutes les équipes gagnent du temps en développant les scripts de test et l'AUT indépendamment et en parallèle.

Avantages mesurables des tests basés sur l'IA

Depuis que nous avons dévoilé les capacités de test basées sur l'IA d'UFT One en 2019, les clients les ont adoptées avec enthousiasme et ont constaté des résultats encourageants.

Une grande organisation dans le secteur de la santé aux États-Unis a introduit une application mobile permettant aux clients d'accéder à leurs services et de les gérer. L'équipe de test devait prendre en charge les implémentations Android et iOS tout en suivant le rythme rapide des changements pendant le développement. À ce stade, la philosophie des tests consistait à identifier des objets à l'aide de localisateurs d'objets. Mais des changements mineurs, comme la modification du XPath d'un objet, nécessitaient une mise à jour importante et constante des tests. L'équipe n'était pas en mesure de respecter ses délais.

L'équipe de test utilisait déjà UFT One et a décidé d'adopter ses capacités de test basées sur l'IA. La création de tests automatisés avec l'IA a permis aux membres de l'équipe de se concentrer davantage sur le test du flux et des exigences métier plutôt que sur l'identification fiable des objets.

Grâce aux tests basés sur l'IA, les membres de l'équipe ont pu utiliser un ensemble unique de scripts qui s'exécutent sans modification sur iOS et Android. Ils ont également pu réduire la maintenance des tests mobiles d'au moins 35 %.

En outre, l'équipe a profité de la création de tests basés sur des maquettes avant que la mise en page de l'application ne soit terminée. Les tests étaient prêts à être exécutés dès que le code était disponible. Les testeurs ont évité les échecs qu'ils auraient rencontrés si les tests avaient été écrits en utilisant des propriétés et des localisateurs d'objets fragiles. Ainsi, les testeurs ont également évité l'importante maintenance requise lorsque des défaillances se produisent.

En plus de réduire considérablement la maintenance et d'augmenter la fiabilité des tests, l'équipe a également constaté que les tests étaient plus rapides à écrire. La création plus rapide des tests a permis d'économiser des heures de travail que les testeurs auraient passées à comprendre l'implémentation sous-jacente d'un objet. L'interaction avec l'objet à partir de sa seule représentation visuelle a apporté des avantages significatifs.

Maturité de l'automatisation des tests basée sur le Computer Vision

Lorsque nous avons déployé nos nouvelles capacités de test basées sur la vision par ordinateur, nous avons travaillé en étroite collaboration avec nos premiers clients. Nous voulions savoir comment ils utilisaient la technologie et nous assurer que les clients en tiraient le meilleur parti. Cette collaboration nous a permis de découvrir de nouveaux cas d'utilisation et d'accroître la portée et la couverture de la technologie.

Comme pour toute technologie naissante, les clients ont signalé de nombreux cas limites qui nous ont aidés à améliorer notre mise en œuvre et à affiner notre modèle. Au fil du temps, nous avons résolu davantage de scénarios et élargi l'ensemble de données que nous utilisons pour former notre modèle. Nos algorithmes sont devenus plus performants et plus fiables. Grâce à ces améliorations, ces clients positionnent désormais l'IA comme le mécanisme d'automatisation des tests privilégié lorsque cela est possible.

Abaisser et supprimer les obstacles à l'automatisation des tests

L'automatisation des tests basée sur l'IA réduit le temps nécessaire à la construction et à la conception des tests car les objets sont identifiés simplement en les regardant. Les algorithmes d'IA abaissent les barrières de compétences car ils identifient la plupart des objets et sont cachés à l'utilisateur. Les équipes peuvent également utiliser le même test sans modification sur différents appareils et plateformes. Il leur suffit de se procurer un appareil approprié et d'exécuter le test sur celui-ci tel quel. Et comme l'algorithme ne repose pas sur la mise en œuvre et les propriétés sous-jacentes d'un objet, le test continue de fonctionner même en cas de changement. Tant que le flux du test reste le même, le test continue à s'exécuter.

Le dernier obstacle qui n'a pas encore été complètement éliminé est le temps d'exécution des tests. Les tests prendront toujours un temps fini pour s'exécuter ; il y a donc une limite inférieure au temps qu'ils prennent. Cependant, les tests basés sur l'IA aident les équipes à tester plus tôt et fournissent des mécanismes robustes qui parallélisent et optimisent l'exécution des tests, réduisant ainsi le temps d'attente des résultats.

About the author

Malcolm Isaacs

Malcolm Isaacs

Malcolm Isaacs is Senior Product Manager of Functional Testing in Micro Focus’ Application Delivery Management (ADM) product group. During the course of his career, Malcolm has held various positions, including software engineer, team leader, and architect. He has been with the Micro Focus family since 2003, when he joined Mercury, where he worked on a number of products specializing in supporting traditional and agile software development life cycles, from planning through deployment.

About Micro Focus

Micro Focus delivers a broad portfolio of enterprise software that help bridge the gap between existing and emerging technologies so our 40,000 customers worldwide can run and transform at the same time.  To build and deliver better software faster, you need a “Quality everywhere” culture. Our continuous quality and security solutions help you make this cultural shift—testing web, mobile, and enterprise applications to deliver high-quality experiences to keep, grow and expand your business.

Visit us at www.microfocus.com

 

 

mf_logo_blue.png