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 méthodes Retours d'expérience Les tests unitaires Concepts Mise en oeuvre Les tests avec CakePHP ou SeleniumIDE Le travail collaboratif Problématiques Outils : SVN, Make, Trac, etc
L'Extreme Programming
L'Extreme programming - introductio Création Inventé par  Kent Beck  et  Ward Cunningham  (wiki) Octobre 1999  : publication de «  Extreme Programming Explained  » de Kent Beck Définition Méthode de gestion de projet informatique Adapté aux équipes réduites et aux besoins changeants Pousser à l'extrême des principes de bon sens
L'Extreme programming - origine XP est une méthode  agile
L'Extreme programming - concepts Pousser à l'extrême des principes de bon sens Mises en production fréquentes Forte implication du client Travail en équipe, programmation en binôme Pilotage par tests unitaires
L'Extreme programming - concepts Mise en production fréquente Cycles de deux semaines : 1er jour : décision et planification 2ème – 13ème jour : réalisation 14ème jour : mise en production Avantages : Ne pas concentrer toute la décision en début de projet Avancement visible Souplesse et adaptation au budget
L'Extreme programming - concepts Forte implication du client Fonctionnement : Définit des « sénarios » de fonctionnement Retour d'expérience fréquent Eventuelle adaptation des priorités Avantages : Répondre au besoin plus qu'au contrat Faire évoluer les demandes S'adapter au changement
L'Extreme programming - concepts Travail en équipe Méthodes : Code en binôme Responsabilité collective du code Bonne communication, réunions fréquentes Intégration 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 régressions Adaptabilité
L'Extreme programming - valeurs Résumé des valeurs fondamentales d'XP : Communication Retour d'expérience Simplicité Courage
L'Extreme programming – retour d'expérience 1 1/ Transition vers XP : Société Design-up (développement logiciel) Réécriture d'application de reporting télécom Conditions peu favorables, délais serrés Mise en place : Problème de développeurs moins expérimentés Temps de compilation rapides Nécessité d'entente entre les développeurs
L'Extreme programming – retour d'expérience 1 Mise en place : Problème de développeurs moins expérimentés Temps de compilation rapides Nécessité d'entente entre les développeurs Tests Ecriture d'un environnement de tests fonctionnels Tests parfois trop rigides « Client sur site » Client peu présent Mais spécifications standards et détaillées
L'Extreme programming – retour d'expérience 1 Première intégration Détachement d'un développeur Réalisations de tests pour l'application centrale du client Intégration finale Très peu de défauts Intégration réussie
L'Extreme programming – retour d'expérience 1 Résumé : Sûreté fournie par les tests Avancement motivant Entente entre les développeurs 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 Définition : 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 méthodes particulières d'une classe Éventuellement un enchaînement de méthodes Tests fonctionnels : Testent les fonctionnalités finales du produit Vérifient le fonctionnement depuis l'extérieur, en simulant l'action de l'utilisateur
Tests unitaires - concepts Test Driven Development Écriture des tests  avant  la réalisation du code Approche utilisée par l'XP Déroulement : Écriture du test Vérification de l'échec du test (puisque le code n'existe pas encore) Écriture du code minimal Vérification du passage du test Refactoring  du code
Tests unitaires - concepts Test Driven Development Écriture des tests  avant  la réalisation du code Approche utilisée par l'XP Déroulement : Écriture du test Vérification de l'échec du test (puisque le code n'existe pas encore) Écriture du code minimal Vérification du passage du test Refactoring  du code Dans tous les cas... Écrire les tests en même temps que le code !
Tests unitaires - concepts Avantages des tests unitaires : Éviter les régressions Meilleure conception (placée du point de vue de l'utilisateur) Confiance dans le code, refactoring aisé Inconvénients : Coûteux en temps Parfois complexes à concevoir Peut sembler peu utile : nécessité d'imaginer tous les cas de figure
Tests unitaires – mise en oeuvre Structure des fichiers : Les tests peuvent être : Des classes indépendantes Directement intégrés dans la classe à tester Structure des méthodes : La plupart des tests contiennent : Une méthode init(), exécutée au début de chaque test Une méthode tearDown(), exécutée à la fin de chaque test
Tests unitaires – mise en oeuvre Frameworks : Utiles pour automatiser les tests Facilitent l'implémentation (méthodes 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 possède deux suites de tests : CakePHP Testsuite (officiel) CakeTaster (plus récent) Bake.php peut générer des codes de tests
Tests unitaires – les tests avec CakePHP Cake 1.1 possède plusieurs suites de tests : CakePHP Testsuite (officiel) CakeTaster (plus récent) Selenium IDE Helper Bake.php peut générer 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 Présence de fixtures simples à mettre en oeuvre
Tests unitaires – seleniumIDE Basé sur l'environnement de test Selenium Selenium IDE : Extension Firefox Enregistre des tests  fonctionnels Précautions : Travailler sur une BDD de test ! Solutions : Alias Apache, et basculement de la configuration de la BDD Ou environnement de test séparé
Travail collaboratif
Travail collaboratif - problématique Nécessité d'outils spécifiques pour travailler en groupe : Communication Gestion des changements
Travail collaboratif - outils Outils possibles : Messagerie Contrôle des sources Contrôle du processus de build Contrôle d'avancement de projet Gestion des retours utilisateurs
Travail collaboratif - outils Messageries : Le courriel n'est pas forcément efficace ! Rien ne vaut la communication directe Un forum peut être une bonne idée Applications de partage de document : Google Apps Alternative à la diffusion régulière de documents Office
Travail collaboratif -problématique Contrôle des sources Historiquement,  Concurrent Versions System  (CVS) Origines en 1985-1989 Stocke les modifications sous formes de  diff Historique entier accessible Très utilisé, mais vieillissant Aujourd'hui,  Subversion  (SVN) Gestion des opérations 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 -problématique Contrôle des sources Accès SVN : Interface client-serveur Accès direct / Http / Protocole SVN Intégré dans de nombreux IDE (VS2005, Eclise) Intégration au Shell (TortoiseSVN)
Travail collaboratif -problématique Contrôle des sources Un projet se compose d'un  dépôt  ( repository ) contenant : Trunk  : corps du code Branches  : version particulière (2.1) Tags  : release particulière (2.1.01012007)
Travail collaboratif -problématique Contrôle des builds Automatisation du processus de release Utilisation de Makefiles Problème : Les Makefiles peuvent devenir très complexes Utilisation de surcouches qui génèrent des Makefiles Autotools Cmake Qmake
Travail collaboratif -problématique Gestion des retours utilisateurs Bugzilla : Gestion des bogues et des suggestions Remontée des informations Trac : Inspiré de CVSTrac, mais pour SVN Gestion des tickets, des révisions, wiki, client SVN

Formation Extreme Programming, Tests unitaires, travail collaboratif

  • 1.
    Extreme Programming Tests unitaires Travail collaboratif Pierre de La Morinerie Junior ISEP 2007
  • 2.
    Programme de laformation
  • 3.
    Programme de laformation L'Extreme Programming Origine Concepts et méthodes Retours d'expérience Les tests unitaires Concepts Mise en oeuvre Les tests avec CakePHP ou SeleniumIDE Le travail collaboratif Problématiques Outils : SVN, Make, Trac, etc
  • 4.
  • 5.
    L'Extreme programming -introductio Création Inventé par Kent Beck et Ward Cunningham (wiki) Octobre 1999 : publication de « Extreme Programming Explained » de Kent Beck Définition Méthode de gestion de projet informatique Adapté aux équipes réduites et aux besoins changeants Pousser à l'extrême des principes de bon sens
  • 6.
    L'Extreme programming -origine XP est une méthode agile
  • 7.
    L'Extreme programming -concepts Pousser à l'extrême des principes de bon sens Mises en production fréquentes Forte implication du client Travail en équipe, programmation en binôme Pilotage par tests unitaires
  • 8.
    L'Extreme programming -concepts Mise en production fréquente Cycles de deux semaines : 1er jour : décision et planification 2ème – 13ème jour : réalisation 14ème jour : mise en production Avantages : Ne pas concentrer toute la décision en début de projet Avancement visible Souplesse et adaptation au budget
  • 9.
    L'Extreme programming -concepts Forte implication du client Fonctionnement : Définit des « sénarios » de fonctionnement Retour d'expérience fréquent Eventuelle adaptation des priorités Avantages : Répondre au besoin plus qu'au contrat Faire évoluer les demandes S'adapter au changement
  • 10.
    L'Extreme programming -concepts Travail en équipe Méthodes : Code en binôme Responsabilité collective du code Bonne communication, réunions fréquentes Intégration continue Conventions de codage Rythme durable
  • 11.
    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 régressions Adaptabilité
  • 12.
    L'Extreme programming -valeurs Résumé des valeurs fondamentales d'XP : Communication Retour d'expérience Simplicité Courage
  • 13.
    L'Extreme programming –retour d'expérience 1 1/ Transition vers XP : Société Design-up (développement logiciel) Réécriture d'application de reporting télécom Conditions peu favorables, délais serrés Mise en place : Problème de développeurs moins expérimentés Temps de compilation rapides Nécessité d'entente entre les développeurs
  • 14.
    L'Extreme programming –retour d'expérience 1 Mise en place : Problème de développeurs moins expérimentés Temps de compilation rapides Nécessité d'entente entre les développeurs Tests Ecriture d'un environnement de tests fonctionnels Tests parfois trop rigides « Client sur site » Client peu présent Mais spécifications standards et détaillées
  • 15.
    L'Extreme programming –retour d'expérience 1 Première intégration Détachement d'un développeur Réalisations de tests pour l'application centrale du client Intégration finale Très peu de défauts Intégration réussie
  • 16.
    L'Extreme programming –retour d'expérience 1 Résumé : Sûreté fournie par les tests Avancement motivant Entente entre les développeurs primordiale
  • 17.
    L'Extreme programming –liens Quelques liens pour se documenter plus : Wikipedia- Extreme Programming www.extremeprogramming.org www.xp-france.net www.design-up.com
  • 18.
  • 19.
    Tests unitaires -concepts Définition : Un test unitaire permet de s'assurer automatiquement du fonctionnement d'une portion de code ou de programme
  • 20.
    Tests unitaires -concepts Distinctions : Tests unitaires : Tester des méthodes particulières d'une classe Éventuellement un enchaînement de méthodes Tests fonctionnels : Testent les fonctionnalités finales du produit Vérifient le fonctionnement depuis l'extérieur, en simulant l'action de l'utilisateur
  • 21.
    Tests unitaires -concepts Test Driven Development Écriture des tests avant la réalisation du code Approche utilisée par l'XP Déroulement : Écriture du test Vérification de l'échec du test (puisque le code n'existe pas encore) Écriture du code minimal Vérification du passage du test Refactoring du code
  • 22.
    Tests unitaires -concepts Test Driven Development Écriture des tests avant la réalisation du code Approche utilisée par l'XP Déroulement : Écriture du test Vérification de l'échec du test (puisque le code n'existe pas encore) Écriture du code minimal Vérification du passage du test Refactoring du code Dans tous les cas... Écrire les tests en même temps que le code !
  • 23.
    Tests unitaires -concepts Avantages des tests unitaires : Éviter les régressions Meilleure conception (placée du point de vue de l'utilisateur) Confiance dans le code, refactoring aisé Inconvénients : Coûteux en temps Parfois complexes à concevoir Peut sembler peu utile : nécessité d'imaginer tous les cas de figure
  • 24.
    Tests unitaires –mise en oeuvre Structure des fichiers : Les tests peuvent être : Des classes indépendantes Directement intégrés dans la classe à tester Structure des méthodes : La plupart des tests contiennent : Une méthode init(), exécutée au début de chaque test Une méthode tearDown(), exécutée à la fin de chaque test
  • 25.
    Tests unitaires –mise en oeuvre Frameworks : Utiles pour automatiser les tests Facilitent l'implémentation (méthodes d'assertion, etc) Exemple de frameworks de tests : JUnit pour Java PHPUnit pour PHP NUnit pour .NET NUnitASP pour ASP.NET CppUnit pour C++
  • 26.
    Tests unitaires –les tests avec CakePHP Cake possède deux suites de tests : CakePHP Testsuite (officiel) CakeTaster (plus récent) Bake.php peut générer des codes de tests
  • 27.
    Tests unitaires –les tests avec CakePHP Cake 1.1 possède plusieurs suites de tests : CakePHP Testsuite (officiel) CakeTaster (plus récent) Selenium IDE Helper Bake.php peut générer des codes de tests
  • 28.
    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)
  • 29.
    Tests unitaires –les tests avec CakePHP Constat : Installation peu pratique Pas (encore) de documentation Quelques bogues Mais : Prometteur Présence de fixtures simples à mettre en oeuvre
  • 30.
    Tests unitaires –seleniumIDE Basé sur l'environnement de test Selenium Selenium IDE : Extension Firefox Enregistre des tests fonctionnels Précautions : Travailler sur une BDD de test ! Solutions : Alias Apache, et basculement de la configuration de la BDD Ou environnement de test séparé
  • 31.
  • 32.
    Travail collaboratif -problématique Nécessité d'outils spécifiques pour travailler en groupe : Communication Gestion des changements
  • 33.
    Travail collaboratif -outils Outils possibles : Messagerie Contrôle des sources Contrôle du processus de build Contrôle d'avancement de projet Gestion des retours utilisateurs
  • 34.
    Travail collaboratif -outils Messageries : Le courriel n'est pas forcément efficace ! Rien ne vaut la communication directe Un forum peut être une bonne idée Applications de partage de document : Google Apps Alternative à la diffusion régulière de documents Office
  • 35.
    Travail collaboratif -problématiqueContrôle des sources Historiquement, Concurrent Versions System (CVS) Origines en 1985-1989 Stocke les modifications sous formes de diff Historique entier accessible Très utilisé, mais vieillissant Aujourd'hui, Subversion (SVN) Gestion des opérations sur les dossiers Prise en charge des fichiers binaires et des types MIME Utilisé par Apache, KDE, Gnome, GCC, Mono ; requis par Trac
  • 36.
    Travail collaboratif -problématiqueContrôle des sources Accès SVN : Interface client-serveur Accès direct / Http / Protocole SVN Intégré dans de nombreux IDE (VS2005, Eclise) Intégration au Shell (TortoiseSVN)
  • 37.
    Travail collaboratif -problématiqueContrôle des sources Un projet se compose d'un dépôt ( repository ) contenant : Trunk : corps du code Branches : version particulière (2.1) Tags : release particulière (2.1.01012007)
  • 38.
    Travail collaboratif -problématiqueContrôle des builds Automatisation du processus de release Utilisation de Makefiles Problème : Les Makefiles peuvent devenir très complexes Utilisation de surcouches qui génèrent des Makefiles Autotools Cmake Qmake
  • 39.
    Travail collaboratif -problématiqueGestion des retours utilisateurs Bugzilla : Gestion des bogues et des suggestions Remontée des informations Trac : Inspiré de CVSTrac, mais pour SVN Gestion des tickets, des révisions, wiki, client SVN