SafeBite/docs/test-plan.md
Bruno Charest c4add0a3fe feat: add user testing plan for SafeBite app
- Created a comprehensive user testing plan document to validate the app's usability, reliability, accessibility, and resilience.
- Included various test scenarios covering onboarding, product scanning, manual barcode entry, and accessibility features.

chore: update dependencies for code quality tools

- Added ktlint version 12.2.0 for Kotlin code style enforcement.
- Added detekt version 1.23.7 for static code analysis.

chore: increment version numbers

- Updated MINOR version to 32 and CODE to 43 in version.properties to reflect recent changes.
2026-05-11 15:13:18 -04:00

5.8 KiB

🧪 Plan de tests utilisateurs — SafeBite

Document de validation UX • 11 mai 2026


1. Objectifs

Valider que SafeBite est :

  • Compréhensible : utilisateur identifie un verdict DANGER en < 2 secondes
  • Fiable : 10 scans d'affilée sans crash ni freeze
  • Accessible : utilisable par une personne daltonienne + TalkBack
  • Résilient : rotation écran, appel entrant, batterie faible

2. Profils testeurs requis

# Profil Critère
1 Adulte sans allergie Usage smartphone quotidien
2 Adulte avec allergie(s) Connaît ses allergènes
3 Parent (enfant allergique) Gère un profil famille
4 Senior (50+) Usage smartphone basique
5 Daltonien (deutéranopie ou protanopie) Distinction rouge/vert altérée

3. Scénarios de test

S1 — Premier lancement (Onboarding)

Prérequis : App fresh install
1. Ouvrir l'application
2. Suivre l'onboarding (prénom, allergies, objectif)
3. Arriver sur le dashboard FIRST_TIME

✅ Succès si : onboarding complété en < 60 secondes
❌ Échec si : confusion sur les étapes, blocage

S2 — Scan d'un produit dangereux (test principal)

Prérequis : Profil configuré avec allergie "Arachides"
Produit : Snickers (contient arachides) — code 5000159461153

1. Depuis le dashboard, tap sur FAB Scanner
2. Scanner le code-barres Snickers
3. Observer le verdict

✅ Succès si : verdict ROUGE identifié en < 2s
❌ Échec si : confusion sur le verdict (ne sait pas si c'est safe ou pas)

S3 — Scan d'un produit safe

Produit : Bouteille d'eau — code 3274080005007

1. Scanner le code-barres
2. Observer le verdict VERT

✅ Succès si : verdict SAFE clairement identifié
❌ Échec si : confusion avec warning

S4 — Saisie manuelle code-barres

Prérequis : Produit non reconnu par le scanner

1. Ouvrir le scanner
2. Tap "Saisir un code-barres"
3. Entrer 3017620422003 (Nutella)
4. Valider

✅ Succès si : résultat affiché (verdict + fiche produit)
❌ Échec si : erreur de format, blocage

S5 — Scan OCR (produit non trouvé)

Prérequis : Code-barres inconnu (ex: 1234567890123)

1. Scanner le code inconnu
2. Tap "Lire les ingrédients"
3. Prendre une photo d'étiquette
4. Vérifier le texte OCR extrait

✅ Succès si : OCR capture ouverte, photo possible
❌ Échec si : app crash, freeze

S6 — Gestion de liste

Prérequis : Au moins 1 produit scanné

1. Aller dans l'onglet Listes
2. Créer une liste "Test courses"
3. Ajouter un produit depuis le verdict
4. Swiper pour cocher/décocher
5. Supprimer un produit (swipe left)

✅ Succès si : toutes les actions fonctionnent
❌ Échec si : swipe bloqué, produit non ajouté

S7 — 10 scans rapides d'affilée

Prérequis : App ouverte

1. Scanner 10 produits différents aussi vite que possible
2. Observer le comportement

✅ Succès si : 0 crash, 0 freeze > 5s
❌ Échec si : crash, ANR, perte de données

S8 — Rotation écran pendant scan

1. Ouvrir le scanner
2. Pivoter le téléphone (paysage → portrait)
3. Scanner un produit
4. Pivoter pendant l'affichage du verdict

✅ Succès si : pas de perte d'état, scan fonctionne après rotation
❌ Échec si : caméra freeze, UI cassée

S9 — Appel entrant pendant le scan

1. Ouvrir le scanner
2. Recevoir un appel (ou simuler avec un second téléphone)
3. Revenir dans l'app après l'appel

✅ Succès si : le scanner se réinitialise et fonctionne
❌ Échec si : caméra bloquée, crash

S10 — Mode sombre

1. Activer le mode sombre (paramètres)
2. Visiter les 4 onglets (Dashboard, Listes, Suivi, Famille)
3. Scanner un produit et vérifier le verdict

✅ Succès si : tout est lisible, contraste OK
❌ Échec si : texte illisible, icônes invisibles

4. Test Accessibilité

A1 — TalkBack

1. Activer TalkBack dans Paramètres Android
2. Naviguer dans tous les onglets
3. Scanner un produit et écouter l'annonce du verdict

✅ Succès si : tous les boutons annoncés, verdict annoncé correctement
❌ Échec si : éléments sans contentDescription, verdict silencieux

A2 — Taille de texte maximale

1. Paramètres → Affichage → Taille police → Maximum
2. Naviguer dans tous les écrans

✅ Succès si : pas de texte coupé, pas de chevauchement
❌ Échec si : boutons hors écran, texte tronqué

5. Grille d'observation

Testeur S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 A1 A2 Notes
#1
#2
#3
#4
#5

Légende : OK | ⚠️ Mineur | Bloquant


6. Produits de test recommandés

Produit Code-barres Allergène connu
Snickers 5000159461153 Arachides, Lait
Nutella 3017620422003 Noisettes, Lait
Bouteille d'eau Cristaline 3274080005007 Aucun
Barre Kinder 8000500310427 Lait, Gluten
Sauce Soja Kikkoman 8715035111108 Soja, Gluten

7. Rapport final

Une fois les tests complétés, remplir :

Métrique Cible Résultat
Temps identification verdict danger < 2s ___
Crashs sur 10 scans 0 ___
Score accessibilité TalkBack 100% ___
Bugs bloquants découverts 0 ___
Satisfaction globale (1-5) ≥ 4 ___