Cherchez l’erreur (1/2)

En tant que consultant Qualité, je n’adore rien de plus que de trouver des bugs.

Rien de plus plaisant que d’analyser le code d’une application et de trouver un ou plusieurs bon gros bugs impardonnables, comme un ‘Break’ en ABAP (instruction utilisé en mode debug et qui va stopper instantanément le programme), un OPEN / CLOSE de fichiers dans une boucle (instructions coûteuses en temps système, á réaliser hors de la boucle, évidemment) ou un accès direct à la base de données depuis une page JSP. Pas besoin d’être spécialiste pour savoir qu’il s’agit de défauts graves.

Il y a pourtant une situation dans laquelle je détester trouver des bugs : en tant qu’utilisateur d’une application.

Avec les beaux jours qui arrivent, je recherche quelques meubles pour ma terrasse, mais tout ce que je trouve est cher et luxueux. Bon sang, il s’agit d’une petite terrasse d’appartement, pas un solarium de résidence secondaire, je veux une paire de chaises longues pratiques et résistantes, qui puissent supporter la pluie si j’ai oublié de les rentrer, pas des meubles en bois rare avec des coussins brodés de fils d’or.

Finalement, sur un site internet de ventes (privées), je trouve mon bonheur et en plus, il y a un hamac portable à un prix défiant toute concurrence. Portable signifie que je ne vais pas avoir besoin de perser un trou dans un mur pour planter un crochet de hamac, et son prix est 2 ou 3 fois moindre que le moins cher des hamacs que j’avais trouvés jusqu’ici. Bref, une affaire.

Sur ce site de ventes internet, je commence donc par sélectionner deux chaises longues dans mon panier, puis remarque alors un avertissement m’annonçant que certains articles étant distribués par un transporteur différent, il peut s’avérer nécessaire de procéder à 2 achats différents, un par pour chaque transporteur et avec l’obligation de payer 2 fois les frais de livraison. Comme cette vente propose des articles de plusieurs marques, genre barbecue et congélateur de camping, certainement plus lourds et moins faciles à livrer, je me dis que cela ne concernera pas mes chaises pliables.

Pas de chance : j’ajoute le hamac à mon panier, et au moment de payer, un message pas très précis m’avertit qu’une erreur s’est produite et liste sur plus d’une page les causes possibles et les actions á entreprendre pour y remédier. Bon, heureusement que j’ai pris le temps de lire l’avertissement précédent, et heureusement que j’ai très envie d’acheter ces articles, parce que c’est le genre de trucs qui me fait sortir immédiatement du site et abandonner une vente.

Donc je modifie mon panier afin de procéder à un premier achat pour – seulement – mes 2 chaises longues, effectue le paiement en ligne, puis revient sur le site marchand afin d’acheter le hamac, place celui-ci dans le panier et valide celui-ci afin de passer à la page de paiement.

Là, un message me demande si je souhaite ajouter cet achat à la livraison déjà en cours – les deux chaises longues – ou si je souhaite effectuer une livraison séparée. Serait-il finalement possible d’effectuer une seule et unique livraison pour ces articles, de même marque et du même fabricant, je le rappelle ?

J’opte donc pour la 1ère solution : livraison commune pour mes deux chaises longues ET le hamac. Sauf que j’arrive une fois de plus sur la page de message d’erreur générique parce que mes deux achats ne peuvent être livrés par un même transporteur.

Que s’est il passé ? Nous sommes sur un site de ventes proposant diverses marques chaque jour, vous pouvez à tout instant acheter plusieurs articles dans différentes ventes : un tee-shirt, une montre, une layette pour bébé, des lunettes de soleil, etc. et décider de regrouper tous ces achats en une seule livraison. Logique : celle-ci sera effectuée par colis postal, donc en regroupant les achats, vous économisez des frais de transport. Et – last but not least – cela vous évitera de multiples attentes dans votre bureau de poste pour retirer le colis, pour le cas où vous êtes absent lorsqu’il vous sera livré.

Ce fonctionnement par défaut ne s’appliquait pas en l’espèce à notre achat … mais le site web l’a quand même proposé. Cherchez l’erreur.

Puis-je me permettre de dire que nous avons là un défaut de test ? Vous allez me dire que ce n’est pas bien grave. Il me suffit de demander une seconde livraison distincte pour mon second achat.
Sauf que cela n’a pas été possible. Il m’a fallu annuler la seconde commande afin de la reprendre depuis le début. Et là encore, cela n’a pas été possible : chaque fois que j’ai tenté de refaire ce second achat, le hamac était déjà présent dans mon panier. Vraisemblablement un problème de rafraîchissement de la session et de ses données. Autrement dit, je ne pouvais effectuer mon second achat mais je ne pouvais pas non plus annuler mon panier. J’étais coincé dans un processus par défaut qui ne s’appliquait pas, mais qui ne me laissait aucune possibilité de revenir au processus correct.

Après plusieurs tentatives, il m’a fallu sortir complètement du navigateur afin de supprimer la session et re-rentrer dans le site pour effectuer ce second achat. Bref, il m’a fallu quatre ou cinq tentatives différentes afin d’acheter deux produits d’une même marque, tout en pestant contre ce site et surtout ce qui me paraît un problème, sinon de conception ou de programmation, mais en tout cas de test.

Si le fonctionnement par défaut n’est pas applicable, cela me paraît un test plus qu’évident à effectuer. Comment est-il possible qu’en tant que simple client je tombe immédiatement sur un tel dysfonctionnement ? Comment un site avec plus d’une centaine de milliers de connexions chaque jour peut-il laisser passer un tel défaut si un client va tomber directement, pour ne pas dire logiquement, quasi-obligatoirement dessus ?

La suite (la réponse ?) dans notre prochain post.

 

Cette publication est également disponible en Leer este articulo en castellano : liste des langues séparées par une virgule, Read that post in english : dernière langue.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *