PD-285 — Scénarios de tests contractuels
1. Références
- Spécification :
PD-285-specification.md - Epic :
EPIC-XX (valeur opérationnelle en attente de confirmation finale)
2. Matrice de couverture
| ID Invariant | ID Critère | ID Test | Couverture | Commentaire |
| INV-285-01-coherence | CA-01 | TC-NOM-01 | Oui | Valeur exacte DEFAULT.maxSizeBytes vérifiée à 524288000. |
| INV-285-01-coherence | CA-02 | TC-NOM-02 | Oui | Valeur exacte B2C_EVIDENCE_MINOR.maxSizeBytes vérifiée à 524288000. |
| INV-285-01-coherence | CA-07 | TC-NOM-08 | Oui (sous réserve format preuve) | Cohérence inter-EB validée via rapport sans écart PD-101/backend. |
| INV-285-02-categories-cible | CA-01, CA-02 | TC-NEG-01 | Oui | Vérifie que seules les 2 catégories cibles sont relevées. |
| INV-285-03-rejet-hors-borne | CA-03 | TC-NOM-03 | Oui | Rejet middleware au-delà de la borne. |
| INV-285-03-rejet-hors-borne | CA-03 | TC-NOM-04 | Oui | Borne haute inclusive acceptée côté middleware. |
| INV-285-03-rejet-hors-borne | CA-04 | TC-NOM-05 | Oui | Rejet métier au-delà de la borne avec code contractuel. |
| INV-285-04-unite-et-bornes | CA-01, CA-02 | TC-NEG-02 | Oui | Bornes [1..524288000] et unité bytes testées. |
| INV-285-05-erreur-metier | CA-04 | TC-NOM-05 | Oui | Code exact ERR-79-004 vérifié. |
| INV-285-06-non-regression | CA-05 | TC-NR-01 | Oui | Plage 1..104857600 inchangée si autres règles satisfaites. |
| INV-285-07-doc-sync | CA-06 | TC-NOM-07 | Oui | PD-252 besoin + spécification alignés sur 500 MB. |
| INV-285-08-checklist-temporelle | — | TC-INV-08 | Oui | Absence de transition temporelle démontrée par preuve d’analyse. |
| INV-285-09-etats-retour | — | TC-INV-09 | Oui | Validation stateless, pas de machine d’état modifiée. |
| INV-285-10-protection-distribuee | — | TC-INV-10 | Oui | Aucune queue/lock/worker introduite dans le périmètre. |
| INV-285-11-atomicite-ddl | — | TC-INV-11 | Oui | Aucune migration DDL / atomicité multi-composant requise. |
| INV-285-12-intermodule | — | TC-INV-12 | Oui | Aucune contrainte inter-module ajoutée. |
| — | CA-05 | TC-NOM-09 | Oui | Suite unitaire ciblée à jour et passante. |
| — | CA-07 | TC-ERR-06 | Oui (négatif) | Si écart persiste au rapport, CA-07 échoue objectivement. |
3. Scénarios de test – Flux nominaux
TEST-ID: TC-NOM-01
Référence spec: INV-285-01, CA-01
GIVEN
- Configuration catégories backend chargée
WHEN
- Lecture de DocumentCategoryConfig.DEFAULT.maxSizeBytes
THEN
- La valeur observée est exactement 524288000
AND
- Aucune conversion d’unité implicite n’est appliquée
TEST-ID: TC-NOM-02
Référence spec: INV-285-01, CA-02
GIVEN
- Configuration catégories backend chargée
WHEN
- Lecture de DocumentCategoryConfig.B2C_EVIDENCE_MINOR.maxSizeBytes
THEN
- La valeur observée est exactement 524288000
AND
- La valeur est exprimée en bytes
TEST-ID: TC-NOM-03
Référence spec: INV-285-03, CA-03
GIVEN
- Requête upload catégorie DEFAULT
- Content-Length = 524288001
WHEN
- Pré-validation middleware exécutée
THEN
- Requête rejetée immédiatement pour dépassement de taille
AND
- La requête n’atteint pas l’étape de validation métier
TEST-ID: TC-NOM-04
Référence spec: INV-285-03, CA-03
GIVEN
- Requête upload catégorie DEFAULT
- Content-Length = 524288000
WHEN
- Pré-validation middleware exécutée
THEN
- Requête non rejetée pour motif de taille
AND
- Le flux poursuit vers la validation métier
TEST-ID: TC-NOM-05
Référence spec: INV-285-03, INV-285-05, CA-04
GIVEN
- Validation métier sur fichier de taille 524288001
WHEN
- Application de la règle de catégorie
THEN
- Rejet métier émis
AND
- Le code d’erreur est exactement ERR-79-004
TEST-ID: TC-NOM-06
Référence spec: INV-285-03
GIVEN
- Validation métier sur fichier de taille 524288000
WHEN
- Application de la règle de catégorie
THEN
- La validation taille est conforme
AND
- Aucun ERR-79-004 n’est retourné
TEST-ID: TC-NOM-07
Référence spec: INV-285-07, CA-06
GIVEN
- Artefacts PD-252 besoin et PD-252 spécification disponibles
WHEN
- Vérification textuelle des deux documents
THEN
- Chaque document contient "storage.category_max_bytes: 500 MB"
AND
- Les deux formulations sont cohérentes entre elles
TEST-ID: TC-NOM-08
Référence spec: INV-285-01, CA-07
GIVEN
- Pipeline inter-EB exécutée après amendements
WHEN
- Rapport de cohérence produit
THEN
- Aucune incohérence PD-101 vs backend sur la taille max n’est remontée
AND
- Le statut de contrôle est conforme pour cette règle
TEST-ID: TC-NOM-09
Référence spec: CA-05
GIVEN
- Suite de tests unitaires liée aux limites de catégorie
WHEN
- Exécution de la suite ciblée
THEN
- Tous les tests concernés sont passants
AND
- Aucun test de limite régressif n’échoue
4. Scénarios de test – Cas d’erreur
TEST-ID: TC-ERR-01
Référence spec: E-01, CA-03
GIVEN
- Requête upload avec Content-Length > 524288000
WHEN
- Middleware de pré-validation exécuté
THEN
- Rejet immédiat de la requête
- Absence de traitement métier ultérieur
TEST-ID: TC-ERR-02
Référence spec: E-02, CA-04
GIVEN
- Taille métier calculée > 524288000
WHEN
- Validation service exécutée
THEN
- Rejet métier avec ERR-79-004
- Absence d’acceptation implicite
TEST-ID: TC-ERR-03
Référence spec: E-03
GIVEN
- Catégorie documentaire non reconnue
WHEN
- Validation de catégorie exécutée
THEN
- Rejet explicite de la requête
- Le rejet n’utilise pas le code taille ERR-79-004 (sauf spécification contraire)
TEST-ID: TC-ERR-04
Référence spec: E-04
GIVEN
- Valeur de taille mal formée ou non numérique
WHEN
- Contrôle d’entrée exécuté
THEN
- Entrée rejetée explicitement
- Absence de normalisation silencieuse
TEST-ID: TC-ERR-05
Référence spec: E-05, CA-06
GIVEN
- Un seul des deux documents PD-252 est amendé
WHEN
- Contrôle de synchronisation documentaire exécuté
THEN
- Non-conformité documentaire détectée
- Clôture de story bloquée
TEST-ID: TC-ERR-06
Référence spec: E-06, CA-07
GIVEN
- Rapport inter-EB post-amendement
WHEN
- Contrôle de cohérence consulté
THEN
- Si une incohérence PD-101/backend persiste, CA-07 est échoué
- Story non clôturable
5. Tests d’invariants (non négociables)
| Invariant | Test(s) dédiés | Observable | Commentaire |
| INV-285-01-coherence | TC-NOM-01, TC-NOM-02, TC-NOM-08 | Valeurs exactes + rapport inter-EB conforme | Couvre valeur et règle SYSTÈME >= BACKEND >= CLIENT. |
| INV-285-02-categories-cible | TC-NEG-01 | Aucune autre catégorie relevée à 500 MB | Limitation de périmètre vérifiée. |
| INV-285-03-rejet-hors-borne | TC-NOM-03, TC-NOM-04, TC-NOM-05, TC-NOM-06 | Borne strictement > rejetée, = acceptée | Rejet explicite sans clamp. |
| INV-285-04-unite-et-bornes | TC-NEG-02 | Rejet hors plage [1..524288000] | Contrat numérique strict. |
| INV-285-05-erreur-metier | TC-NOM-05 | Code exact ERR-79-004 | Non-conformité si code différent. |
| INV-285-06-non-regression | TC-NR-01 | Acceptation inchangée plage historique | Sous réserve des autres règles. |
| INV-285-07-doc-sync | TC-NOM-07, TC-ERR-05 | Deux artefacts alignés | Condition bloquante de clôture. |
| INV-285-08-checklist-temporelle | TC-INV-08 | Aucune exigence temporelle active | Validation d’absence. |
| INV-285-09-etats-retour | TC-INV-09 | Aucune transition retour applicable | Validation stateless. |
| INV-285-10-protection-distribuee | TC-INV-10 | Aucun mécanisme distribué requis | Validation d’absence dans périmètre. |
| INV-285-11-atomicite-ddl | TC-INV-11 | Aucune migration/DDL associée | Validation d’absence DB schema. |
| INV-285-12-intermodule | TC-INV-12 | Aucun couplage inter-module ajouté | Validation d’absence de contrainte externe. |
6. Tests de non-régression
| Test ID | Objet | Observable | Commentaire |
| TC-NR-01 | Plage historique 1..104857600 | Requêtes conformes non rejetées pour taille | Couvre INV-285-06. |
| TC-NR-02 | Borne ancienne 104857600 | Valeur limite historiquement acceptée reste acceptée | Vérifie absence de régression à la frontière 100 MB. |
| TC-NR-03 | Multipart global 5 TB inchangé (hors périmètre story) | Pas de changement contractuel détecté | Contrôle documentaire/config de non-impact. |
| TC-NR-04 | Quotas utilisateur inchangés (hors périmètre) | Aucune altération des règles de quota | Contrôle de non-régression périphérique. |
7. Tests négatifs et adversariaux
| Test ID | Entrée invalide / abus | Résultat attendu | Observable |
| TC-NEG-01 | Catégorie hors {DEFAULT, B2C_EVIDENCE_MINOR} prétendument à 500 MB | Non-conformité si relevée ; sinon conforme | Lecture exhaustive configs catégories. |
| TC-NEG-02 | maxSizeBytes = 0, -1, 524288001, non numérique | Rejet explicite de configuration/validation | Erreur de validation déterministe. |
| TC-NEG-03 | Content-Length = "abc" | Requête invalide rejetée | Réponse erreur entrée invalide. |
| TC-NEG-04 | Content-Length = 524288001 avec catégorie cible | Rejet middleware immédiat | Pas de passage au service. |
| TC-NEG-05 | Taille métier > limite avec code erreur différent de ERR-79-004 | Non-conformité contractuelle | Assertion stricte sur code erreur. |
| TC-NEG-06 | Documentation PD-252 partiellement alignée | Blocage conformité story | Contrôle de présence des 2 références. |
8. Observabilité requise pour les tests
- État système : valeurs effectives de configuration catégorie (
maxSizeBytes) lisibles et auditables. - Réponse API : statut de rejet/acceptation et présence exacte du code
ERR-79-004 au cas métier. - Journal d’audit : trace de décision de validation (middleware vs service) horodatée.
- Événement signé / horodaté : sortie de pipeline inter-EB avec statut de cohérence.
- Export probatoire : artefacts de preuve (rapport pipeline, résultats suite tests, extraits PD-252) archivables et rejouables.
9. Règles non testables
| Règle | Raison | Impact |
Comportement exact middleware si Content-Length absent/non fiable | La spécification indique “si présent” mais ne fixe pas explicitement l’issue middleware en absence d’en-tête | Majeur |
| Format exact attendu du rapport de cohérence (CA-07) | Observable fonctionnel défini, mais format de preuve non normalisé contractuellement | Majeur |
Chemin d’artefact final basé sur {DOMAINE} et {PD-285-nom} | Variables de chemin non résolues dans les entrées | Mineur |
| Référence épique finale (nom exact) | Valeur fournie incomplète (EPIC-XX/“Référence épique”) | Mineur |
10. Verdict QA
- ⚠️ Testable partiellement (avec réserves listées)
Motif : la conformité fonctionnelle principale (limites, rejets, code erreur, sync doc, cohérence inter-EB) est testable de manière déterministe ; des ambiguïtés de cadrage subsistent sur la sémantique en absence de Content-Length et sur le format probatoire exact de CA-07.