L’IA au service des métiers du test
L’IA au service de la qualité logicielle
L’intégration de l’intelligence artificielle dans le domaine des tests logiciels révolutionne les pratiques traditionnelles et ouvre de nouvelles perspectives pour améliorer la qualité et l’efficacité des tests. Dans ce chapitre, nous explorerons divers aspects de l’utilisation de l’IA dans les métiers du test, en commençant par l’automatisation des tests. Nous aborderons la génération de cas de test, l’exécution automatisée et l’analyse des résultats, ainsi que les différentes approches d’automatisation basées sur l’IA et les outils et frameworks disponibles. Nous discuterons également des avantages et des limites de l’automatisation des tests par l’IA. Nous examinerons ensuite les tests prédictifs et l’analyse des risques grâce à l’IA, en mettant en lumière l’identification des zones à risque, la prédiction des bugs et la priorisation des tests. L’IA permet également d’améliorer la performance des tests, notamment par l’optimisation des scripts de test et la parallélisation des tests. Nous aborderons donc également l’application de l’IA aux tests non fonctionnels, tels que les tests de performance, de sécurité et d’accessibilité....
L’évolution des test logiciels : un voyage à travers les décennies
L’évolution des tests logiciels illustre de manière captivante l’histoire et les progrès technologiques. Cette section explore les étapes clés qui ont jalonné l’avancement des tests logiciels, en s’appuyant sur une illustration retraçant l’évolution des méthodes de test.

1. 1980 - 1990 : l’ère des tests manuels
Durant les années 1980, les tests logiciels étaient principalement effectués manuellement. La méthodologie en cascade était alors la norme. Les équipes de test suivaient des scripts détaillés pour vérifier la fonctionnalité des logiciels, procédant de manière séquentielle après la phase de développement. Cela impliquait souvent des retards et des inefficacités en raison de la nature linéaire du processus. Les erreurs humaines étaient également plus fréquentes, mettant en lumière la nécessité de méthodes plus efficaces.
2. 1990 - 2000 : l’avènement des outils d’automatisation lourds
Avec l’entrée dans les années 1990, l’industrie a commencé à adopter des outils d’automatisation, bien que souvent lourds et complexes. Ces outils ont permis d’accélérer...
L’IA générative : un allié puissant pour les testeurs et les QA
Voyons maintenant comment l’IA générative révolutionne le monde des tests logiciels, offrant un arsenal d’outils puissants pour améliorer l’efficacité, la couverture et la qualité des tests. Le potentiel de l’IA dans ce domaine est tout simplement ahurissant, permettant de couvrir, automatiser et améliorer des processus clés.
Imaginez pouvoir générer des cas de test complets et pertinents en quelques secondes, à partir de simples descriptions de fonctionnalités. C’est tout simplement la promesse de l’IA générative. En fournissant à un modèle d’IA les spécifications d’une fonctionnalité, voire une simple user story, vous pouvez obtenir une suite de cas de test couvrant différents scénarios, y compris les cas limites et les cas d’erreur.
Prenons l’exemple de la user story suivante :
« En tant qu’utilisateur, je veux pouvoir me connecter à mon compte avec mon adresse e-mail et mon mot de passe »
Votre modèle d’IA générative, quel qu’il soit, est susceptible de générer des cas de test reprenant le descriptif mentionné, vous en obtiendrez par exemple des cas de test contenant une connexion réussie, une connexion avec un e-mail invalide, une connexion avec un mot de passe incorrect, etc.
Vous pouvez également élever votre niveau d’exigence en proposant des valeurs de test spécifiques pour chaque scénario.
Notez qu’à travers un test automatisé, votre intelligence artificielle favorite peut analyser le code source et identifier des bugs ou des vulnérabilités potentielles avant même l’exécution des tests. En utilisant des techniques d’apprentissage automatique, elle peut apprendre des erreurs passées et prédire les zones à risque dans le code.
Vous pouvez par exemple identifier des failles de sécurité courantes, comme les injections SQL, ou des erreurs logiques dans le code qui pourraient conduire à des comportements inattendus.
Lorsqu’un défaut est détecté, elle peut vous proposer des solutions de correction, accélérant...
Les challenges de l’IA générative à relever pour les testeurs
L’IA générative est une technologie puissante qui peut révolutionner l’assurance qualité (QA) en générant des tests de manière automatique. Cependant, comme toute technologie, elle présente également des défis qui doivent être abordés pour garantir son efficacité et son efficience. Dans cette section, nous allons explorer les défis de l’IA générative dans l’assurance qualité et proposer des solutions pour les surmonter.
1. La création de tests inutiles
L’IA générative peut parfois générer des tests qui sont inutiles ou sans intérêt en raison de sa compréhension limitée du contexte et de la complexité. Il est donc important de constamment affiner et valider les tests générés pour garantir leur pertinence et leur efficacité.
Pour surmonter ce défi, il est essentiel de mettre en place un processus de validation et de vérification des tests générés. Cela peut inclure la revue des tests par des experts en QA, l’utilisation de techniques de validation automatique et la mise en place de métriques pour évaluer l’efficacité des tests.
Microsoft a rapporté que l’utilisation de GitHub Copilot pour les tests unitaires a permis d’augmenter de 55 % la couverture de code en moyenne sur leurs projets internes, tout en réduisant de 30 % les erreurs de régression.
2. Les exigences de calcul élevées
Les modèles d’IA générative tels que les GAN (Generative Adversarial Networks) et les Transformers nécessitent une grande puissance de calcul pour fonctionner efficacement. Cela peut être un problème pour les organisations plus petites qui n’ont pas les ressources nécessaires pour investir dans des infrastructures de calcul coûteuses.
Pour surmonter ce défi, il est possible de mettre en place des solutions de cloud computing qui permettent de louer des ressources de calcul à la demande. Il est également possible d’utiliser des techniques de réduction de la complexité des modèles pour réduire...
Évaluer son niveau de maturité pour mieux progresser
L’évaluation du niveau de maturité en ingénierie du test est un élément crucial pour les organisations qui souhaitent intégrer l’intelligence artificielle dans leurs métiers du test.
L’évaluation du niveau de maturité en ingénierie d’automatisation est essentielle pour plusieurs raisons :
-
Compréhension des besoins : l’évaluation du niveau de maturité permet de comprendre les besoins et les lacunes de l’organisation en matière d’automatisation.
-
Préparation à l’adoption de l’IA : l’évaluation du niveau de maturité permet de déterminer si l’organisation est prête à adopter l’IA dans les métiers du test.
-
Optimisation des processus : l’évaluation du niveau de maturité permet d’identifier les processus qui peuvent être optimisés ou automatisés.
-
Développement des compétences : l’évaluation du niveau de maturité permet d’identifier les compétences nécessaires pour travailler avec l’IA.
-
Alignement avec les objectifs : l’évaluation du niveau de maturité permet de s’assurer que les objectifs de l’organisation sont alignés avec les capacités...
Intelligence artificielle et tests unitaires : une nouvelle approche de la qualité logicielle
Les tests unitaires constituent un pilier fondamental du développement logiciel moderne, garantissant la fiabilité et la maintenabilité du code.
L’émergence des modèles de langage transforme aujourd’hui la façon dont les professionnels de l’IT abordent cette tâche critique. Des avancées majeures sont de plus constatées chaque jour, mais encore faut-il les maîtriser et identifier le modèle de langage en fonction de ses besoins.
C’est là qu’intervient DevQualityEval (https://github.com/symflower/eval-dev-quality), qui représente une référence majeure dans l’évaluation des modèles de langage pour le développement logiciel. Cet outil d’évaluation, développé par Symflower (https://symflower.com/en/company/blog/2024/dev-quality-eval-v0.6-o1-preview-is-the-king-of-code-generation-but-is-super-slow-and-expensive/#ceiling), analyse la capacité des modèles d’IA à générer du code de qualité dans différents langages comme Java, Go et Ruby. Sa version 0.6 à partir de laquelle nous allons vous présenter les résultats a permis d’évaluer plus de 80 modèles de langage différents, offrant ainsi une vision complète des performances actuelles en matière de génération de tests unitaires.
La création de tests unitaires constitue un défi majeur qui nécessite une compréhension approfondie de la logique d’implémentation.
L’analyse menée via DevQualityEval révèle des résultats particulièrement...
Identifier et gérer le code mort dans les projets par le test
Le code mort est un problème fréquemment rencontré dans les projets logiciels. Il s’agit de morceaux de code inutilisés, quel qu’en soit le langage, souvent délaissés après des mises à jour, des suppressions de fonctionnalités ou des refontes.
Bien qu’il semble inoffensif, le code mort peut compliquer la gestion du projet, réduire sa lisibilité et semer la confusion, surtout pour les nouveaux membres de l’équipe. Cette section nous permet d’explorer comment identifier et gérer le code mort à l’aide d’outils d’IA générative et de bonnes pratiques.
Vous l’aurez compris, supprimer le code mort rend les projets plus clairs et faciles à maintenir. Cela améliore la lisibilité, réduit la dette technique et optimise les performances. Cependant, identifier ce code peut être complexe, car il peut sembler inutile tout en jouant un rôle critique dans des scénarios rares ou spécifiques. Il est donc essentiel d’appliquer des techniques adaptées pour détecter et gérer efficacement ces morceaux de code. Nous vous proposons ci-dessous d’utiliser des prompts applicables sur les LLM de votre choix afin d’identifier ces fameux codes « morts ».
Contexte : détection de code inutilisé dans un projet JavaScript
Exemple de prompt : « Pouvez-vous m’aider à identifier les parties inutilisées dans ce snippet de code JavaScript ? »
Explication : ce prompt permet de demander à un modèle d’IA d’analyser un extrait de code et de signaler les variables, fonctions ou blocs de code qui semblent inutilisés. Cela peut aider à accélérer le processus de nettoyage.
Réponse GPT-4 :
|
* « Après analyse du snippet JavaScript fourni, voici les éléments potentiellement inutilisés que j’ai identifiés :
1. **Fonctions non appelées** - La fonction `calculateDiscount()` est déclarée mais n’est jamais invoquée dans le scope actuel. - La fonction helper `formatCurrency()` n’a pas de références... |
Exemples de prompts pour les métiers de test
Dans cette section, vous trouverez vingt exemples de prompts pour les métiers de test qui peuvent être utilisés pour améliorer l’efficacité et la qualité des tests.
Stratégie d’automatisation des tests
Exemple de prompt :
« Proposez une stratégie d’automatisation des tests pour notre application web qui couvre les tests de régression, les tests de fumée et les tests d’intégration. La stratégie doit prendre en compte les aspects suivants :
-
l’évolutivité de la solution ;
-
la facilité de maintenance ;
-
la réutilisation des composants ;
-
les bonnes pratiques d’automatisation.
Détaillez votre approche et les outils recommandés. »
Résultat attendu :
Plan détaillé couvrant l’évolutivité, la maintenance et les bonnes pratiques.
Suite de tests mobiles
Exemple de prompt :
« Générez une suite de tests complète pour notre application mobile incluant :
-
des scénarios de tests manuels et automatisés ;
-
la couverture des principales fonctionnalités ;
-
la gestion des cas limites ;
-
les tests de compatibilité ;
-
les tests de performance.
Fournissez des exemples de scripts pour les cas de test critiques. »
Résultat attendu :
Suite de tests complète avec exemples de scripts pour les cas critiques.
Optimisation de la couverture des tests d’API
Exemple de prompt :
« Analysez les métriques de couverture de notre Framework de tests d’API et suggérez des améliorations pour :
-
augmenter la qualité du code ;
-
réduire les problèmes de régression ;
-
optimiser la couverture des tests ;
-
éliminer les redondances ;
-
proposez une feuille de route avec des actions concrètes. »
Résultat attendu :
Feuille de route avec des actions concrètes pour améliorer la couverture des tests d’API.
Priorisation des tests
Exemple de prompt :
« Créer un backlog priorisé de cas de test pour notre nouvelle fonctionnalité en tenant compte :
-
des facteurs de risque ;
-
des chemins critiques ;
-
des dépendances ;
-
des scénarios...
Outils et frameworks d’automatisation des tests basés sur l’IA
L’automatisation des tests est un processus crucial dans le développement de logiciels, car elle permet de détecter les défauts et les erreurs plus tôt et de réduire les coûts et les délais de correction. Cependant, l’automatisation des tests peut être un processus complexe et fastidieux, en particulier lorsqu’il s’agit de tests fonctionnels et de tests d’intégration.
L’IA peut être utilisée pour automatiser les tests de manière plus efficace et plus efficiente, en utilisant des algorithmes et des techniques d’apprentissage automatique pour analyser les données et détecter les défauts.
Dans cette section, nous vous proposons d’explorer des outils et les frameworks d’automatisation des tests basés sur l’IA qui sont disponibles sur le marché. Nous allons examiner les fonctionnalités et les avantages de chacun ainsi que les cas d’utilisation et les exemples de mise en œuvre.
1. Applitools

Applitools révolutionne l’assurance qualité logicielle en intégrant l’intelligence artificielle aux tests d’interfaces utilisateur. Cette solution SaaS exploite des algorithmes d’apprentissage automatique sophistiqués pour automatiser la détection d’anomalies visuelles et fonctionnelles.
Le moteur d’Applitools, baptisé « Visual AI », repose sur des réseaux de neurones convolutifs spécialement entraînés pour analyser la structure DOM (Document Object Model) des pages web, détecter les incohérences de mise en page, identifier les problèmes de responsive design et repérer les défauts d’accessibilité.
L’outil s’intègre parfaitement avec les frameworks de test majeurs comme Selenium WebDriver pour différents langages (Java, Python, C#, JavaScript), Appium pour le mobile, TestComplete, Cypress, Playwright et WebdriverIO.
L’analyse contextuelle intelligente permet la détection automatique des éléments dynamiques, la gestion des variations acceptables et le filtrage intelligent du bruit visuel. La validation multi-plateforme assure des tests cross-browser automatisés...
Conclusion
Il est évident que l’IA est en train de transformer radicalement la façon dont les tests sont conçus, exécutés et analysés dans le domaine de l’informatique. Les professionnels de l’IT doivent être pleinement conscients de ces évolutions pour rester compétitifs et offrir des produits et services de haute qualité qui répondent aux besoins des utilisateurs.
L’intégration de l’IA dans les processus de test a déjà montré son efficacité en permettant d’automatiser des tâches répétitives, d’améliorer la couverture des tests, de réduire les coûts et les délais, et de détecter les défauts plus tôt.
Les techniques d’apprentissage automatique et de Deep Learning peuvent être utilisées pour analyser les données de test, identifier les tendances et les anomalies, et prédire les comportements des systèmes.
Cependant, l’adoption de l’IA dans les métiers du test présente également des défis importants. Les professionnels de l’IT doivent acquérir de nouvelles compétences pour travailler avec les outils et les techniques d’IA, et les questions éthiques et de sécurité doivent être prises en compte pour garantir que les systèmes d’IA...