Ce que l’aspirateur robot nous apprend: analogie avec les tests logiciels

Ce que l’aspirateur robot nous apprend: analogie avec les tests logiciels

Nous sommes tous un peu faignants, ou du moins à la recherche de la manière la plus efficace de faire nos tâches du quotidien. En regardant mon aspirateur robot Roomba tourner, je me suis fais la réflexion aujourd’hui qu’en terme de nettoyage domestique, l’automatisation a tout autant ses avantages que ses inconvénients que dans le domaine du test logiciel, et qu’elle montre rapidement ses limitations.

Du manuel à l’automatisé

Si on considère le besoin d’aspiration du sol (mettons de côté le lavage), alors il existe plusieurs techniques:

  • La première est 100% manuelle. Elle consiste à se pencher au niveau du sol et ramasser la saleté qui gît ici alors qu’elle n’a rien à y faire pour la déposer dans une poubelle (ou dehors, loin de votre vue),
  • Ensuite on peut vouloir s’aider d’outil. Par exemple avec une balayette et une pelle, il est également nécessaire de se pencher, mais cela permet de ramasser un peu plus de saletés en une seule fois sur une zone limitée, sans se salir les mains, dans le but également de tout mettre dans une poubelle (ou dehors),
  • L’outil de niveau supérieur est le balai: il permet de s’attaquer à des surfaces encore plus grandes, en faisant des petits tas intermédiaires. Mais il ne se suffit pas à lui-même, il ne fait que déplacer le problème et il faudra également utiliser la pelle et la balayette pour définitivement se débarrasser de la saleté (à moins que vous n’ayez la possibilité de tout balancer dehors dans un dernier ample geste du balai),
  • Ensuite vient le fameux aspirateur à poussière électrique (ou balayeuse pour nos amis canadiens). Il existe plusieurs modèles, avec sac ou sans sac, à traîneau ou pouvant se porter sur le dos, mais peu importe. Contrairement au balai mécanique (manuel), l’aspirateur (qui a aussi son petit côté manuel) a de meilleures performances d’aspiration, une partie des étapes est automatisée (la poussière remonte directement dans un réservoir collecteur) mais son utilisation reste manuelle:
    • Il ne se déplace pas tout seul et suit le chemin que lui donne son utilisateur,
    • Il faut vider le collecteur de poussière régulièrement,
    • Certains modèles avec sacs demandent plus de maintenance, car il faut acheter et changer régulièrement le sac.
  • Certaines maisons sont directement équipées d’aspiration centralisée. Le système se trouvant dans un garage en général, la maison est équipée de tuyaux et on peut y raccorder un flexible depuis chaque pièce sans avoir d’autre appareil à traîner derrière soi.
  • L’aspirateur robot (comme le Roomba dont je parle en introduction) est pour sa part automatisé avec trajectoire aléatoire en ayant tout de même l’intelligence permettant des mouvements d’évitement et plusieurs calculs de trajectoire (il existe aussi des robots avec mapping des pièces, ce qui au final ne semble pas tellement plus efficace d’après une recherche rapide). On appuie sur un bouton (ou on programme l’heure à laquelle on veut qu’il se déclenche) et il aspire tout seul en suivant un chemin déterminé par son algorithme (aléatoire dans le cas du Roomba, il va donc passer plusieurs fois au même endroit, et parfois pas du tout à certains). Les seules actions manuelles qu’il faut prévoir sont:
    • Retrouver l’appareil pour le ranger s’il n’a pas retrouvé sa base lui-même pour se recharger,
    • Vider le collecteur et nettoyer les brosses.

Lego clean

Si on réfléchit à toutes ces méthodes, on voit bien que chacune a son utilité et que ne pas tirer profit de chacune d’entre elles semble une erreur. Si vous pensez que votre aspirateur Roomba est la solution permettant de ne plus avoir à utiliser les autres alors je réponds que j’y vois toute une série d’inconvénients:

  • Votre robot ne déplace pas les meubles. Il est rond, avec des petites brosses pour tenter d’aller dans les coins, mais il restera toujours plein de saletés dans les coins et des zones pas aspirées,
  • Il lui arrive de monter sur un tapis, sous un meuble bas, ou sur un pied de lampadaire et de rester coincé,
  • Il n’aime pas les fils qui traînent, il peut les brosser et s’enrouler dedans.

Et les tests logiciels ?

Qu’en est-il de votre automatisation de test ? Est-ce la panacée ? Vous avez deviné qu’après cette introduction sur les aspirateurs, l’analogie est assez facile à faire.

Automate

Vos tests automatiques sont un réel plus, mais tout comme le robot aspirateur ils ne peuvent pas être la seule méthode de test:

  • Ils tournent peut-être tout seuls sur votre infrastructure d’intégration continue, mais en cas d’erreur il faudra étudier le résultat qui s’avérera comme bien souvent un faux positif. Vos tests font exactement ce que vous leur dites de faire à un instant t, pour qu’ils évoluent il faut que vous les fassiez évoluer, et ils ont beaucoup de mal à aller dans les coins. La loi de Pareto s’applique une fois de plus, il sera assez facile et rapide d’écrire les 80% de cas de test automatisés (les plus simples, qui ne seront peut-être pas les plus prioritaires en terme de gestion de risque) mais les 20% restant demanderont un tel effort qu’ils auront un coût nettement supérieurs aux premiers. Attention, c’est une image que j’utilise là avec les 80 et 20%, loin de moi l’idée de penser qu’on peut automatiser 100% des tests.
  • « Shit happens ». Vous aurez beau avoir tout prévu, il arrivera parfois que les tests automatisés ne vous donnent pas les résultats escomptés (parce qu’un dépôt de code source est innaccessible, parce que le datacenter a des soucis, parce qu’il y a une maintenance sur le réseau ralentissant tout, parce que le serveur a été mis à jour et que vos librairies ne sont plus à jour, parce qu’un développeur a eu la bonne idée de changer le nom d’un objet…). Dans ce cas, si vous voulez absolument un résultat rapide sur une fonctionnalité particulière, alors il sera sans doute plus efficace de revenir à une méthode manuelle.

Tests manuels vous dites ?

A contrario, tout faire manuellement deviendra vite barbant. Mais d’ailleurs, tout comme avec le balai, la balayette et la pelle pour ramasser la poussière, en testant manuellement on utilise très souvent des outils et pas que ses petits doigts.

Matrix

Premièrement, on utilise son cerveau en plus, et pas seulement pour écrire, cliquer et déplacer la souris, mais aussi pour décider où explorer. Je ne sais pas vous, mais j’ai un mal fou à suivre le déroulé d’un cas de test, il y a toujours des milliers de petites choses à côté du descriptif à tenter, et c’est bien souvent là que se trouvent les problèmes. On utilise aussi toute sortes d’autres outils, comme des plugins pour remplir les champs dans des encodages qu’on ne maîtrise pas, ou les outils de développement pour regarder les logs ou simuler un ralentissement du réseau, ou un proxy pour regarder les requêtes passer, etc…

Il faut mixer, toujours mixer

La meilleure solution est sans doute à trouver dans la mise en place de plusieurs de ces méthodes de test avec une stratégie adaptée à votre contexte et environnement. Avec de l’automatisation des cas de tests les plus critiques et répétitifs (au niveau le plus bas: unitaire, intégration, API si possible), un peu d’automatisation de l’interface graphique pour vérifier que les chemins les plus utilisés par les clients restent opérationnels sur tous les navigateurs, des tests de non-régression manuels lors de changements dans une fonctionnalité, des tests exploratoires réguliers, des tests utilisateurs pour tous les cas auxquels on ne pense pas en interne, du crowd testing pour étendre la couverture en environnement, des test de performance, des tests de sécurité, des tests de charge, etc…et votre application aura toutes les chances d’être toujours en bon état de fonctionnement.

Tout comme à la maison, il peut être bien d’avoir un aspirateur robot qui tourne régulièrement lorsque vous êtes absent (tous les jours, de pièce en pièce), un petit coup de balai ou pelle/balayette lorsqu’une zone est plus sale que d’habitude, un passage de l’aspirateur partout en déplaçant les meubles à une fréquence hebdomadaire, mais aussi pourquoi ne pas se pencher pour ramasser les 2 miettes qui traînent par terre et qui heureusement n’ont pas encore été écrasées? Votre habitation aura toujours l’air propre!

Et vous, comment voyez-vous l’automatisation dans votre quotidien ?

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.