La journée française des tests logiciels, dont Best Practices était partenaire, qui s’est déroulée en avril 2019, organisée par le CFTL (Comité français des tests logiciels) a, une fois de plus, provoqué l’affluence, avec 1 200 participants. Parmi les interventions : comment tester les intelligences artificielles ?
A l’occasion de l’édition 2019 de la journée française des tests logiciels ont été présentés les résultats d’une enquête, menée auprès de 843 professionnels du test. Premier enseignement de cet l’observatoire 2019 sur les pratiques des tests logiciels en France: les tests deviennent de plus en plus agiles, avec des approches de type Scrum, Kanban ou SAFe. Les deux-tiers des professionnels les pratiquent en 2019, contre la moitié en 2017.
Ceux qui privilégient les approches par phase (cycle en V) ne représentent plus qu’un tiers des professionnels, contre la moitié en 2017. Deuxième enseignement : les testeurs sont de plus en plus intégrés aux équipes projets (55 % en 2019, contre 50 % en 2017 et 35 % en 2013). Troisième enseignement : on note une progression de l’automatisation des tests : un tiers des entreprises automatisent entre 25 % et 75 % des tests. Même s’il reste six entreprises sur dix qui n’en automatisent que moins de 25 %, c’est une tendance notable qui devrait se confirmer au cours des prochaines années.
« Le développeur-testeur, c’est l’avenir… en fait c’est plutôt d’intégrer des compétences de développement dans les équipes de test », estime Nicolas Pescheux, responsable du centre de test de BNP Paribas Cardif. Ainsi, 82 % des professionnels affirment avoir choisi l’orientation vers le test, c’est mieux qu’en 2017. Pour Olivier Denoo, président du Comité français des tests logiciels et vice-président de PS_Testware, « le marché demeure très porteur et la difficulté reste de trouver les compétences, d’autant que la problématique des tests n’est pas vraiment adressée dans les écoles, pour un métier qui n’est pas « hype ». »
Les tests au cœur de la complexité des systèmes d’information
Les tests sont pourtant stratégiques : « Quand des utilisateurs ont de sérieux problèmes de performance de leurs applications (devenues trop lentes dans 90 % des cas), cela génère une cellule de crise et si les applications sont critiques, la direction générale ne tarde pas à s’en mêler : les équipes techniques ont donc besoin d’informations pertinentes et en temps réel, c’est quand même l’image de la DSI qui est en jeu », rappelle Robert Renaudin, fondateur de Atakama technologies, spécialiste de la performance du système d’information, qui vient d’acquérir l’éditeur Nudge APM, le seul éditeur français dédié Monitoring de Performance des Applications (APM) pour la supervision et le diagnostic en temps réel du comportement du code des applications en production.
Et les problèmes de performance tendent à s’aggraver et sont de plus en plus complexes à diagnostiquer. « Cela s’explique pour essentiellement deux raisons », estime Robert Renaudin. « D’une part, avec l’engouement pour les développements agiles, les métiers exigent des mises en production rapides, la qualité des logiciels s’en ressent. D’autre part, les évolutions technologiques font qu’une application n’est plus monobloc, comme cela pouvait être le cas dans le passé, mais se compose de multiples services, éventuellement produits par des tiers. Mais c’est difficile pour une entreprise d’avoir la masse critique pour créer une équipe de test, ce n’est pas leur cœur de métier, c’est un travail relativement ingrat et il faut investir en logiciels, d’où l’approche consistant à confier ces tâches à des experts. Peu d’entreprises ont une vraie stratégie d’outillage de la performance du système d’information, les outils et les équipes sont souvent dissociées », estime Robert Renaudin.
Comment tester une intelligence artificielle ?
La problématique des tests va d’ailleurs se complexifier avec l’intelligence artificielle. « Peut-on tester une intelligence artificielle ? », s’interroge Laurent Bouhier, directeur opérationnel d’Acpqualife, société spécialiste du test et de la qualification logicielle. « La complexité technologique et la vitesse des changements sont telles que le vrai danger de l’intelligence artificielle, ce ne sont pas les robots tueurs, mais les biais dans les données », ajoute-t-il.
On l’a vu par exemple avec Tay, le chatbot de Microsoft qui est devenu raciste et xénophobe parce qu’il a appris avec des internautes malveillants. Autre exemple, cité par Laurent Bouhier lors de son intervention à la JFTL : Compas (Correctional Offender Management Profiling for Alternative Sanctions), algorithme prédictif utilisé par une partie des tribunaux américains et dont l’un des objectifs est de déterminer le risque de récidive. « Résultat : les afro-américains sont 77 % plus souvent associés à tort à un fort risque de récidive qu’une personne blanche », rappelle Laurent Bouhier.
Il est également possible de tromper une intelligence artificielle avec des techniques d’Adversarial Machine Learning, par exemple avec des illusions d’optique dans le cadre de la reconnaissance de photos. « C’est plus gênant dans le domaine du transport, avec les voitures autonomes, car on peut faire prendre un panneau stop pour un panneau de limitation à 45 », ajoute Laurent Bouhier pour qui, dans la mesure où il est relativement facile de tromper une intelligence artificielle, cela renforce la nécessité des tests.
« D’autant, précise-t-il, qu’on ne sait pas toujours à quel moment une IA commence à avoir tort. » La solution réside dans des tests métamorphiques qui mesurent les relations entre les données en entrée et en sortie. « Les tests métamorphiques sont automatisables », assure Laurent Bouhier. Pour tester une intelligence artificielle, il faut se poser plusieurs questions (voir encadré page 8) et disposer de multiples compétences, notamment en analyse de données, en méthodes agiles, en concepts de modélisation, en analyse prédictive, en approches d’apprentissage et techniques de clustering/classification. « Les testeurs doivent avoir le désir de résoudre les problèmes de l’entreprise et de trouver des modèles et des idées au sein de données structurées et non structurées », suggère Laurent Bouhier.
L’intelligence artificielle peut être également utilisée pour automatiser les tests. « L’intelligence artificielle a pour but de rendre les tests plus faciles et plus rapides. En particulier, l’IA est idéale pour tester d’autres formes d’intelligence artificielle », estime Laurent Bouhier. Il recommande d’investir dans des plateformes intelligentes d’assurance qualité et d’auto-apprentissage de tests pour tous les domaines applicatifs. « Il faut automatiser tout ce qui est possible, afin d’accélérer le cycle complet de développement du produit. Il n’est plus possible de tenir le rythme manuellement ! Concrètement, les humains ne peuvent pas traiter toutes les données transférées : utiliser des IA pour trier les données, trouver les données pertinentes et rechercher les associations que l’œil humain ne voit pas. »
Autrement dit, pour Laurent Bouhier, « les testeurs deviendront des prévisionnistes, qui utilisent des ensembles intelligents de scénarios de tests, qui évoluent pour s’adapter au mieux à l’environnement mouvant, par exemple dans une solution de « IoT », et prendre de l’avance en identifiant le défaut sous-jacent avant que la situation ne se produise. » Si l’on prolonge le raisonnement, une intelligence artificielle peut-elle, un jour, remplacer les testeurs ? Le métier de testeur de systèmes informatiques a une probabilité de 0,6% d’être remplacé par un robot. « Comment le savons-nous ? Certains aspects du travail sont plus faciles à automatiser que d’autres. Tout dépend des tâches, il y a une activité à forte valeur ajoutée que l’IA ne sait pas (encore) faire : les tests exploratoires ! L’automatisation permet d’exercer le vrai métier de testeur ! », soutient Laurent Bouhier.
La nécessité de tester l’intelligence artificielle est apparue chez EDF : « Le nombre de projets en IA est en forte augmentation, nous en avons une cinquantaine, hors R&D », précise Sami Mallek, expert méthodes et outils, responsable automatisation chez EDF. « Il fallait répondre à la problématique de qualité, garantir des outils fiables aux clients et industrialiser les tests dans un domaine probabiliste. L’objectif est l’industrialisation de la pratique de test, afin de fluidifier la mise en production des solutions dans le SI et de suivre leur comportement, car il faut savoir identifier quand une IA dérive dans le temps », souligne Simon Devaradja, expert IA, responsable industrialisation chez EDF.
Dans un contexte d’intelligence artificielle, la démarche a consisté à rajouter des types de tests adaptés (data, apprentissage….), à définir un taux de confiance sur les résultats attendus, à déterminer les risques éthiques et à identifier les moyens à mettre en place, afin que la solution ne dérive pas en maintien en conditions opérationnelles. Il faut pouvoir, notamment, tester les données du futur : « On ne maîtrise pas la donnée de demain. Elle peut causer des situations de bugs, mais aussi l’obsolescence du modèle », précise Sami Mallek, qui conseille de vérifier que le format de la nouvelle donnée respecte celui utilisé lors du build et qu’elle est statistiquement bien représentée par la donnée d’apprentissage.
Stratégie de test d’une intelligence artificielle : les questions à se poser
- Quel est le résultat attendu du modèle ?
- Existe-t-il différents ensembles de données pour l’apprentissage et pour les tests ?
- Les données de tests représentent-elles suffisamment bien les données attendues ?
- Les données sont-elles conformes au cadre juridique (RGPD par exemple) ?
- Les données sont-elles biaisées ?
- La solution peut-elle se comporter de manière contraire à l’éthique (sexisme ou racisme par exemple) ?
- Quelles sont les performances et la robustesse attendues ?
- Quels sont les critères d’acceptation et comment les tester avec un minimum d’efforts ?
Source : Acpqualife.
Les facteurs clés de succès des tests en mode agile
- Le fonctionnement de l’équipe : communication, relations humaines avec les différentes parties prenantes du projet, équipe intégrée et impliquée dans le processus qualité…
- Les compétences métier : rigueur, curiosité, adaptabilité, persévérance, formation (métier, outils) et expérience…
- La culture métier de l’organisation : adhésion au bénéfice du test et à l’importance de la qualité, soutien du management et reconnaissance du métier…
- Les méthodes et la gestion de la qualité : processus, industrialisation, stratégie, planification, monitoring, reporting, traçabilité…
- L’outillage métier : plateformes et environnements de tests adaptés, évolutifs et robustes…
- L’automatisation des tests.
- L’ingénierie des exigences.
Source : Observatoire 2019 sur les pratiques des tests logiciels en France, Comité français des tests logiciels.