BLOG
QUALITY ENGINEERING & TESTING

L’IA générative au service de la Qualité et du Testing

L’intelligence artificielle s’est intégrée progressivement dans notre quotidien sans même que nous le réalisions, comme en témoigne l'utilisation d'assistants tels qu'Alexa pour contrôler nos systèmes de divertissement.

« AI » (artificial intelligence) et « ML » (machine learning) font déjà partie du vocabulaire courant. Au cours de ces dix dernières années, la familiarité du grand public avec ces termes a considérablement augmenté. La plupart d’entre nous envisage intégrer l’IA dans nos activités quotidiennes. Son développement a en fait été si discret que nous ne nous sommes même pas rendu compte de son intégration depuis quelques années. Dans nos smartphones par exemple, YouTube sait ce que nous pensons, quelles vidéos pourraient nous intéresser. Les applications d'achat en ligne, elles, savent ce dont nous pourrions avoir besoin à une certaine période de l'année, et nous suggèrent des produits en conséquence. Il y a 10 ans, nous n’imaginions pas l’impact que ces outils intelligents auraient dans nos vies. Un impact tel que l’on demande aujourd'hui à Alexa de lancer un film sur une plateforme de vidéo à la demande, sur notre télévision, dans le salon. Même la télécommande, autrefois révolutionnaire, nous semble parfois obsolète. Et au-delà de ces exemples que l’on observe chez nous, on ne peut non plus pas ignorer l’impact de l’IA au travail.

L'IA générative (Gen AI) existe depuis quelques temps déjà, son histoire remontant aux années 1950-1960, mais elle est maintenant considérée comme une rupture technologique qui pourrait complètement changer nos vies. Grâce à ChatGPT 4, cette révolution est désormais à la portée de tous. ChatGPT peut rédiger votre profil à votre place, et peut vous dire presque tout sur tout. Il n'est donc pas surprenant que l’IA générative ait bouleversé la façon dont nous travaillons dans le secteur informatique. Cela fait un moment que l'on parle d'automatisation des activités de développement, de génération de code automatisée, etc. – Microsoft Power Platform et Mendix étant quelques-unes des plateformes low-code / no-code déjà établies sur le marché. Avec l'avènement de ChatGPT, les développeurs peuvent générer facilement et efficacement des extraits de code de manière automatique. Avec toutes ces fonctionnalités ayant fait leurs preuves, l'intégration de l’IA générative au Testing devient une possibilité intéressante.

Modèle d’IA générative

Fig 1: Gen AI models for various output formats

L’IA générative au service du Testing

Après analyse du fonctionnement de l'IA générative, on constate qu'elle est utilisable à plusieurs étapes du parcours de test logiciel :

Fig 2: Role of Gen AI in quality engineering journey

  • Génération de cas de test : La génération manuelle de cas de test est souvent une tâche fastidieuse et chronophage à laquelle sont soumis tous les ingénieurs test. La compréhension des exigences est ouverte à l'interprétation individuelle et a un impact direct sur la qualité des cas de test générés. L’IA générative peut s’avérer utile pour automatiser ce processus. Elle peut analyser les exigences, récits d'utilisateurs et flux d'activités rédigés dans différents formats, et produire des éléments-clés. À partir de ces éléments-clés, l’IA générative peut créer des modèles et générer des cas de test explorant tous les scénarios possibles à partir de ces modèles. Elle peut également se charger de besoins non-fonctionnels tels que la localisation, la facilité d'utilisation, la fiabilité, l'évolutivité, etc.
  • Génération de données de test : Pour que les tests de vulnérabilité et de comportement soient efficaces, ils doivent s'appuyer sur des données diverses et réalistes. Les modèles d’IA générative sont capables de générer des données pouvant couvrir une grande variété de scénarios en apprenant des données précédemment utilisées et des exécutions de tests, et ce à grande échelle. La sécurité des données est essentielle et, avec l'IA générative, des données synthétiques (c'est-à-dire des données ressemblant étroitement aux données de production) peuvent également être générées pour permettre de tester des scénarios concrets tout en préservant la sécurité des données de production. Ainsi, l'IA générative permet de pallier les lacunes du processus manuel, qui prend souvent beaucoup de temps et est aussi source d'erreurs.
  • Optimisation et priorisation des tests : En générant des modèles à partir des besoins, des récits d'utilisateurs, etc., l’IA générative est capable d'éliminer les chemins répétitifs et d'identifier ainsi les circuits les plus spécifiques ou ceux ayant la plus grande couverture possible. En utilisant la boucle de rétroaction et les exécutions antérieures, l’IA générative peut alors identifier les chemins en fonction de leur impact potentiel ou de leur vulnérabilité. Cette analyse couplée à la gravité potentielle peut être exploitée par l’IA générative pour prioriser les cas de test avec un impact potentiel maximal. Ainsi, l'intelligence artificielle peut faciliter l'optimisation et la priorisation des tests.
  • Identification des tests de régression : Dans un monde agile, le développement de logiciels est limité par des versions espacées dans le temps. À chaque version, le champ d'application augmente de manière cumulative, ce qui a un impact direct sur le nombre de cas de test à inclure dans la suite de régression. Avec une discipline appropriée en matière de gestion du changement, les développeurs peuvent générer suffisamment de données pour que l’IA générative puisse analyser les modifications apportées. Elle peut ainsi identifier les zones vulnérables résultant de ces changements et suggérer les cas de test à inclure dans la suite de régression. Si les cas de test ne sont pas disponibles, l’IA générative peut également les générer pour assurer une couverture complète de la régression.
  • Test de vulnérabilité et de comportement : Si les tests manuels peuvent tenter d’évaluer le comportement d’une application de diverses manières plus ou moins prévisibles, il y a tout de même une certaine limite à la capacité de réflexion du cerveau humain. L'IA générative peut être une option pertinente pour générer une grande variété de résultats prévisibles ou imprévisibles. Ces inputs peuvent être des valeurs, des formats de fichiers, des formats de données, des protocoles de réseau, etc. permettant de découvrir des vulnérabilités qui n'auraient autrement pas été décelées. En apprenant des exécutions de tests antérieurs, des journaux système et des données de test, les modèles d’IA générative peuvent identifier des aspects qui n'ont pas été testés de manière adéquate ou qui sont passés inaperçus. L’IA générative a ainsi le potentiel de découvrir des dysfonctionnements et des failles dans un système logiciel.
  • Génération de scripts d'automatisation : Pour générer un script d'automatisation, l'ingénieur en automatisation doit au minimum connaître (i) le cas d'utilisation à tester, (ii) l'application à tester. L’output généré par les scénarios ci-dessus peut être exploité comme un input pour la génération de scripts d'automatisation. Par exemple, imaginons un cas d'utilisation UC-1234 demandant à l'ingénieur test de naviguer sur https://www.amazon.com, d'entrer "iPad" comme texte de recherche et de cliquer sur le bouton "Recherche". Une requête à l’IA générative peut simplement être : "Crée un script d'automatisation Selenium pour UC-1234". Pour des scénarios de base comme celui-ci, l’intelligence artificielle fait du très bon travail. Pour des scénarios plus complexes, il est difficile d'obtenir exactement le résultat souhaité, mais l’IA générative peut tout à fait générer des éléments de base, ou bien une approche pour concevoir des scripts d'automatisation plus complexes. De plus, l'intelligence artificielle peut aussi aider au débogage de base.
  • Analyse des défauts : Après chaque cycle de test, l'IA générative peut être utilisée pour analyser les défauts, et créer des cas de test pour les défauts n’ayant pas encore de cas de test associés. Parallèlement, les cas de test existants peuvent également être modifiés pour y intégrer de nouveaux scénarios/étapes. C’est un cas d'utilisation très important puisqu'il décèle les lacunes des tests et les rend plus fiables.

Risques

Toutes les utilisations mentionnées ci-dessus, ainsi que bien d'autres encore, semblent très prometteuses, mais l'IA générative est encore loin d'être totalement fiable. Il est très important de comprendre que le pouvoir de l'IA générique implique certaines mises en garde, dont celles-ci :

  1. Les modèles « hallucinent » : Récemment, un procès a été intenté à OpenAI car ChatGPT avait « inventé » une accusation contre un animateur de radio en combinant des données provenant du web et concernant des personnes au profil similaire. Il est donc impératif que les résultats générés par l’IA générative soient soigneusement validés.
  2. Les modèles sont biaisés : Il s'agit d'un problème bien connu depuis des années, mais qui n'a pas encore été vraiment réglé. Les modèles peuvent également dresser le profil de la personne avec laquelle ils interagissent et générer des résultats irréguliers en fonction de celle-ci.
  3. Ils utilisent les failles : Lorsqu'un modèle d'intelligence artificielle assimile des données antérieures et interprète des tendances, il se peut qu'il identifie des failles dont il apprend et qu'il les exploite ensuite. Ainsi, les résultats générés peuvent être conformes aux règles tout en étant invalides.
  4. Le risque de l’inconnu : Bien que le travail réalisé par l’IA générative soit très impressionnant, personne ne sait exactement ce que les modèles font pour parvenir à ces résultats. Ce mystère peut être troublant, particulièrement si les modèles ont accès à des informations confidentielles, ce qui pose alors un risque énorme pour la sécurité des données et des informations.
  5. Les modèles ne peuvent pas désapprendre :Dans l’éventualité où le modèle doit désapprendre certaines parties de ses données acquises pour différentes raisons telles que la sécurité des informations, les seules options possibles sont :
    1. Suppression du segment spécifique de données acquises et réentraînement du modèle. Cette approche est très coûteuse.
    2. L'approche SISA (Sharded, Isolated, Sliced, and Aggregated) proposée par l'Université de Toronto, consistant au moment de l’apprentissage à traiter les données par parties, de sorte que si la situation se présente, les segments de données peuvent être supprimés directement dans les parties voulues et seule cette partie des données est réentraînée.

La pratique de l'IA éthique, nécessitant qu'un système soit inclusif, impartial, explicable, conçu dans une bonne optique, responsable en termes d'utilisation des données, etc… peut représenter un défi de taille en raison de toutes les préoccupations mentionnées ci-dessus. Par conséquent, le recours à l'IA dans des opérations critiques pour les entreprises comporte un risque important. Pire encore, personne ne peut même prédire la probabilité et l'ampleur de ce risque. Par exemple, dans le domaine médical, l'IA générative pourrait conclure au diagnostic d'un patient en se basant notamment sur son background, ses antécédents médicaux, la similarité de ses symptômes avec ceux d'autres patients, etc., produisant ainsi un rapport potentiellement inexact et biaisé. Sans la supervision d'un expert, cela pourrait conduire à des conséquences désastreuses.

Il existe de nombreux autres risques de ce type, découverts chaque jour. Malgré l'énorme potentiel de l'intelligence artificielle dans les tests de logiciels, il est très important que des humains, ingénieurs test et experts du domaine, supervisent le travail effectué par l'IA, afin de limiter ces risques au maximum.

Conclusion

En résumé, l'expertise humaine n'est pas encore totalement remplaçable, et devient même encore plus importante pour sa capacité à interpréter correctement et prendre les bonnes décisions. Stephen Hawking a dit un jour, non sans raison : « Réussir à créer une IA serait le plus grand moment de l'histoire de l'humanité. Malheureusement, cela pourrait aussi être le dernier, à moins que nous n'apprenions à éviter les risques ».

À mon sens, l'intelligence humaine est appelée à perdurer. Il nous reste encore une phase d'apprentissage pour comprendre comment nous pouvons tirer parti de l'IA pour ses vertus plutôt que pour ses risques, encore largement méconnus.

Article de blog traduit depuis notre site global : https://www.sogeti.com/explore/blog/talent-in-it-predictions-for-2023/

Rohan Joshi
Rohan Joshi
Architecte technique, Ingénierie Qualité & Test, Sogeti Inde