PROGRAMME
Jour 1
CONNEXION• Tour de table
- Présentation des participants
- Brainstorming : les pratiques de développement utilisées en entreprise
- Les pièges à éviter lorsque l’on programme
PERCEPTION DU TDD• Mythes du TDD
• Réalité du TDD
• Exercices pratiques
- Tester unitairement produit
- Concevoir un produit via les tests unitaires
GESTION DES EXCEPTIONS - REFACTORING DÉFINIR UN TEST• En génie logiciel
• En TDD
• Exercice pratique : compréhension d’un code de tests
DÉFINIR LE TEST DRIVEN DEVELOPMENT• Mettre en évidence l’intention
• Réfléchir avant chaque ligne de code
• Bénéfice de la couverture de tests
FEEDBACK ET AGILITÉ• Notions de base
• Exercice pratique : identifier tous les feedbacks que peut utiliser un développeur
• Brève histoire du feedback entre le développeur et son code
• Importance du feedback
• Le coût croissant de correction des défauts
• Information vs feedback
• Exercice pratique : échanges sur des situations analogues où le soin porté à l’outil favorise la vitesse de production
TDD ET GÉNIE LOGICIEL• Renversement du modèle industriel classique
• Comparaison des modèles industriel et artisanal
• Pratiques autour de la sphère TDD
• Points d’attention
• Obstacles à l’adoption de TDD
BASES DE TDD : DÉVELOPPEMENT D’UNE APPLICATION SIMPLE• Présentation générale
• Exercice pratique : conception par carte responsabilités / collaboration
• Pattern TDD : test list
• Exercice pratique : lister les tests d’une des classes du projet
• Le cycle de TDD
• Des règles simples
• Pattern : Assert First
• Exercice pratique : mettre en route son environnement et écrire un premier test
TROIS PATTERNS CARACTÉRISTIQUES DE TDD• Pattern TDD : “Fake it ‘til you make it”
• Pattern TDD : « Triangulate »
• Pattern TDD : « Obvious Implementation »
• Exercice pratique : manipuler ces 3 patterns sur une fonction simple
• Pattern TDD : « Données de test »
• Pattern TDD : « Tests isolés »
• Exercice pratique : développement d’une classe simple (conteneur)
• Exercice pratique : développement d’une classe dotée de logique (règles métier)
• Exercice pratique : développement d’une collaboration entre 2 classes (application)
CLÔTURE DU JOUR 1Jour 2
CONNEXION• Partager avec le groupe sa session de programmation / débogage la plus difficile
PRINCIPES DE SURVIE TDD• Pattern TDD : « Don’t Repeat Yourself »
• Pattern TDD : “You Ain’t Gonna Need It””
• Problème des dépendances extérieures
• Pattern TDD : « Stub »
• Exercice pratique : créer un Stub pour résoudre un problème de données de tests
• Pattern TDD : « Mock »
• Exercice pratique : créer un Mock pour simuler un appel de méthode
DÉVELOPPEMENT D’UNE APPLICATION (SUITE)• Exercice pratique :
- Développement d’une collaboration entre plusieurs classes (cycle de vie de l’application)
- Développement d’une classe dépendante aux effets de bords (ex. : horloge système)
- Développement d’une collaboration entre plusieurs classes (sessions multiples)
- Développement d’une application connectée (serveur)
- Développement d’une application connectée (client)
CLÔTURE DU JOUR 2Jour 3
CONNEXION• Partage d’expériences sur le code existant
ANTIPATTERNS TDD• Antipattern TDD : « Succès inattendu d’un test »
- Exercice pratique : analyse critique d’un test qui passe du premier coup
• Antipattern TDD : « Ecrire des tests trop grands »
- Exercice pratique : analyse critique d’un test trop grand
• Antipattern TDD : « Diagnostic trop long »
- Exercice pratique : analyse critique d’un test donnant lieu à un diagnostic long
• Antipattern TDD : « Test sur une méthode privée »
- Exercice pratique : analyse critique d’un test d’une méthode privée
• Antipattern TDD : « Echec intermittent »
- Exercice pratique : analyse critique d’un test qui passe de façon intermittente
• Concept et présentation du code legacy
LE PROBLÈME DU CODE LEGACY• Modifier et préserver le code
• Le paradoxe : refactorer du code sans tests pour y ajouter des tests
AMENER DU CODE SOUS TESTS• Identifier un point de changement
• Trouver les points de test
• Casser les dépendances
• Créer un raccord (seam)
• Modifier le code et refactorer
• Exercice pratique : écrire des tests sur un code existant en vue de documenter le code
• Exercice pratique : écrire des tests permettant de refactorer le code
SYNTHÈSE ET RAPPEL DES POINTS CLÉS DE LA FORMATION