Spécification et tests : fiche de révision de Première NSI
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
Une spécification est l'ensemble des exigences que doit satisfaire un produit, donc ici une fonction : elle dit quoi faire, pas comment.4
Un test confronte la réalisation à sa spécification : à une entrée donnée correspond un résultat attendu, et le test dit s'il y a succès ou échec.5
Un test unitaire vérifie une partie précise d'un programme, appelée unité ou module, séparément du reste.5
Bonne pratique : écrire les tests d'après la spécification, avant le code, pour ne pas être influencé par lui.5
Un jeu de test réussi ne prouve pas que le programme est juste partout : il faut choisir des cas variés, dont les cas limites.
La spécification : dire ce que la fonction doit faire
Les tests : confronter le code à la spécification
Pièges et limites
Comment ça se présente en épreuve
Les ressources officielles indiquent que le sujet peut fournir un jeu de test avec les réponses attendues.2 Elles évoquent aussi un programme « à trous » à compléter pour répondre à une spécification donnée.2 Dans les deux cas, ton réflexe est le même : relire la spécification, puis vérifier ton code sur les exemples fournis et sur quelques cas que tu ajoutes toi-même.
Questions flash
4 questions · correction immédiate · ton score reste sur ton appareil.
La spécification rassemble les exigences à satisfaire, donc les entrées, la sortie et les conditions.4 Elle ne dicte pas le code : décrire des instructions ligne par ligne, c'est décrire une méthode, ce qui est l'erreur la plus tentante.
Un test unitaire vérifie le bon fonctionnement d'une unité ou d'un module précis.5 La dernière réponse est tentante mais fausse : un test ne couvre que les cas choisis, il ne démontre pas la justesse générale.
Faux. Les tests ne vérifient que les cas écrits. Un cas limite oublié, comme une liste d'un seul élément ou des nombres négatifs, peut cacher une erreur que le jeu de test ne révèle pas.
Un test doit correspondre à la spécification, d'où l'intérêt de l'écrire avant le code, pour ne pas être influencé par celui-ci.5 Écrire les tests après le code expose justement à ce biais : on teste ce que le code fait, non ce qu'il devait faire.
Les questions qu'on se pose
Pourquoi calculer le résultat attendu à la main plutôt que de lancer ma fonction ?
Parce qu'un test confronte le code à la spécification.5 Si tu relèves la valeur attendue dans la sortie de ton propre code, tu compares le code à lui-même : le test réussit toujours, même si le code est faux. Le résultat attendu vient donc de la spécification, calculé à la main.
Combien de tests faut-il écrire ?
Il n'y a pas de nombre magique. Vise des cas différents plutôt que nombreux : un cas ordinaire, les cas limites (un seul élément, valeurs négatives, valeurs égales) et, si la spécification le prévoit, un cas particulier. Dix tests identiques n'apportent pas plus qu'un seul.
Quelle différence entre spécification et test ?
La spécification dit ce que la fonction doit faire, en général. Un test en est une vérification sur un cas précis : une entrée, et le résultat que la spécification impose pour elle.5 Plusieurs tests bien choisis permettent de contrôler que la spécification est respectée.