Extreme Programming  Tests unitaires Travail collaboratif Pierre de La Morinerie Junior ISEP 2007
Programme de la formation
Programme de la formation <ul><li>L'Extreme Programming </li></ul><ul><ul><li>Origine </li></ul></ul><ul><ul><li>Concepts ...
L'Extreme Programming
L'Extreme programming - introductio <ul><li>Création </li></ul><ul><ul><li>Inventé par  Kent Beck  et  Ward Cunningham  (w...
L'Extreme programming - origine <ul><li>XP est une méthode  agile </li></ul>
L'Extreme programming - concepts <ul><li>Pousser à l'extrême des principes de bon sens </li></ul><ul><ul><li>Mises en prod...
L'Extreme programming - concepts <ul><li>Mise en production fréquente </li></ul><ul><li>Cycles de deux semaines : </li></u...
L'Extreme programming - concepts <ul><li>Forte implication du client </li></ul><ul><ul><li>Fonctionnement : </li></ul></ul...
L'Extreme programming - concepts <ul><li>Travail en équipe </li></ul><ul><ul><li>Méthodes : </li></ul></ul><ul><ul><ul><li...
L'Extreme programming - concepts <ul><li>Pilotage du projet par des tests </li></ul><ul><ul><li>Fonctionnement : </li></ul...
L'Extreme programming - valeurs <ul><li>Résumé des valeurs fondamentales d'XP : </li></ul><ul><ul><li>Communication </li><...
L'Extreme programming – retour d'expérience 1 <ul><li>1/ Transition vers XP : </li></ul><ul><ul><li>Société Design-up (dév...
L'Extreme programming – retour d'expérience 1 <ul><li>Mise en place : </li></ul><ul><ul><li>Problème de développeurs moins...
L'Extreme programming – retour d'expérience 1 <ul><li>Première intégration </li></ul><ul><ul><li>Détachement d'un développ...
L'Extreme programming – retour d'expérience 1 <ul><li>Résumé : </li></ul><ul><ul><li>Sûreté fournie par les tests </li></u...
L'Extreme programming – liens <ul><li>Quelques liens pour se documenter plus : </li></ul><ul><ul><li>Wikipedia- Extreme Pr...
Tests unitaires
Tests unitaires - concepts <ul><li>Définition : </li></ul><ul><ul><li>Un test unitaire permet de s'assurer automatiquement...
Tests unitaires - concepts <ul><li>Distinctions : </li></ul><ul><ul><li>Tests unitaires : </li></ul></ul><ul><ul><ul><li>T...
Tests unitaires - concepts <ul><li>Test Driven Development </li></ul><ul><ul><li>Écriture des tests  avant  la réalisation...
Tests unitaires - concepts <ul><li>Test Driven Development </li></ul><ul><ul><li>Écriture des tests  avant  la réalisation...
Tests unitaires - concepts <ul><li>Avantages des tests unitaires : </li></ul><ul><ul><li>Éviter les régressions </li></ul>...
Tests unitaires – mise en oeuvre <ul><li>Structure des fichiers : </li></ul><ul><ul><li>Les tests peuvent être : </li></ul...
Tests unitaires – mise en oeuvre <ul><li>Frameworks : </li></ul><ul><ul><li>Utiles pour automatiser les tests </li></ul></...
Tests unitaires – les tests avec CakePHP <ul><li>Cake possède deux suites de tests : </li></ul><ul><ul><li>CakePHP Testsui...
Tests unitaires – les tests avec CakePHP <ul><li>Cake 1.1 possède plusieurs suites de tests : </li></ul><ul><ul><li>CakePH...
Tests unitaires – les tests avec CakePHP <ul><li>Les tests sont bien plus pratique avec Cake 1.2 (alpha) </li></ul><ul><ul...
Tests unitaires – les tests avec CakePHP <ul><li>Constat : </li></ul><ul><ul><li>Installation peu pratique </li></ul></ul>...
Tests unitaires – seleniumIDE <ul><li>Basé sur l'environnement de test Selenium </li></ul><ul><li>Selenium IDE : </li></ul...
Travail collaboratif
Travail collaboratif - problématique <ul><li>Nécessité d'outils spécifiques pour travailler en groupe : </li></ul><ul><ul>...
Travail collaboratif - outils <ul><li>Outils possibles : </li></ul><ul><ul><li>Messagerie </li></ul></ul><ul><ul><li>Contr...
Travail collaboratif - outils <ul><li>Messageries : </li></ul><ul><ul><li>Le courriel n'est pas forcément efficace ! </li>...
Travail collaboratif -problématique <ul><li>Contrôle des sources </li></ul><ul><ul><li>Historiquement,  Concurrent Version...
Travail collaboratif -problématique <ul><li>Contrôle des sources </li></ul><ul><ul><li>Accès SVN : </li></ul></ul><ul><ul>...
Travail collaboratif -problématique <ul><li>Contrôle des sources </li></ul><ul><ul><li>Un projet se compose d'un  dépôt  (...
Travail collaboratif -problématique <ul><li>Contrôle des builds </li></ul><ul><ul><li>Automatisation du processus de relea...
Travail collaboratif -problématique <ul><li>Gestion des retours utilisateurs </li></ul><ul><ul><li>Bugzilla : </li></ul></...
Prochain SlideShare
Chargement dans…5
×

Formation Extreme Programming, Tests unitaires, travail collaboratif

7 182 vues

Publié le

Cette formation développe les méthodes de l'Extreme Programming, introduit les tests unitaires et le Test Driven Developpement sous différents frameworks (dont CakePHP), et présente différents outils de travail collaboratif : SVN, Make, Trac, etc.

Publié dans : Technologie
0 commentaire
9 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
7 182
Sur SlideShare
0
Issues des intégrations
0
Intégrations
95
Actions
Partages
0
Téléchargements
352
Commentaires
0
J’aime
9
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Formation Extreme Programming, Tests unitaires, travail collaboratif

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

×