PD-99 — Scénarios de tests contractuels¶
1. Références¶
- Spécification : PD-99-specification.md
- Epic : PD-195 — MOBILE-iOS
- JIRA : PD-99
2. Matrice de couverture¶
| ID Invariant | ID Critère | ID Test | Couverture | Commentaire |
|---|---|---|---|---|
| INV-01 | CA-01 | TC-INV-01 | Oui | Vérifie usage SRP-6a (observabilité requise) |
| INV-02 | CA-02 | TC-INV-02 | Oui | Vérifie absence de mot de passe en clair sur le réseau |
| INV-03 | — | TC-INV-03 | Partiel | Garantie « aucun humain ne connaît » : seulement testable via surfaces UI/flux |
| INV-04 | — | TC-INV-04 | Oui | Vérifie vocabulaire « mot de passe » |
| INV-05 | CA-03 | TC-INV-05 | Oui | Différenciation visuelle fondatrice vs facilitée |
| INV-06 | CA-04 | TC-INV-06 | Oui | Aucune persistance après connexion |
| INV-07 | — | TC-INV-07 | Oui | Biométrie optionnelle |
| INV-08 | CA-05 | TC-INV-08A | Oui | Désactivation globale |
| INV-08 | CA-06 | TC-INV-08B | Oui | Désactivation par appareil |
| INV-09 | CA-07 | TC-INV-09 | Oui | Messages d’erreur non inférentiels + identiques |
| INV-10 | — | TC-INV-10 | NON TESTABLE | « acte engageant » non défini de manière observable dans la spec |
| INV-11 | CA-08 | TC-INV-11 | Oui | Texte exact du rappel irrécupérabilité |
| — | CA-09 | TC-CA-09 | Oui | Texte exact du message d’erreur générique |
3. Scénarios de test – Flux nominaux¶
TEST-ID: TC-NOM-01 — Connexion fondatrice réussie
Référence spec: Flux FN-01, INV-01, INV-02, INV-05, CA-01, CA-02, CA-03
GIVEN
- Un utilisateur existant U1 avec email E1 et mot de passe P1 valides.
- L’application mobile iOS est installée et l’utilisateur est déconnecté.
- L’accès réseau est disponible.
WHEN
- L’utilisateur ouvre un écran de login et choisit le mode « connexion fondatrice ».
- Il saisit E1 et P1 et valide.
THEN
- L’accès est accordé et l’utilisateur atteint un état authentifié (ex. écran post-login).
- L’écran de login utilisé correspond visuellement au mode « connexion fondatrice ».
AND
- Les éléments d’observabilité requis pour SRP-6a et l’absence de mot de passe en clair sont disponibles (cf. §8).
TEST-ID: TC-NOM-02 — Connexion facilitée (biométrie) réussie
Référence spec: Flux FN-02, INV-05, INV-06, INV-07
GIVEN
- Un utilisateur existant U1.
- La biométrie est activée (voir TC-INV-08A/08B) et l’écran de login propose un mode « connexion facilitée ».
- Le terminal permet une authentification biométrique réussie.
WHEN
- L’utilisateur ouvre un écran de login et choisit le mode « connexion facilitée ».
- Il réalise une authentification biométrique réussie.
THEN
- L’accès est accordé et l’utilisateur atteint un état authentifié.
- L’écran de login utilisé correspond visuellement au mode « connexion facilitée ».
AND
- Une fois authentifié, aucun indicateur persistant n’est visible indiquant le mode de login (INV-06).
TEST-ID: TC-NOM-03 — Désactivation biométrie globale
Référence spec: Flux FN-03, INV-07, INV-08, CA-05
GIVEN
- Un utilisateur U1 authentifié.
- La biométrie est activée globalement.
WHEN
- L’utilisateur désactive la biométrie globalement dans les paramètres utilisateur.
THEN
- L’option de connexion facilitée n’est plus utilisable sur l’appareil courant.
- Toute tentative de connexion ultérieure requiert une connexion fondatrice.
TEST-ID: TC-NOM-04 — Désactivation biométrie par appareil
Référence spec: Flux FN-03, INV-07, INV-08, CA-06
GIVEN
- Un utilisateur U1 disposant d’au moins deux appareils enregistrés (A1, A2) dans le périmètre fonctionnel de l’application.
- La biométrie est activée.
WHEN
- Depuis A1, l’utilisateur désactive la biométrie « pour cet appareil ».
THEN
- Sur A1, l’option de connexion facilitée n’est plus utilisable.
AND
- Sur A2, l’état de la biométrie reste conforme au paramétrage attendu (inchangé sauf action explicite de l’utilisateur).
4. Scénarios de test – Cas d’erreur¶
TEST-ID: TC-ERR-01 — Échec d’authentification (générique)
Référence spec: ERR-01, INV-09, CA-07, CA-09
GIVEN
- Un utilisateur tente une connexion fondatrice depuis un écran de login.
WHEN
- La tentative de connexion échoue (quelle qu’en soit la cause).
THEN
- Le message d’erreur affiché correspond exactement au texte requis :
« La connexion a échoué. Vérifiez vos informations et réessayez. »
AND
- Aucun autre message ou détail n’est affiché permettant d’identifier la cause.
TEST-ID: TC-ERR-02 — Indisponibilité technique (générique)
Référence spec: ERR-02, INV-09, CA-07, CA-09
GIVEN
- Un utilisateur tente une connexion depuis un écran de login.
- Une indisponibilité technique survient pendant la tentative (réseau indisponible ou service indisponible), telle que définie par l’environnement de test.
WHEN
- La tentative de connexion échoue.
THEN
- Le message affiché est strictement identique au message d’erreur générique requis (même texte, même format).
AND
- Aucun indice (texte, code, libellé, variation) ne permet de distinguer ce cas d’un échec d’authentification.
TEST-ID: TC-ERR-03 — Biométrie refusée/échouée
Référence spec: ERR-03, INV-07, INV-09
GIVEN
- La biométrie est activée et l’utilisateur choisit la connexion facilitée sur un écran de login.
WHEN
- L’authentification biométrique est refusée ou échoue.
THEN
- L’utilisateur revient à un état lui permettant de retenter une connexion.
AND
- Aucun message ne doit révéler une cause précise distinguant « refus biométrie » d’un autre motif d’échec (conformément à INV-09).
5. Tests d’invariants (non négociables)¶
| Invariant | Test(s) dédiés | Observable | Commentaire |
|---|---|---|---|
| INV-01 | TC-INV-01 | Traces/observables de flux SRP-6a | Nécessite observabilité (§8) |
| INV-02 | TC-INV-02 | Capture réseau / journalisation de requêtes | Vérifie absence de mot de passe en clair |
| INV-03 | TC-INV-03 | UI + documentation in-app | Test partiel : « aucun humain » ne peut être prouvé exhaustivement par tests black-box |
| INV-04 | TC-INV-04 | Libellés UI | « mot de passe » présent |
| INV-05 | TC-INV-05 | Inspection UI | Différenciation visuelle |
| INV-06 | TC-INV-06 | Inspection UI post-login | Aucun indicateur persistant |
| INV-07 | TC-INV-07 | Paramètres / UI login | Option biométrie non imposée |
| INV-08 | TC-INV-08A, TC-INV-08B | Paramètres / comportement login | Global et par appareil |
| INV-09 | TC-INV-09 | Comparaison messages (texte exact + absence variation) | Tous échecs identiques |
| INV-10 | — | — | NON TESTABLE (cf. §9) |
| INV-11 | TC-INV-11 | UI (texte exact) | Rappel irrécupérabilité |
Détail des tests d’invariants¶
TEST-ID: TC-INV-01 — Vérifier usage SRP-6a
Référence spec: INV-01, CA-01
GIVEN
- Un environnement de test permettant d’observer le type de flux d’authentification (cf. §8).
WHEN
- Une connexion fondatrice est tentée (succès ou échec).
THEN
- Les observables confirment que l’authentification utilise SRP-6a.
TEST-ID: TC-INV-02 — Vérifier absence de mot de passe en clair sur le réseau
Référence spec: INV-02, CA-02
GIVEN
- Un environnement de test permettant l’inspection du trafic réseau sortant du client.
WHEN
- Une connexion fondatrice est tentée.
THEN
- Aucun champ, paramètre, en-tête ou payload ne contient le mot de passe P1 en clair.
AND
- Aucune variation (encodage, sérialisation) ne laisse apparaître P1 en clair.
TEST-ID: TC-INV-03 — Vérifier la non-demande de mot de passe hors écran de login (test partiel)
Référence spec: INV-03
GIVEN
- Un parcours utilisateur couvrant les écrans majeurs de l’application (hors écran de login), tel que défini par le périmètre de test.
WHEN
- L’utilisateur navigue ces écrans.
THEN
- Aucun écran hors « écran de login » (définition spec) ne demande la saisie du mot de passe.
NOTE
- Ce test ne prouve pas l’impossibilité absolue pour un humain d’accéder au mot de passe ; il vérifie uniquement l’absence de sollicitation UI/flux côté client.
TEST-ID: TC-INV-04 — Vérifier le vocabulaire « mot de passe »
Référence spec: INV-04
GIVEN
- L’écran de login est affiché.
WHEN
- Les libellés et aides contextuelles sont inspectés.
THEN
- Le terme exact « mot de passe » est utilisé.
TEST-ID: TC-INV-05 — Vérifier différenciation visuelle fondatrice vs facilitée
Référence spec: INV-05, CA-03
GIVEN
- Un écran de login permettant les deux modes de connexion.
WHEN
- L’utilisateur bascule entre le mode « connexion fondatrice » et le mode « connexion facilitée ».
THEN
- Les deux modes sont visuellement différenciables sans ambiguïté.
TEST-ID: TC-INV-06 — Vérifier absence de persistance du mode après login
Référence spec: INV-06, CA-04
GIVEN
- Une connexion réussie via le mode « connexion facilitée ».
WHEN
- L’utilisateur arrive sur l’état authentifié.
THEN
- Aucun élément visible ne rappelle le mode de connexion utilisé.
TEST-ID: TC-INV-07 — Vérifier biométrie optionnelle
Référence spec: INV-07
GIVEN
- Un utilisateur déconnecté.
WHEN
- L’écran de login est affiché.
THEN
- Il est possible de réaliser une connexion fondatrice sans jamais activer la biométrie.
AND
- L’activation de la biométrie n’est pas requise pour accéder au service.
TEST-ID: TC-INV-08A — Désactivation biométrie globale
Référence spec: INV-08, CA-05
GIVEN
- Biométrie activée.
WHEN
- Désactivation globale effectuée par l’utilisateur.
THEN
- Connexion facilitée indisponible sur l’appareil.
TEST-ID: TC-INV-08B — Désactivation biométrie par appareil
Référence spec: INV-08, CA-06
GIVEN
- Deux appareils enregistrés A1 et A2.
WHEN
- Désactivation biométrie « pour cet appareil » sur A1.
THEN
- Connexion facilitée indisponible sur A1.
AND
- Le comportement sur A2 reste conforme au paramétrage attendu.
TEST-ID: TC-INV-09 — Vérifier absence d’inférence par messages d’erreur
Référence spec: INV-09, CA-07, CA-09
GIVEN
- Trois tentatives de connexion échouées provoquées par des causes différentes dans l’environnement de test (ex.: identifiant invalide, secret invalide, indisponibilité technique).
WHEN
- Chaque tentative est réalisée depuis un écran de login.
THEN
- Dans tous les cas, le message affiché est strictement identique et correspond exactement au texte requis.
AND
- Aucune variation d’UI (texte, titre, icône, libellé, code, lien) ne permet de distinguer les causes.
TEST-ID: TC-INV-11 — Vérifier texte exact irrécupérabilité du mot de passe
Référence spec: INV-11, CA-08
GIVEN
- Un écran de login (au sens de la définition spec) affiché.
WHEN
- Le contenu du rappel est inspecté.
THEN
- Le texte affiché correspond exactement au texte requis :
« Votre mot de passe est connu de vous seul. Il ne peut pas être récupéré ni communiqué, y compris à la demande. »
TEST-ID: TC-CA-09 — Vérifier texte exact du message d’erreur générique
Référence spec: CA-09
GIVEN
- Une tentative de connexion échouée sur un écran de login.
WHEN
- Le message d’erreur est affiché.
THEN
- Le texte affiché correspond exactement au texte requis :
« La connexion a échoué. Vérifiez vos informations et réessayez. »
6. Tests de non-régression¶
| Test ID | Objet | Observable | Commentaire |
|---|---|---|---|
| TC-NR-01 | Texte exact rappel irrécupérabilité | Snapshot/inspection UI | Toute variation est une régression contractuelle |
| TC-NR-02 | Texte exact erreur générique | Snapshot/inspection UI | Toute variation est une régression contractuelle |
| TC-NR-03 | Différenciation visuelle des modes sur écran de login | Inspection UI | Toute homogénéisation est une régression |
| TC-NR-04 | Absence de persistance du mode après login | Inspection UI | Toute persistance visible est une régression |
7. Tests négatifs et adversariaux¶
| Test ID | Entrée invalide / abus | Résultat attendu | Observable |
|---|---|---|---|
| TC-NEG-01 | Multiples tentatives échouées | Toujours le même message générique exact | UI |
| TC-NEG-02 | Email manifestement invalide (format) | Même message générique exact (si refus) | UI |
| TC-NEG-03 | Mot de passe vide / très court | Même message générique exact (si refus) | UI |
| TC-NEG-04 | Navigation vers écrans non-login | Aucun écran non-login ne demande le mot de passe | UI |
NOTE
- Ces tests décrivent l’observable attendu côté UI. Les politiques de validation locale ne sont pas spécifiées ; tout comportement divergent doit rester conforme à INV-09 (non inférentiel) et aux textes exacts.
8. Observabilité requise pour les tests¶
Les tests contractuels exigent la disponibilité des observables suivants (sans préjuger de leur implémentation) :
- UI :
- Accès à tous les écrans de login (au sens de la définition spec).
- Possibilité d’inspecter les textes affichés (comparaison exacte, y compris ponctuation).
-
Possibilité d’observer l’absence d’indicateur persistant après authentification.
-
Réseau (client) :
-
Possibilité d’inspecter le trafic sortant lors d’une connexion fondatrice afin de vérifier l’absence de mot de passe en clair (TC-INV-02).
-
Flux d’authentification :
-
Un moyen d’observer/attester que le flux utilisé est SRP-6a (TC-INV-01). À défaut, CA-01 et INV-01 deviennent non vérifiables en test black-box.
-
Paramétrage biométrie :
- Accès aux réglages permettant l’activation/désactivation globale et par appareil.
- Sur les tests multi-appareils : capacité à exécuter les scénarios sur au moins deux appareils distincts enregistrés.
9. Règles non testables¶
| Règle | Raison | Impact |
|---|---|---|
| INV-10 « Le login DOIT être traité comme un acte engageant » | La spécification ne définit aucun marqueur observable et vérifiable permettant de conclure objectivement au caractère “engageant”. | Majeur (risque de contestation contractuelle) |
| INV-03 « Aucun humain ne peut connaître le mot de passe » (au sens absolu) | Un test ne peut pas prouver l’absence totale d’accès humain dans toutes les chaînes organisationnelles et techniques ; seule une vérification partielle via surfaces UI/flux est possible (TC-INV-03). | Majeur (nécessite preuves complémentaires hors tests applicatifs) |
10. Verdict QA¶
- ⚠️ Testable partiellement (avec réserves listées)
- INV-10 est NON TESTABLE en l’état.
- INV-03 est testable partiellement côté UI/flux, mais nécessite des preuves complémentaires (procédures, audits organisationnels) si l’exigence est interprétée au sens strict et absolu.