Aller au contenu

PD-105 - Scenarios de tests contractuels

1. References

  • Specification : PD-105-specification.md
  • Epic : MOBILE-IOS (PD-195)

2. Matrice de couverture

ID Invariant ID Critere ID Test Couverture Commentaire
INV-105-01 CA-105-10 TC-INV-01, TC-NOM-12 Oui Validation executee uniquement sur build EAS iOS avec APNs.
INV-105-02 CA-105-11 TC-NOM-11, TC-NEG-02 Oui Filtre strict des evenements hors doctrine.
INV-105-03 CA-105-01, CA-105-02 TC-NOM-01, TC-NOM-02 Oui Enregistrement initial et rotation couverts.
INV-105-04 - TC-ERR-09, TC-INV-04 Oui Revocation token lors logout explicite (pas de CA dedie).
INV-105-05 CA-105-03 TC-NOM-03, TC-NEG-03 Oui Silent sans alerte/son/vibration.
INV-105-06 CA-105-04 TC-NOM-04, TC-NEG-04 Partielle Cas HAUTE depend du catalogue officiel (H-105-04).
INV-105-07 CA-105-07 TC-NOM-08, TC-ERR-04, TC-NEG-01 Oui Rejet des payloads avec donnees sensibles.
INV-105-08 CA-105-04, CA-105-05 TC-NOM-04, TC-NOM-05, TC-INV-08 Oui Historisation locale avec champs obligatoires.
INV-105-09 CA-105-05 TC-NOM-05, TC-ERR-06 Oui Egalite stricte badge/non lus + reconciliation.
INV-105-10 CA-105-06 TC-NOM-06, TC-NOM-07, TC-ERR-05 Oui Navigation cible ou fallback obligatoire.
INV-105-11 CA-105-08 TC-NOM-09, TC-ERR-07 Oui Mesure evenement -> tentative APNs <= 5s.
INV-105-12 CA-105-09 TC-NOM-10 Oui Fiabilite alert >= 99% sur 30 jours glissants.
INV-105-13 CA-105-10 TC-NOM-12, TC-ERR-08 Oui Expo Go non recevable pour acceptation.
- CA-105-12 TC-NOM-13, TC-ERR-03 Oui Permission precedee d'un message de valeur probatoire.

3. Scenarios de test - Flux nominaux

TEST-ID: TC-NOM-01
Reference spec: INV-105-03, CA-105-01, FN-105-01

GIVEN
  - Device iOS physique avec build EAS valide
  - Utilisateur U1 non authentifie puis login reussi
  - Aucun token actif preexistant pour (U1, device D1)
WHEN
  - L'utilisateur finalise le premier contexte authentifie
THEN
  - Une trace backend montre un token APNs actif associe a (U1, D1)
AND
  - L'enregistrement contient environnement et horodatage
  - Aucun doublon actif pour (U1, D1)
TEST-ID: TC-NOM-02
Reference spec: INV-105-03, CA-105-02, FN-105-02

GIVEN
  - Token T1 actif pour (U1, D1)
  - Nouveau token APNs T2 detecte
WHEN
  - L'application transmet T2 au backend
THEN
  - T1 est marque inactif et T2 est marque actif
AND
  - Les logs d'envoi ulterieurs ne ciblent jamais T1
TEST-ID: TC-NOM-03
Reference spec: INV-105-05, CA-105-03, FN-105-03

GIVEN
  - Permission notifications activee ou non (indifferent pour silent)
  - Evenement probatoire E-SYNC qualifie silent
WHEN
  - Le backend emet une push silent vers D1
THEN
  - Aucune banniere, aucun son, aucune vibration n'est observee
AND
  - Un log de traitement background est present
  - Les donnees locales ciblees sont synchronisees
TEST-ID: TC-NOM-04
Reference spec: INV-105-06, INV-105-08, CA-105-04, FN-105-04

GIVEN
  - Permission notifications iOS accordee
  - Evenement E-CRIT de criticite CRITIQUE
WHEN
  - Le backend emet une notification alert
THEN
  - iOS affiche une alerte visible a l'utilisateur
AND
  - Le centre in-app cree une entree non lue
  - L'entree contient notification_id unique, event_type, reception_at, read_status=false
TEST-ID: TC-NOM-05
Reference spec: INV-105-09, CA-105-05, FN-105-05

GIVEN
  - Historique local contenant N notifications non lues
WHEN
  - Le centre in-app est ouvert puis applique la regle de lecture definie
THEN
  - Le compteur badge iOS est strictement egal au nombre de non lus restants
AND
  - L'egalite est vraie apres refresh immediat
TEST-ID: TC-NOM-06
Reference spec: INV-105-10, CA-105-06, FN-105-06

GIVEN
  - Notification N1 avec contexte cible resolvable
WHEN
  - L'utilisateur tape N1 depuis systeme iOS ou centre in-app
THEN
  - L'application ouvre l'ecran metier cible attendu
AND
  - Un event de navigation auditable est journalise
TEST-ID: TC-NOM-07
Reference spec: INV-105-10, CA-105-06, FN-105-06

GIVEN
  - Notification N2 avec contexte devenu indisponible
WHEN
  - L'utilisateur tape N2
THEN
  - L'application ouvre l'ecran detail de notification
AND
  - Un message explicite d'indisponibilite contextuelle est affiche
TEST-ID: TC-NOM-08
Reference spec: INV-105-07, CA-105-07

GIVEN
  - Jeu de payloads push emis en preprod sur 3 types d'evenements phase 1
WHEN
  - Les payloads sont inspectes avant emission APNs
THEN
  - Aucun payload ne contient titre document, identite explicite ou contenu juridique
AND
  - Seuls identifiants opaques et metadonnees techniques minimales sont presents
TEST-ID: TC-NOM-09
Reference spec: INV-105-11, CA-105-08

GIVEN
  - Horloge synchronisee (backend + systeme de mesure)
  - Echantillon >= 100 evenements declencheurs horodates
WHEN
  - Le backend traite chaque evenement et tente APNs
THEN
  - Pour chaque cas, delai evenement->tentative APNs <= 5s
AND
  - Le rapport affiche moyenne et p95 conformes au seuil
TEST-ID: TC-NOM-10
Reference spec: INV-105-12, CA-105-09

GIVEN
  - Tableau metrique livraison alerts disponible sur 30 jours glissants
WHEN
  - Le taux de livraison APNs des notifications alert est calcule
THEN
  - Le taux global est >= 99%
AND
  - Le perimetre inclut uniquement les notifications alert PD-105
TEST-ID: TC-NOM-11
Reference spec: INV-105-02, CA-105-11

GIVEN
  - Catalogue des evenements exclus explicitement "non a notifier"
WHEN
  - Une campagne de declenchement de ces evenements est executee
THEN
  - Aucune emission APNs n'est observee
AND
  - Les logs montrent un filtrage explicite des evenements exclus
TEST-ID: TC-NOM-12
Reference spec: INV-105-01, INV-105-13, CA-105-10

GIVEN
  - Rapport de campagne d'acceptation push
WHEN
  - Les metadonnees d'execution sont verifiees
THEN
  - Les tests sont executes sur build EAS iOS
AND
  - Aucune execution Expo Go n'est acceptee comme preuve contractuelle
TEST-ID: TC-NOM-13
Reference spec: CA-105-12, FN-105-07

GIVEN
  - Installation fraiche (permission non encore demandee)
WHEN
  - Le premier besoin d'alerte utilisateur est atteint
THEN
  - Un ecran/message explicatif sur la valeur probatoire est affiche avant le prompt iOS
AND
  - Le choix utilisateur est ensuite porte par le systeme iOS

4. Scenarios de test - Cas d'erreur

TEST-ID: TC-ERR-01
Reference spec: ERR-105-01

GIVEN
  - Backend indisponible pendant l'enregistrement token
WHEN
  - L'application tente l'enregistrement
THEN
  - Aucun crash applicatif
  - Echec journalise
AND
  - Retentative planifiee selon politique de reprise
  - Nouvelle tentative au prochain cycle activation/session
TEST-ID: TC-ERR-02
Reference spec: ERR-105-02

GIVEN
  - Token rejete par APNs
WHEN
  - Le backend recoit le rejet APNs
THEN
  - Token marque invalide
  - Envois ulterieurs vers ce token stoppes
AND
  - Re-enregistrement requis au prochain token valide
TEST-ID: TC-ERR-03
Reference spec: ERR-105-03

GIVEN
  - Permission notifications refusee par l'utilisateur
WHEN
  - Un evenement alert est emis
THEN
  - Aucune alerte visible cote iOS
  - Aucun comportement intrusif en boucle
AND
  - Point d'entree vers reglages iOS disponible
  - Historique local continue pour evenements synchronisables
TEST-ID: TC-ERR-04
Reference spec: ERR-105-04

GIVEN
  - Payload contenant une donnee sensible detectable
WHEN
  - Le backend valide le payload avant emission
THEN
  - Notification rejetee
  - Aucun envoi APNs effectue
AND
  - Evenement de securite journalise avec horodatage
TEST-ID: TC-ERR-05
Reference spec: ERR-105-05

GIVEN
  - Notification existante avec contexte introuvable
WHEN
  - L'utilisateur tape la notification
THEN
  - Ouverture detail notification
  - Message de fallback explicite
AND
  - Notification reste traceable dans l'historique
TEST-ID: TC-ERR-06
Reference spec: ERR-105-06

GIVEN
  - Desalignement badge systeme vs non lus detecte
WHEN
  - L'application redemarre ou effectue un refresh
THEN
  - Reconciliation immediate depuis historique local
  - Badge recalcule = non lus
AND
  - Operation journalisee pour audit
TEST-ID: TC-ERR-07
Reference spec: ERR-105-07

GIVEN
  - Evenement declencheur avec delai d'envoi > 5s
WHEN
  - Le controle NFR est applique
THEN
  - Incident metrique enregistre
  - Cas marque non conforme NFR
AND
  - Presence dans reporting de suivi
TEST-ID: TC-ERR-08
Reference spec: ERR-105-08

GIVEN
  - Campagne de test push executee via Expo Go
WHEN
  - Le dossier d'acceptation est audite
THEN
  - Resultat declare non recevable pour PD-105
AND
  - Exigence de reexecution sur build EAS iOS
TEST-ID: TC-ERR-09
Reference spec: INV-105-04

GIVEN
  - Token actif pour session utilisateur en cours
WHEN
  - L'utilisateur execute une deconnexion explicite
THEN
  - Le backend revoque le token (etat inactif/revoque)
AND
  - Aucun envoi APNs ulterieur vers ce token

5. Tests d'invariants (non negociables)

Invariant Test(s) dedies Observable Commentaire
INV-105-01 TC-INV-01 Campagne limitee a iOS + APNs Verifie le perimetre d'execution.
INV-105-02 TC-NOM-11, TC-NEG-02 Zero emission pour evenements exclus Anti-bruit contractuel.
INV-105-03 TC-NOM-01, TC-NOM-02 Etat token actif/inactif en backend Joignabilite maintenue.
INV-105-04 TC-ERR-09, TC-INV-04 Revocation a logout Fin de session sans envois residuels.
INV-105-05 TC-NOM-03, TC-NEG-03 Absence totale d'alerte/son/vibration Comportement silent strict.
INV-105-06 TC-NOM-04, TC-NEG-04 Alert reservee a CRITIQUE/HAUTE-CRITIQUE Cas HAUTE partiel sans catalogue complet.
INV-105-07 TC-NOM-08, TC-ERR-04, TC-NEG-01 Payload sans donnees sensibles Controle securite pre-emission.
INV-105-08 TC-NOM-04, TC-INV-08 Champs historiques obligatoires et uniques Tracabilite locale.
INV-105-09 TC-NOM-05, TC-ERR-06 Badge = non lus Cohesion permanente.
INV-105-10 TC-NOM-06, TC-NOM-07 Cible ouverte ou fallback detail Aucun tap sans issue.
INV-105-11 TC-NOM-09, TC-ERR-07 Delai <= 5s ou non-conformite tracee Contrainte NFR.
INV-105-12 TC-NOM-10 Taux livraison 30j >= 99% Fiabilite operationnelle.
INV-105-13 TC-NOM-12, TC-ERR-08 EAS accepte, Expo Go rejete Contexte de validation impose.

Tests dedies supplementaires:

Invariant Test ID Description courte
INV-105-01 TC-INV-01 Rejet de toute preuve non iOS/APNs.
INV-105-04 TC-INV-04 Verification de revocation immediate au logout.
INV-105-08 TC-INV-08 Validation schema historique local complet.

6. Tests de non-regression

Test ID Objet Observable Commentaire
TC-NR-01 Repetition enregistrement token sur 10 relogins Un seul token actif par couple (U,D) Evite duplication apres evolutions auth.
TC-NR-02 Sequence rotation T1->T2->T3 Seul T3 actif, T1/T2 inactifs Verifie invalidation cumulative.
TC-NR-03 50 notifications mixtes silent/alert Historique coherent + badge exact Verifie stabilite sur charge fonctionnelle.
TC-NR-04 Tap depuis app terminee Deep link/fallback fonctionnel Couvre cycle cold start.
TC-NR-05 Reconciliation badge apres kill/restart Badge recalcule identique au non-lu local Evite desalignement persistant.
TC-NR-06 Campagne events exclus repetee Zero APNs emis Verifie absence de regression anti-bruit.

7. Tests negatifs et adversariaux

Test ID Entree invalide / abus Resultat attendu Observable
TC-NEG-01 Payload contenant PII (nom, titre document, extrait juridique) Rejet pre-emission Log securite + zero appel APNs
TC-NEG-02 Evenement explicitement "non a notifier" force en entree Aucune emission push Trace filtrage doctrine
TC-NEG-03 Silent push avec champs d'alerte injectes Classement/refus selon politique securite, aucune alerte utilisateur Absence banniere/son et journal de controle
TC-NEG-04 Evenement HAUTE non catalogue en phase 1 NON TESTABLE tant que catalogue non fige; verdict reserve Evidence manque de referentiel
TC-NEG-05 Token APNs malforme Rejet backend + pas d'activation token Reponse API erreur + logs validation
TC-NEG-06 Tap notification avec identifiant opaque inconnu Ouverture fallback detail, pas de crash Ecran fallback + log navigation degradee

8. Observabilite requise pour les tests

  • Etat systeme : etat permission iOS, badge systeme, etat app (foreground/background/terminee), build type (EAS vs Expo Go).
  • Reponse API : endpoints d'enregistrement/revocation token avec statut, payload de confirmation, erreurs structurees.
  • Journal d'audit : enregistrement token, rotation, revocation, tentative APNs, filtre doctrine, rejet securite payload.
  • Evenement signe / horodate : timestamp declencheur metier, timestamp tentative APNs, identifiant notification unique.
  • Export probatoire : rapport campagne avec mapping tests->invariants->criteres et pieces horodatees.
  • Telemetrie fiabilite : tableau 30j glissants des alerts (envoye, accepte APNs, echec), calcul taux >= 99%.

9. Regles non testables

Regle Raison Impact
Perception utilisateur de "confiance" Mesure subjective, non deterministe Mineur (hors perimetre contractuel explicite)
Qualite stylistique redactionnelle des messages Evaluation qualitative non objective Mineur (hors perimetre contractuel explicite)
Mapping exhaustif des evenements HAUTE en phase 1 Catalogue officiel non fige (H-105-04) Majeur (couverture partielle INV-105-06)
Regle exacte de passage lu/non lu Definition non finalisee (Point a clarifier #4) Majeur (assertions TC-NOM-05 dependantes du referentiel)
Seuil contractuel de reception device (vs envoi backend) Latence reception non contractualisee (Point a clarifier #5) Majeur (NFR reception non auditable)
Definition de "traitee correctement" en background >95% Critere de succes incomplet (Point a clarifier #6) Majeur (qualification CA-105-03 partielle sur taux)

10. Verdict QA

  • ⚠️ Testable partiellement (avec reserves listees)
  • Couverture complete des 13 invariants et 12 criteres d'acceptation au niveau scenario.
  • Reserves majeures limitees aux points non figes de la specification (catalogue criticite, regle de lecture, NFR reception, definition de succes background).