Référence | TCS0801 |
Durée | 2 jours | |
A qui s’adresse ce cours |
Développeur, Chef de projet, Coach/ScrumMaster |
Moyens pédagogiques | Théorie : 30% - Pratique : 70% |
Sessions | 8 stagiaires maximum |
Connaissances requises
|
Il est demandé aux participants de connaître les notions de base d'un langage de développement.
Aucune notion d'UML est nécessaire.
|
Thème
Injecter la qualité au coeur du développement
Présentation du sujet
Le Test Driven Development (TDD) se traduit en français par "Développement Conduit par les Tests". Il s’agit d’un procédé de développement logiciel qui améliore sensiblement la qualité des produits en substituant l'approche traditionnelle "Coder-Tester-Déboguer" par l’approche "Tester-Développer-Remanier". Ce procédé possède la propriété de pouvoir prendre en considération la chaoticité du changement des spécifications tout au long du développement tout en permettant de contrôler en temps réel la non régression fonctionnelle de ce qui a déjà été développé. Ainsi il élimine un certain nombre de goulots d’étranglement liés au processus de développement et contribue à linéariser sa complexité et à réduire considérablement les coûts d’intégration, de recette et de maintenance.
Par conséquent, Qualité logicielle, Pérennité et Evolutivité sont les maîtres mots de ce nouveau procédé qui permet de produire plus efficacement tout en réduisant le nombre de défauts et les coûts de développement.
Au cours de la formation, vous découvrirez ces nouvelles techniques de test au travers des techniques expertes telles que la conception simple, le refactoring, la conception émergeante, les Mock et le Test Driven Requirement.
L’intégralité de cette formation intègre un processus d’accompagnement aux changements et couvre également les questions fondamentales : Qui doit tester ? Ce qu’il faut tester ? Est-ce un procédé rentable et productif ? Le travail en binôme est-il indispensable ? Comment remanier un code existant (legacy code) ?
Objectif
Lors de cette formation, vous découvrirez :
- 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
- Et situer la pratique du développement piloté par les tests dans le contexte de la gestion de projet en général.
Programme indicatif
Introduction
- Origine du TDD
- L'agilité et les tests
- Les limitations du débogueur
- Etat de l'art
- Industrialiser, c'est tester !
- Le besoin de tester : Les types de tests
Définition et Principes du TDD
- Théorie
- La bibliothèque NUnit
- Les 3A
- Gestion des Exceptions
- Refactoring
- Conception émergeante
- Test Driven Design
- Gestion des scénarii
Les meilleures pratiques de développement agiles
- Gestion des conditions limites
- Framework de tests
- TDD et Gestion des données SGBDR
- TDD et Gestion des données de type Fichier et Repository
- TDD et Gestion des interfaces graphiques
Techniques avancées avec le TDD
- Corriger des anomalies
- Gérer la montée en charge et la sécurité des produits NTIC
- Gestion de la sécurité logicielle
- Gestion de la performance
- Stress tests
Les objects Mock et Stub
- La théorie
- Application de la théorie sans utiliser de bibliothèque
- Découverte des bibliothèques du marché
Les Outils
- Les outils OpenSource et commerciaux
- Architecture matérielle de tests
- L'intégration continue (SVN, CVS, Sourcesafe)
- Intégrateur continu (parmi lesquels, CruiseControl)
- Couverture de test
- Etude d'un outil de gestion des tests et de communication entre MOA et MOE : Fitnesse
Les qualités du TDD
- Gains du TDD ?
- Description des cas d'utilisation
- Description des différents scénarii
- Intérêt de l'industrie, des NTIC et des autres R&D
- Les nouveaux enjeux industriels
Conclusion
|
|
Mots-Clefs :
Développement piloté par les tests, Test Driven Development, Programmation Pilotée par les tests, TDD, tests unitaires, tests de recette, tests d'intégration, conformité des spécifications, testabilité, automatisation des tests, agilité, scrum, extreme programming, test unitaire, test de recette, refactoring, remaniement de code, usine de tests, industrialisation, cruisecontrol, anthill, fitnesse, xunit, cppunit, junit, Nunit, httpunit, simpletest, Programmation Orientée Objet, Architecture, conception émergeante, simplicité.