Introduction aux Tests et au Test First PDF

Document Details

StaunchRutherfordium8359

Uploaded by StaunchRutherfordium8359

HEH Campus Pédagogique Mons

Erwin Desmet

Tags

software development testing Test First programming

Summary

This document provides an introduction to the Test First method in software development. It covers the importance of tests, the method itself, and its advantages for writing maintainable and robust code. The document also explains what unit testing is and how to create and use unit tests in Python.

Full Transcript

INTRODUCTION AUX TESTS ET AU TEST FIRST erwin desmet INTRODUCTION AUX TESTSETAU TESTFIRST Comprendre l’importance des tests en développement logiciel Découvrir la méthode Test First et son fonctionnement. IMPORTANCE DESTESTS 1 2...

INTRODUCTION AUX TESTS ET AU TEST FIRST erwin desmet INTRODUCTION AUX TESTSETAU TESTFIRST Comprendre l’importance des tests en développement logiciel Découvrir la méthode Test First et son fonctionnement. IMPORTANCE DESTESTS 1 2 3 Rôle crucial des tests Validation des fonctionnalités Prévention des erreurs avant livraison Les tests sont essentiels en développement Un bon test permet de valider une Les tests aident à identifier les problèmes avant pour garantir que le code fonctionne comme fonctionnalité spécifique et de détecter des que le logiciel ne soit livré aux utilisateurs. prévu. erreurs ou des comportements inattendus. 4 5 Facilitation des modifications Assurance de non-régression Les tests rendent le processus de modification Ils s'assurent qu'aucune régression n'a été et d'amélioration du code plus fluide. introduite lors des modifications. MÉTHODE TESTFIRST Approche TDD Écrivez un test Exécutez le test Écrivez le code Vérifiez que le test Refactorisez le code passe Définissez un test qui Le test échouera puisque Implémentez le code Si nécessaire, améliorez ou décrit ce que le code la fonction testée n'est pas minimal nécessaire pour Exécutez de nouveau le réorganisez le code tout devrait faire, même si le encore implémentée. Ce que le test passe. L’objectif test pour vous assurer que en gardant le test valide. code n'existe pas encore. résultat est attendu, car le est de se concentrer la fonction remplit Ce test servira de but est d’écrire le code uniquement sur ce qui est correctement son rôle. référence pour le pour faire passer ce test. requis pour réussir le test, comportement attendu de rien de plus. votre fonction ou classe. AVANTAGES DELA MÉTHODE TESTFIRST 1 Prévention des erreurs 2 Code maintenable et 3 Confiance accrue en 4 Documentation du code dès le départ. bien structuré. chaque modification. par les tests. Cette méthode permet d'identifier L'approche Test First favorise une En assurant que les tests passent, Les tests servent également de et de corriger les erreurs au début écriture de code qui est plus facile on garantit que le comportement documentation, facilitant la du processus de développement. à maintenir et à comprendre. du code respecte les attentes. compréhension du fonctionnement du code. QU'EST-CEQU’UN TESTUNITAIRE ? Définition du Test Unitaire Un test unitaire est un test qui vérifie qu’une unité spécifique de code fonctionne correctement. 1 1 Focus du Test Unitaire Nature d'une Unité Le test unitaire se concentre sur En général, une unité est une un seul comportement petite partie d'un programme, ou une seule 3 2 comme une fonction ou une fonctionnalité à la fois. méthode d’une classe. EXEMPLE DE Imaginez une fonction qui calcule la somme de deux nombres. Un test COMPORTEMENT À unitaire vérifierait si cette fonction retourne bien le bon résultat pour diverses paires de nombres. TESTER 1 2 3 UTILITÉ DESTESTS Détection des Documentation Validation du erreurs lors de du UNITAIRES comportement modifications comportement des fonctions attendu du code Lorsqu'on Les tests unitaires modifie le code, Chaque test permettent de les tests unitaires illustre comment s'assurer que les révèlent une fonction doit fonctions se immédiatement réagir selon comportent les erreurs différents cas comme prévu. introduites. d’utilisation. Utilisation du mot-clé assert Le mot-clé assert en Python est utilisé pour vérifier qu'une condition est ÉCRITURE DETESTSEN vraie. PYTHON Vérification de conditions Si l'expression après assert est fausse, Python arrête le programme et affiche une erreur. EXEMPLE D'UTILISATION DE ASSERT Premier assert La condition 3 + 2 == 5 est vraie, donc rien ne se passe et le programme continue. Deuxième assert La condition 3 + 2 == 6 est fausse, donc Python arrête le programme et affiche une erreur. AJOUT DE MESSAGES Vous pouvez également ajouter un message d'erreur D'ERREUR personnalisé après le assert pour mieux comprendre pourquoi le test a échoué. PERSONNALISÉS INTRODUCTION AU TDD Premiers pas dans TDDApprendre le cycle TDDRouge-Vert- Refactoriser avec une fonction d’addition. ÉCRITURE D'UN TESTEN MODE ROUGE 1 Création du fichier de test Créer un fichier nommé tests.py pour y définir les tests. 2 Définition de la fonction de test Dans tests.py, définir une fonction test_addition() pour tester la fonction addition. 3 Test en mode Rouge Exécuter le test en mode Rouge, signifiant que la fonction addition n'existe pas encore. IMPLÉMENTATION DE LA FONCTION EN MODE VERT Écrire la fonction pour passer le test (mode Vert) :Dans un autre fichier fonctions.py, implémenter la fonction addition. VÉRIFICATION DU TEST Exécuter le test et vérifier qu'il passe : REFACTORISATION Améliorer le code sans changer sa fonctionnalité Refactoriser si DU CODE nécessaire pour améliorer le code sans changer sa fonctionnalité. EXEMPLE COMPLET : TESTFIRST AVEC UNE FONCTION DE MULTIPLICATION Objectifs de la section :Utiliser assert pour écrire des tests sans classes. Écrire les tests avant la fonction en suivant la méthode Test First. ÉTAPE 1 : ÉCRIRE LES TESTSDE MULTIPLICATION Nous allons suivre la méthode Test First en créant une fonction multiplier qui multiplie deux nombres. Nous allons :Écrire les tests d’abord. EXPLICATIONS DESTESTSDEMULTIPLICATION Vérification des résultats Chaque assert vérifie que multiplier retourne le bon résultat. Message d'erreur Si la fonction multiplier n'existe pas encore, un message est affiché. Cas couverts Nous avons couvert plusieurs cas :deux nombres positifs, un nombre et zéro, et un nombre positif et un nombre négatif. Échec des tests Ces tests vont échouer avec une erreur NameError, ce qui est normal. ÉTAPE 2 : ÉCRIRE LA Maintenant, nous allons écrire le code minimal pour que les tests passent. Maintenant, nous allons écrire le code FONCTION MULTIPLIER minimal pour que les tests passent. ÉTAPE3 : RELANCER LESTESTSDE MULTIPLICATION Maintenant que la fonction est écrite, relançons les tests pour voir s'ils passent Maintenant que la fonction est écrite, relançons les tests pour voir s'ils passent : CRÉATION DECASDE TESTSVARIÉS Identifier différents types de cas de tests L’objectif est d’identifier différents types de cas de tests pour couvrir tous les scénarios possibles. CASDETESTSPOSITIFS Vérifier que la fonction retourne le bon résultat dans des situations normales.Exemple :assert addition(4, 5) == 9. CASDETESTSPOUR VALEURS LIMITES Vérifier le comportement aux limites, comme addition(0, 0) ou addition(-1000, 1000). Tester les situations d'échec de la fonction Tester les situations où la fonction pourrait échouer (ex :division par zéro). Exemple avec try et except pour capturer une erreur CAS D'ERREURS : ORGANISATION DES TESTS ET Structurer le projet pour faciliter les tests L’objectif est de structurer le BONNES projet de manière optimale pour faciliter les tests. PRATIQUES SÉPARER LE CODE ET LES TESTS Il est important de maintenir une séparation claire entre le code et les tests en les plaçant dans des dossiers différents. EXEMPLE DE STRUCTURE DE PROJET Voici un exemple de la structure de dossier recommandée pour un projet : projet/ ├── fonctions.py ├── tests/ │ ├── test_addition.py │ ├── test_division.py BONNES PRATIQUES DETEST Utiliser des noms de fonctions Garder chaque test court et simple clairs Les tests doivent être concis et faciles à Il est recommandé d'utiliser des noms de comprendre pour assurer leur efficacité. fonctions explicites comme test_addition et test_division_zero pour une meilleure lisibilité. EXERCICEPRATIQUE : TESTFIRST POUR UNE FONCTION DECALCUL D’INTÉRÊTS Test First pour une Fonction de Calcul d’Intérêts Pour pratiquer, vous allez suivre la méthode Test First avec une fonction calculer_interet qui calcule les intérêts pour un capital donné et un taux annuel. ÉTAPE 1 : ÉCRIRE LES TESTS POUR CALCULER LES INTÉRÊTS Définir les tests pour vérifier que la fonction calculer_interet retourne bien les intérêts corrects. ÉCRITURE DE LA FONCTION CALCULER INTÉRÊTS Écrire la fonction calculer_interet : RELANCER LESTESTSDE CALCUL D’INTÉRÊTS Vérification du bon fonctionnement Relancer les tests pour vérifier que tout fonctionne. LESTESTSAVEC UNITTEST Comprendre l'importance de unittest L’objectif est de comprendre pourquoi utiliser unittest et comment il facilite l'écriture de tests unitaires. Bibliothèque standard de Python unittest est une bibliothèque standard de Python, ce qui signifie qu'elle est directement disponible sans installation supplémentaire. POURQUOI UTILISER Structure claire UNITTEST ? Elle propose une structure claire pour écrire et organiser des tests. Outils puissants unittest inclut des outils puissants pour exécuter des tests. CRÉATION D'UNE CLASSEDE TESTSAVEC UNITTEST Objectif :Apprendre à définir une classe de tests et comprendre son fonctionnement. Apprendre à définir une classe de tests et comprendre son fonctionnement. DÉFINIR UNE CLASSE DE TESTS Une classe de tests hérite de unittest.TestCase, ce qui donne accès aux outils et méthodes de unittest. Exemple de structure de base : CYCLEDEVIE DESTESTSAVEC UNITTEST setUp() 1 Exécutée avant chaque méthode de test, utile pour initialiser des variables ou des états. tearDown() 2 Exécutée après chaque méthode de test, souvent utilisée pour libérer des ressources. ÉCRITUREDES ASSERTIONS AVEC UNITTEST Apprendre à utiliser les assertions pour vérifier les comportements attendus. Objectif : Apprendre à utiliser les assertions pour vérifier les comportements attendus. MÉTHODES D'ASSERTION PRINCIPALES 1 assertEqual(a, b) 2 assertNotEqual(a, 3 assertTrue(x) 4 assertFalse(x) 5 assertRaises(Excep b) fonction, *args) Vérifie que a est Vérifie que x est Vérifie que x est égal à b. Vérifie que a vrai. faux. Vérifie que la n'est pas égal à fonction lève b. une exception. ORGANISATION DESTESTSAVEC PLUSIEURS MÉTHODES Il est recommandé d'utiliser une méthode de test pour chaque cas de test spécifique. Exemple avec plusieurs méthodes de test pour une fonction soustraction : UTILISATION DESETUPPOUR INITIALISER DESVARIABLES setUp permet de préparer des valeurs communes à tous les tests. EXEMPLE PRATIQUE COMPLET Objectif :Consolider les connaissances avec un exemple réaliste. Scénario :Tester plusieurs fonctions d'opérations mathématiques (addition, soustraction, multiplication). AVEC UNITTEST CODE DES FONCTIONS POUR L'EXEMPLE PRATIQUE Code des fonctions : CLASSE DE TESTS COMPLÈTE EXÉCUTION DU TEST AVEC UNITTEST En exécutant ce script, unittest va chercher toutes les méthodes commençant par test_ et exécuter chaque test, en indiquant si le test passe ou échoue. EXERCICESPRATIQUES ETSOLUTIONS Appliquer les concepts avec des exercices de tests unitaires Objectif :Appliquer les concepts avec des exercices de tests unitaires. Création de la fonction division 1 Écrire une fonction division(a, b) qui retourne le résultat de a /b. EXERCICE 1 : ÉCRIRE UNE FONCTION 2 Test de fonctionnement Écrire un test pour vérifier le bon fonctionnement de la fonction division. DIVISION Mise en œuvre et tests Gestion de l'erreur 3 Ajouter un test pour s'assurer que la fonction lève une exception ZeroDivisionError lorsque b est zéro. CORRECTION DE LA FONCTION DE DIVISION Fonction de division : CLASSEDETESTSPOUR DIVISION Classe de tests pour division :

Use Quizgecko on...
Browser
Browser