Révolutionner la couverture de code avec des tests unitaires propulsés par l’IA générative

Comment l’IA générative transforme les processus intensifs en main-d’œuvre et aide les développeurs à se concentrer sur l’essentiel : créer de meilleurs logiciels
5 min de lecture
Shilpa Adavelli
Shilpa Adavelli
Gestionnaire principal de produit, Conseil numérique, Affaires numériques
5 min de lecture
Révolutionner la couverture de code grâce aux tests unitaires alimentés par l’IA générative

Atteindre la couverture de code est une tâche que j'ai souvent entendu mes développeurs qualifier de laborieuse, surtout dans un environnement hérité complexe, pour des applications qui utilisent de multiples dépôts de code détenus par plusieurs équipes.

Les tests unitaires jouent un rôle essentiel pour garantir que chaque unité fonctionnelle du code source fonctionne comme prévu. Dans le cadre des tests unitaires, chaque unité est examinée séparément du reste du code, ce qui permet d’assurer l’atteinte de la couverture de code. La couverture de code est une mesure que les développeurs utilisent pour évaluer dans quelle mesure le code source est exécuté. Elle indique la proportion de la base de code ayant fait l’objet de tests, offrant des informations sur les segments vérifiés par rapport à ceux qui ne le sont pas.

Atteindre une couverture de code élevée est non seulement essentiel pour détecter les bogues tôt dans la phase de développement, mais cela est aussi exigé par des entités comme DevOps (ADO). ADO suggère de viser une couverture de code de 70 % pour les demandes de tirage (pull requests). Traditionnellement, les développeurs rédigent les cas de test unitaire manuellement. Divers outils, tels que NUnit, Pytest, Boost Test, pour n’en nommer que quelques-uns, aident à structurer ces cas de test. Toutefois, la création de chaque cas de test demeure un processus long, et à mesure que les bases de code croissent, le volume des entrées et sorties augmente aussi, ce qui allonge le temps nécessaire pour atteindre une couverture de test, laissant possiblement certains scénarios marginaux mais critiques non testés. De tels défis soulignent le besoin de génération automatisée et efficace de cas de test unitaire.

, un sous-ensemble de l’intelligence artificielle propulsé par des outils basés sur de grands modèles de langage (LLM), se révèle être une ressource précieuse à cet égard. En rationalisant la création des cas de test unitaire, la GenAI a le potentiel d’accélérer le processus de développement et d’améliorer la qualité des tests, permettant aux développeurs de se concentrer sur la construction plutôt que de s’inquiéter de la couverture de code.

La GenAI est capable de générer automatiquement de nouveaux contenus à partir de données sur lesquelles elle a été entraînée. Elle est devenue un atout de taille dans le développement logiciel. Les LLM, tels que ChatGPT d’OpenAI, Copilot de Microsoft et Gemini de Google, ont été formés sur de vastes ensembles de données, leur permettant de produire du contenu pertinent selon le contexte, ce qui inclut des extraits de code, de la documentation et des cas de test unitaire.

En utilisant la GenAI, les développeurs peuvent accélérer le processus de test unitaire. Plutôt que de rédiger manuellement chaque cas de test, ils peuvent recourir à la GenAI pour créer un éventail de scénarios de test, y compris ceux qui pourraient autrement être négligés. Cela permet non seulement d’économiser du temps, mais aussi d’accroître l’exhaustivité des tests, d’améliorer la couverture de code et de réduire les risques de bogues dans la base de code. Par conséquent, la GenAI donne aux développeurs les moyens de maintenir des standards élevés de qualité logicielle tout en soulageant les fardeaux associés à la création manuelle de cas de test.

Un cadre de test unitaire bien conçu basé sur la GenAI pourrait non seulement générer des cas de test unitaire, mais également exécuter les cas de test générés, produire des rapports de couverture de code et générer de façon itérative des cas de test supplémentaires si la couverture de code n’est pas atteinte.

Des travaux importants ont déjà été réalisés dans ce domaine par des fournisseurs de services qui ont rapporté que leur cadre, écrit en Python et testé pour des codes sources en Python et C/C++, avait permis de réduire de 60 % le temps, les efforts et les coûts comparativement à l’approche manuelle dans les tests logiciels automobiles. Une jeune pousse a récemment annoncé un agent IA qui, selon elle, peut analyser le code, identifier et corriger les bogues et écrire des tests unitaires. Des plateformes qui fournissent la génération de tests unitaires assistée par IA pour les bases de code Java utilisent l’apprentissage par renforcement pour analyser la base de code et produire des tests exécutables et lisibles par l’humain qui couvrent un large éventail de scénarios. HCLTech dispose d’un outil GenAI maison, HCLTech , qui offre également cette fonctionnalité et qui reste à être validé par des preuves du monde réel.

En conclusion, l’application de la GenAI pour générer des cas de test unitaire semble avoir un énorme potentiel, avec une quantité significative de travaux déjà réalisés dans l’automatisation des tests logiciels.

Partager sur
DBS Applications modernes Blogues Révolutionner la couverture de code avec des tests unitaires propulsés par l’IA générative