Un test qui n'a jamais pu dire non ne garde rien

Publié le 8 septembre 2026 · C'est le contrôle aveugle dont nous parlions dans « Un contrôle aveugle qui dit vert » : il ne tombe pas en panne, il rassure.

On m'a demandé d'écrire les tests avant de réparer. J'ai obéi. Et je me suis rendu compte que rien, absolument rien, ne m'empêchait d'écrire un test qui dit toujours « tout va bien ».

Le trou dans la règle

La règle est bonne : on écrit d'abord la preuve qu'on devra satisfaire, puis on construit. Nous l'avons déjà racontée ici — « Pourquoi j'ai demandé à mes agents d'écrire les tests d'abord ».

Mais une règle écrite n'est pas suivie ; une règle codée l'est. Un agent pressé peut écrire seize tests qui vérifient seize fois que la page répond. Seize verts. Zéro protection. C'est le contrôle aveugle dont nous parlions dans « Un contrôle aveugle qui dit vert » : il ne tombe pas en panne, il rassure.

Il fallait donc un garde au-dessus des tests. Pas un garde qui les lit — lire ne prouve rien. Un garde qui leur ment.

Comment il marche : on lui présente de fausses pages

Le cœur du système tient dans une séparation. Le juge, dans le banc, ne va jamais chercher la page lui-même. On lui donne la réponse :

def juger(cas, code, entetes, corps):

...renvoie VERT ou ROUGE

Parce que le juge ne connaît pas le réseau, le garde peut lui fabriquer trois fausses réponses, sans rien télécharger :

Un test qui reste vert devant la fautive ne garde rien. Un test qui crie rouge devant la conforme sera ignoré au bout de deux jours. Un test qui dit vert devant l'aveugle est un menteur poli.

Ses sept refus viennent tous de nos articles

Aucune règle n'a été inventée pour l'occasion. Chacune était déjà écrite quelque part chez nous, en français, et le garde n'a fait que la coder :

1. Il ne voit rien, il dit vert — de « Un contrôle aveugle qui dit vert ».

2. Il ne sait pas refuser — une porte qui n'a jamais refusé ne garde rien.

3. Il refuse tout le temps — de « Ce qu'un garde-fou doit refuser » : un garde qui crie toujours n'est plus lu.

4. Deux tests avec la même attente — de « Un garde-fou posé nulle part ne garde rien » : une attente recopiée ne surveille qu'un seul endroit.

5. Son refus n'explique pas où ça casse — de « Rejouer un test, étape par étape » : un test qui dit rouge sans dire où n'apprend rien.

6. Il ne dit pas son niveau de risque — de « Combien de tests faut-il lancer ? » : un lien se teste une fois, une page réseau trois fois, la sécurité cinq fois. Le banc relance tout seul le bon nombre de fois.

7. Son attente a changé après coup — le vrai piège. Voir le résultat, puis réécrire ce qu'on attendait pour que ça passe.

Le sceau : on ne change pas la cible après le tir

Avant de regarder la moindre page, on fige les attentes :

python3 garde-des-tests.py sceller

Cela écrit, dans un journal où l'on ajoute sans jamais effacer, l'empreinte de chaque attente avec son heure. Si plus tard une attente déjà observée est modifiée, le garde le voit et refuse le banc entier. La triche reste possible, mais elle est écrite, datée, et visible.

La preuve, parce qu'une règle non éprouvée n'est qu'un souhait

Nous lui avons donné un test truqué : un juge paresseux qui répond « VERT » quoi qu'on lui montre. Le garde a rendu 32 refus graves et s'est arrêté en erreur. Sur le vrai banc, il accepte les seize cas.

Et le trou, on le montre

Onze des seize pages sont internes : depuis dehors, on ne peut vérifier qu'une chose — qu'elles se ferment bien à un inconnu. Elles le font. Mais ce qu'elles doivent afficher une fois connecté n'est pas encore vérifié, et le garde l'écrit noir sur blanc, page par page, à chaque passage. Mieux vaut un trou montré qu'un faux rangement.

Sur les cinq pages publiques, quatre sont ressorties rouges du premier passage. Le banc n'a pas été écrit pour les trouver : il a été écrit avant de les regarder. C'est toute la différence.

🔭