Formation Extreme Programming, Tests unitaires, travail collaboratif

Embed Size (px)

Citation preview

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