— Qu’est-ce que ça représente, cette carte ?
— Ça ? Les vestiges d’une application…
— Comprends pas.
— La ligne pointillée bleue délimite l’ensemble des comportements que l’application devait présenter une fois installée en production. L’équipe qui a conçu cette application, et l’a construite, s’est dit : elle n’ira pas plus loin, mais à tout le moins, elle fera ça, c’est à dire ce qui se trouve à l’intérieur de la ligne bleue.
— Et les triangles rouges ?
— Ce sont tous les comportements incorrects rencontrés par ceux qui ont utilisé l’application.
— Des bugs, donc. défense vs exploration (1) — Disons des variations de comportement qui ne faisaient pas partie du plan.
— C’est ce que je dis. Des bugs. Je ne vois pas la différence…
— C’est parce le mot bug est si vague… on peut y mettre tout et n’importe quoi.
— Par exemple, ce triangle rouge tout en haut vers la gauche, il représente quoi ?
— La déclaration d’un utilisateur à l’équipe : “là le calcul est peut être conforme à la spéc, comme vous dites, mais en tout cas ce n’est pas comme ça que ça marche dans la vraie vie.”
— Je vois. Ce n’était pas un défaut du programme.
— C’était un problème de conception fonctionnelle, si tu veux.
— Donc les triangles rouges représentent des défauts, non pas du programme, mais de la conception ? On n’a pas fait le bon produit ?
— Pas forcément : tu vois qu’il y a aussi des triangles rouges à l’intérieur de l’enceinte tracée en bleu.
— Qu’est-ce qu’ils représentent ceux-là ? Par exemple le triangle le plus haut dans le pentagone ?
— Ça, c’est quand on a remarqué, en production, que l’application ne détectait pas correctement les portefeuilles ayant des comptes dont le solde a dépassé un certain seuil de sécurité.
— Et ça, ça aurait dû être compris lors de la conception ? C’est pour cela que ce triangle est à l’intérieur de l’enceinte bleue ?
— Exact. Le comportement “tu donneras la liste des comptes du portefeuille dont le solde dépasse tant” faisait partie des comportements possibles de l’application à la conception. Mais un utilisateur à réussi à montrer que dans certain cas, ce comportement n’était pas correctement implémenté.
— Ça paraît fou. Vérifier les soldes des comptes d’un portefeuille, c’est quand même pas sorcier !
— Je comprends ton étonnement. Ce que ne dit pas la carte, c’est qu’il n’y avait pas de test dans ce projet.
— Quoi pas de test ?
— Il y a eu tout au plus quelques essais à la hâte, juste avant de livrer.
— Mais quand même ! Comment on peut se tromper sur un truc aussi simple ?
— S’il n’y a pas de test, pas de vérification, pas de relecture, personne pour chercher ne serait-ce qu’un problème éventuel…
— Mais ça ne peut pas marcher !
— Et ça n’a pas marché. Est-ce que tu vois des acteurs sur cette carte ?
— Non. On devrait en voir ?
— Si le projet avait survécu, oui.

(à suivre) #testing #softwaredevelopment #tdd

publié sur Linked In le 25/09/2023