PD-273 — Scénarios de tests contractuels
1. Références
- Spécification :
PD-273-specification.md - Epic :
Conformité formelle PV-AUDIT-001 - Jira :
PD-273 - Repos concernés :
ProbatioVault-backend, ProbatioVault-ia-governance
2. Matrice de couverture
| ID Invariant | ID Critère | ID Test | Couverture | Commentaire |
| INV-273-01 | CA-273-05 | TC-NOM-273-04 | Oui | Vérifie le comptage exact des checks ciblés conformes (=3). |
| INV-273-01 | CA-273-01/02/03 | TC-NOM-273-01/02/03 | Oui | Vérifie que les 3 checks ciblés attendus sont individuellement en OK. |
| INV-273-02 | CA-273-04 | TC-NOM-273-05 | Oui | Vérifie absence totale de régression sur 21 checks non ciblés. |
| INV-273-03 | CA-273-01 | TC-NOM-273-01 | Oui | Vérifie la reconnaissance d'immutabilité via statut check dédié. |
| INV-273-04 | CA-273-02 | TC-NOM-273-02 | Oui | Vérifie la reconnaissance de capacité de signature via check dédié. |
| INV-273-05 | CA-273-03 | TC-NOM-273-03 | Oui | Vérifie la reconnaissance de traçabilité séquence destruction. |
| INV-273-06 | (lié transitions) | TC-NOM-273-06, TC-ERR-273-02 | Oui | Vérifie transition PARTIEL->OK puis OK->PARTIEL observable en exécution ultérieure. |
| INV-273-07 | CA-273-06 | TC-ERR-273-03 | Oui | Vérifie classification explicite des exigences non vérifiables (ERR-273-03, hors périmètre). |
| (Cas d'erreur) | CA-273-06 | TC-ERR-273-01 | Oui | Vérifie code structuré en cas de check ciblé non conforme. |
| (Cas d'erreur) | CA-273-06 | TC-ERR-273-04 | Oui | Vérifie code structuré en cas d'audit incomplet. |
3. Scénarios de test – Flux nominaux
TEST-ID: TC-NOM-273-01
Référence spec: INV-273-03, CA-273-01, Flux F1
GIVEN
- Baseline de référence validée: check_audit_trigger_update_delete = PARTIEL
- Exécution demandée: audit complet PV-AUDIT-001 (run complet exigé)
- Format de rapport déterministe disponible (run_id, statut par check, indicateur complet/incomplet)
WHEN
- PV-AUDIT-001 est exécuté en mode complet sur le même périmètre que la baseline
THEN
- Le rapport contient check_audit_trigger_update_delete = OK
AND
- Le rapport contient l'identifiant de run et un statut final exploitable automatiquement
TEST-ID: TC-NOM-273-02
Référence spec: INV-273-04, CA-273-02, Flux F2
GIVEN
- Baseline: check_audit_signature_sign = PARTIEL
- Exécution complète PV-AUDIT-001 possible
WHEN
- L'audit complet est exécuté
THEN
- Le rapport contient check_audit_signature_sign = OK
AND
- Aucun statut manquant pour ce check dans le rapport
TEST-ID: TC-NOM-273-03
Référence spec: INV-273-05, CA-273-03, Flux F3
GIVEN
- Baseline: check_destruction_sequence = PARTIEL
- Exécution complète PV-AUDIT-001 possible
WHEN
- L'audit complet est exécuté
THEN
- Le rapport contient check_destruction_sequence = OK
AND
- Le statut est horodaté et rattaché au run auditable
TEST-ID: TC-NOM-273-04
Référence spec: INV-273-01, CA-273-05, Flux F4
GIVEN
- Liste contractuelle des checks ciblés figée: 3 checks nominatifs
- Rapport d'audit complet avec statuts unitaires
WHEN
- Le comptage des checks ciblés en statut OK est effectué sur le run
THEN
- Le résultat est exactement 3/3
AND
- Toute valeur différente de 3 entraîne rejet du lot
TEST-ID: TC-NOM-273-05
Référence spec: INV-273-02, CA-273-04, Flux F4
GIVEN
- Baseline de 21 checks non ciblés en statut OK
- Run post-alignement complet PV-AUDIT-001
WHEN
- Un diff baseline vs run courant est calculé sur les 21 checks non ciblés
THEN
- Nombre de régressions = 0
AND
- Le diff est conservé comme preuve objective de non-régression
TEST-ID: TC-NOM-273-06
Référence spec: INV-273-06 (transitions)
GIVEN
- Historique de deux exécutions successives minimum pour au moins un même check
- Exécution N avec statut PARTIEL, exécution N+1 complète
WHEN
- Les transitions de statut sont comparées entre N et N+1
THEN
- PARTIEL -> OK est accepté si observé
AND
- Toute transition est explicitement traçable dans le rapport (avant/après)
4. Scénarios de test – Cas d'erreur
TEST-ID: TC-ERR-273-01
Référence spec: ERR-273-01-CHECK-NOT-OK, CA-273-06
GIVEN
- Exécution complète PV-AUDIT-001
- Au moins un des 3 checks ciblés reste PARTIEL ou KO
WHEN
- Le verdict de lot est demandé
THEN
- Verdict = rejeté
- Code erreur structuré présent: ERR-273-01-CHECK-NOT-OK
- Liste nominative des checks en écart présente
- Aucun marquage "lot accepté"
TEST-ID: TC-ERR-273-02
Référence spec: ERR-273-02-REGRESSION-DETECTED, INV-273-06, CA-273-06
GIVEN
- Baseline de checks non ciblés en OK
- Exécution ultérieure où au moins un check non ciblé passe en PARTIEL/KO
WHEN
- Le système produit le verdict de conformité
THEN
- Verdict = rejeté
- Code erreur: ERR-273-02-REGRESSION-DETECTED
- Diff de statuts avant/après fourni comme preuve
- Transition OK -> PARTIEL explicitement visible
TEST-ID: TC-ERR-273-03
Référence spec: ERR-273-03-UNVERIFIABLE-RULE, INV-273-07, CA-273-06
GIVEN
- Une exigence candidate sans observable automatisable est soumise à l'évaluation
WHEN
- Le moteur de validation contractuelle traite cette exigence
THEN
- L'exigence est classée hors périmètre
- Code erreur: ERR-273-03-UNVERIFIABLE-RULE
- L'exigence exclue n'est pas comptée dans le verdict de conformité du lot
TEST-ID: TC-ERR-273-04
Référence spec: ERR-273-04-AUDIT-RUN-INCOMPLETE, CA-273-06
GIVEN
- Exécution PV-AUDIT-001 incomplète (run interrompu/partiel)
WHEN
- Un verdict est demandé sur ce run
THEN
- Verdict = invalide
- Code erreur: ERR-273-04-AUDIT-RUN-INCOMPLETE
- Relance en exécution complète exigée
- Aucun verdict final de conformité n'est émis
5. Tests d'invariants (non négociables)
| Invariant | Test(s) dédiés | Observable | Commentaire |
| INV-273-01 | TC-NOM-273-01/02/03/04 | Statuts individuels + comptage ciblé = 3 | Couvre exactitude nominative et cardinalité. |
| INV-273-02 | TC-NOM-273-05 | Diff baseline vs run, régressions = 0 | Non-régression strictement mesurable. |
| INV-273-03 | TC-NOM-273-01 | check_audit_trigger_update_delete = OK | Vérification directe par rapport d'audit. |
| INV-273-04 | TC-NOM-273-02 | check_audit_signature_sign = OK | Vérification directe par rapport d'audit. |
| INV-273-05 | TC-NOM-273-03 | check_destruction_sequence = OK | Vérification directe par rapport d'audit. |
| INV-273-06 | TC-NOM-273-06, TC-ERR-273-02 | Transitions d'état visibles et justifiées | Inclut downgrade autorisé en cas de régression. |
| INV-273-07 | TC-ERR-273-03 | Classification explicite hors périmètre + code ERR | Garantit absence de règle "floue" dans le verdict. |
6. Tests de non-régression
| Test ID | Objet | Observable | Commentaire |
| TC-NR-273-01 | Stabilité des 21 checks non ciblés | Nombre de régressions = 0 | Test pivot de non-régression globale. |
| TC-NR-273-02 | Stabilité des 3 checks ciblés après passage OK | 2 runs successifs: OK -> OK autorisé | Vérifie persistance de conformité. |
| TC-NR-273-03 | Intégrité de structure du rapport d'audit | Présence systématique des mêmes champs clés | Empêche faux positifs dus à format instable. |
7. Tests négatifs et adversariaux
| Test ID | Entrée invalide / abus | Résultat attendu | Observable |
| TC-NEG-273-01 | Rapport sans un des 3 checks ciblés | Verdict invalide/rejet | Absence détectée + code ERR structuré |
| TC-NEG-273-02 | Baseline incohérente (!=3 PARTIEL ciblés ou !=21 non ciblés OK) | Exécution déclarée non conforme au contrat | Écart de bornes numériques explicite |
| TC-NEG-273-03 | Tentative de verdict sur run partiel | Refus de verdict final | ERR-273-04-AUDIT-RUN-INCOMPLETE |
| TC-NEG-273-04 | Exigence textuelle sans observable mesurable | Exclusion du périmètre de verdict | ERR-273-03-UNVERIFIABLE-RULE |
8. Observabilité requise pour les tests
- État système : statut unitaire par check, statut global de lot, indicateur run complet/incomplet.
- Réponse API (ou sortie moteur) : identifiant de run, timestamp, liste exhaustive des checks évalués.
- Journal d'audit : trace horodatée des transitions de statut par check entre exécutions.
- Événement signé / horodaté : preuve de génération du rapport final associée au run.
- Export probatoire : artefact diff baseline vs run courant (au minimum pour les 21 checks non ciblés) + codes
ERR-273-* en cas d'échec.
9. Règles non testables
| Règle | Raison | Impact |
| Aucune règle de conformité de la section 4 à 7 n'est non testable | Toutes disposent d'un observable automatisable défini | Bloquant: Non |
| H-273-04 (changement réglementaire externe) | Dépend d'un facteur exogène hors système audité | Mineur (hors périmètre contractuel) |
10. Verdict QA
- Testable intégralement
- Conditions de validité du verdict : baseline contractualisée disponible, exécution strictement complète, format de rapport déterministe et exploitable automatiquement.