Skip to main content

L'utilisation de l'intelligence artificielle (IA) dans l'automatisation des tests est la dernière tendance en matière d'assurance qualité. Les tests en général, et l'automatisation des tests en particulier, semblent avoir attrapé le virus du « tout est mieux avec l'IA ».

Puisque l'IA, l'apprentissage automatique et les réseaux neuronaux sont aujourd'hui très en vogue, il était peut-être inévitable que l'IA finisse par trouver sa place dans l'automatisation des tests d'une manière ou d'une autre.

Contexte de l'automatisation des tests

Je me souviens d'une époque, il y a plusieurs années, quand l'automatisation des tests était encore nouvelle, où l'une de mes équipes d'assurance qualité travaillait sur un projet pour un grand client. Il s'agissait d'une application mobile comptant des millions d'utilisateurs et des cycles de publication mensuels. L'équipe QA était généralement détendue pendant les deux premières semaines du cycle et travaillait frénétiquement ensuite jusqu'à la sortie — l’un des effets secondaires particuliers du développement logiciel agile dont on ne parle pas dans les gros titres !

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

Finalement, l'un des responsables QA, lassé de se tourner les pouces pendant ces deux semaines creuses, a commencé à travailler sur un framework d'automatisation des tests. Il a rédigé quelques scripts de tests en Ruby avec Selenium / Appium et Jenkins pour bâtir un pipeline rudimentaire, incluant de jolis rapports avec des indicateurs Rouge / Jaune / Vert pour l'échec ou la réussite des tests.

Il a réussi à faire cela pendant quelques cycles de publication. C'est alors que nous l'avons présenté à notre chef qualité, qui l'a proposé à nos clients et les a assez enthousiasmés pour qu'ils paient pour les tests automatisés en tant que sous-projet. Nous étions sur un petit nuage, à la pointe de l’innovation !

Cette expression a pris un nouveau sens, cependant, après quelques mois, lorsque nous avons découvert cette réalité fondamentale concernant l'automatisation des tests à laquelle tout ingénieur QA en automatisation chevronné se heurte encore aujourd’hui :

On ne crée pas simplement des tests automatisés !

Pourquoi est-ce que je dis ça ? Parce que très vite, nous avions l’impression d’être Alice au pays de Mordor, courant comme des fous avec la Reine Rouge :

« Il faut tout courir pour rester à la même place. » - Lewis Carroll, Alice au Pays des Merveilles. (Source)

Nous venions de découvrir la dure réalité du piège de l'automatisation des tests : l'un de nos ingénieurs QA devait maintenir la suite d'automatisation à jour avec l'application à chaque cycle de publication, car les changements affluaient en continu !

Un simple changement de nom de champ et nos tests automatisés logiciels partaient à vau-l'eau. Le début d’un nouveau cycle de publication était particulièrement délicat car l’équipe de développement y ajoutait tout un lot de nouveautés.

L'automatisation des tests n’a pas fondamentalement changé depuis cette époque, car elle demande toujours un suivi et une maintenance permanents. Toute possibilité d’amélioration radicale dans l’approche ou la mise en œuvre n'est apparue que très récemment, grâce aux progrès de l’IA.

Le battage médiatique autour de l’IA vs la réalité

La technologie IA, dans sa version actuelle, consiste principalement à utiliser des algorithmes d'apprentissage automatique pour entraîner des modèles sur des volumes de données importants, puis à utiliser les modèles entraînés pour réaliser des prédictions ou produire un résultat attendu. Presque toute l’IA se résume, certes de manière simplifiée, à cette description. Mais pour notre sujet, la grande question reste :

L’IA sera-t-elle vraiment capable de générer et de mettre à jour automatiquement les cas de tests ? De trouver des bugs ? D’améliorer la couverture du code ?

La réponse à cette question est loin d’être claire aujourd’hui, car nous sommes au sommet du cycle de battage médiatique autour de l’IA. Un sous-domaine en particulier, l'apprentissage profond, est à l’origine d’une grande partie de cet engouement.

Le cycle de la Hype autour de l’intelligence artificielle selon Gartner, 2019. (Source)

Ce que je trouve le plus intéressant dans ce graphique, c’est ceci :

Si Siri est censée être au-delà du sommet de la hype, alors, Dorothy, on est encore loin du Kansas !

Je connais en effet beaucoup de personnes qui doivent se répéter pour que Siri comprenne ce qu’elles disent (aucune offense aux fans de Siri. Sincèrement 😉).

La courbe du hype nous montre qu'il existe beaucoup d’enthousiasme autour du potentiel de l’IA, enthousiasme qui s’estompe avant que tout le monde ne passe à la routine quotidienne, la vraie vie. Pour faire simple, ce que dit le joli graphique de Gartner, c'est ceci :

Artificial Intelligence: Expectation vs Reality Screenshot
Intelligence artificielle : attentes vs réalité.

Cependant, bien que nous soyons encore loin de la singularité, l’IA, même dans sa version actuelle, peut déjà considérablement améliorer l’automatisation des tests.

Comment l’apprentissage automatique produit-il des tests automatisés ?

  1. Entraînement : Lors de la phase d’entraînement, le modèle d’apprentissage automatique doit être formé sur un jeu de données spécifique à l’organisation, y compris la base de code, l’interface applicative, les journaux, les cas de test et même les documents de spécifications. Si le jeu de données d’entraînement n’est pas suffisamment volumineux, l’efficacité de l’algorithme peut en être diminuée.

    Certaines solutions proposent des modèles pré-entrainés qui se mettent à jour en continu pour des applications précises comme les tests d’interface utilisateur, permettant ainsi de bénéficier d’un apprentissage généralisé au sein d’une organisation.

  2. Production de résultats : Selon le cas d’usage, le modèle génère des cas de tests, vérifie les cas existants en termes de couverture, de complétude, de précision, voire effectue lui-même les tests. Dans tous les cas, un testeur doit valider les résultats générés et s’assurer de leur utilisabilité.

    Si nous utilisons l’analogie de la voiture autonome, les résultats s’apparentent davantage à une assistance à la conduite qu’à une voiture réellement autonome.

  3. Amélioration continue : Au fur et à mesure que l’organisation utilise régulièrement l’outil, le volume de données d’entraînement augmente, ce qui peut accroître la justesse et l’efficacité des réseaux déjà entraînés. En somme, le système d’IA apprend et s’améliore en permanence.

Les algorithmes d’apprentissage automatique révolutionnent l’automatisation des tests. Pour découvrir des outils qui intègrent ces algorithmes avancés, explorez notre guide des meilleurs outils de tests logiciels

Applications de l’IA dans l’automatisation des tests

Regardons de plus près quelques applications de l’IA dans l’automatisation des tests, incluant les tests unitaires, les tests d’interface utilisateur, les tests API ainsi que la maintenance d’une suite de tests automatisée.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
Name*

Création et mise à jour des tests unitaires

Les tests unitaires, souvent utilisés dans le cadre du test et de l’intégration continus / livraison continue (CI / CD) en DevOps, peuvent vraiment être une corvée intersidérale.

En règle générale, les développeurs passent beaucoup de temps à rédiger et maintenir les tests unitaires, une tâche bien moins amusante que le développement d’applications. Dans ce cas, les produits basés sur l’IA pour la création automatisée de tests unitaires peuvent être précieux, en particulier pour les organisations qui souhaitent introduire des tests unitaires tard dans le cycle de vie du produit.

Avantages :

  • Les tests unitaires automatisés fondés sur l’IA sont un progrès majeur par rapport à la génération de tests basée sur des modèles utilisant l’analyse statique ou dynamique. Les tests générés sont du véritable code et non de simples squelettes.
  • Les tests unitaires créés par l’IA peuvent être générés très rapidement, ce qui est utile face à une grande base de code existante.
  • Les développeurs n’ont qu’à ajuster les tests et peuvent mettre en place une suite de tests unitaires de régression assez rapidement.

Limites :

  • Les tests unitaires générés par l’IA reflètent simplement le code sur lequel ils sont fondés. Ils ne peuvent pas encore deviner la fonctionnalité prévue du code. Si le code ne se comporte pas comme attendu, le test unitaire généré reproduira ce comportement non souhaité.

    Il s’agit là d’une vraie faiblesse car l’objectif du test unitaire est de garantir et de vérifier un contrat implicite ou explicite.
  • Les tests unitaires créés via l’apprentissage automatique peuvent casser des tests unitaires existants qui fonctionnaient, et c’est au développeur de s’assurer que cela n’arrive pas.
  • Les développeurs doivent eux-mêmes écrire les tests pour une logique métier complexe.

Tests automatisés de l’interface utilisateur 

C’est ici que l’IA commence à réellement briller. Lors des tests d’interface utilisateur assistés par l’IA, les outils d’automatisation des tests analysent le DOM et le code associé pour déterminer les propriétés des objets. Ils utilisent également des techniques de reconnaissance d’images pour naviguer dans l’application et vérifier visuellement les objets et éléments de l’UI afin de générer des tests d’interface.

De plus, les systèmes de test IA emploient le test exploratoire pour repérer des bogues ou des variations dans l’interface de l’application et produisent des captures d’écran pour vérification ultérieure par un ingénieur QA. De même, les aspects visuels du système testé (SUT), comme la disposition, la taille et la couleur, peuvent être automatiquement vérifiés.

Avantages :

  • Les tests UI automatisés peuvent permettre une couverture du code accrue.
  • Les écarts mineurs dans l’interface utilisateur ne provoquent pas l’échec de la suite de tests. Les modèles d’IA du produit peuvent les gérer.

Limites :

  • Pour toute application moderne, le nombre de plateformes, de versions d’applications et de versions de navigateurs est important. Il n’est pas clair dans quelle mesure l’automatisation UI basée sur l’IA performe dans ces conditions. Cependant, les outils de tests dans le cloud peuvent exécuter les tests en parallèle, donc c'est un domaine à surveiller !

Utilisation de l’IA pour assister les tests d’API

Même sans IA, l’automatisation des tests d’API est une tâche complexe car elle implique de comprendre l’API puis de configurer des tests pour de multiples scénarios afin d’assurer une couverture étendue et approfondie.

Les outils actuels d’automatisation de test d’API, comme Tricentis et SoapUI, enregistrent les activités et le trafic de l’API pour analyser et créer des tests. Cependant, modifier et mettre à jour les tests nécessite que les testeurs examinent en détail les appels REST et les paramètres, puis mettent à jour la suite de tests d’API.

Les outils d’automatisation de tests d’API basés sur l’IA tentent d’atténuer ce problème en examinant le trafic et en identifiant des motifs et des connexions entre les appels d’API, les regroupant ainsi efficacement par scénario. Les outils utilisent également les tests existants pour apprendre les relations entre API, les utiliser pour comprendre les changements dans les API et mettre à jour les tests existants ou en créer de nouveaux axés sur des scénarios. 

Avantages :

  • Pour les testeurs débutants ou ceux sans expérience en programmation, cela peut être réellement utile pour leur permettre d’« être directement opérationnels ».

    Encore une fois, la gestion des changements serait grandement facilitée étant donné qu’au moins certains des changements d’API peuvent être gérés par un outil d’automatisation basé sur l’IA.

Limites :

  • En général, la mise en place de tests d’API est difficile, et peu d’outils offrent des capacités fondées sur l’apprentissage automatique dans ce domaine. Ceux qui le font semblent proposer des fonctionnalités encore rudimentaires.

Maintenance des tests automatisés

Les outils basés sur l’IA peuvent évaluer les changements de code et corriger plusieurs tests existants qui ne sont plus alignés avec ces changements, surtout si les changements de code ne sont pas trop complexes. Les modifications d’éléments d’UI, de noms de champs, etc. ne casseront plus forcément la suite de tests.

Certains outils d’IA surveillent les tests en cours d’exécution et essaient des variantes modifiées pour les tests échoués en choisissant les éléments d’UI les plus adaptés. Ils peuvent également vérifier la couverture des tests et compléter les manques si nécessaire. 

Génération de données de test basée sur l’IA

La génération de données de test est un autre domaine prometteur pour les modèles d’IA. L’apprentissage automatique peut facilement générer des ensembles de données, comme des photos de profil personnel ou des informations telles que l’âge et le poids, grâce à des modèles d’apprentissage automatique entraînés sur des ensembles de données de production existants. 

Ainsi, les données de test générées sont très similaires aux données de production, ce qui est idéal pour une utilisation lors de tests logiciels. Le modèle de machine learning qui génère ces données s’appelle un Réseau Antagoniste Génératif (GAN).

Outils d’automatisation des tests qui utilisent l’apprentissage automatique

Consultez les outils ci-dessous si vous recherchez des logiciels qui utilisent l’apprentissage automatique pour mener et suivre des tests automatisés. Beaucoup proposent des options open-source ou sans code pour répondre aux besoins de votre équipe de test.

Conclusion

L’intelligence artificielle a profondément modifié les outils et méthodes de test, et l’automatisation des tests en particulier. Un aperçu des outils actuels intégrant l’IA montre que, bien que de nombreuses nouvelles fonctionnalités soient ajoutées, plusieurs d’entre elles sont encore en phase de maturation.

Si vous avez trouvé cet article utile, veuillez vous abonner à la Newsletter The QA Lead pour rester informé des dernières actualités du monde du test.