Fiche de cours

Tester un programme

Lycée   >   Premiere   >   NSI   >   Tester un programme

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectif

Mettre en place des procédures de tests pour tester un programme.

Point clé

Pour vérifier si un programme fonctionne correctement, on doit insérer des procédures de tests : soit à l'intérieur de celui-ci, soit à la toute fin en vérifiant sur un jeu de test si celui-ci fournit les résultats escomptés.

Pour bien comprendre
  • Préconditions et postconditions
  • Prototypage d’une fonction
1. L'intérêt d'un jeu de test

Un programme peut générer des erreurs, même avec une documentation complète, des postconditions et des préconditions détaillées.

L’idée est donc d’effectuer des tests unitaires, c’est-à-dire de tester le programme fonction par fonction.

Un test unitaire est une procédure qui permet de vérifier qu’une portion précise d’un programme fonctionne correctement.

Un test unitaire est constitué de ce qu’on appelle un jeu de test qui consiste à vérifier sur des exemples que le résultat est bien celui attendu.

Il faudra donc réfléchir aux éventuels cas particuliers pour pouvoir tester au mieux le programme.

Attention
Ce n’est pas parce qu’un jeu de test est réussi que le programme sera correct.
2. Implémenter un jeu de test simple

Pour être plus efficace, il vaut mieux implémenter (insérer) le jeu de test dans le même fichier que le programme à tester.

Le programme ou les fonctions qui sont ici créés sont dans un fichier python, on appelle cela un module. On qualifie le module de principal lorsqu’on travaille avec celui-ci : un module peut en effet appeler un autre module, par exemple une fonction présente dans un module principal peut faire appel à une fonction présente dans un autre module.

On tape if __name__=='__main__': à la fin du programme, suivi de la liste des tests.

  • La variable __name__ varie selon l’endroit où l’on se trouve durant l'exécution du programme.
  • Dans le module principal, sa valeur sera égale à __main__.
Remarque
Le symbole __ est obtenu en appuyant deux fois sur tiret bas.
Exemple

Voici l’explication ligne à ligne de ce programme.

def euclid(a,b): Prototypage du nom de la fonction
"""calcul du pgcd par l’algorithme d’Euclide Commentaire qui explique le rôle de la fonction
retourne un nombre entier : le pgcd Postcondition
a et b entiers positifs avec a non nul""" Précondition
assert a>0 "a doit être strictement positif" Test de la précondition "a strictement positif"
while b!=0 Boucle tant que
if a>b Structure conditionnelle Si
a=a-b  
else: Structure conditionnelle Sinon
b=b-a  
return a La fonction retourne la valeur de a.
if __name__=='__main__': Si
assert euclid(7,0)==7 Vérification que euclid(7,0) vaut 7
assert euclid(15,5)==5 Vérification que euclid(15,5) vaut 5
assert euclid(10,100)==10 Vérification que euclid(10,100) vaut 10
À l’exécution, rien ne se passe car les tests sont vérifiés.
On change la ligne 16 en assert euclid(10,100)==0, ce qui ne sera pas vérifié puisque le PGCD de 10 et de 100 vaut 10.

On aura alors le message d’erreur suivant.
Les messages d’erreurs affichés par Python se lisent de bas en haut. C’est en effet la dernière ligne qui indique le type d’erreur, les autres lignes indiquent seulement tous les appels qui ont provoqué celle-ci.
3. Implémenter un jeu de test dans la documentation

On peut implémenter (insérer) un jeu de test dans la documentation de la fonction, ce qui nécessite d’importer un module permettant de faire des tests : le module doctest.

Méthode
  1. Il faut taper : from doctest import *.
  2. Dans la documentation, chaque test sera précédé de 3 chevrons >>> suivi d’une espace puis du nom de la fonction avec les paramètres à tester et la valeur attendue à la ligne.
Exemple avec la fonction distance
Voici l’explication ligne à ligne de ce programme.
from math import * On importe tous les outils de la bibliothèque math pour effectuer les calculs mathématiques.
from doctest import * On importe tous les outils de test de la bibliothèque doctest.
def distance(x1,y1,x2,y2): Prototypage du nom de la fonction
"""calcule la distance euclidienne Commentaire qui indique ce que fait la fonction
retourne un nombre positif ou nul Postcondition
x1,y1,x2,y2 sont des nombres flottants Précondition
>>> distance(0,0,0,0) Test 1 à effectuer lorsque cela sera demandé
0.0  
>>> distance(0,0,0,1) Test 2 a effectuer lorsque cela sera demandé
1.0"""  
return sqrt((x2-x1)**2 + (y2-y1)**2)  
if __name__=='__main__': Ces lignes permettent de lancer le premier test : a-t-on distance(0,0,0,0) égal à 0 et distance(0,0,0,1) égal à 1 si on lance la fonction dans le fichier où elle a été écrite ?
testmod()

Évalue ce cours !

 

Des quiz et exercices pour mieux assimiler sa leçon

La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.

S’abonner

 

Des exercices variés pour ne pas s’ennuyer

Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !

Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.

S’abonner

 

Des quiz pour une évaluation en direct

Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.

myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.

S’abonner

Des vidéos et des podcasts pour apprendre différemment

Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.

Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !

S’abonner

 

Des podcasts pour les révisions

La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.

Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.

S’abonner

 

Des vidéos de cours pour comprendre en image

Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !

S’abonner

Découvrez le soutien scolaire en ligne avec myMaxicours

Plongez dans l'univers de myMaxicours et découvrez une approche innovante du soutien scolaire en ligne, conçue pour captiver et éduquer les élèves de CP à la terminale. Notre plateforme se distingue par une riche sélection de contenus interactifs et ludiques, élaborés pour stimuler la concentration et la motivation à travers des parcours d'apprentissage adaptés à chaque tranche d'âge. Chez myMaxicours, nous croyons en une éducation où chaque élève trouve sa place, progresse à son rythme et développe sa confiance en soi dans un environnement bienveillant.

Profitez d'un accès direct à nos Profs en ligne pour une assistance personnalisée, ou explorez nos exercices et corrigés pour renforcer vos connaissances. Notre assistance scolaire en ligne est conçue pour vous accompagner à chaque étape de votre parcours éducatif, tandis que nos vidéos et fiches de cours offrent des explications claires et concises sur une multitude de sujets. Avec myMaxicours, avancez sereinement sur le chemin de la réussite scolaire, armé des meilleurs outils et du soutien de professionnels dédiés à votre épanouissement académique.

Fiches de cours les plus recherchées

NSI

Prototyper une fonction

NSI

S'informer sur une bibliothèque Python

NSI

Utiliser la bibliothèque Matplotlib de Python pour créer un graphique

NSI

Algorithmes de recherche : parcourir un tableau

NSI

Algorithmes de recherche : rechercher un extremum

NSI

Algorithmes de recherche : obtenir une moyenne, une médiane

NSI

Trier par insertion

NSI

Trier par sélection

NSI

Utiliser les invariants pour corriger un algorithme

NSI

Comprendre et utiliser l'algorithme des k plus proches voisins