Programmez: Petite introduction à la cuisine des tests

Cet article a inspiré la présentation « Les secrets d’une bonne recette de la JFTL 2020 »

Les tests, et plus précisément les campagnes de tests c’est comme la cuisine… Et plus exactement comme un repas!

Vous n’en n’êtes pas encore convaincu ? Vous le serez après avoir lu cet article!

Repas et campagnes de test

Je parle généralement de 3 types de campagnes de test qui sont celles-ci:

  • Les campagnes de tests vitaux
  • Les campagnes de régression
  • Les campagnes de validation

Ces campagnes ont différentes caractéristiques:

  • Elles ont des buts différents
  • Elles sont effectuées plus ou moins souvent
  • Elles ont un nombre de test différents

Dans la vie de tous les jours c’est pareil avec les repas dont on peut distinguer 3 types:

  • Les repas quotidiens
  • Les repas « du dimanche », au restaurant ou avec des amis que j’appellerai Repas du dimanche
  • Les repas de fête

Vous l’avez sûrement déjà compris nous pouvons déjà faire un premier parallèle:

  • Les campagnes de tests vitaux sont l’équivalent des repas quotidiens. En effet, les 2 sont effectués très fréquemment, ont pour but d’assurer la subsistance de l’application (ou de la personne) et ne sont pas forcément les plus recherchées et variés.
  • Les campagnes de tests de régression sont plus proches des repas du dimanche. Moins fréquents que les repas quotidiens et les repas de fête ces derniers n’en sont pas moins réguliers et propose une plus grande diversité et quantité de nourriture/test. Le but ici est d’aller plus loin qu’une simple subsistance.
  • Enfin, les campagnes de validation sont l’équivalent des repas de fête. En effet, ces campagnes tout comme ces repas sont rares, très coûteux, copieux et variés et le but ici n’est plus une subsistance mais bien un plaisir pour le repas ou une recherche approfondie pour la campagne de validation.

L’analogie ne s’arrête pas là. La cuisine est bien plus variée que la simple notion de « repas ».

Repas, plats et campagne de test

En effet les repas sont composés de différents plats et de boissons. De même il existe un grand nombre de boissons et pour les plats il y a de nombreux ingrédients!

La notion des différents plats dans un repas est très importante dans la gastronomie et plus généralement dans les repas. On peut décrire le processus de l’ensemble des plats d’un repas de cette manière (chaque plat n’étant pas obligatoire pour un repas et il est évidemment possible d’en ajouter):

  • L’apéritif
  • L’entrée
  • Le plat principal
  • Le fromage
  • Le dessert

On imagine généralement:

  • un repas quotidien ayant 2 plats (entrée/plat ou plat/dessert)
  • les repas entre amis l’ensemble des plats avec ou sans le fromage
  • les repas de fête avec l’ensemble des plats voir certains qui sont doublés.

Ces phases du repas se retrouvent également dans les campagnes de test. En effet, les tests ne se font pas tous en même temps. Il est également possible d’avoir des livraisons échelonnées afin de valider progressivement le logiciel. Comme pour les repas, les campagnes de tests n’ont pas besoin du même nombre d’étapes pour être exécutée. On peut imaginer par exemple pour les différentes campagnes:

  • Tests vitaux: tous les tests unitaires et des tests fonctionnels
  • Tests de régression: tous les tests unitaires, tous les tests fonctionnels automatisés, des tests de performances et les tests d’intégration
  • Tests de validation: tous les tests unitaires, tous les tests fonctionnels automatisés, des tests exploratoires sur la fonctionnalité à valider, des tests de performances, les tests d’intégration et les tests d’acceptation (avec une bêta test)

Penchons nous maintenant sur un nouveau parallèle: les ingrédients et types de boissons se révélant être les tests des campagnes!

Composition des plats et des campagnes de tests

Les ingrédients et boissons représentent d’ailleurs très bien les test. En effet, pour faire un plat (ou un repas) il faut:

  • Une (ou plusieurs) recette(s)
  • Différents ingrédients (féculents, légumes, viandes, épices, liquides et potentiellement boisson)
  • Suivre un processus
  • Finir dans le temps imparti: finir de cuisiner le dimanche midi alors que les invités arrivent le samedi soir n’est pas une option!)

Pour une campagne de test, c’est pareil!

  • Notre recette devient notre plan de test
  • Les ingrédients les différents types de tests à exécuter
  • Le processus: l’ordre d’exécution et la manière d’exécuter les tests (automatisé, manuel…)
  • Finir dans le temps imparti étant tout simplement la date de fin de campagne.

Ingrédients et tests

Nous arrivons à la partie que je trouve la plus intéressante de l’analogie, la comparaison entre tous les ingrédients disponibles en cuisine avec l’ensemble des tests à disposition du testeur.

Attention, je vais prendre ici pour cet exemple les 8 facteurs (que j’appelle famille dans mes articles) de l’ISO-25010. Cela pourrait être également fait avec différents types de test ou les niveaux de test ou même (en s’éloignant du sujet) différentes fonctionnalités d’un logiciel.

Tout comme il y a des familles d’ingrédients, il y a aussi des familles/types de test.

Prenons ces correspondances:

  • Les féculents => les tests fonctionnels. Les tests fonctionnels peuvent prendre différentes formes (exactitude, complétude et aptitude à l’usage) tout comme les féculents (pâtes, pomme de terre, pain…)
  • Les liquides (huile, eau, alcool, sodas, lait…) => les tests de performances
  • Les fruits (melons, raisins…) => les tests de compatibilité
  • Les légumes (concombres, pomme de terre, carottes) => les tests d’utilisabilité
  • Les graines (cacahouètes, pistaches…) => les tests de fiabilités
  • Les produits laitiers (lait, fromage, yaourt…) => les tests de sécurité
  • Les matières grasses (beurre, huile, margarine…) => les tests de maintenabilité
  • Les épices et autres condiments (cumin, sel, sucre, moutarde…) => les tests de portabilité

Comme vous pouvez le voir, certains ingrédients sont dans plusieurs familles. cela peut également être le cas avec certains tests qui peuvent vérifier plusieurs critères de qualité ou fonctionnalité

De ces informations on peut tirer plusieurs conclusions:

  • Il n’y a quasiment aucun repas (ou même plat) ne proposant des ingrédients issus d’une seule de ces familles! Il en va de même pour les tests, chaque campagne, même la plus petite campagne se devra de faire plus qu’uniquement des tests fonctionnels.
  • Plus le repas est important plus il y aura d’ingrédients différents. En effet, il est tout à fait envisageable lors un repas quotidien de ne manger que des coquillettes avec du jambon (4 ingrédients en comptant le sel et le beurre). Cela est impensable pour un repas de réveillon. Il en est de même avec les campagnes de test! Plus la campagne est importante plus il y aura de tests et types de tests exécutés.
  • Un bon plat et un bon repas c’est avant tout un savant mélange du cuisinier qui choisit bien ses ingrédients. C’est pareil pour le test, une bonne campagne dépend du choix des tests à exécuter!
  • Il est impossible de manger tous les ingrédients en un repas tout comme il est impossible de tout tester. C’est d’ailleurs un des principes du test.
  • Les ingrédients d’une même famille ne se ressemblent pas forcément tout comme les tests fonctionnels (ou tout autre type) peuvent être fait à plusieurs niveaux, être automatisé ou manuel…
  • Les mêmes ingrédients peuvent avoir différentes formes ( pomme de terre sous forme de purée, de frites ou de gratin dauphinois…). De même un même test peut être manuel, automatisé, semi-automatisé, généré automatiquement
  • Un bon repas va dépendre des ingrédients et selon les saisons les ingrédients sont plus ou moins bon. Les bons repas dépendent donc du contexte ce qui est également le cas des tests!
  • A force de toujours manger le même repas on finit par ne plus l’apprécier. C’est l’équivalent du paradoxe des pesticides dans le test. Plus on exécute les même tests moins ces tests seront capables de repérer des défauts.

Outils de cuisine et outils de test

Les ingrédients c’est bien beau mais de n’est pas suffisant pour faire de la cuisine. Personne n’est capable de cuisiner sans avoir de casseroles, de couteaux de plats, de fours… C’est également le cas pour les tests!

En effet, même si j’aime dire et répéter que le seul outil indispensable pour les tests c’est sont cerveaux il n’en reste pas moins qu’il est nécessaire de savoir à la fin d’une campagne quels tests ont été effectués et quels ont été leurs résultats.

De même il est important de savoir comment on va tester et d’avoir une stratégie utilisée et renseignée quelque part!

Pour cela il faut des outils et même s’il est possible de ne pas utiliser d’outils dédiés au test comme les ALM, les outils d’ATDD, les outils d’automatisation, les outils de KDT… il n’en reste pas moins indispensable d’utiliser un outil pour exécuter les actions que doit utiliser le testeur.

C’est d’ailleurs également le cas en cuisine où l’on peut utiliser des couverts plutôt que des couteaux de cuisine, un four à micro-ondes plutôt qu’un four dans certains cas…

Mode de cuisson et manière d’exécuter les tests

En cuisine, les ingrédients et outils sont indispensables mais il est généralement tout aussi indispensable de gérer la cuisson.

Pour cela il y a plusieurs outils dédiés comme les fours, les cuit-vapeurs les plaques de cuisson.

Dans de nombreux cas ses cuissons sont manuelles car on doit les démarrer et suivre l’avancement de cette cuisson en restant derrière.

Il existe cependant des moyens « d’automatiser » ces cuissons en programmant son four, lançant son cuit vapeur et le laisser tourner pendant X minutes…

Pour les tests c’est pareil!

En effet, de base les tests sont manuels. Il existe par contre des moyens plus ou moins poussés pour automatiser des tests.

On peut cliquer manuellement pour lancer une campagne qui exécute tous les tests sans avoir besoin d’action du testeur. Cela se rapproche du « cuit-vapeur ».

Il est également possible d’avoir des campagnes qui se lancent automatiquement sans intervention humaine, on est alors ici plus proche de la programmation du four.

Que cela soit en cuisine ou dans les tests, que les campagnes soient totalement ou partiellement automatisées, il faut avoir une certaine expérience pour pouvoir automatiser ces tests! Il faut également bien préparer ces campagnes afin d’avoir les bons tests à exécuter (quel intérêt de lancer un four 2 heures si on a oublié de mettre le plat à cuire dedans, ou pire, si le plat a déjà été cuit ?).

Exemple de recette – campagne

Poussons plus loin la comparaison entre test et nourriture

S’il est un mal bien connu lié à l’alimentation c’est celui de l’obésité. Pour simplifier lorsque l’on grossit (et donc devient trop gros) c’est que l’on ingurgite plus de calorie que ce dont notre corps a besoin et qu’il stock le surplus. Ce type de problème transposé aux tests revient à trop tester, c’est-à-dire faire plus de tests que ce qui est nécessaire, en d’autres termes faire de la sur-qualité ! Ce phénomène est courant notamment auprès de personnes qui veulent trop bien faire et essayent d’avoir des tests exhaustifs (ce qui n’est pas possible).

Sur le même principe il existe l’anorexie. Ce problème transposé aux tests revient à faire de la sous-qualité en testant trop peu et en laissant passer des anomalies majeures voire critiques ce qui coûte généralement très vite très cher avec une sanction des utilisateurs.

Enfin il est toujours possible d’avoir des carences alimentaires et ce même si notre corpulence est tout à fait acceptable. Cela s’explique par une alimentation pas assez équilibrée (ou correspondant aux besoins de notre corps). Dans les tests cela revient à avoir une faiblesse importante sur un critère de qualité définit. On peut penser par exemple à un logiciel qui pourrait être très difficilement maintenable.

Conclusion

Le testeur, qui se retrouve à devoir jongler entre différents tests afin de proposer les campagnes de tests les plus adaptées, se retrouve à faire un travail assez proche de celui du cuisinier. En effet, un cuisinier compose avec les ingrédients, les outils et le temps dont il dispose pour faire ses repas. Ces repas doivent de préférence être le plus adapté possible à ses différentes contraintes. Au final les utilisateurs du logiciel sont un peu les convives du cuisinier.

Il est également bon de noter que le testeur tout comme le cuisinier ne peuvent assurer à eux seuls la qualité de l’application ou du repas. En effet, beaucoup de choses vont dépendre d’éléments externes comme le temps imparti, la connaissance des utilisateurs ou convives, les fournisseurs…

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.

Publié par

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s