Tests logiciels automatisés : l’importance de rendre les testeurs autonomes

par Christophe Cressend | 16 décembre 2020

Faire réaliser des tests automatisés par les testeurs fonctionnels n’ayant aucune compétence en développement informatique est au centre du système mis en place par Agilitest. Ce point ne fait pas forcément consensus dans notre profession, alors pourquoi est-ce important pour nous, voici notre point de vue.

L’automatisation des tests logiciels

Cet article n’abordera pas la question de l’automatisation des tests unitaires et des tests d’intégration sur lesquels il y a généralement consensus : La mise en oeuvre de l’automatisation des tests logiciel commence en général par cette phase relativement maîtrisée, cette activité est réalisée par les développeurs, ils sont autonomes, utilisent leurs outils de développement, et ont une bonne compréhension des développements qu’ils ont réalisés. C’est donc une étape nécessaire pour aller vers plus d’automatisation.

La question qui vient juste derrière est : qu’en est-il des tests fonctionnels ? quels sont les problèmes rencontrés par les équipes pour les automatiser ? et pourquoi est-ce important de rendre les équipes de testeurs autonomes sur ce sujet ?

Les tests fonctionnels

Les tests fonctionnels sont, en général, réalisés par des équipes de testeurs professionels qui connaissent bien le métier, ainsi que ses règles, qui sont implémentées dans le logiciel. Leur domaine d’intervention va du test des fonctions principales du logiciel (test fonctionnel) à des scénarios métiers, utilisation d’un ensemble de fonctions complémentaires d’un logiciel pour réaliser une opération complexe (test métier). Ces derniers peuvent être réalisés en suivant des scénarios pré-définis, qui sont en général de vrais cas clients dont il faut absolument s’assurer qu’ils fonctionnent, ou en explorant au gré de leur volonté des domaines de fonctionnement qui pourraient avoir du sens pour certains clients, on parle alors de tests exploratoires.

Ces tests exploratoires sont le graal que rêvent d’atteindre les équipes de testeurs métiers, car ils permettent d’évaluer de vrais cas clients complets, de mettre en oeuvre ses connaissances du métier, d’évaluer l’expérience utilisateur, les enchaînements et les graphismes.

Evidemment, les tests exploratoires ne peuvent pas être automatisés, même si on peut envisager de réaliser des combinatoires aléatoires automatiques entre plusieurs scénarios prédéfinis.

Il est donc important que les équipes de testeurs fonctionnels puissent gagner du temps, sur les tests fonctionnels, et les tests métiers à scénarios pré-définis.

Le problème de l’automatisation des tests

Les équipes de testeurs fonctionnels sont des experts qui n’ont , en général, que peu de connaissance en développement informatique, et malheureusement la majorité des logiciels actuels d’automatisation des tests logiciels fonctionnel nécessitent d’écrire du code.

L’automatisation des tests fonctionnels et métiers passe donc par un dialogue continu entre eux, qui spécifient les tests, et des équipes de développement, éventuellement dédiées, qui réalisent les tests. Lorsque le logiciel évolue, chaque test va aussi évoluer, et donc l’échange entre les deux équipes devient rapidement une partie de ping-pong incessante. Nous ne parlons que de la réalisation des tests, mais si on ajoute la maintenance des tests, cela génère une charge de travail et d’analyse qui peut être rapidement importante. En effet, il y a différentes cause d’un tests en échec en intégration continue : un vrai bug, le test doit être revu ou il y a un flaky test…

Ces méthodes de travail vont mobiliser des équipes sur des activités inutiles, alors qu’on souhaiterait qu’elles puissent travailler et être efficace dans d’autres domaines : produire de nouvelles fonctionnalités (pour les développeurs) et réaliser plus de tests métiers et exploratoires (pour les testeurs fonctionnels).

Au final, cela conduit généralement à limiter le nombre de tests fonctionnels automatisés qui sont réalisés et on passe à côté des objectifs de l’automatisation : pouvoir produire un logiciel dont on maîtrise globalement la qualité en réduisant au maximum les interventions humaines.

Des testeurs fonctionnels autonomes ?

L’intérêt de procurer aux testeurs fonctionnels une complète autonomie dans la réalisation de leurs tests automatisés est multiple :

Ils maitrisent leur scénario au gré des évolutions du logiciel.

Ils peuvent eux même analyser les causes d’échec et faire la maintenance des tests

Cela leur permet d’avoir ensuite plus de temps pour les tests exploratoires, et pour s’accorder avec les product owner et les développeurs sur les prochains développement qui vont être réalisés.

Les priorités que nous nous fixons lorsque nous abordons les développement et évolutions que nous réalisons dans Agilitest sont toujours guidés par ces principes : est-ce que cela va permettre aux testeurs fonctionnels de gagner en autonomie ? est-ce que la maintenance des tests sera facilitée ?

Crédit Photo : Cocoparisienne sur Pixabay