# C4-S10 — Tests et validation

import { AssessmentGrid } from "../../src/components/AssessmentGrid";
import { DownloadCard } from "../../src/components/DownloadCard";
import { ExerciseCard } from "../../src/components/ExerciseCard";
import { LearningObjectives } from "../../src/components/LearningObjectives";
import { LessonHeader } from "../../src/components/LessonHeader";
import { LessonNavigation } from "../../src/components/LessonNavigation";
import { TeacherTip } from "../../src/components/TeacherTip";

<LessonHeader
  id="C4-S10"
  title="Plan de tests, cas limites et validation logicielle"
  cycle="4"
  levels="5e, 4e, 3e"
  duration="55 minutes"
  tool="Scratch"
  grouping="Binômes"
  expressPrep={{
    objective: "Rédiger et exécuter une matrice de tests complète pour valider la robustesse d'un projet.",
    material: "Cahier de plan de tests + projet partenaire à auditer.",
    trap: "Ne tester que le cas idéal sans tester les cas limites (score négatif, bord d'écran).",
    timing: "15' Matrice de recette • 25' Audit croisé • 15' Restitution",
  }}
  pdfUrl="/downloads/c4-s10-cahier-plan-de-tests-v1.pdf"
/>

<LearningObjectives
  objectives={[
    "Rédiger un plan de tests structuré comportant cas nominaux, cas limites (Edge Cases) et entrées erronées.",
    "Mener une campagne de tests croisés sur le projet d'un autre binôme (recette logicielle).",
    "Tracer un rapport de bugs documenté et reproductible.",
  ]}
/>

---

## 🎒 La matrice des 4 types de tests

| Type de test                   | Objectif                                                     | Exemple                                                                    |
| ------------------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------------- |
| **1. Cas nominal (Normal)**    | Vérifier que le programme marche dans les conditions idéales | Le joueur avance, touche 1 pièce → Score passe à 1                         |
| **2. Cas limite (Aux bornes)** | Tester les extrêmes de l'espace ou des valeurs               | Toucher la pièce exactement sur la coordonnée X = 240 ou quand `temps = 0` |
| **3. Entrée erronée (Stress)** | Vérifier la résistance aux mauvaises saisies                 | Taper des lettres quand on demande un nombre                               |
| **4. Non-régression**          | Vérifier qu'une correction n'a pas cassé le reste            | Après correction du tir, le saut fonctionne-t-il toujours ?                |

---

## ⏱️ Déroulé de la séance

### 1. Théorie du test logiciel (15 min)

Dans l'industrie numérique, jusqu'à 50% du temps des équipes de développement est consacré à la conception et à l'exécution de tests.

### 2. Atelier de test croisé (30 min)

<ExerciseCard title="Mission : L'audit qualité du projet partenaire" difficulty="Moyen">
  Changer de place avec le binôme voisin et tester son jeu en appliquant la grille : 1. Tester la
  victoire (atteindre le score maximal). 2. Tester la défaite (laisser le temps s'écouler). 3.
  Tenter de faire sortir le joueur de l'écran ou de bloquer les commandes. 4. Rédiger le rapport
  d'audit avec les 3 dysfonctionnements trouvés.
</ExerciseCard>

### 3. Restitution & Débriefing constructif (10 min)

Chaque équipe reçoit le rapport de bugs rédigé par ses pairs et planifie les correctifs à apporter.

<TeacherTip title="Postures d'évaluation bienveillante">
  Sensibilisez les élèves à la formulation constructive : un testeur ne cherche pas à « critiquer »
  mais à aider son partenaire à rendre son logiciel plus robuste.
</TeacherTip>

---

## 📊 Grille d'évaluation

<AssessmentGrid
  criteria={[
    {
      label: "Rédige et exécute un plan de tests complet",
      withHelp: "Teste le jeu en jouant sans méthode",
      autonomous: "Suit une grille méthodique couvrant tous les cas limites",
      transfer: "Rédige des scénarios de test automatisables",
    },
    {
      label: "Documente les anomalies de façon reproductible",
      withHelp: "Dit simplement *« Ça ne marche pas »*",
      autonomous: "Décrit les étapes exactes permettant de reproduire le bug",
      transfer: "Suggère la ligne de code probable à l'origine du problème",
    },
  ]}
/>

---

## 📥 Téléchargements

<DownloadCard
  title="Cahier de plan de tests et recette logicielle (C4-S10)"
  filename="c4-s10-cahier-plan-de-tests-v1.pdf"
  format="pdf"
  size="1.2 KB"
  version="1.0"
  license="CC-BY-SA 4.0"
  href="/downloads/c4-s10-cahier-plan-de-tests-v1.pdf"
/>


<LessonNavigation
  prevUrl="/cycle-4/c4-s09-simulation-et-aleatoire"
  prevId="C4-S09"
  prevTitle="Modélisation et simulation"
  nextUrl="/cycle-4/c4-s11-conception-collaborative"
  nextId="C4-S11"
  nextTitle="Conception collaborative"
  cycleUrl="/cycle-4"
  cycleTitle="Vue d'ensemble du Cycle 4"
/>
