formation extreme programming, tests unitaires, travail collaboratif
TRANSCRIPT
Extreme Programming
Tests unitaires
Travail collaboratif
Pierre de La Morinerie
Junior ISEP 2007
Programme de la formation
Programme de la formation
L'Extreme Programming
Origine
Concepts et mthodes
Retours d'exprience
Les tests unitaires
Concepts
Mise en oeuvre
Les tests avec CakePHP ou SeleniumIDE
Le travail collaboratif
Problmatiques
Outils : SVN, Make, Trac, etc
L'Extreme Programming
L'Extreme programming - introductio
Cration
Invent par Kent Beck et Ward Cunningham (wiki)
Octobre 1999 : publication de Extreme Programming Explained de
Kent Beck
Dfinition
Mthode de gestion de projet informatique
Adapt aux quipes rduites et aux besoins changeants
Pousser l'extrme des principes de bon sens
L'Extreme programming - origine
XP est une mthode agile
L'Extreme programming - concepts
Pousser l'extrme des principes de bon sens
Mises en production frquentes
Forte implication du client
Travail en quipe, programmation en binme
Pilotage par tests unitaires
L'Extreme programming - concepts
Mise en production frquente
Cycles de deux semaines :
1er jour : dcision et planification
2me 13me jour : ralisation
14me jour : mise en production
Avantages :
Ne pas concentrer toute la dcision en dbut de projet
Avancement visible
Souplesse et adaptation au budget
L'Extreme programming - concepts
Forte implication du client
Fonctionnement :
Dfinit des snarios de fonctionnement
Retour d'exprience frquent
Eventuelle adaptation des priorits
Avantages :
Rpondre au besoin plus qu'au contrat
Faire voluer les demandes
S'adapter au changement
L'Extreme programming - concepts
Travail en quipe
Mthodes :
Code en binme
Responsabilit collective du code
Bonne communication, runions frquentes
Intgration continue
Conventions de codage
Rythme durable
L'Extreme programming - concepts
Pilotage du projet par des tests
Fonctionnement :
Mise en place intensive de tests unitaires
Remaniement du code
Conception simple
Avantages :
Pas de rgressions
Adaptabilit
L'Extreme programming - valeurs
Rsum des valeurs fondamentales d'XP :
Communication
Retour d'exprience
Simplicit
Courage
L'Extreme programming retour d'exprience 1
1/ Transition vers XP :
Socit Design-up (dveloppement logiciel)
Rcriture d'application de reporting tlcom
Conditions peu favorables, dlais serrs
Mise en place :
Problme de dveloppeurs moins expriments
Temps de compilation rapides
Ncessit d'entente entre les dveloppeurs
L'Extreme programming retour d'exprience 1
Mise en place :
Problme de dveloppeurs moins expriments
Temps de compilation rapides
Ncessit d'entente entre les dveloppeurs
Tests
Ecriture d'un environnement de tests fonctionnels
Tests parfois trop rigides
Client sur site
Client peu prsent
Mais spcifications standards et dtailles
L'Extreme programming retour d'exprience 1
Premire intgration
Dtachement d'un dveloppeur
Ralisations de tests pour l'application centrale du client
Intgration finale
Trs peu de dfauts
Intgration russie
L'Extreme programming retour d'exprience 1
Rsum :
Sret fournie par les tests
Avancement motivant
Entente entre les dveloppeurs primordiale
L'Extreme programming liens
Quelques liens pour se documenter plus :
Wikipedia- Extreme Programming
www.extremeprogramming.org
www.xp-france.net
www.design-up.com
Tests unitaires
Tests unitaires - concepts
Dfinition :
Un test unitaire permet de s'assurer automatiquement du fonctionnement d'une portion de code ou de programme
Tests unitaires - concepts
Distinctions :
Tests unitaires :
Tester des mthodes particulires d'une classe
ventuellement un enchanement de mthodes
Tests fonctionnels :
Testent les fonctionnalits finales du produit
Vrifient le fonctionnement depuis l'extrieur, en simulant l'action de l'utilisateur
Tests unitaires - concepts
Test Driven Development
criture des tests avant la ralisation du code
Approche utilise par l'XP
Droulement :
criture du test
Vrification de l'chec du test (puisque le code n'existe pas encore)
criture du code minimal
Vrification du passage du test
Refactoring du code
Tests unitaires - concepts
Test Driven Development
criture des tests avant la ralisation du code
Approche utilise par l'XP
Droulement :
criture du test
Vrification de l'chec du test (puisque le code n'existe pas encore)
criture du code minimal
Vrification du passage du test
Refactoring du code
Dans tous les cas...
crire les tests en mme temps que le code !
Tests unitaires - concepts
Avantages des tests unitaires :
viter les rgressions
Meilleure conception (place du point de vue de l'utilisateur)
Confiance dans le code, refactoring ais
Inconvnients :
Coteux en temps
Parfois complexes concevoir
Peut sembler peu utile : ncessit d'imaginer tous les cas de figure
Tests unitaires mise en oeuvre
Structure des fichiers :
Les tests peuvent tre :
Des classes indpendantes
Directement intgrs dans la classe tester
Structure des mthodes :
La plupart des tests contiennent :
Une mthode init(), excute au dbut de chaque test
Une mthode tearDown(), excute la fin de chaque test
Tests unitaires mise en oeuvre
Frameworks :
Utiles pour automatiser les tests
Facilitent l'implmentation (mthodes d'assertion, etc)
Exemple de frameworks de tests :
JUnit pour Java
PHPUnit pour PHP
NUnit pour .NET
NUnitASP pour ASP.NET
CppUnit pour C++
Tests unitaires les tests avec CakePHP
Cake possde deux suites de tests :
CakePHP Testsuite (officiel)
CakeTaster (plus rcent)
Bake.php peut gnrer des codes de tests
Tests unitaires les tests avec CakePHP
Cake 1.1 possde plusieurs suites de tests :
CakePHP Testsuite (officiel)
CakeTaster (plus rcent)
Selenium IDE Helper
Bake.php peut gnrer des codes de tests
Tests unitaires les tests avec CakePHP
Les tests sont bien plus pratique avec Cake 1.2 (alpha)
Selenium IDE testsuite (cakebaker)
SimpleTest for CakePHP (cakebaker)
Tests unitaires les tests avec CakePHP
Constat :
Installation peu pratique
Pas (encore) de documentation
Quelques bogues
Mais :
Prometteur
Prsence de fixtures simples mettre en oeuvre
Tests unitaires seleniumIDE
Bas sur l'environnement de test Selenium
Selenium IDE :
Extension Firefox
Enregistre des tests fonctionnels
Prcautions :
Travailler sur une BDD de test !
Solutions :
Alias Apache, et basculement de la configuration de la BDD
Ou environnement de test spar
Travail collaboratif
Travail collaboratif - problmatique
Ncessit d'outils spcifiques pour travailler en groupe :
Communication
Gestion des changements
Travail collaboratif - outils
Outils possibles :
Messagerie
Contrle des sources
Contrle du processus de build
Contrle d'avancement de projet
Gestion des retours utilisateurs
Travail collaboratif - outils
Messageries :
Le courriel n'est pas forcment efficace !
Rien ne vaut la communication directe
Un forum peut tre une bonne ide
Applications de partage de document :
Google Apps
Alternative la diffusion rgulire de documents Office
Travail collaboratif -problmatique
Contrle des sources
Historiquement, Concurrent Versions System (CVS)
Origines en 1985-1989
Stocke les modifications sous formes de diff
Historique entier accessible
Trs utilis, mais vieillissant
Aujourd'hui, Subversion (SVN)
Gestion des oprations sur les dossiers
Prise en charge des fichiers binaires et des types MIME
Utilis par Apache, KDE, Gnome, GCC, Mono ; requis par Trac
Travail collaboratif -problmatique
Contrle des sources
Accs SVN :
Interface client-serveur
Accs direct / Http / Protocole SVN
Intgr dans de nombreux IDE (VS2005, Eclise)
Intgration au Shell (TortoiseSVN)
Travail collaboratif -problmatique
Contrle des sources
Un projet se compose d'un dpt (repository) contenant :
Trunk : corps du code
Branches : version particulire (2.1)
Tags : release particulire (2.1.01012007)
Travail collaboratif -problmatique
Contrle des builds
Automatisation du processus de release
Utilisation de Makefiles
Problme :
Les Makefiles peuvent devenir trs complexes
Utilisation de surcouches qui gnrent des Makefiles
Autotools
Cmake
Qmake
Travail collaboratif -problmatique
Gestion des retours utilisateurs
Bugzilla :
Gestion des bogues et des suggestions
Remonte des informations
Trac :
Inspir de CVSTrac, mais pour SVN
Gestion des tickets, des rvisions, wiki, client SVN