Webinaire en vedette : testez à tout moment et en tout lieu grâce à la virtualisation des services | Regarder à la demande maintenant

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

Tête d'Igor Kirilenko, directeur des produits chez Parasoft
Le 17 juin 2024
10 min lire

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 plusieurs facettes du développement logiciel continue de croître. L'un des domaines du développement de logiciels où adoption de l'IA ce qui peut progresser, ce sont les tests de logiciels.

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 du marché numérique. "IA" évoque des images de choses comme des superordinateurs tout-puissants déterminés à détruire l'homme, une assistance vocale à la manière d'Alexa ou de Siri, des adversaires aux échecs informatiques et des voitures autonomes.

Wikipédia définit la recherche sur l'IA comme «… L'étude des «agents intelligents»: tout appareil qui perçoit son environnement et entreprend des actions qui maximisent ses chances d'atteindre avec succès ses objectifs.» Mais c'est un peu trop abstrait.

J'aime penser à l'IA comme la capacité d'un programme informatique ou d'une machine à penser (raison pour elle-même) et apprendre (collecter des données et modifier le 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 de logiciels évolue toujours, mais le niveau auquel elle est actuellement utilisée dans les tests automatisés de logiciels est inférieur par rapport à des domaines de travail plus avancés tels que les systèmes d'auto-conduite ou le contrôle assisté par la voix, la traduction automatique et la robotique.

L'application de L'IA dans les outils de test de logiciels vise à faciliter le cycle de vie du développement logiciel (SDLC). Grâce à l'application du raisonnement, de la résolution de problèmes et, dans certains cas, de l'apprentissage automatique, l'IA peut être utilisée pour automatiser et réduire la quantité de tâches banales et fastidieuses dans le développement et les tests.

Vous vous demandez peut-être : « Les outils d'automatisation des tests ne le font-ils pas déjà ? Bien sûr, les outils d'automatisation des tests ont déjà l'IA en vigueur, mais ils ont des 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 clé dans Plateforme de tests de qualité continue de Parasoft. Ce sont des domaines importants de recherche et de développement en cours chez Parasoft. Nos découvertes continuent d’apporter de nouvelles façons passionnantes d’intégrer ces technologies dans notre plateforme et d’optimiser l’automatisation des tests à chaque étape du SDLC. Voici quelques façons dont nous les avons exploités.

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

L'un des obstacles à la adoption réussie d'outils d'analyse statique gère un grand nombre d'avertissements et traite les faux positifs (avertissements qui ne sont pas de vrais bogues) dans les résultats. Les équipes logicielles qui analysent une base de code héritée ou existante ont du mal avec les résultats initiaux qu'elles obtiennent avec l'analyse statique et sont suffisamment découragées par cette expérience pour ne pas poursuivre leurs efforts. Une partie de la raison d'être dépassé est le nombre de normes, de règles (vérificateurs), de recommandations et de mesures qui sont possibles avec les outils d'analyse statique modernes.

Les équipes de développement de logiciels ont des exigences de qualité uniques. Il n’existe pas de recommandations universelles pour les vérificateurs ou les normes de codage. Chaque équipe a sa propre définition du faux positif, signifiant souvent « je m'en fiche » plutôt que « c'est techniquement incorrect ». La plate-forme de tests de qualité continue de Parasoft comprend une solution centralisée de reporting et d'analyse appelée DTP qui applique l'IA et l'apprentissage automatique pour hiérarchiser les résultats rapportés par l'analyse statique afin d'améliorer l'expérience utilisateur et l'adoption de ces outils.

PAO Parasoft utilise une méthode pour classer rapidement les résultats dans la sortie d'un outil d'analyse statique comme quelque chose que l'équipe souhaite voir ou comme quelque chose que l'équipe souhaite supprimer en examinant un petit nombre de résultats et en construisant un classificateur basé sur les métadonnées associées à ceux-ci. 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 place un moteur de détection de points chauds ainsi qu'un modèle avancé basé sur l'IA pour attribuer des violations aux développeurs correspondant à leurs meilleures compétences et expériences, en apprenant des violations qu'ils ont corrigées dans le passé. Grâce à ces innovations, les organisations peuvent immédiatement réduire l'effort manuel dans leur adoption et leur 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 est dans Jtest Parasoft, notre solution de test de logiciels pour les développeurs Java qui comprend l'analyse statique, les tests unitaires, la couverture et la traçabilité, etc. En appliquant l'IA ici, nous avons publié la génération automatique de cas de test, qui aide les développeurs à combler les lacunes lorsqu'ils démarrent à partir d'un harnais JUnit clairsemé.

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, en ajoutant l'apprentissage automatique dans le mix, est Parasoft SOAtestGénérateur de test API intelligent. Cela 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 test 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

Validation automatique de la couche UI est un autre élément essentiel de votre stratégie de test pour garantir que le produit est entièrement vérifié avant de passer en production. Le Cadre de sélénium a été largement adopté pour les tests d'interface utilisateur, mais les utilisateurs sont toujours confrontés aux défis courants des tests Selenium en matière de maintenabilité et de stabilité. C’est là que les technologies d’IA et, en particulier, l’apprentissage automatique, peuvent aider, en fournissant une auto-réparation au moment de l’exécution pour résoudre les problèmes de maintenabilité courants associés à l’exécution des tests d’interface utilisateur.

Nous fournissons cette fonctionnalité avec Parasoft Selenic, qui peut "apprendre" votre structure de données interne lors de votre exécution régulière de 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, 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 exclusive de Parasoft, stockant ces informations dans son moteur d'IA. Le modèle est mis à jour en permanence, analysant l'exécution historique de tous les tests pour continuer à devenir "plus intelligent".

Il s'agit d'un gain de temps essentiel dans les cas où 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, l'heuristique de l'IA utilisée par le moteur peut "faire 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" qui résistent aux modifications pour récupérer l'exécution des tests Selenium au moment de l'exécution. Les informations sur 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.

En plus de cela, Selenic peut auto-réparer différents types de "conditions d'attente" en traitant les instabilités associées aux caractéristiques de performance des systèmes testés. Il mesure également le temps associé à l'exécution de chaque scénario de test sur les pages Web et le compare à la moyenne historique capturée lors des exécutions précédentes. Dans les cas où l'écart dépasse un certain seuil, une alerte est signalée dans le rapport pour informer un utilisateur des changements importants.

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

Outils d’analyse d’impact des tests (TIA) évaluer l’impact des modifications apportées au code de production. Ils aident à révéler les cas de test affectés par les modifications de code. Le principal avantage de TIA est qu'il supprime le besoin d'exécuter des tests sur l'intégralité de votre base de code une fois les modifications apportées. Cela permet d'économiser du temps et des coûts tout en garantissant l'efficacité de votre processus de développement.

En intégrant la technologie TIA dans les pipelines CI/CD, vous pouvez optimiser l'exécution de vos tests automatisés et fournir un retour plus rapide aux développeurs sur l'impact des modifications sur la qualité de leur projet. En fonction de la nature des produits et du type de tests à exécuter, vous pouvez tirer parti de la technologie améliorée par l'IA de Parasoft pour optimiser l'exécution de Tests unitaires C#, .NET et Java, Tests de l'interface utilisateur Web Selenium, Tests 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.