Les tests sont en constante évolution. Ces changements s'accompagnent de nouveaux défis que les testeurs doivent relever. Malheureusement, les tests, l'industrie du logiciel et même notre société évoluent si rapidement que de nouveaux défis apparaissent alors que les défis existants ne sont pas encore totalement résolus.
Les testeurs d'aujourd'hui sont confrontés à des défis à la fois historiques et actuels. Quant aux testeurs de demain, ils devront probablement faire face aux mêmes défis que les testeurs d'aujourd'hui, tout en accueillant de nouveaux défis que nous commençons à voir venir.
Dans cet article, je vais partager une sélection de défis qui sont, à mon avis, les principaux défis de test d'aujourd'hui et de demain.
Les défis historiques du test
La place du test et le testeur
Ce problème est récurrent, et je le vois perdurer indéfiniment. Il est vrai qu'aujourd'hui, la grande majorité des entreprises, des sociétés et des équipes de développement de logiciels ont besoin de tester leurs produits. Et pour cela, il faut des spécialistes... des testeurs.
De ce point de vue, le chemin est fait. Néanmoins, ce n'est que le début et il reste encore beaucoup de chemin à parcourir pour faire accepter le testeur, ses interventions. Mais aussi le fait que les tests ne sont pas exclusivement réservés aux testeurs.
J'ai remarqué des changements de noms pour désigner le métier de testeur. QA ou QE pour ne citer qu'eux. En effet, en plus de véhiculer une image positive, ces changements évitent un raccourci trop souvent fait : " les tests sont pour les testeurs ". Les tests sont une mesure de la qualité, et la qualité est la responsabilité de tous !
Automatisation des tests
J'entends parler de l'automatisation des tests d'interface graphique depuis que j'ai commencé cette activité, en 2011. À cette époque, on me disait déjà que l'automatisation était un sujet qui existait depuis de nombreuses années. On m'a présenté QTP, on m'a parlé de ses avantages et on m'a dit qu'il ne s'agissait pas de " capture et relecture ".
Depuis, les outils ont considérablement évolué. Ils sont plus accessibles, plus puissants, plus faciles à utiliser, " cross-technologie "... et certains outils s'appuient sur l'IA pour faciliter cette automatisation. Néanmoins, l'automatisation des tests peine à se généraliser et les tests manuels n'ont pas disparu. Les raisons les plus courantes sont nombreuses :
- Le manque de temps,
- Manque de compétences en matière d'automatisation,
- Manque de ressources.
Même si ces raisons peuvent être vraies, elles ne sont pas les seules. D'autres raisons sont apparues :
- Questions de méthodologie pour lancer l'automatisation,
- Des logiciels et des technologies en constante évolution,
- Questions relatives à l'environnement et aux données,
- Le désir d'automatiser principalement (ou même uniquement) les tests de l'interface graphique alors qu'il est souvent plus simple et plus rapide d'automatiser les tests de niveau inférieur tels que les tests d'API.
Enfin, l'automatisation ne signifie pas seulement l'automatisation de l'exécution des tests, mais aussi l'automatisation d'autres activités telles que le reporting, la conception, la gestion de l'environnement et des données.
S'entraîner pour le test
Il est évident que la formation aux tests n'est pas suffisante en France. Selon le dernier rapport WQR, les testeurs représentent environ 30% des membres des équipes Agile :
Or, je vois très peu de formations pour devenir testeur, alors qu'il y en a beaucoup plus pour devenir développeur. Il est donc urgent que les universités et les écoles proposent des cours dédiés, comme le font les institutions de l'association QTL Sup.
La formation post-scolaire est importante mais pas suffisante pour plusieurs raisons. Les deux principales sont le temps nécessaire à la formation et l'évolution des pratiques. Pour répondre au second problème, il existe actuellement différentes formations, les principales représentées sont les formations ISTQB.
Il existe également des cours de recyclage qui fonctionnent de mieux en mieux. A mon avis, il faut continuer à travailler dans ce sens tout en proposant des formations plus opérationnelles qui ne s'appuient pas forcément sur des outils spécifiques.
Les défis actuels en matière de test
S'adapter à la méthode Agile
Ce défi doit sembler évident pour tout le monde ; et de plus, il ne concerne pas seulement les tests. Cependant, ce n'est pas parce qu'il est évident qu'il est trivial. L'adaptation à la méthode Agile est peut-être la plus complexe, car elle est spécifique à chaque entreprise, chaque environnement, chaque équipe ! Vous pouvez être parfaitement adapté à l'Agilité dans votre équipe, et puis arriver dans une autre équipe et ne pas être adapté au système Agile de l'endroit.
Pour répondre à cette problématique, le testeur doit avoir des capacités de communication, d'écoute, de coaching, d'accompagnement, de questionnement, tout en restant curieux. Intégrer une équipe Agile de manière humaine n'est pas facile. Un testeur Agile, en tant que membre d'une équipe QA , doit se rendre le plus utile possible dans cette équipe. Cela se traduira par une montée en compétences/connaissances sur des sujets variés qui peuvent être très techniques ou très fonctionnels.
Pour l'instant, je n'ai parlé que de l'adaptation du testeur à la méthode Agile. Mais un test doit aussi s'adapter avec une exécution plus fréquente, une vision du produit et non Agile, des équipes multidisciplinaires... Au final, on pourrait presque dire qu'en Agilité, il faut tester plus (en termes de fréquence et de périmètre), mieux et en moins de temps.
Compétences techniques et fonctionnelles (API, BDD, données)
Ce défi est une conséquence du précédent. Les tests prennent de nombreuses formes, du shift left (avec BDD, ATDD et TDD) au shift right (tests de production), en passant par la gestion des environnements et des données.
Cette multiplicité de besoins nécessite également une multiplicité de compétences, qu'il est d'ailleurs complexe de réunir en une seule personne. C'est pourquoi on voit apparaître de plus en plus de présentations sur l'ingénierie QE. Où l'on recherche les compétences dans une équipe et donc la complémentarité entre ses différents membres. Ce qui n'exclut pas la nécessité d'augmenter les compétences dans les différents métiers, bien au contraire.
Cependant, ce dispositif a l'avantage de faciliter le développement des compétences au sein de l'équipe avec des pratiques collaboratives en binôme entre apprenants et experts.
Environnements et données
Ce défi pourrait être considéré comme un défi historique. Cependant, il y a quelques années, les problèmes étaient beaucoup moins importants. L'équipe de test avait ses environnements et ses données qu'elle gérait de manière unilatérale.
Ce n'est plus le cas avec Agile. Les environnements requis sont souvent plus nombreux. En effet, les données doivent être présentes, cohérentes et permettre d'assurer la validité de ce qui est testé. De même, les développements doivent respecter des normes telles que le GDPR (avec, par exemple, l'utilisation de données anonymisées), ce qui renforce considérablement les enjeux liés aux données et aux environnements.
Le CI/CD
Les défis posés par les tests continus, l'intégration continue et le déploiement continu sont étroitement liés à l'automatisation... tout en étant très différents, notamment en raison de leurs objectifs distincts.
L'intégration continue a pour but de valider les modifications ou évolutions du code effectuées par le développeur. Elle a lieu au moment des fusions de branches ('merges') lorsque le développeur intègre son code dans le code 'commun'. A ce stade, de nombreux tests sont effectués. Ils comprennent généralement une analyse statique (avec des outils de type Sonar) et des tests unitaires.
Il est toutefois possible d'ajouter quelques tests fonctionnels automatisés, pour s'assurer que cela ne ralentit pas trop le processus. Il est donc important pour les testeurs de trouver le bon équilibre entre la sélection de tests avec un niveau de qualité suffisant et le respect de la productivité avec des tests non chronophages. Même lorsqu'elle est automatisée, l'exécution des tests prend du temps.
Le déploiement continu va plus loin que l'intégration continue, car l'objectif n'est plus de livrer en test mais en production. Les contraintes restent les mêmes que pour l'intégration continue (même si la contrainte de temps est un peu moins forte) mais l'exigence de qualité va au-delà de la simple fonctionnalité. Il est donc essentiel de penser au non-fonctionnel, en intégrant par exemple des tests de performance, de sécurité, d'accessibilité ou tout autre critère significatif.
Test de l'IA
L'IA et les logiciels intelligents sont deux sujets dont on parle de plus en plus. En fait, il ne s'agit plus seulement de " ouï-dire ", mais d'une réalité. Il existe de plus en plus de logiciels utilisant l'IA et, dans de nombreux cas, le Machine Learning. Les assistants vocaux sont des exemples parfaits et assez bien testés d'applications utilisant l'IA.
Nous pouvons également citer des exemples de robots conversationnels sur les réseaux sociaux qui deviennent extrémistes en quelques heures. Ou des logiciels qui proposent de libérer des criminels endurcis, mais pas des personnes sans réel danger de récidive. Ou encore des assistants vocaux qui sont incapables de comprendre ce qu'on leur dit !
Tester l'IA est complexe car le résultat attendu n'est pas déterminé. Il est donc nécessaire d'orienter sa stratégie de test (qui inclut le test des données utilisées pour entraîner cette IA) afin de réussir à adapter ses tests en fonction de ses contraintes.
Compléter l'IA
Les logiciels utilisant l'IA ne se limitent pas aux logiciels grand public, car il existe évidemment des applications qui visent à faciliter le travail des testeurs. Parmi ces applications, il est pertinent de mentionner :
- Les applications liées à la gestion de la régression en utilisant les traces des utilisateurs pour déterminer les chemins les plus sensibles,
- Les algorithmes de pré-analyse des tests échoués ou de priorisation des tests,
- L'anonymisation des données, voire la création de données synthétiques,
- Les outils de mesure de la qualité.
Les possibilités sont limitées à notre imagination.
L'émergence de ces outils va libérer du temps pour le testeur. Les testeurs devront s'adapter en se concentrant sur des tâches à forte valeur ajoutée - méthodologique (stratégie, tests exploratoires, conception de cas spécifiques...) ou technique (écriture de tests spécifiques, mise en place d'outils complémentaires, analyse des résultats de l'IA et amélioration de ceux-ci...).
Tester en pensant aux gens
C'est peut-être le point le plus important pour moi !
Les logiciels deviennent de plus en plus essentiels dans nos vies. Il a un pouvoir croissant et nous touche directement. A l'heure où les scandales se multiplient, nous devons en être conscients et prendre en compte l'impact de certains produits et fonctionnalités sur le quotidien des utilisateurs.
En même temps, le facteur humain doit devenir un critère de qualité à part entière. Ce critère pourrait être composé de deux sous-critères :
- Éthique
- Pourquoi testons-nous ? L'intérêt principal est-il le bien des utilisateurs et des humains ou au contraire un but purement lucratif (ajout de publicités non désirées, collecte de données...) ?
- L'impact
- La route de l'enfer est pavée de bonnes intentions. Les algorithmes de recommandation en sont la preuve. L'idée est de proposer des contenus que nous apprécierons sûrement, mais cela peut très vite enfermer l'utilisateur dans un " faux monde " d'opinions.
En résumé
Le présent et l'avenir des tests sont riches. Les défis du test sont nombreux et variés, ils poussent les testeurs à être inventifs, à s'adapter et à réfléchir. La liste proposée est loin d'être exhaustive, mais j'espère qu'elle représente l'effervescence actuelle de ce domaine.
En plus d'une classification par "temporalité", il me semble évident que l'on pourrait utiliser une autre échelle relative aux enjeux des tests, une échelle basée sur la méthodologie et la technique. En effet, selon les défis de test, les compétences requises ne sont pas les mêmes. La carte ci-dessous résume les principaux défis rencontrés.
Avez-vous rencontré d'autres défis en matière de tests ? Je vous invite à les mentionner dans les commentaires ou à les placer sur ce même schéma.