État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 2 : Conception des tests

Chapitre 2 par Eggplant

l'IA, co-designer de tests

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

Download the "Section 2: Design" 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'IA peut augmenter le processus de test pour aider les équipes à mieux appéhender la qualité, ce qui, au final, permet d'offrir de meilleures expériences aux utilisateurs et des systèmes plus robustes.

Dans le chapitre précédent, nous avons parlé d'un proche cousin du "model-based testing", le jumeau numérique. Un jumeau numérique est un modèle virtuel d'un processus, d'un produit ou d'un service. Les jumeaux numériques peuvent être utilisés pour comprendre l'impact d'une variété d'entrées et de scénarios sur un système en production . Lorsque nous appliquons le concept de jumeau numérique aux tests de logiciels, cela signifie que le modèle peut prendre en compte un ensemble plus large de facteurs.

Traditionnellement, les testeurs créent des scripts qui décrivent un "happy path", un parcours idéal de l'utilisateur qui englobe les actions clés dans une application. Cependant, pour parvenir à une approche plus systématique des tests, les équipes ont adopté une approche de jumeau numérique. Celle-ci se concentre moins sur la définition des cas de test individuels que sur la description du système dans son ensemble.

A digital twin – simpler representation with implied flows among the nodes (actions) within each screen (state)
Flows among the nodes

 

Avec un jumeau numérique, l'objectif n'est pas de coder explicitement tous les cas de test connus, mais plutôt d'être capable de décrire tous les aspects du système (ou des systèmes) que nous voulons tester. Par exemple, dans une application bancaire mobile, si un utilisateur peut sélectionner "paiements", "transferts" ou "solde" à un moment donné, le jumeau numérique n'a pas besoin de définir de flux du "happy path". Ce n'est que lorsqu'une de ces options est sélectionnée que la série d'options suivante se présente. Pour effectuer un paiement, le jumeau numérique a seulement besoin de connaître les options "de", "à" et "montant", plutôt que de spécifier l'ordre dans lequel ces champs sont remplis. Cette approche s'écarte de l'automatisation typique basée sur un modèle, car les différentes permutations des entrées peuvent être testées - comme elles le seraient dans des situations réelles.

Un jumeau numérique - représentation plus simple avec des flux implicites entre les nœuds (actions) dans chaque écran (état).

Techniques basées sur l'IA pour améliorer la conception des tests

Examinons comment l'automatisation des tests logiciels peut être renforcée par l'IA. D'un point de vue holistique, la différence entre l'IA et l'automatisation simple est qu'au lieu de suivre des règles explicitement programmées, l'IA résout les problèmes en se basant sur sa compréhension d'un environnement. Dans le contexte du test d'un logiciel, l'environnement est l'application et son état actuel, et la capacité de l'IA à comprendre l'environnement est basée sur un modèle de l'application et une interprétation des éléments qui la composent. Comme nous allons le voir, les algorithmes d'IA peuvent être très utiles pour comprendre et tester une application.

Pour les besoins de cette section, nous définissons l'IA comme un système capable de recueillir des informations dans un environnement, de déterminer une action à entreprendre et d'apprendre des résultats de cette action. Tout comme Jeff Bezos décrit comment l'IA "améliore discrètement mais significativement les opérations de base", l'IA peut améliorer l'efficacité et l'efficience des tests de logiciels. Dans la pratique, on y parvient en utilisant une série de techniques.

Des scénarios bien définis peuvent être élaborés à l'aide d'instructions "IF", mais cela risque de devenir lourd et peu pratique pour les nombreux flux de test uniques, les données et les variations environnementales observés dans un cadre de test. Il existe des approches statistiques plus avancées (variance, probabiliste), l'apprentissage automatique traditionnel (ML) ou l'apprentissage profond encore plus avancé pour construire un modèle de données qui peut être interrogé en production pour aider à décider d'une action appropriée. Enfin, des techniques telles que l'apprentissage non supervisé et l'apprentissage par renforcement modifient par nature les représentations internes en fonction des systèmes avec lesquels elles s'interfacent.

La véritable valeur de ces techniques est d'avoir un impact matériel sur l'amélioration de l'efficacité des tests qu'elles produisent. Le but de tester rigoureusement une application n'est pas d'atteindre un quelconque KPI interne arbitraire ; il s'agit de s'assurer que les utilisateurs réels, qu'il s'agisse de clients ou d'employés, ne rencontrent pas d'erreurs qui les empêchent d'atteindre leurs objectifs. Et comme les utilisateurs réels peuvent ne pas se comporter comme les développeurs de l'application l'avaient prévu, il est important de prendre en compte un ensemble plus large de parcours d'utilisateurs.

Les algorithmes d'IA sont utilisés pour aider à déterminer si les utilisateurs seront en mesure d'accomplir la tâche prévue et d'atteindre leur objectif. Deux catégories d'algorithmes en particulier permettent d'atteindre cet objectif.

Algorithme 1 : chasse aux bugs

Ce système recherche des modèles d'échec communs à tous les tests et dirige les cas de test vers des chemins prioritaires qui détecteront activement les bogues dans le système testé. La chasse aux bugs est un système sophistiqué qui utilise tout le contexte disponible de chaque test, y compris le flux de test actuel contenant des actions et des états, l'ensemble des variables et des valeurs utilisées, les balises définies, etc. Avec l'ensemble des données pertinentes, un observateur humain peut détecter une corrélation d'un petit nombre de facteurs liés s'ils sont suffisamment évidents (peut-être qu'une ou deux fonctionnalités provoquent des défaillances sur l'iPad en orientation verticale). Mais la puissance de la technologie d'apprentissage automatique réside dans le fait que les corrélations peuvent être détectées sur un nombre quelconque de caractéristiques tout aussi facilement. Par exemple, la détection de bogues survenant dans notre système lorsque des boîtes de dialogue contextuelles écrites en Angular-JS et contenant des champs de texte sont utilisées sur des iPad en orientation verticale. Le processus de ce système à un niveau élevé est le suivant :

  • Lorsqu'un test échoué est détecté, alors les détails de ce test échoué sont transmis au système.
  • Tous les attributs du test raté sont analysés et les corrélations entre les tests ratés sont renforcées.
  • Il en résulte un ensemble de "poids" ou de priorités que l'algorithme de chasse aux bugs associera aux états, aux actions et aux valeurs des variables.

Considérons le scénario suivant : le test d'un site Web révèle un bogue. Dans la fenêtre du navigateur de l'appareil iOS, il y a une zone de texte et un bouton radio. Le modèle a appris quelque chose de nouveau et va donc augmenter la probabilité d'exécuter d'autres tests impliquant des zones de texte et des boutons radio sur des appareils iOS. Si le modèle trouve un autre bogue présentant les mêmes caractéristiques, un modèle commence à émerger et le système va s'entraîner à se concentrer sur des zones similaires jusqu'à ce que tous les bogues adjacents soient trouvés. Dans ce cas, l'IA adopte l'approche d'un testeur manuel compétent et intelligent, en apprenant quelque chose de nouveau et en ajustant les chemins ultérieurs empruntés dans un système. Ces connaissances peuvent ensuite être transmises aux équipes de développement pour une résolution rapide.

Algorithme 2 : Analyse de la couvertureis

Comment améliorer le plus efficacement possible la visibilité sur la profondeur de la couverture ? Un jumeau numérique équipé d'un algorithme d'IA pour la couverture vous permet de comprendre clairement les zones d'une application qui ont été testées et celles qui ne l'ont pas été. Ce système donnera la priorité à la couverture dans l'ensemble du modèle et tentera d'orienter les flux de test (et les valeurs des données) pour maximiser la couverture. Il existe un certain nombre d'algorithmes de couverture différents utilisés en interne, et ceux-ci sont décrits ci-dessous. Cependant, c'est la combinaison de ces algorithmes dans un modèle holistique qui est important pour obtenir un véritable sens de la couverture.

  • Tous les nœuds (1): Cela permet de suivre les éléments (une action, un état, une valeur de variable, etc.) qui ont été testés dans n'importe quel contexte, à n'importe quel moment et dans n'importe quel flux ou cas de test. ) qui ont été testés dans n'importe quel contexte et à n'importe quel moment dans n'importe quel flux ou cas de test. De nombreux systèmes utilisent ce mécanisme pour afficher une valeur de pourcentage de couverture de test globale, qui est généralement trompeuse car de nombreuses actions sont effectuées dans un contexte (par exemple, saisir du texte dans un champ vide et saisir du texte dans un champ qui contient déjà du texte), et donc une mesure de 100 % dans cette métrique omet tout sens du contexte dans les tests.
  • Toutes les paires (2): Il s'agit de couvrir les paires de chemins entre les actions, ainsi que toutes les valeurs de variables utilisées.
  • Étendue (3) et exploratoire complete (4): Également appelés modèles de couverture de 3e et 4e ordre respectivement, ces modèles sont une extension du modèle All Pairs dans la mesure où ils considèrent les chemins potentiels constitués de combinaisons de 3 et 4 actions et évaluent la couverture globale en fonction du nombre de ces chemins qui ont été complétés. Pour les applications complexes, le nombre de chemins potentiels basés sur ces modèles deviendra extrêmement important, soulignant l'importance d'une sélection intelligente des modèles de test par le biais de mécanismes tels que l'algorithme Bug Hunting.

Le choix d'une combinaison des 4 modèles de couverture permet à l'opérateur d'optimiser différents niveaux de couverture. Cela peut signifier tester le plus large éventail de parcours utilisateur en mode exploratoire complet ou donner la priorité à un ensemble plus restreint de flux de travail critiques pour l'entreprise avec une rigueur beaucoup plus grande.

Eggplant tests a business-critical workflow: searching for an item in an online store, adding it to the basket, and completing the purchase.
business-critical workflow

 

5 résultats dérivés de ces techniques

L'approche des tests pilotée par l'IA d'Eggplant génère plusieurs avantages :

  1. Optimiser l'utilisation des ressources pour les tests afin d'accélerer la mise en production.
    • Vous pouvez facilement définir votre fenêtre de test et les métriques qui vous intéressent. Cela permet à l'IA d'exécuter l'ensemble de tests qui correspond le mieux à cette fenêtre de test et maximise la probabilité de trouver des problèmes pertinents dans les domaines de l'application qui vous intéressent.
    • EEggplant a aidé un important fournisseur de logiciels de soins de santé à accélérer les délais de livraison de 23 % et à relever le défi de l'évolution rapide des réglementations. Ces résultats ont été obtenus en améliorant les rapports entre le développement et les tests et en réduisant les coûts en exploitant les ressources commerciales existantes sans avoir à embaucher des ressources techniques coûteuses.
  2. Identifier les défauts plus rapidement
    • Les algorithmes vont rapidement et implacablement " zoomer " sur des défauts précédemment cachés pour les repérer avant la sortie du produit et plus tôt dans le cycle de développement.
    • Grâce aux algorithmes d'IA et aux captures d'écran de chaque changement d'état, il est facile de visualiser les actions exactes à l'origine d'un problème. Cela réduit de 90 % le délai moyen de résolution des problèmes.
    • Les algorithmes d'intelligence artificielle optimisent l'expérience de l'utilisateur final en évitant d'exécuter arbitrairement des milliers de cas de test pour atteindre une certaine mesure de réussite/échec.
  3. Automatisation intelligente et continue des tests
    • Les tests peuvent être programmés en parallèle et à l'échelle 24/7. Cela signifie que les tests sont un processus continu, plutôt qu'une partie discrète et distincte du cycle de vie du développement. Les tests continus permettent d'apporter des améliorations continues aux logiciels.
  4. Réduction de la maintenance
    • Les tests peuvent être générés et maintenus automatiquement grâce à des capacités d'autoréparation, ce qui évite de devoir intervenir manuellement pour effectuer des mises à jour à chaque nouvelle régression.
    • Eggplant a aidé le premier distributeur mondial à réduire de 47 % le coût des tests de ses systèmes de point de vente grâce au moteur Fusion d'Eggplant, qui peut automatiser toute technologie et tout appareil.
  5. Augmente la satisfaction de l'utilisateur final
    • Un logiciel qui présente moins de bogues et qui est mis à jour plus fréquemment se traduit naturellement par une meilleure expérience utilisateur.
    • Eggplant a aidé une grande banque américaine à augmenter la note de son AppStore de 3 à 4,5 étoiles en raccourcissant les cycles de mise à jour de 52 % et en améliorant les performances de 80 % grâce à l'automatisation des tests pilotée par l'IA.
    • Eggplant a aidé un important fournisseur de télécommunications japonais à augmenter leur NPS de 45 points en appliquant l'IA et l'analyse prédictive des utilisateurs et des versions.

Valeur ajoutée

En pratique, l'IA utilisée pour générer automatiquement et intelligemment des scénarios de test pour les tests exploratoires combinera ces stratégies dans un "ensemble" qui travaillera ensemble pour sélectionner la prochaine meilleure action à prendre, en apprenant continuellement au fur et à mesure. Ces algorithmes sont tous liés à la génération de cas de test, mais l'IA peut également être utilisée pour identifier des éléments à l'écran ou s'adapter aux changements apportés à l'application lors de la sortie de nouvelles versions.

Imaginez un bouton d'envoi à l'écran qui a été déplacé depuis la dernière version. Sa couleur et sa forme ont changé, et en plus de ces caractéristiques physiques, l'identifiant objet sous-jacent a également changé. Les tests traditionnels nécessiteraient une mise à jour manuelle d'une liste potentiellement longue de scripts de test.

Cette approche peut être contournée grâce à une utilisation intelligente des algorithmes susmentionnés et à l'ajout de la vision par ordinateur, qui décrit la capacité d'extraire le sens et l'intention des éléments visuels, tels que le texte, les images, les objets et les interfaces. Les nouveaux éléments peuvent être identifiés intelligemment sans l'intervention de l'utilisateur en examinant l'historique des changements pour cet élément ; en voyant quels autres éléments sont à proximité et en trouvant des modèles ; en recherchant des étiquettes avec un nom similaire ; ou en voyant quels éléments ont des propriétés d'objet similaires à l'élément qui n'est plus là. Le script est donc ajusté et mis à jour de manière dynamique, ce qui permet à l'exécution du test de se poursuivre de manière ininterrompue et non supervisée.

L'utilisation de l'IA pour améliorer notre compréhension des logiciels ouvre de nombreuses possibilités. En ayant une meilleure compréhension du comportement exact d'une application dans une grande variété de paramètres, de scénarios et de conditions, les développeurs peuvent concentrer leur attention sur ce qui est le plus important : offrir des expériences satisfaisantes aux utilisateurs.

À propos des auteurs

Jaspar Casey

Jaspar Casey

Jaspar Casey is a Product Marketing Manager at Eggplant, a Keysight Technologies company. He has spent a decade bringing new ideas and digital products to market, covering everything from big data to blockchain. His work involves communicating the unique business value of AI-driven test automation.

About Eggplant

Eggplant is now part of Keysight Technologies.

Keysight Technologies Inc. (NYSE: KEYS) is the world's leading electronic measurement company, transforming today's measurement experience through innovations in wireless, modular, and software solutions. With its Hewlett-Packard and Agilent legacy, Keysight delivers solutions in wireless communications, aerospace and defense, and semiconductor markets with world-class platforms, software, and consistent measurement science. The company's nearly 15,000 employees serve customers in more than 100 countries.

Visit us at https://www.eggplantsoftware.com/

 

 

Keysight_Pref_Logo_Color.png