Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

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

Par Igor Kirilenko

27 septembre 2022

8  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 ne cesse de croître. L'un des domaines du développement logiciel où l'adoption de l'IA peut progresser est 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.

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.

Plus de versions de logiciels signifie plus de tests de logiciels

Alors que le nombre de développeurs dans le monde continue d'augmenter, davantage de versions de logiciels devraient arriver sur le marché des logiciels. Un récent rapport de Statista corrobore cette attente avec une projection qui suggère que la population mondiale de développeurs devrait passer de 24.5 millions en 2020 à 28.7 millions de personnes d'ici 2024.

Cela laisse présager que nous continuerons à voir plus de lancements de logiciels dans les années à venir. Cette croissance attendue du nombre de versions de logiciels s'accompagne de la nécessité d'automatiser les tests de logiciels.

Le test logiciel consiste à soumettre une infrastructure logicielle à une série de scénarios de test fonctionnels et non fonctionnels. Il s'agit d'un processus d'évaluation d'un logiciel pour s'assurer qu'il peut faire ce pour quoi il est conçu de manière efficace. Lorsque les équipes testent des logiciels, elles peuvent découvrir et résoudre les défauts d'exécution, les problèmes d'évolutivité, les vulnérabilités de sécurité, etc.

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

L'IA dans l'automatisation des tests logiciels

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.

Révolutionnez votre pratique de test d'API en tirant parti de l'intelligence artificielle

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 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 nos produits. Voici quelques façons dont nous les avons exploités.

Utilisation de l'IA de test de logiciels pour améliorer l'adoption de l'analyse statique

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'y a pas de recommandations universelles pour les vérificateurs ou les normes de codage. Chaque équipe a sa propre définition du faux positif, qui signifie souvent « ça m'est égal » plutôt que « c'est techniquement incorrect ». La solution de Parasoft à cela consiste à appliquer 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.

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 veut voir ou quelque chose que l'équipe veut supprimer en examinant un petit nombre de résultats et en construisant un classificateur basé sur les métadonnées associées à ces découvertes.

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.

Cela améliore considérablement l'expérience utilisateur en dirigeant les développeurs vers les avertissements les plus susceptibles de s'appliquer à leur projet. 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.

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.

Découvrez comment gagner du temps en créant des tests unitaires Java et obtenir une couverture de code plus élevée en tirant parti de l'IA.

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 SOAtest's Générateur de test d'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.

Découvrez comment accélérer la création de tests d'API grâce à l'intelligence artificielle.

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 appliquer des modèles appris à d'autres tests d'API pour les améliorer et aider les utilisateurs à créer des scénarios de test 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'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 vous assurer que le produit est entièrement vérifié avant d'entrer en production. Le cadre Selenium a été largement adopté pour les tests d'interface utilisateur, mais les utilisateurs ont encore du mal à relever les défis courants des tests Selenium en matière de maintenabilité et de stabilité. C'est là que les technologies d'intelligence artificielle 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".

Laissez les recommandations basées sur l'IA vous dire ce qui est cassé et comment le réparer. Tirez parti du ML pour auto-réparer l'exécution des tests Selenium.

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

L'analyse d'impact des tests (TIA) évalue l'impact des modifications apportées au code de production. Cela aide à révéler les cas de test affectés par les modifications de code. Le principal avantage de TIA est qu'il supprime la nécessité d'exécuter des tests sur l'ensemble de votre base de code après que des modifications ont été apportées. Cela permet d'économiser du temps et de l'argent tout en maintenant l'efficacité de votre processus de développement.

Vous pouvez bénéficier de la technologie TIA lors de l'exécution de tests manuels ou tirer parti de l'intégration d'outils basés sur TIA avec des pipelines CI/CD. Cela peut 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. Selon la nature des produits et le 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 des tests unitaires Java, des tests d'interface utilisateur Web Selenium et des tests d'API.

Conclusion

La croissance explosive observée sur le marché des logiciels suggère que davantage de logiciels continueront d'être publiés pour résoudre les problèmes de nos activités quotidiennes. 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 de logiciels. C'est là qu'intervient Parasoft.

Chez Parasoft, nous fournissons des solutions de test de logiciels alimentées par l'IA et pilotées par ML qui intègrent la qualité dans le processus de développement logiciel pour prévenir, détecter et corriger les défauts au début du SDLC.

Vous voulez en savoir plus sur l'accélération de la création de tests avec l'IA ?

Par Igor Kirilenko

Vice-président du développement de Parasoft, Igor est responsable de la stratégie technique, de l'architecture et du développement des produits Parasoft. Igor apporte plus de 20 ans d'expérience dans la direction d'équipes d'ingénierie, avec une spécialisation dans l'établissement et la promotion des meilleures pratiques agiles dans les environnements de développement logiciel.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.