Idée principale
Quand toutes les fiches citées existent et qu'aucun lien ne pointe plus dans le vide, l'ensemble paraît achevé. Il ne l'est pas : un ensemble de fiches qui ne se citent qu'entre elles referme son réseau bien avant d'avoir couvert le produit. Le réseau s'est refermé alors qu'une minorité des modules avait donné lieu à une fiche, et le contrôle de couverture mené ensuite a fait apparaître deux objets centraux du métier que rien, dans le réseau, ne réclamait.
Le contrôle de fermeture reste bon, à condition de savoir ce qu'il prouve : que l'ensemble se tient. Il ne dit rien de ce qui n'y est pas entré, parce qu'il ne dispose d'aucune connaissance de l'objet décrit — il ne connaît que les fiches.
Deux contrôles, donc, et jamais un seul. Que l'ensemble se tienne se vérifie en regardant les fiches entre elles. Qu'il soit complet se vérifie en énumérant le produit.
Pourquoi c'est important
Cette confusion est la plus coûteuse du genre, parce que le contrôle qui échoue à mesurer est aussi celui qui se déclenche tout seul : les liens non résolus sautent aux yeux, l'objet jamais cité ne se manifeste nulle part.
Elle se transpose telle quelle hors des fiches. Une suite de tests qui passe prouve que le code testé se comporte comme attendu, pas qu'on a testé ce qu'il fallait ; un glossaire dont tous les renvois aboutissent ne dit rien des mots qui n'y sont pas.
Nuances et limites
La distinction ne vaut que si l'objet décrit peut être énuméré par un autre chemin. Sur une matière sans inventaire possible — un domaine de pensée, un corpus ouvert —, la couverture n'a pas de dénominateur et seul le contrôle de cohésion reste disponible.
Et la cohésion garde sa valeur propre : un ensemble complet mais incohérent n'est pas plus utilisable qu'un ensemble cohérent et incomplet.
Questions ouvertes
- Sur une matière sans inventaire possible, par quoi remplacer le contrôle de couverture sans revenir à une impression de complétude ?