Logo Parasoft Rechercher

Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »

Blog Parasoft

Qu'est-ce que l'intelligence artificielle dans les tests logiciels?

Portrait d'Igor Kirilenko, directeur des produits, développement produit chez Parasoft
By Igor Kirilenko • Le 17 juin 2024 • 10 min de lecture
Le 17 juin 2024 | 10 min de lecture
By Igor Kirilenko
Graphique 2D montrant une boucle infinie bleue avec de minuscules étincelles vertes en arrière-plan et une superposition d'une icône d'intelligence artificielle : 3 diamants rose vif.

On a beaucoup parlé de l'intelligence artificielle et de la façon dont elle a transformé notre façon de faire les choses. En matière de tests logiciels, quelle est la place de l'IA ? Cet article explique comment l'IA aide à réaliser des tests logiciels robustes.

L'émergence de l'intelligence artificielle (IA) continue de transformer le paysage technologique. Son application dans de nombreux aspects du développement logiciel ne cesse de croître. Parmi les domaines où l' adoption de l'IA peut progresser figure le test logiciel.

Les tests de logiciels sont cruciaux pour garantir la publication de produits logiciels qui répondent à la fois aux normes de conformité et aux exigences de qualité des utilisateurs. Cependant, avec de nombreuses permutations entourant l'utilisation de l'intelligence artificielle, nous plongerons profondément dans la découverte de ce qu'est l'IA dans les tests de logiciels.

  • Comment L'IA dans le contexte de l'automatisation des tests logiciels diffère de sa définition plus large?
  • Que voulons-nous dire lorsque nous parlons d'IA et de son terme frère, l'apprentissage automatique ?
  • Quels sont les avantages de l’utilisation de l’IA et du machine learning pour faire progresser les tests d’API de pointe ?

Découvrons-le.

Qu'est-ce que l'IA et comment change-t-elle la dynamique des tests de logiciels ?

L'intelligence artificielle est l'un des mots à la mode les plus surchargés sur le marché numérique. « IA » évoque des images de superordinateurs surpuissants déterminés à détruire l'humanité, d'assistants vocaux comme Alexa ou Siri, d'adversaires virtuels aux échecs et de voitures autonomes.

Wikipedia définit la recherche en IA comme « l'étude des "agents intelligents" : tout dispositif qui perçoit son environnement et prend des mesures qui maximisent ses chances d'atteindre ses objectifs ». Mais c'est un peu trop abstrait.

J'aime à penser que l'IA est la capacité d'un programme informatique ou d'une machine à penser (raisonner par elle-même) et à apprendre (collecter des données et modifier son comportement futur de manière bénéfique).

C'est dans cette définition que nous commençons à voir quelque chose de plus significatif dans le contexte de ce que l'IA signifie pour les outils et la technologie de développement logiciel.

L'IA dans l'automatisation des tests logiciels

Les tests de logiciels sont le processus d'évaluation d'un logiciel pour garantir qu'il peut faire efficacement ce pour quoi il est conçu. Il soumet les infrastructures logicielles à une série de scénarios de tests fonctionnels et non fonctionnels. Lorsque les équipes testent des logiciels, elles peuvent découvrir et résoudre des défauts d'exécution, des problèmes d'évolutivité, des vulnérabilités de sécurité, etc.

Le processus de test des logiciels est généralement rigoureux, d’où la nécessité d’une automatisation. Cependant, pour que l’automatisation logicielle soit super efficace et transparente, il est nécessaire d’intégrer l’IA.

L'utilisation de l'IA dans le développement logiciel est encore en évolution, mais son niveau d'utilisation actuel dans les tests automatisés de logiciels est inférieur à celui de domaines de travail plus avancés tels que les systèmes de conduite autonome ou la commande vocale, la traduction automatique et la robotique.

L'application de l' IA aux outils de test logiciel vise à simplifier le cycle de vie du développement logiciel (SDLC). Grâce au raisonnement, à la résolution de problèmes et, dans certains cas, à l'apprentissage automatique, l'IA permet d'automatiser et de réduire les tâches répétitives et fastidieuses liées au développement et aux tests.

Vous vous demandez peut-être : « Les outils d'automatisation des tests ne le font-ils pas déjà ? » Bien sûr, ils intègrent déjà l'IA, mais ils ont leurs limites.

Là où l'IA brille dans le développement de logiciels, c'est lorsqu'elle est appliquée pour supprimer ces limitations, permettant aux outils d'automatisation des tests logiciels d'offrir encore plus de valeur aux développeurs et aux testeurs. La valeur de l'IA vient de la réduction de l'implication directe du développeur ou du testeur dans les tâches les plus banales. Nous avons toujours un grand besoin d'intelligence humaine pour appliquer la logique métier, la réflexion stratégique, les idées créatives, etc.

Par exemple, considérez que la plupart, sinon la totalité, des outils d'automatisation des tests exécutent des tests pour vous et fournissent des résultats. La plupart ne savent pas quels tests exécuter, alors ils les exécutent tous ou un ensemble prédéterminé.

Et si un bot activé par l'IA pouvait examiner l'état actuel des statuts de test, les modifications récentes du code, la couverture du code et d'autres métriques, puis décider quels tests exécuter et les exécuter pour vous ?

L'introduction d'une prise de décision basée sur l'évolution des données est un exemple d'application de l'IA. Bonnes nouvelles! Parasoft gère les tests logiciels automatisés à ce niveau.

Comment l'apprentissage automatique améliore l'IA

Alors, qu'en est-il de l'apprentissage automatique ?

L'apprentissage automatique (ML) peut augmenter l'IA en appliquant des algorithmes qui permettent à l'outil de s'améliorer automatiquement en collectant de grandes quantités de données produites par les tests.

La recherche ML est un sous-ensemble de la recherche globale sur l'IA axée sur la gestion de la prise de décision basée sur des données précédemment observées. Il s'agit d'un aspect important de l'IA dans son ensemble, car l'intelligence nécessite de modifier la prise de décision à mesure que l'apprentissage s'améliore. Dans les outils de test de logiciels, cependant, l'apprentissage automatique n'est pas toujours nécessaire. Parfois, un outil activé par l'IA est mieux ajusté manuellement pour s'adapter à l'organisation qui utilise l'outil, puis la même logique et le même raisonnement peuvent être appliqués à chaque fois, quel que soit le résultat.

Dans d'autres cas, la collecte de données est essentielle au processus de prise de décision, et l'apprentissage automatique peut être extrêmement précieux, nécessitant certaines données au départ, puis s'améliorant ou s'adaptant à mesure que davantage de données sont collectées. Par exemple, la couverture de code, les résultats d'analyse statique, les résultats de test ou d'autres mesures logicielles, au fil du temps, peuvent informer l'IA sur l'état du projet logiciel.

Exemples réels d'IA et de ML dans les tests de logiciels

L'IA et le ML jouent un rôle essentiel dans la plateforme de tests d'assurance qualité continue de Parasoft . Ils constituent d'importants axes de recherche et développement permanents chez Parasoft. Nos découvertes nous permettent d'intégrer ces technologies à notre plateforme de manière innovante et d'optimiser l'automatisation des tests à chaque étape du cycle de vie du développement logiciel. Voici quelques exemples de leur mise en œuvre.

Utiliser l'IA pour améliorer l'adoption de l'analyse statique dans les tests logiciels

L'un des principaux obstacles à l' adoption réussie des outils d'analyse statique réside dans la gestion d'un grand nombre d'avertissements et le traitement des faux positifs (avertissements ne correspondant pas à de véritables bogues). Les équipes de développement logiciel chargées d'analyser un code existant ou hérité sont souvent confrontées à des difficultés avec les premiers résultats obtenus et se découragent rapidement, abandonnant leurs efforts. Ce sentiment de surcharge est en partie dû au nombre important de normes, de règles (vérificateurs), de recommandations et de métriques offertes par les outils d'analyse statique modernes.

Les équipes de développement logiciel ont des exigences de qualité uniques. Il n'existe pas de recommandations universelles en matière de vérificateurs ou de normes de codage. Chaque équipe a sa propre définition du faux positif, qui signifie souvent « indifférent » plutôt que « techniquement incorrect ». La plateforme de tests qualité continus de Parasoft comprend une solution centralisée de reporting et d'analyse, appelée DTP, qui utilise l'IA et le machine learning pour hiérarchiser les résultats de l'analyse statique afin d'améliorer l'expérience utilisateur et l'adoption de ces outils.

Parasoft DTP utilise une méthode permettant de classer rapidement les résultats d'un outil d'analyse statique en fonction de ce que l'équipe souhaite voir ou de ce qu'elle souhaite supprimer, en examinant un petit nombre de résultats et en construisant un classificateur basé sur les métadonnées associées à ces résultats.

Ce classificateur est basé sur les résultats des classifications précédentes des résultats d'analyse statique dans le contexte à la fois des suppressions historiques des avertissements non pertinents et de la hiérarchisation préalable des résultats significatifs à corriger dans la base de code.

Les résultats finaux sont classés de deux manières:

  • Il est intéressant pour l'équipe d'enquêter.
  • Éléments qui peuvent être supprimés.

Ce processus de priorisation améliore considérablement l'expérience utilisateur en dirigeant les développeurs vers les avertissements qui ont la plus grande probabilité d'être un véritable défaut au sein de leur projet.

Les équipes de développement peuvent éventuellement intégrer Parasoft DTP avec les fournisseurs OpenAI ou Azure OpenAI pour rationaliser davantage le tri des résultats d'analyse statique pour les applications Java avec l'analyse de correspondance CVE. DTP analyse la violation de l'analyse statique et quantifie la similarité entre le code source de la méthode contenant la violation et le code source présentant des vulnérabilités de sécurité connues. Les équipes de développement peuvent utiliser l'analyse des correspondances CVE pour évaluer les violations à prioriser afin que les problèmes de sécurité critiques ne soient pas manqués par inadvertance.

Nous avons également mis en œuvre un moteur de détection des points chauds, associé à un modèle d'IA avancé permettant d'attribuer les violations aux développeurs les plus compétents et expérimentés, en tirant des enseignements des violations qu'ils ont corrigées par le passé. Grâce à ces innovations, les organisations peuvent réduire immédiatement les efforts manuels nécessaires à l'adoption et à l'utilisation de l'analyse statique.

Utiliser l'IA générative pour corriger plus rapidement les violations de l'analyse statique

Parasoft intègre l'IA générative dans sa plate-forme de tests de qualité continue en intégrant ses solutions d'analyse statique C#, .NET et Java avec les fournisseurs OpenAI et Azure OpenAI. L'intégration facultative permet aux équipes de développement de corriger plus facilement et plus rapidement les résultats de l'analyse statique grâce aux recommandations de correctifs générées par l'IA dans l'EDI.

Les correctifs de code d'IA générative pour les résultats de l'analyse statique sont particulièrement utiles pour les nouveaux projets mettant en œuvre une analyse statique qui ont des exigences de conformité de code pour adhérer aux normes de sécurité ou spécifiques au secteur. Les équipes qui découvrent l'analyse statique peuvent ne pas être techniquement familiarisées avec les directives ou les règles associées à ces normes. Si la règle ou la violation n'est pas correctement comprise, la productivité du développement peut être affectée, car les développeurs doivent consacrer leur temps et leurs efforts à rechercher la violation et à mettre en œuvre un correctif de code. En intégrant l'IA générative pour créer rapidement des correctifs de code, les développeurs peuvent rapidement remédier aux violations. En conséquence, ils disposent de plus de temps pour se concentrer sur le développement de nouveaux codes et remédier à d’autres violations afin d’améliorer la qualité globale du code, la sécurité, la sûreté et la fiabilité du logiciel.

Utiliser l'intelligence artificielle pour automatiser la génération de tests unitaires

Notre solution de productivité pour les développeurs Java, Jtest, comprend une analyse statique automatisée, des tests unitaires, une analyse de couverture de code et une traçabilité. Il utilise la propre IA propriétaire de Parasoft et les intégrations facultatives avec les fournisseurs OpenAI et Azure OpenAI pour rationaliser la création de tests JUnit et piloter la couverture du code.

Les ingénieurs peuvent accélérer la création de tests unitaires en tirant parti du plug-in Eclipse ou IntelliJ IDE pour générer de nouveaux tests avec l'assistant de tests unitaires (UTA) amélioré par l'IA de Jtest. Les équipes peuvent créer des suites de tests unitaires efficaces en analysant les niveaux existants de couverture de code au niveau de la méthode, de la classe, du package ou du projet, et tirer parti de l'IA pour générer en masse une suite de tests unitaires ciblant les lignes de code non couvertes. Lors de la création des tests, notre solution Java génère automatiquement des simulations et des assertions, fournissant ainsi aux équipes une suite de cas de test intelligents et efficaces à exécuter dans les tests de régression.

Au fur et à mesure du développement d'un nouveau code, des tests unitaires supplémentaires doivent être créés pour valider la nouvelle fonctionnalité. L'UTA de Jtest générera un nouveau scénario de test pour couvrir la ligne de code sélectionnée par l'utilisateur, puis fournira des recommandations sur la manière d'améliorer le scénario de test. Les équipes peuvent facilement et rapidement remplacer et simuler des dépendances, ajouter des assertions, paramétrer des cas de test et cloner ou muter des cas de test existants pour obtenir des niveaux plus élevés de couverture de code.

L'intégration facultative avec les fournisseurs OpenAI et Azure OpenAI permet aux développeurs de personnaliser, d'étendre ou de refactoriser facilement les tests unitaires en fonction d'invites en langage naturel qui décrivent les exigences spécifiques du développeur. L'intégration de Jtest avec OpenAI analysera le code et le test unitaire existant en conjonction avec les exigences saisies et refactorisera le scénario de test en fonction de ces spécifications. Cela offre aux développeurs une grande flexibilité pour personnaliser les cas de test de toutes les manières requises par leur application et accélère le processus de création de suites de tests efficaces et précieuses.

Utilisation de l'intelligence artificielle pour automatiser la génération et le paramétrage des tests unitaires

Ce premier exemple concerne Parasoft Jtest , notre solution de test logiciel pour développeurs Java qui inclut l'analyse statique, les tests unitaires, la couverture de code, la traçabilité, etc. Grâce à l'intelligence artificielle, nous avons déployé la génération automatique de cas de test, ce qui aide les développeurs à compléter leur infrastructure JUnit initiale.

Le plug-in IDE de Parasoft Jtest ajoute une automatisation utile à la pratique des tests unitaires avec des actions simples en un clic pour créer, mettre à l'échelle et maintenir des tests unitaires. En utilisant Jtest compatible avec l'IA, les utilisateurs peuvent obtenir une couverture de code plus élevée tout en réduisant considérablement le temps et les efforts nécessaires pour créer une suite complète et significative de cas de test Junit.

Pour ce faire, il facilite notamment la création de stubs et de simulacres pour isoler le code testé. L'IA sous-jacente permet à Jtest d'observer l'unité testée pour déterminer ses dépendances vis-à-vis d'autres classes. Lorsque des instances de ces dépendances sont créées, il suggère de les moquer à l'utilisateur pour créer des tests plus isolés.

La création automatique des simulations et des stubs nécessaires réduit l'effort sur l'une des parties les plus chronophages de la création de tests.

Parasoft Jtest détecte également automatiquement le code qui n'est pas couvert par les suites de tests existantes et parcourt le chemin de contrôle du code source pour déterminer quels paramètres doivent être passés dans une méthode en cours de test, et comment les subs / mocks doivent être initialisés pour atteindre ce code. En activant cette IA, Jtest peut générer automatiquement de nouveaux tests unitaires, en appliquant des paramètres modifiés pour augmenter la couverture de code globale de l'ensemble du projet.

Utilisation de l'IA et du ML pour automatiser la génération et la maintenance des tests d'API

Un autre bon exemple, intégrant l'apprentissage automatique, est le générateur de tests d'API intelligent de Parasoft SOAtest . Il va au-delà des tests d'enregistrement et de lecture, en tirant parti de l'IA et de l'apprentissage automatique pour convertir les tests d'interface utilisateur en scénarios de tests d'API complets et automatisés.

Le générateur de test d'API intelligent utilise le raisonnement pour comprendre les modèles et les relations dans les différents appels d'API effectués lors de l'exercice de l'interface utilisateur. À partir de cette analyse, une série d'appels d'API est construite qui représente les appels d'interface sous-jacents effectués pendant le flux d'interface utilisateur.

Il applique ensuite l'apprentissage automatique en observant ce qu'il peut sur les différentes ressources API et en les stockant sous forme de modèle dans une structure de données propriétaire. Cette structure interne est mise à jour en examinant d'autres cas de test dans la bibliothèque de l'utilisateur pour apprendre différents types de comportement lors de l'exercice des API, par exemple, une assertion ou l'ajout d'un en-tête particulier au bon endroit.

Le but de l'IA ici est de créer des tests plus avancés, pas seulement de répéter ce que l'utilisateur faisait, comme vous le faites avec de simples tests d'enregistrement et de lecture. Voici comment fonctionne le générateur de test Smart API :

  1. Reconnaît les modèles à l'intérieur du trafic.
  2. Crée un modèle de données complet des paramètres observés.
  3. Génère et permet tests API automatisés en appliquant des modèles appris à partir d'autres tests d'API pour aider les utilisateurs à créer des scénarios de tests automatisés plus avancés.

Les tests d'API automatisés qui en résultent sont plus complets, réutilisables, évolutifs et résistants au changement.

Utilisation de l'IA générative pour la création de tests de scénarios d'API

Parasoft SOAtest peut également être intégré aux fournisseurs OpenAI ou Azure OpenAI, ce qui permet l'utilisation de technologies d'IA générative pour rationaliser la création de tests de scénarios d'API. Les testeurs peuvent saisir un fichier de définition de service dans SOAtest et fournir une invite en langage naturel décrivant les exigences spécifiques et la logique métier nécessaire. L'IA analyse ensuite le fichier de définition de service et génère une série de scénarios de test d'API mappés au cas d'utilisation décrit dans l'invite.

Cette utilisation de l'IA générative dans les tests d'API permet aux équipes d'assurance qualité d'accroître la rigueur de leurs efforts de test, car elle permet aux testeurs de générer automatiquement et sans code des scénarios de test avancés.

Utilisation de l'apprentissage automatique pour auto-guérir l'exécution des tests de sélénium

La validation automatique de l'interface utilisateur est un autre élément essentiel de votre stratégie de test pour garantir la vérification complète du produit avant sa mise en production. Le framework Selenium est largement utilisé pour les tests d'interface utilisateur, mais les utilisateurs rencontrent encore des difficultés courantes liées à la maintenabilité et à la stabilité. C'est là que les technologies d'IA, et en particulier l'apprentissage automatique, peuvent intervenir, en assurant une auto-réparation en cours d'exécution pour résoudre les problèmes de maintenabilité fréquemment rencontrés lors de l'exécution des tests d'interface utilisateur.

Nous fournissons cette fonctionnalité avec Parasoft Selenic, qui peut « apprendre » sur votre structure de données interne lors de l'exécution régulière de vos tests Selenium. Le moteur Selenic surveille chaque exécution et capture des informations détaillées sur le contenu de l'interface utilisateur web de l'application testée. Il extrait les éléments DOM, leurs attributs, leurs localisateurs, etc., et les corrèle avec les actions effectuées par les tests pilotés par l'interface utilisateur. Selenic utilise l'approche de modélisation des données propriétaire de Parasoft et stocke ces informations dans son moteur d'IA. Le modèle est mis à jour en continu, analysant l'historique d'exécution de tous les tests pour une amélioration continue.

Il s'agit d'un gain de temps crucial lorsque des éléments d'interface utilisateur de pages web sont déplacés ou modifiés de manière significative, entraînant l'échec des tests. Avec Selenic, les heuristiques d'IA utilisées par le moteur peuvent « correspondre » à ces éléments modifiés avec les données historiques représentées par le modèle et générer automatiquement des « localisateurs intelligents » résistants aux modifications pour restaurer l'exécution des tests Selenium à l'exécution. Les informations relatives à ces modifications sont automatiquement propagées dans le modèle, et la génération future de nouveaux localisateurs est ajustée en fonction de ces modifications.

De plus, Selenic peut auto-réparer différents types de « conditions d'attente » pour corriger les instabilités liées aux performances des systèmes testés. Il mesure également le temps d'exécution de chaque cas de test sur les pages web et le compare à la moyenne historique des exécutions précédentes. Si l'écart dépasse un certain seuil, une alerte est générée dans le rapport pour informer l'utilisateur des changements significatifs.

Optimisez l'exécution des tests avec l'analyse d'impact des tests

Les outils d'analyse d'impact des tests (TIA) évaluent les conséquences des modifications apportées au code de production. Ils permettent d'identifier les cas de test affectés par ces modifications. Le principal avantage de la TIA est qu'elle évite d'avoir à exécuter les tests sur l'ensemble du code après chaque modification. Cela permet de gagner du temps et de réduire les coûts, tout en maintenant l'efficacité du processus de développement.

En intégrant la technologie TIA à vos pipelines CI/CD, vous optimisez l'exécution de vos tests automatisés et fournissez plus rapidement aux développeurs un retour d'information sur l'impact des modifications sur la qualité de leur projet. Selon la nature des produits et le type de tests à exécuter, vous pouvez tirer parti de la technologie d'IA de Parasoft pour optimiser l'exécution des tests unitaires C#, .NET et Java , des tests d'interface utilisateur web Selenium , des tests d'API ou des tests exécutés dans des frameworks tiers.

Conclusion

La croissance explosive observée sur le marché des logiciels suggère que davantage de logiciels continueront à être publiés pour résoudre les problèmes de notre activité quotidienne. Cependant, pour que les logiciels fonctionnent efficacement et arrivent sur le marché le plus rapidement possible, l’automatisation et l’intelligence artificielle sont nécessaires dans les tests logiciels. C'est là qu'intervient la plate-forme de tests de qualité continue de Parasoft pour fournir des solutions de tests logiciels basées sur l'IA et le ML qui intègrent la qualité dans le processus de développement logiciel pour prévenir, détecter et corriger les défauts dès le début du SDLC.

Apprenez-en davantage sur l’accélération de la création de tests avec l’IA.

Parlez à un expert