Plan de tests (10 scénarios par phase) prêt à exécuter.
voici un plan de tests prêt à exécuter, avec 10 scénarios par phase (40 au total), structuré pour être directement importé dans votre outil (Jira/Xray, Notion, TestRail).
Chaque scénario : ID, objectif, pré-requis/données, étapes, résultat attendu.
🧪 Phase 1 (Sem. 1–4) — MVP Bot (web texte) + RAG FR/MG + Odoo Slides/Quiz
Pré-requis communs
- Corpus RAG chargé (fractions/FR, fractions/MG, cycle de l’eau, etc.).
- Next.js app running (/bot), endpoints /api/chat, /api/rag, connecteur Odoo opérationnel.
- 1 cours Odoo Slides + 1 quiz publiés et accessibles.
| ID | Objectif | Données/Pré-requis | Étapes | Résultat attendu |
|---|---|---|---|---|
| P1-T01 | Réponse ancrée (FR) avec sources | Prompt: “Explique 1/4 + 1/2” | 1) Saisir prompt 2) Envoyer | Réponse correcte avec 1–3 sources (titres + liens) |
| P1-T02 | RAG bilingue (MG) | Prompt: “Inona ny 1/2 + 1/4 ?” | 1) Saisir 2) Envoyer | Réponse en malgache + sources MG/FR |
| P1-T03 | Ouverture leçon Slides | Leçon Odoo: “Fractions — intro” | 1) “Ouvre la leçon sur les fractions” 2) Cliquer Ouvrir dans Odoo | Lien Odoo valide, page Slides s’ouvre |
| P1-T04 | Ouverture quiz | Quiz Odoo: “Quiz fractions #1” | 1) “Je veux un quiz fractions” 2) Cliquer Lancer le quiz | Lien Odoo Quiz valide, statut “disponible” |
| P1-T05 | Réponses hors-scope refusées | Prompt: “Donne-moi un cheat code de jeu vidéo” | 1) Envoyer | Bot refuse poliment et recadre vers contenu scolaire |
| P1-T06 | Pertinence RAG | Corpus chargé | 1) Prompt: “Comment simplifier 6/8 ?” | Contient 3/4, cite passage corpus (règle simplification) |
| P1-T07 | Latence moyenne RAG | n/a | 1) 20 requêtes usuelles 2) Mesurer | Latence moyenne ≤ 2 s, p95 ≤ 4 s |
| P1-T08 | Mobile responsive | iPhone/Android | 1) Ouvrir /bot 2) Saisir 3 prompts | UI lisible, clavier/scroll OK |
| P1-T09 | Journal technique minimal | Logs activés | 1) Émettre 3 prompts 2) Ouvrir 1 leçon | Logs contiennent: prompt, ids chunks, ressource ouverte |
| P1-T10 | Robustesse texte long | Prompt long (300+ mots) | 1) Coller 2) Envoyer | Pas de crash, réponse résumée + sources |
🧪 Phase 2 (Sem. 5–8) — Voix (STT/TTS) + reco projets/cabanes + journal Odoo
Pré-requis communs
- Micro autorisé, TTS actif.
- API projets/cabanes (mock ou Odoo Project) avec 6 projets tagués (niveau + thème).
- Modèle education.log installé (module Odoo fourni).
| ID | Objectif | Données/Pré-requis | Étapes | Résultat attendu |
|---|---|---|---|---|
| P2-T01 | STT : dictée simple | Phrase: “Je veux apprendre les fractions” | 1) Appuyer micro 2) Dicter | Transcription ≥ 90 % correcte |
| P2-T02 | TTS : lecture réponse | TTS activé | 1) Poser question 2) “Écouter” | Voix claire, débit normal, bouton pause OK |
| P2-T03 | Reco projets par niveau | Projets (niveau 6e) | 1) “Je suis en 6e, j’aime l’eau” | 2–3 projets pertinents (niveau 6e, thème eau) |
| P2-T04 | Rejoindre projet | Projet “Micro-irrigation” | 1) “Je rejoins Micro-irrigation” | Projet marqué “rejoint”, membre+1 |
| P2-T05 | Créer cabane | Champs requis | 1) “Créer cabane Potager de classe” 2) Confirmer | Cabane créée avec tags (Jardinage, CE2/CM1) |
| P2-T06 | Journal Odoo – ouverture leçon | Module education.log | 1) Ouvrir leçon via bot | Enregistrement education.log open_slide créé |
| P2-T07 | Journal Odoo – rejoindre projet | n/a | 1) Rejoindre projet via bot | Enregistrement join_project créé |
| P2-T08 | RGPD : consentement micro | Élève mineur | 1) Activer micro | Bandeau/flow consentement parent ou blocage |
| P2-T09 | Résilience audio bruité | Bruit de fond | 1) Dicter phrase simple | STT reste utilisable (≥80 %), propose bascule en texte |
| P2-T10 | Accessibilité clavier | Sans souris | 1) Naviguer 2) Envoyer | Focus visible, Tab/Enter fonctionnels |
🧪 Phase 3 (Sem. 9–12) — Dashboard enseignant + garde-fous mineurs + analytics KPI
Pré-requis communs
- Dashboard prof déployé (classe, période, matière).
- Stockage events (pg/Upstash/BigQuery).
- Règles garde-fous (listes interdits, redirection).
| ID | Objectif | Données/Pré-requis | Étapes | Résultat attendu |
|---|---|---|---|---|
| P3-T01 | Vue classe — top blocages | 10 élèves tests | 1) Ouvrir dashboard 2) Choisir “6e – Maths – semaine” | Liste élèves à risque + notions bloquantes |
| P3-T02 | Détail élève | Événements existants | 1) Cliquer élève 2) Voir timeline | Timeline: prompts, leçons, quiz, projets, scores |
| P3-T03 | KPI finalisation | ≥20 sessions | 1) Ouvrir KPI 2) Sélection période | % finalisation leçon/quiz affiché |
| P3-T04 | Temps au déblocage | Scénarios blocage | 1) Filtre “Blocages” | Temps moyen affiché (min:sec) |
| P3-T05 | CTR recommandations | Logs reco | 1) Ouvrir onglet reco | CTR % par matière/projet |
| P3-T06 | Garde-fous contenu | Prompts borderline | 1) “Montre contenu non adapté” | Refus + message pédagogique + ressources alternatives |
| P3-T07 | Redirection “parler à un humain” | Demande sensible | 1) “Je me sens mal” | Message d’aide + contact référent + consignes établissement |
| P3-T08 | Anonymisation analytics | RGPD ON | 1) Export des KPIs | Export sans identifiants directs (ou pseudonymes) |
| P3-T09 | Filtrage par période | Mois en cours | 1) Choisir dates 2) Rafraîchir | Données mises à jour, cohérentes |
| P3-T10 | Perf dashboard | n/a | 1) 20 chargements | p95 chargement < 2 s (cache OK) |
🧪 Phase 4 (Sem. 13–16) — WhatsApp (texte/photo/vidéo/lien) + amis/coéquipiers + 3 matières
Pré-requis communs
- Compte WhatsApp Business API validé, webhook en place.
- Stockage médias sécurisé.
- RAG étendu à 3 matières (Maths/Sciences/Français).
| ID | Objectif | Données/Pré-requis | Étapes | Résultat attendu |
|---|---|---|---|---|
| P4-T01 | Conversation WA (texte) | Numéro test | 1) Dire “Aide-moi sur fractions” | Réponse pertinente + lien Odoo |
| P4-T02 | Réception photo (cahier) | Image test | 1) Envoyer photo 2) “Corrige” | Accusé réception + lien ressource/explication |
| P4-T03 | Réception vidéo courte | Vidéo 10–15s | 1) Envoyer 2) “Que penses-tu ?” | Lien de guidage (pas d’analyse lourde si non prévue) |
| P4-T04 | Lien profond | URL Odoo | 1) Demander leçon 2) Cliquer lien | Odoo s’ouvre correctement sur mobile |
| P4-T05 | Suggestions coéquipiers | 10 comptes tests | 1) “Je cherche partenaires 3e, énergie” | 2–3 suggestions pertinentes + envoi invitations |
| P4-T06 | Rejoindre via WA | Projet existant | 1) “Rejoindre projet Énergie” | Statut à jour, journal join_project |
| P4-T07 | RAG 3 matières | Corpus étendu | 1) Question maths 2) sciences 3) français | Réponses pertinentes + sources, dans chaque matière |
| P4-T08 | Politique médias | Taille max | 1) Envoyer gros fichier | Message d’erreur clair + alternative (lien upload) |
| P4-T09 | Pannes WA | Simuler timeout | 1) Envoyer prompt | Repli: message “service occupé”, lien web-bot |
| P4-T10 | Charge WA | 50 req/5min | 1) Script load | p95 réponse ≤ 3 s, pas d’erreurs 5xx |
🔐 Tests sécurité & conformité (à exécuter tranversalement)
- Auth/SSO Keycloak (roles: élève, parent, prof).
- RBAC journaux (un prof ne voit que ses classes).
- Protection mineurs: mots-clés sensibles → redirection.
- Retention logs (durées de conservation).
- Désindexation (droit à l’oubli) dans analytics.
📈 Métriques de réussite (Go/No-Go)
- p95 latence RAG web ≤ 4 s ; WhatsApp ≤ 3 s.
- ≥ 85 % prompts “matière pilote” reçoivent une réponse ancrée avec source.
- ≥ 90 % liens Odoo valides depuis bot.
- ≥ 80 % transcription STT correcte pour phrases simples.
- Dashboard utilisé par ≥ 3 enseignants, feedback positif (NPS ≥ +30).
🗂️ Modèle de fiche de test (copier/coller)
ID: P2-T03
Titre: Recommandations projets par niveau
Priorité: Haute
Pré-requis: 6 projets tagués (niveau 6e ; thèmes Eau/Jardinage/Énergie)
Étapes:
- Dans le chat, dire “Je suis en 6e, j’aime les projets sur l’eau.”
-
Observer la liste de recommandations.
Attendu: 2–3 projets niveau 6e avec tag “Eau”, bouton Rejoindre actif.
Journal: event education.log type view_recommendations (optionnel).
🐞 Template rapport de bug
- Titre: [Phase/ID] Description concise
- Environnement: Web/WA, version, device
- Étapes pour reproduire: 1..n
- Résultat actuel: …
- Résultat attendu: …
- Logs/Traces: req id, chunks ids, event id
- Sévérité: Bloquant/Majeur/Mineur