Un programme qui « marche » est un programme qui produit les résultats attendus en fonction des données qui lui sont fournies en entrée. Mais comment le vérifier, sachant qu'un programme est en fait constitué de plusieurs programmes, eux-mêmes constitués d'autres programmes, etc. : que doit-on tester, le programme principal ou les sous-programmes ? La réponse à cette question fait débat depuis très longtemps, mais des éléments de réponse se situent dans l'étude des procédés industriels !
Si les ouvriers construisaient les bâtiments comme les développeurs écrivent leurs programmes, le premier pivert venu aurait détruit toute civilisation. Gerald Weinberg, Software Test Professionals Luminary Award 2010
Au delà du fait d'écrire des lignes de code et d'automatiser des traitements, les principaux acteurs du domaine de l'informatique ont œuvré, depuis des décennies, à en faire un domaine d'activité industriel.
Pensez-vous que les industriels qui ont conçu et réalisé le pont de l'île de Ré, deuxième plus long pont de France reliant l'île au continent près de La Rochelle, ont construit l'ensemble des pièces, les ont assemblées, et ont ensuite décidé de tester l'ensemble en y faisant circuler des engins ?
Bien entendu, non (heureusement pour les usagers du pont).
Le bâtiment c'est le bâtiment, l'informatique, c'est l'informatique. Mais le parallèle est simple : si vous avez compris et admis de qui est mentionné au paragraphe précédent, vous avez déjà intégré la notion de test unitaire, de test d'intégration, de recette…
L'informatique n'est plus (seulement) une science de laboratoire où des chercheurs mettent au point des algorithmes expérimentaux et heuristiques destinés à traiter des problèmes obscurs et complexes…
Cependant pour en faire un domaine d'activité industriel, il faut se fixer les mêmes objectifs de qualité que les autres domaines. Pour construire un produit fiable (pont, voiture, logiciel…), les ingénieurs doivent d'abord s'assurer que chaque composant du produit est, individuellement, fiable. Ensuite, on teste l'assemblage (bien entendu : d'excellents parpaings très résistants assemblés avec un excellent ciment par de mauvais maçons en état d'ébriété aboutit, aussi, à la construction d'une maison qui s'écroulera peu de temps après…).
Que signifie « industrialiser » ?
Beaucoup de pratiques IT sont aujourd'hui inspirées de l'expérience accumulée par l'industrie au fil des siècles. Il est par exemple aujourd'hui courant de structurer les équipes en divisions MOA/MOE, d'utiliser des normes de qualité, de mettre en œuvre des solutions de gestion de production comme Lean, etc.
Pourquoi est-il nécessaire de tester individuellement les différentes composants d'un produit ?
Tester individuellement les différents composant d'un produit est important, mais pas suffisant. Il est tout aussi important de tester les composant que de tester le produit dans son ensemble.
Les tests individuels (que nous appellerons tests unitaires plus tard dans ce cours) permettent de cerner les défauts très tôt, au moment du développement du produit. Ils permettent également, quand ils sont joués régulièrement, de s'assurer que le produit est toujours conforme après une évolution.