Aller au contenu

PD-274 - Scenarios de tests contractuels

1. References

  • Specification : PD-274-specification.md
  • Epic : BACKEND-3 (crypto-proof)

2. Matrice de couverture

ID Invariant ID Critere ID Test Couverture Commentaire
INV-274-01 CA-01, CA-02 TC-NOM-01, TC-NOM-02, TC-ERR-01 Oui Verifie presence + exactitude stricte des 6 valeurs enum.
INV-274-02 CA-01, CA-02 TC-NOM-01, TC-NEG-01 Oui Verifie extraction depuis type TS meme si stockage SQL = varchar.
INV-274-03 CA-03, CA-04 TC-NOM-03, TC-NOM-04, TC-ERR-02 Oui (avec reserve) Invariant accepte handleReorg OU reorg; CA-04 impose handleReorg uniquement.
INV-274-04 CA-08 TC-NOM-07, TC-NOM-08, TC-ERR-05 Oui Verifie documentation explicite AUTORISEE/INTERDITE pour chaque etat.
INV-274-05 CA-08 TC-NOM-07, TC-NEG-03 Oui Verifie absence de transitions sortantes pour FINALIZED et FAILED.
INV-274-06 CA-05, CA-06 TC-NOM-05, TC-NOM-06, TC-ERR-03, TC-NR-01 Oui Verifie non-regression des 22 checks deja OK + score final 24/24.
INV-274-07 CA-07 TC-NR-02, TC-ERR-04 Oui Verifie suite de tests backend existante en statut PASS.
INV-274-08 (Hors CA explicite) TC-INV-08, TC-NR-03 Oui Verifie absence de changement DDL (type, contrainte, index, nullabilite).

3. Scenarios de test - Flux nominaux

TEST-ID: TC-NOM-01
Reference spec: INV-274-01, INV-274-02, CA-02, ST-01

GIVEN
  - Baseline avant correction disponible (facts Prolog etat N-1)
  - Extraction de faits executee sur le module cible `anchor_batch`
WHEN
  - On lit le predicat `entity_enum_values(anchor_batch, status, Values)` dans la sortie facts
THEN
  - Le predicat existe exactement une fois
  - `Values` contient exactement 6 elements
  - Ensemble strict attendu: {PENDING, BUILDING, SUBMITTED, PENDING_FINALITY, FINALIZED, FAILED}
AND
  - Aucun element supplementaire ou manquant n'est present
TEST-ID: TC-NOM-02
Reference spec: INV-274-01, CA-01, ST-02

GIVEN
  - Rapport d'execution PV-ANCHOR-001 genere apres extraction
WHEN
  - On consulte le resultat du check `check_batch_status_enum`
THEN
  - Le statut du check est `OK`
AND
  - Les preuves associees montrent explicitement `FINALIZED` et `FAILED`
TEST-ID: TC-NOM-03
Reference spec: INV-274-03, CA-04, ST-03

GIVEN
  - Sortie facts de services du module `anchor_batch`
WHEN
  - On recherche les faits `service_method(anchor_batch, handleReorg)` et `service_method(anchor_batch, reorg)`
THEN
  - Au moins un des deux faits est present
AND
  - Le fait present est rattache au module logique `anchor_batch`
TEST-ID: TC-NOM-04
Reference spec: INV-274-03, CA-03, ST-04

GIVEN
  - Rapport PV-ANCHOR-001 apres correction
WHEN
  - On lit le resultat du check `check_handle_reorg`
THEN
  - Le statut du check est `OK`
AND
  - Aucun contournement de regle ou desactivation de check n'apparait dans les preuves
TEST-ID: TC-NOM-05
Reference spec: INV-274-06, CA-06, ST-05

GIVEN
  - Baseline avant correction: liste des 22 checks deja `OK`
  - Rapport apres correction disponible
WHEN
  - On compare les statuts des 22 checks entre baseline et apres correction
THEN
  - Les 22 checks restent `OK`
AND
  - Aucun check anciennement `OK` ne bascule a `KO`
TEST-ID: TC-NOM-06
Reference spec: INV-274-06, CA-05, ST-06

GIVEN
  - Execution complete de PV-ANCHOR-001
WHEN
  - On lit le resume final du rapport
THEN
  - Le score global est `24/24 OK`
AND
  - Le nombre de checks `KO` est `0`
TEST-ID: TC-NOM-07
Reference spec: INV-274-04, INV-274-05, CA-08, ST-07

GIVEN
  - Table de transitions contractuelle `AnchorBatchStatus` publiee dans la specification d'epic
WHEN
  - On inspecte les transitions sortantes de `FINALIZED` et `FAILED`
THEN
  - Toutes les transitions sortantes sont marquees `INTERDITE`
AND
  - Aucune transition `AUTORISEE` n'est declaree pour ces etats terminaux
TEST-ID: TC-NOM-08
Reference spec: INV-274-04, ST-08

GIVEN
  - Table de transitions contractuelle `AnchorBatchStatus`
WHEN
  - On verifie les transitions de retour depuis `SUBMITTED` et `PENDING_FINALITY` vers des etats precedents
THEN
  - Les transitions de retour sont marquees `INTERDITE`
AND
  - Seules les transitions explicitement listees `AUTORISEE` sont acceptees

4. Scenarios de test - Cas d'erreur

TEST-ID: TC-ERR-01
Reference spec: ERR-01, INV-274-01, CA-01, CA-02

GIVEN
  - Sortie facts sans `entity_enum_values(anchor_batch, status, Values)` ou avec liste incomplete
WHEN
  - PV-ANCHOR-001 est evalue
THEN
  - `check_batch_status_enum` retourne `KO`
  - La livraison est marquee refusee
  - Absence d'effets secondaires: aucun check non cible ne doit etre force a `OK`
TEST-ID: TC-ERR-02
Reference spec: ERR-02, INV-274-03, CA-03

GIVEN
  - Aucun fait `service_method(anchor_batch, handleReorg)` ni `service_method(anchor_batch, reorg)`
WHEN
  - PV-ANCHOR-001 est evalue
THEN
  - `check_handle_reorg` retourne `KO`
  - La livraison est marquee refusee
  - Absence d'effets secondaires: aucun bypass de regle n'est present
TEST-ID: TC-ERR-03
Reference spec: ERR-03, INV-274-06, CA-06

GIVEN
  - Baseline avant correction avec 22 checks `OK`
  - Rapport apres correction avec au moins un de ces checks passe `KO`
WHEN
  - On calcule le delta de conformite
THEN
  - Le verdict global est `non-conforme`
  - La livraison est refusee
  - Absence d'effets secondaires: le delta est trace et horodate
TEST-ID: TC-ERR-04
Reference spec: ERR-04, INV-274-07, CA-07

GIVEN
  - Suite de tests backend existante executee apres correction
WHEN
  - Au moins un test retourne `FAIL`
THEN
  - Le critere de non-regression applicative est invalide
  - La livraison est refusee
  - Absence d'effets secondaires: aucun test en echec ne peut etre ignore
TEST-ID: TC-ERR-05
Reference spec: ERR-05, INV-274-04, INV-274-05, CA-08

GIVEN
  - Table des transitions avec au moins une sortie non documentee ou implicite depuis un etat terminal
WHEN
  - Revue de conformite contractuelle des transitions
THEN
  - Le verdict est `non-conformite specification`
  - La livraison est refusee
  - Absence d'effets secondaires: aucun etat ne reste en statut "indetermine"

5. Tests d'invariants (non negociables)

Invariant Test(s) dedies Observable Commentaire
INV-274-01 TC-NOM-01, TC-NOM-02, TC-ERR-01 Fait entity_enum_values(...) + check check_batch_status_enum Cardinalite et contenu strictement verifies.
INV-274-02 TC-NOM-01, TC-NEG-01 Faits extraits sur modele TS enum avec stockage varchar Garantit independance entre type metier et type SQL.
INV-274-03 TC-NOM-03, TC-NOM-04, TC-ERR-02 Fait service_method(...) + check check_handle_reorg Couvre presence de capacite reorg attendue par regle.
INV-274-04 TC-NOM-07, TC-NOM-08, TC-ERR-05 Matrice de transitions complete AUTORISEE/INTERDITE Aucune transition implicite toleree.
INV-274-05 TC-NOM-07, TC-NEG-03 Absence de sorties autorisees pour etats terminaux Terminalite testee explicitement.
INV-274-06 TC-NOM-05, TC-NOM-06, TC-ERR-03 Diff checks baseline vs apres + score final Non-regression formelle obligatoire.
INV-274-07 TC-NR-02, TC-ERR-04 Rapport tests backend existants en PASS Non-regression applicative obligatoire.
INV-274-08 TC-INV-08, TC-NR-03 Diff schema/DDL avant-apres = vide Tout changement de type/contrainte/index/nullabilite est interdit.

6. Tests de non-regression

Test ID Objet Observable Commentaire
TC-NR-01 Preservation des 22 checks deja OK Tableau comparatif baseline/apres correction Echec si un seul check regresse.
TC-NR-02 Preservation des tests backend existants Rapport de test global (PASS/FAIL) Echec si au moins un test existant echoue.
TC-NR-03 Absence de changement DDL Diff migration/schema/type metadata Echec si changement implicite detecte.

7. Tests negatifs et adversariaux

Test ID Entree invalide / abus Resultat attendu Observable
TC-NEG-01 status stocke en varchar mais extraction enum forcee depuis SQL au lieu du type TS KO de conformite (enum incomplet ou absent) entity_enum_values(...) absent/incomplet, check_batch_status_enum=KO
TC-NEG-02 Presence d'une valeur enum additionnelle (ex: CANCELLED) Rejet contractuel (liste non exacte) Cardinalite != 6 ou set != attendu
TC-NEG-03 Transition sortante autorisee depuis FINALIZED ou FAILED Rejet de specification Matrice de transitions signale non-conformite
TC-NEG-04 Suppression/renommage methode reorg sans alias contractuel KO de conformite reorg Absence des faits service_method(anchor_batch, handleReorg|reorg)

8. Observabilite requise pour les tests

  • Etat systeme : snapshot avant/apres des faits Prolog (entity_enum_values, service_method) et des statuts de checks.
  • Reponse API : non requise pour valider les checks formels; uniquement utile si transitions etats sont exposees via API interne.
  • Journal d'audit : trace horodatee d'execution PV-ANCHOR-001, incluant version regles et commit cible.
  • Evenement signe / horodate : preuve immutable de verdict (24/24, KO, motif), associee a l'execution.
  • Export probatoire : artefact versionne contenant baseline, resultat final, et diff de non-regression.

9. Regles non testables

Regle Raison Impact
CA-04 (observable strict service_method(anchor_batch, handleReorg)) vs INV-274-03 (accepte handleReorg ou reorg) Contradiction contractuelle: une version valide par invariant (reorg) peut echouer CA-04 strict Majeur

10. Verdict QA

  • ⚠️ Testable partiellement (avec reserves listees)
  • Reserve principale: aligner CA-04 avec INV-274-03 pour supprimer l'ambiguite de nommage (handleReorg vs reorg).
  • Hors cette reserve, la couverture est complete: 8/8 invariants couverts, 8/8 criteres couverts, 5/5 cas d'erreur couverts.