Aller au contenu

PD-54 — Scénarios de tests contractuels

1. Références

  • Spécification : PD-54-specification.md
  • Epic : EPIC-189 Crypto
  • Rôle QA : Architecte QA senior / auditeur indépendant

2. Matrice de couverture

Référence spec Type Test ID Couvert Commentaire
I1 Invariant TC-INV-01 Oui Déterminisme strict
I2 Invariant TC-INV-02 Oui Sensibilité aux modifications
I3 Invariant TC-INV-03 Oui Clôture post-racine
I4 Invariant TC-INV-04 Oui Indépendance inter-arbres
I5 Invariant TC-INV-05 Oui Partage de feuilles sans impact
5.0 Règles TC-NOM-12 Oui Références normatives et identifiants
5.0 (fenêtres) Règles TC-NOM-13 Oui Attribution [window_start, window_end)
R1–R3 Règles TC-NOM-01 Oui Entrée / validation
R4–R5 Règles TC-NOM-02 Oui Canonicalisation
R6–R7 Règles TC-NOM-03 Oui Construction feuilles
R8–R9 Règles TC-NOM-04 Oui Ordonnancement
R10–R12 Règles TC-NOM-05 Oui Construction arbre
R13–R14 Règles TC-NOM-06 Oui Racine & clôture
R15–R16 Règles TC-NOM-07 Oui Périodicité / indépendance
R17 Règle TC-NOM-08 Oui Persistance logique
R18–R19 Règles TC-NOM-09 Oui Vérifiabilité / usage aval
R20 Règle TC-NOM-10 Oui Algorithme de hash
R21–R24 Règles TC-NOM-11 Oui Merkle DAG
E1–E4 Erreurs TC-ERR-01 → 04 Oui Cas d’erreur / validité 5.0

3. Scénarios de test – Flux nominaux

TC-NOM-01 — Entrée valide et batch non vide

Référence spec : R1, R2, R3

GIVEN - Une liste events[] finie, close et non vide - Tous les événements marqués comme validés

WHEN - La construction d’arbre est déclenchée pour la fenêtre

THEN - Un arbre unique est produit - Une racine unique est calculée - Tous les événements sont inclus exactement une fois


TC-NOM-02 — Canonicalisation déterministe

Référence spec : R4, R5

GIVEN - Deux ensembles events[] logiquement identiques mais ordonnés différemment en entrée

WHEN - La canonicalisation est appliquée

THEN - Les représentations canoniques obtenues sont strictement identiques - Les feuilles résultantes sont identiques


TC-NOM-03 — Construction des feuilles

Référence spec : R6, R7

GIVEN - Un événement canonique unique

WHEN - Le hash de feuille est calculé

THEN - La valeur leaf = HASH(canonical_event) est déterministe - Cette valeur peut être réutilisée dans plusieurs arbres sans altération


TC-NOM-04 — Ordonnancement canonique des feuilles

Référence spec : R8, R9

GIVEN - Un ensemble de feuilles non ordonnées

WHEN - L’ordonnancement canonique est appliqué

THEN - L’ordre final est strictement identique à chaque exécution


TC-NOM-05 — Construction binaire et duplication

Référence spec : R10, R11, R12

GIVEN - Un nombre impair de feuilles

WHEN - La construction de l’arbre est effectuée

THEN - Le dernier nœud est dupliqué - Tous les nœuds parents respectent HASH(left || right)


TC-NOM-06 — Racine et clôture

Référence spec : R13, R14

GIVEN - Un arbre dont la racine a été calculée

WHEN - Une tentative d’ajout d’événement est effectuée

THEN - L’ajout est rejeté - La racine reste strictement inchangée


TC-NOM-07 — Périodicité et indépendance

Référence spec : R15, R16

GIVEN - Deux fenêtres temporelles distinctes

WHEN - Un arbre est construit pour chacune

THEN - Les arbres sont indépendants - Aucun lien n’existe entre leurs racines


TC-NOM-08 — Persistance logique

Référence spec : R17

GIVEN - Un arbre valide

WHEN - La persistance logique est effectuée

THEN - La racine, les preuves d’inclusion et les métadonnées sont toutes présentes


TC-NOM-09 — Vérifiabilité indépendante

Référence spec : R18, R19

GIVEN - Une feuille, sa preuve d’inclusion et la racine associée

WHEN - La vérification est effectuée hors système émetteur

THEN - La preuve est validée exclusivement à partir des données fournies


TC-NOM-10 — Algorithme de hash figé

Référence spec : R20

GIVEN - Une version d’algorithme de hash déclarée

WHEN - Un arbre est construit

THEN - Toutes les feuilles et la racine utilisent cet algorithme


TC-NOM-11 — Merkle DAG à feuilles partagées

Référence spec : R21–R24

GIVEN - Deux arbres distincts partageant une feuille identique

WHEN - Les racines sont calculées indépendamment

THEN - Chaque racine reste propre à son arbre - Aucune référence croisée n’est observable


TC-NOM-12 — Références normatives et métadonnées de vérification

Référence spec : 5.0

GIVEN - Un arbre construit avec sa racine, ses preuves d’inclusion et ses métadonnées

WHEN - Les métadonnées et la preuve sont inspectées

THEN - canonicalization_id, leaf_ordering_id et hash_algorithm_id/version sont présents - Les définitions normatives associées sont publiques ou fournies avec la preuve - Le format des preuves et des métadonnées est déterminable à partir de ces identifiants


TC-NOM-13 — Attribution des fenêtres [window_start, window_end)

Référence spec : 5.0

GIVEN - Deux fenêtres définies avec window_start, window_end, window_timezone - Des événements dont event_time est exprimé dans le même fuseau

WHEN - Un arbre est construit pour la première fenêtre

THEN - Les événements tels que window_start <= event_time < window_end sont inclus - Un événement tel que event_time = window_end est exclu de cette fenêtre et appartient à la suivante


4. Scénarios de test – Cas d’erreur

TC-ERR-01 — Batch vide

Référence spec : E1

GIVEN events[] vide

WHEN la construction est demandée

THEN aucun arbre n’est produit


TC-ERR-02 — Événement invalide au sens de la spécification

Référence spec : E2, 5.0

GIVEN un événement sans identifiant, ou dont event_time ne permet pas une attribution univoque à une fenêtre, ou dont la canonicalisation échoue

WHEN la construction est demandée

THEN l’événement est exclu de l’arbre


TC-ERR-03 — Canonicalisation non déterministe

Référence spec : E3

GIVEN deux exécutions produisant des canoniques différents

THEN non-conformité détectée


TC-ERR-04 — Algorithme non conforme

Référence spec : E4

GIVEN un algorithme non versionné

THEN la construction est rejetée


5. Tests d’invariants (non négociables)

Invariant Test Observable
I1 TC-INV-01 Racine identique
I2 TC-INV-02 Racine différente
I3 TC-INV-03 Rejet post-clôture
I4 TC-INV-04 Absence de référence
I5 TC-INV-05 Racines inchangées

6. Tests de non-régression

Test ID Objet Observable
TC-NR-01 Même entrée / nouvelle version Racine inchangée
TC-NR-02 Ajout d’un arbre Arbres existants inchangés

7. Tests négatifs et adversariaux

Test ID Abus Résultat attendu
TC-NEG-01 Injection événement post-clôture Rejet
TC-NEG-02 Collision volontaire entrée Racine différente

8. Observabilité requise pour les tests

  • Racine calculée
  • Preuves d’inclusion
  • Métadonnées de batch (window_start, window_end, window_timezone)
  • canonicalization_id, leaf_ordering_id, hash_algorithm_id/version

9. Règles non testables

Règle Justification Impact
Aucune

10. Verdict QA

Spécification intégralement testable et automatisable

Aucune ambiguïté bloquante identifiée.