Le testeur est une assurance pour la qualité ?
Le terme d’ingénieur « QA » pour « Quality Assurance » – traduit Assurance Qualité en français – est de plus en plus fréquent pour nommer le métier de « testeur logiciel ». Cette démocratisation de ce terme tend à indiquer que le testeur est, de par sa présence et son action, une « assurance » de la qualité !
Est-ce vraiment le cas ?
Pour répondre à cette question il faut d’abord revenir à ce qu’est une assurance. Je vois personnellement plusieurs définitions qui peuvent convenir :
- Une entité qui est là pour diminuer le plus l’impact d’un incident après qu’il arrive
- Une entité qui valide l’atteinte d’un niveau particulier
Le testeur répond-il à ces définitions ?
Avant de continuer sur cette analyse il me semble important de noter que ces 2 compréhensions possibles ne le sont qu’en français ! En effet, le terme anglais « Quality Assurance » se traduit plus correctement avec le terme « contrôle qualité ». La mauvaise traduction commune en « Assurance qualité » induit une compréhension différente du titre et donc potentiellement des attentes différentes du métier !
Expérience personnelle sur l’utilisation de mon assurance
Devoir faire fonctionner son assurance est rarement bon signe. Je m’en suis d’autant plus aperçu que j’ai récemment dû y faire appel (de nombreuses fois) lors d’un trajet en voiture !
Voici l’histoire de ce trajet :
- Je pars en voiture à 14h pour un trajet de 250km qui prend en moyenne 2h45
- Au bout d’une heure ma voiture perd en puissance et je me retrouve à 50 km/h sur l’autoroute
- Je fais appel à l’assurance et me fais remorquer jusqu’à un garage
- L’assurance me loue une nouvelle voiture que je récupère une voiture chez un loueur connu.
- Je fais les vérifications « usuelles » de la voiture pour regarder s’il y a des problèmes sur les pneus et la carrosserie puis je reprends la route à 18h
- Je m’arrête à 18h45 sur une aire pour manger, il fait encore jour
- Je repars à 19h30 il commence à faire nuit
- J’essaie d’allumer mes feux de croisement, aucun feu (à part les phares, interdits) ne fonctionne
- Je m’arrête de nouveau et fait appel à l’assurance du loueur
- Je suis de nouveau remorqué jusqu’à un garage mais cette fois-ci il n’y a plus de loueur ouvert (couvre feu + vendredi soir avec confinement le week-end…)
- L’assurance m’appelle un taxi qui m’amène à destination (arrivée à 22h30)
- Le lendemain, après une matinée au téléphone nous récupérons une nouvelle voiture de location (avec un taxi qui nous amène chez le loueur) mais nous avons cette fois été déclassé
- Je vous épargne la suite des péripéties qui n’ont plus vraiment de rapport avec le rétablissement de la situation et qui passe par des incompréhensions, des courses de vélos, des problèmes de charge dans la voiture…
A noter : je n’ai rien payé à part les réparations sur ma voiture
Une assurance est là pour diminuer l’impact d’un incident lorsqu’il arrive – ne correspond pas à l’appellation originelle en anglais
Ce point est primordial. En français, le terme « assurance » n’a pas le même sens qu’en anglais. Dans le français le plus courant, l’assurance est là pour diminuer l’impact d’un incident est le sens premier du mot assurance. Si l’on devait traduire « assurance » en anglais on se retrouverait avec le terme « insurance ». En français, l’assurance c’est avant tout quelque chose que l’on paye pour nous sortir d’une mauvaise situation imprévue aussi vite et bien que possible en nous permettant de revenir à « la normale ».
On remarque dans mon expérience de trajet en voiture que sur le 2nd point j’ai fait appel à mon assurance car ma voiture ne fonctionnait plus.
L’assurance a ensuite mis en œuvre différents moyens pour régler mes 2 problèmes en :
- me sortant de l’autoroute où je me trouvait bloqué
- me fournissant une voiture pour pouvoir continuer mon trajet…
En à peine 3 heures (panne vers 15h, nouvelle voiture vers 18h) tout était quasiment revenu à la normale.
De même j’ai de nouveau fait appel à une assurance 1h30 plus tard au point 9. Le problème était similaire (à l’exception que j’étais sorti de l’autoroute pour être au milieu de la campagne) mais la solution à court terme légèrement différente en :
- me sortant de l’endroit où j’étais bloqué
- m’amenant à destination avec un taxi
Il me restait néanmoins toujours un problème : impossible de faire un trajet retour. J’ai dû attendre le lendemain pour avoir une nouvelle voiture… qui s’est avéré être 1 gamme en dessous de la première et de ma voiture initiale. On a donc ici une dégradation et pas de retour à la normale avant de récupérer ma voiture.
On voit ici ce rôle primordial des assurances. Il y a un problème en production elles sont là pour assurer ce retour à la normale (récupérabilité) aussi vite que possible… et peut passer par des étapes intermédiaires lorsque ce retour à la normal s’avère trop long.
Vous commencez à le ressentir, le testeur logiciel n’a pas du tout ce rôle. Le testeur n’intervient que peut sur la production et encore moins pour la réparer. Cette non adéquation est somme toute logique lorsque l’on se rappelle que le terme initial n’a pas ce sens et que ce dernier, trop souvent interprété comme tel en français, est issu d’une mauvaise traduction de l’anglais au français.
Si l’assurance qualité devait prendre cette définition, alors le rôle d’assurance qualité serait en fait celui de l’Ops du DevOps. Celui qui vérifie les logs, travaille à la détection d’incident et fixe ces incidents, soit de manière temporaire le temps de trouver une solution plus pérenne.
Une assurance permet de valider l’atteinte d’un niveau minimum (de qualité) – Correspond à l’appellation originelle en anglais
On est ici sur le point 5 de mon expérience, point qui correspond au sens primaire du terme définit en anglais. Le loueur a des vérifications habituelles qui doivent « assurer » que le véhicule est fonctionnel. De même lors de la récupération du véhicule j’ai également fait des vérifications qui tenaient lieu « d’assurance » tout en considérant que cela devait être minime car partait du principe que le loueur faisait lui-même des vérifications plus poussées et régulières sur ses véhicules.
Au final, le véhicule qui était assuré d’avoir un niveau de qualité suffisant pour mon trajet s’est avéré avoir un défaut critique (dans mon contexte de nuit) … Il y’a clairement eu un « trou dans la raquette » … Et j’espère que la vérification des feux entrera maintenant en compte (suite à une rétrospective ?) lors des vérifications régulières (campagne de régression ?) faite sur les voitures par ce loueur… Dans tous les cas cette étape est maintenant rentrée dans mes vérifications obligatoires lorsque je loue une voiture.
Comme vous pouvez le remarquer on est ici totalement dans un rôle qui ressemble au rôle d’un testeur logiciel! Le testeur logiciel se retrouve à fournir de l’information sur un niveau de qualité suite à diverses vérifications (tests). Néanmoins il est impossible de tout vérifier (exhaustivité des tests impossible) et on ne peut donner qu’un niveau de confiance sur la qualité à partir d’informations incomplètes. Le testeur sera donc amené à faire des erreurs et à devoir améliorer ses processus.
On peut donc remarquer, que si l’on prend cette définition d’assurance, le testeur semble parfaitement rentrer dans cette définition. Cela est d’ailleurs totalement cohérent avec le sens du terme en anglais.
Néanmoins, vous aurez également remarquer qu’il n’y a pas qu’un seul intervenant qui a fait des vérifications.
Il y a au moins :
- le garagiste qui fait des vérifications peu fréquentes et ai amené à faire des modifications du véhicule qui l’on peut assimiler à un développeur. Je suppose que dans mon cas il n’a pas pu détecter le problème car n’a pas été amené à faire des vérifications après la panne sur les feux
- Le « gérant » du parc des voiture à louer qui récupère les voitures et les prête en faisant des vérifications à chaque étape. Cela ressemble pas mal au rôle de testeur
- Le client (moi) qui a fait quelques vérifications de routine (tests d’acceptation / tests métiers)
Il serait donc, comme on le voit sur l’exemple, de réduire l’assurance qualité au testeur ! L’assurance qualité est l’affaire de beaucoup plus de personnes que simplement le testeur !
Le rôle de testeur se restreint-il à l’assurance de l’atteinte d’un certain niveau de qualité ?
Comme nous venons de le voir, l’assurance qualité ne peut être réduite au rôle/poste de testeur logiciel !
On peut également se poser la question inverse. Le testeur ne fait-il que de l’assurance qualité en fournissant de l’information sur l’évaluation d’un niveau de qualité ?
Non, les testeurs c’est beaucoup plus que cela. Même si l’assurance qualité, dans le sens de l’évaluation de la qualité, est une activité centrale de tout testeur logiciel chaque testeur sera amené à travailler sur d’autres points. Ces points sont très variés et ne sont que très rarement les mêmes d’un testeur à l’autre ou même d’une mission à l’autre car cela dépend fortement du contexte.
Il est par exemple possible de penser à :
- Travailler à la prévention des défauts : même si cela se rapproche de l’assurance qualité on est ici sur une phase en amont
- Travailler à l’amélioration des processus de l’assurance qualité comme l’automatisation de certaines activités
- Suivre la production et bien connaitre les utilisateurs
- Faire des propositions d’amélioration du logiciel testé
- Diffuser l’esprit de la qualité aux différents acteurs du projet
- Contribuer, pour le testeur Agile et lorsque nécessaire, à toute activité utile à l’équipe
- Documente le logiciel d’un point de vue technique (spécifications) ou utilisateurs
- Analyse, crée des liens dans le but d’assurer une amélioration continue …
Conclusion
Le sens des mots est particulièrement important car l’emploi de certains mots fait passer certaines idées. Cela est évidemment le cas lors des traductions faites trop vite. Le terme « QA », traduit assurance qualité » en français, est là pour nous le rappeler.
Si l’on devait partir de la définition première de l’assurance en français, la personne en charge de l’assurance qualité serait l’Ops ! L’Ops est le garant de la production et assure une remise en état aussi rapide que possible du logiciel lors de l’apparition d’un incident… Cette mécompréhension encourage d’ailleurs de fausses idées comme celle laissant penser qu’après les tests il n’y a pas de bugs.
Fort heureusement, il n’y a pas qu’un sens au terme « assurance » en français. Assurance peut être compris comme de l’information. Dans ce cas il est vrai que le testeur semble parfaitement correspondre à cette définition… Cela tombe bien car c’est le sens qu’il a en anglais ! Cette possibilité de traduction du mot assurance a d’ailleurs peut être poussé à conserver le terme « assurance qualité » en français plutôt qu’une traduction plus proche : « contrôle qualité ». On peut également penser que le fait que le terme « contrôle » aient une connotation plutôt négative ait joué.
En creusant un peu sur cette bonne définition du terme il devient cependant évident que le testeur n’est pas le seul à contribuer à cette assurance mais aussi que le testeur est amené à faire plus que cette assurance… Le rôle de QA, dans le sens originel (anglais) de donner de l’information, reste cependant le rôle central de tout testeur. Le terme ingénieur QA est donc un terme que je trouve légitime à condition de se rappeler son origine anglaise. De plus il ne faut pas non plus tomber dans les travers que l’on a eu avec le terme testeur (le testeur ne fait pas tous les tests et ne passe pas son temps à exécuter des tests !) et ne pas oublier que tout le monde contribue à l’assurance qualité mais aussi le fait que l’ingénieur QA ne fait pas que du contrôle qualité.
Un grand merci à Olivier Denoo, Benjamin Butel et Christophe Moustier pour leurs retours et partages. Sans eux l’article serait beaucoup plus pauvre et n’aurait pas d’analyse sur l’impact des mots et n’aurait pas proposé d’analyse sur le terme original anglais !
Pensez à rejoindre le groupe « Le métier du test » si vous souhaitez échanger sur le test
Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles
N’hésitez pas à faire vos propres retours d’expérience en commentaire.
Une réponse
Ingénieur Tests est le plus approprié. Nous concevons des cas de test et pas que les exécuter.