Test Driven Development TDD en Java avec IA et Clean Code
TDD-J
Formation créée le 19/03/2024. Dernière mise à jour le 08/07/2024.
Version du programme : 1
Programme de la formation
Cette formation est recommandée pour tous ceux qui cherchent un moyen efficace d’améliorer la qualité de leur logiciel. Elle consiste à développer un logiciel en l’enveloppant judicieusement d’une série de tests unitaires et à faire émerger une architecture au fil des tests en l'alignant avec la vision changeante du périmètre fonctionnel recherché.Cette formation a aussi été conçue pour ceux qui vivent avec un bugtracker rempli à craquer, ils verront comment désendetter techniquement leur application au cours du temps tout en faisant évoluer le logiciel à la demande des clients. Le Test Driven Development reste selon nous l'une des rares techniques agiles encore très mal appliquées dans l'entreprise. Ces formations de TDD en C++, Java, .Net et bien d'autres ont été les premières à être présentées en France en 2005, elles restent d'actualité et intègrent toutes les dernières nouveautés dans les différents langages. Au cours de la formation, vous découvrirez de nombreuses techniques ; vous apprendrez à faire de la conception simple, du refactoring, de la conception émergeante, à implémenter des Mocks et à utiliser le Test Driven Requirement et/ou le Behaviour Driven Development.
Objectifs de la formation
- Concevoir et réaliser des produits logiciels autour de tests unitaires et de recette
- Comprendre l'importance des tests dans la production de logiciels
- Remanier et consolider vos applications existantes en introduisant des tests
- Situer la pratique du développement piloté par les tests dans le contexte de la gestion de projet en général.
Profil des bénéficiaires
- Développeur, Chef de projet, Coach/ScrumMaster
- Maîtrise de JAVA : développement JAVA depuis 4 ans minimum
- Maîtrise d'Eclipse (installation et configuration de JRE, divers plugins, création de nouvezux projets, configuration du classpath) et de Maven (gestion des dépendances, les modules)
- Avoir son propre ordinateur avec les droits "admin" pour installer des outils et des plugins.
Contenu de la formation
-
TOUR DE TABLE & INTRODUCTION : LES TESTS UNITAIRES AUTOMATISÉS
- Pourquoi tester ?
- Propriétés des tests automatisés
- i. Acteur, Action, Assertion (3A)
- ii. Rapides, Indépendants, Reproductibles, ...
- iii. Principe d’isolation des tests pour la reproductibilité
- Quels sont les faux obstacles pour faire des tests? Stratégies de test
- i. Tester les conditions limites
- ii. Tester relation croisée et inverse
- iii. Tester les cas d’erreurs et les exceptions
- iv. Tester la performance
- Où s’arrêter ?
- i. Doit-on tester les méthodes privées ?
- ii. Est-ce que les tests doivent être exhaustifs ?
- Tests et méthodes agiles
-
II. XUNIT PATTERNS : LES FONDAMENTAUX
- JUnit et TestNG
- Assertions et Programmation par Contrat
- Organisation des tests
- i. Conventions pour les tests en Java
- ii. Suites de test et exécutions
- Travaux Pratiques : Mise en œuvre de tests unitaires avec JUnit ou TestNG
-
III. XUNIT PATTERNS : INDÉPENDANCE AVEC LES DOUBLURES
- Principe de fonctionnement des doublures
- Définition : Mocks, Fakes, Stubs and Dummies
- Travaux Pratiques : Mise en œuvre des mocks sans framework et avec Mockito
-
IV. TEST DRIVEN DEVELOPMENT
- Cycle de développement
- Remaniement de code : Refactoring
- Conception émergeante
- Travaux Pratiques : Kata du bowling
-
V. MODÉLISATION ET TEST DRIVEN DRIVEN DEVELOPMENT
- Modélisation en mode TDD : Quick Design Session
- Best Practices : Programmation Orientée Objet
- i. Open Close Principle : O.C.P.
- ii. Don’t Repeat Yourself : D.R.Y.
- iii. Single Responsability Principle : S.R.P.
- iv. Liskov Substitution Principle : L.S.P.
- Atelier : Quick Design Session
-
VI. REFACTORING POUR LA TESTABILITÉ
- Loi de Demeter
- Expressions conditionnelles (switch) et polymorphisme
- Construction simple : Injection de dépendance
- Travaux Pratiques : Mise en œuvre refactoring de code existant (Guice ou Spring framework)
-
VII. TESTS D’INTÉGRATIONS
- Tester unitairement les bases de données
- Tester une application concurrente
- Travaux Pratiques : Mise en oeuvre avec JDBC ou Hibernate et DBunit
-
VIII. TESTS FONCTIONNELS
- Tester les applications Web
- i. Test par analyse HTML (httpunit, ...)
- ii. Test des servlets
- iii. Test des contrôleurs
- Tester les interfaces graphiques
- Travaux Pratiques : Spring MVC, Playframework et GWT
- Travaux Pratiques : Mise en oeuvre Swing / Selenium / FEST-Swing
-
IX. SPÉCIFICATION PAR L’EXEMPLE
- Behaviour Driven Development (BDD) avec JBehave
- Test Driven Requirement
- Acceptance Test Driven Development (ATDD)
- Travaux Pratiques : Mise en œuvre avec JBehave ou Fitnesse
-
X. INTÉGRATION CONTINUE
- Pratiques et organisation
- Outils et indicateurs qualité
- Travaux Pratiques : Utiliser Jenkins/Husdson, Cobertura, PMD, Checkstyle, Sonar
- Travaux Pratiques : Organiser les packages avec JDepend
-
CONCLUSION
- Test First vs Test After
- Pair programming vs Side by Side Programming
- Adoption du TDD
- Le Coding Dojo de l’AgileDojo
- Questions - Réponses
Nos intervenants sont des "Coach Agile & Formateur" expérimentés
- Évaluation lors des ateliers tout au long de la formation Évaluation des acquis en fin de formation
- Théorie : 30 % (support de cours et slides) Pratiques : 70 % (exercices + programmation)
Capacité d'accueil
Accessibilité
Prochaines dates
- ON LINE - Test Driven Development en Java - 18/12/2024 au 20/12/2024 - AGILBEE ON LINE - (8 places restantes)