L’intelligence artificielle rend-elle les testeurs de logiciels obsolètes ? Probablement pas. L’IA est bien plus susceptible de rendre les développeurs obsolètes. Mais il ne fait aucun doute que l’IA implique un changement majeur dans les tests logiciels. Cet article discute de certains des changements auxquels nous allons probablement assister très prochainement.
Il y a longtemps, l’automatisation des tests a remplacé les testeurs accomplissant le travail des robots, à savoir exécuter des tests conçus par quelqu’un d’autre. Les testeurs n’ont pas disparu. Leur temps a été libéré pour concevoir davantage de tests, de meilleure qualité et, bien entendu, pour les automatiser. Plus tard, les méthodes agiles et le DevOps étaient censés rendre le testeur redondant, puisque les développeurs testeraient leur propre code lors de sa création. Il s’est avéré que la plupart des développeurs préféraient écrire du code plutôt que de le tester. Nous avons également appris que l’on doit tester l’ensemble du processus métier à travers les limites applicatives. Les testeurs ont donc élargi leur champ d’intervention aux tests exploratoires et aux tests de bout en bout.
Comment l’IA va-t-elle transformer les tests logiciels
L’IA va transformer le rôle du testeur en devenant une précieuse assistante sur les activités que les humains n’effectuent pas très bien. L’IA est susceptible de structurer tout le processus de test, et pas seulement d’améliorer des tâches individuelles.
Le travail d’un testeur se caractérise par le fait que les mêmes tâches doivent être faites plusieurs fois, avec peu de variations et beaucoup d’attente. Les testeurs attendent :
- qu’une nouvelle version soit prête à tester.
- que les exécutions automatisées se terminent.
- qu’un correctif soit apporté à un bug bloquant la suite des tests.
- Et ainsi de suite...
Les testeurs accomplissent aussi des tâches qui demandent beaucoup d’attention aux détails et qui sont parfois peu motivantes, telles qu’analyser les résultats des tests automatisés, maintenir les tests automatisés défaillants suite à des modifications applicatives, ou bien calculer et rapporter l’avancement des tests. Chaque minute consacrée à ces activités essentielles retarde la remise des résultats à d’autres personnes qui les attendent.

L’exécution des tests représente la majorité du travail en test. Celle-ci est largement automatisée, mais elle exige toujours une intervention humaine ; or, cette intervention humaine ralentit l’ensemble du cycle de test. Nous avons encore besoin de l’humain pour automatiser les tests exécutés par un robot, pour maintenir ces tests lors des changements d’application, et pour analyser les résultats d’exécution. Il existe déjà des outils de test à base d’IA capables de sélectionner et d’ordonner les tests en fonction de leur probabilité à détecter des erreurs, de réparer automatiquement les tests cassés ou de pré-remplir des rapports de défauts.
L’impact immédiat de l’IA pour les QAs
Dans la prochaine vague de création de tests automatisés, nous verrons apparaître des outils capables de générer des tests directement à partir d’une description de cas d’utilisation ou même plus directement encore, en observant un testeur humain explorer l’application. Voilà un progrès considérable, allant du test automatisé vers le test autonome. Nous n’y sommes peut-être pas encore. La plupart des applications et processus métiers sont propriétaires, et les données nécessaires à l’apprentissage de l’IA sont disséminées dans différents outils de test logiciel. Par conséquent, nous observerons probablement d’abord des tests supervisés par l’humain plutôt qu’un test entièrement autonome.
La plupart des équipes logicielles ont trop peu de tests plutôt que trop. Avec le recours à l’IA, il est probable que le patrimoine de tests va s’accroître. Si l’exécution de tests automatisés est pratiquement gratuite, la rapidité de l’obtention des résultats reste cruciale. Il serait donc pertinent d’ordonner les exécutions de régression afin que les tests ayant le plus de chances de détecter des erreurs soient exécutés les premiers. Si l’IA maîtrise suffisamment les données du cycle de vie, elle peut examiner les modifications de code et les résultats de tests antérieurs, déterminer comment ordonner les tests et accélérer ainsi le feedback.
Si l’IA est en mesure de sélectionner les tests selon leur probabilité de détecter des erreurs, elle doit aussi pouvoir prévoir où les erreurs risquent d’être découvertes. Un testeur humain peut aussi tirer parti de cette information en concentrant ses efforts de tests exploratoires manuels sur ces fonctionnalités.
Pour beaucoup, l’IA est synonyme des capacités de génération de langage naturel illustrées par ChatGPT. Ces compétences ont aussi leur place dans le test logiciel. Si l’IA sait créer un cas de test, elle saura également relater l’exécution d’un test dans un rapport de défaut. Il est probable qu’un rapport de bug généré par l’IA sera plus lisible et compréhensible qu’un rapport rédigé à la hâte par un humain pressé de passer au test suivant.
En plus des rapports de défauts, les tests génèrent de nombreuses données quantitatives sur la qualité du logiciel, et même sur le processus de développement en lui-même. Le problème, c’est que les personnes proches des tests, qui comprennent ces données, ne prennent pas le temps de les expliquer à ceux qui devraient les comprendre, et ces derniers ne font pas toujours l’effort d’écouter. L’IA peut rendre un grand service aux deux parties, et à leurs responsables, en transformant les statistiques de tests en retours verbaux, conclusions et recommandations.
L’IA remplacera-t-elle les QAs ?
Il est tentant d’imaginer ce qui est le plus facile à remplacer par l’IA : un testeur ou un développeur. Il est plus simple de générer un test que de générer du code. D’un autre côté, générer des tests pertinents demande davantage d’imagination. Après tout, coder consiste à transformer une exigence en code qui fait fonctionner l’application, tandis que tester devrait transformer une exigence en un ou plusieurs tests qui devraient faire échouer l’application.
À grande échelle, la conception de tests est toutefois plus simple que la programmation. Construire un grand système d’information est bien plus difficile qu’écrire du code pour une fonction unique. Concevoir des tests pour un grand système d’information n’est pas beaucoup plus compliqué que de concevoir des tests pour une fonctionnalité individuelle. C’est tout simplement plus de travail. La mise en place des tests, cependant, peut s’avérer bien plus complexe.
Par exemple, configurer et vérifier un test qui crée une commande dans une application mobile, puis la fait traiter dans Salesforce avant qu’elle ne soit acheminée vers la gestion des commandes dans SAP est une tâche très complexe—bien que le scénario de test en soi soit assez simple. Nous aurons besoin d’humains assistés par l’IA tout autant que d’une IA assistée par l’humain.
Même ces petits exemples prouvent que les choses seront très différentes dans un avenir proche. L’IA va accélérer la vitesse et la productivité du développement logiciel, mais elle ne sera pas encore capable de créer les logiciels et d’en assurer la qualité de manière autonome.
Si j’étais aujourd’hui testeur logiciel à temps plein, je ne m’inquiéterais pas que l’IA prenne mon poste. Je m’inquiéterais de savoir comment tester l’IA.
Vous souhaitez en savoir plus sur l’IA et les tests logiciels ? Abonnez-vous alors à la newsletter du CTO Club pour découvrir toutes les dernières tendances.
