- 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.
5.8 KiB
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 | ___ |