Slideshow transcript
Slide 1: Extreme Programming Tests unitaires Travail collaboratif Pierre de La Morinerie Junior ISEP 2007
Slide 2: Programme de la formation
Slide 3: 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
Slide 4: L'Extreme Programming
Slide 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
Slide 6: L'Extreme programming - origine XP est une méthode agile
Slide 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
Slide 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
Slide 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
Slide 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
Slide 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é
Slide 12: L'Extreme programming - valeurs Résumé des valeurs fondamentales d'XP : Communication Retour d'expérience Simplicité Courage
Slide 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
Slide 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
Slide 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
Slide 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
Slide 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
Slide 18: Tests unitaires
Slide 19: Tests unitaires - concepts Définition : Un test unitaire permet de s'assurer automatiquement du fonctionnement d'une portion de code ou de programme
Slide 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
Slide 21: Tests unitaires - concepts Test Driven Development Écriture des tests avant la réalisation du code Approche utilisée par l'XP Déroulement : a) Écriture du test b) Vérification de l'échec du test (puisque le code n'existe pas encore) c) Écriture du code minimal d) Vérification du passage du test e) Refactoring du code
Slide 22: Tests unitaires - concepts Test Driven Development Écriture des tests avant la réalisation du code Approche utilisée par l'XP Déroulement : a) Écriture du test b) Vérification de l'échec du test (puisque le code n'existe pas encore) c) Écriture du code minimal d) Vérification du passage du test e) Refactoring du code Dans tous les cas... Écrire les tests en même temps que le code !
Slide 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
Slide 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
Slide 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++
Slide 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
Slide 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
Slide 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)
Slide 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
Slide 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é
Slide 31: Travail collaboratif
Slide 32: Travail collaboratif - problématique Nécessité d'outils spécifiques pour travailler en groupe : Communication Gestion des changements
Slide 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
Slide 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
Slide 35: 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
Slide 36: 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)
Slide 37: 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)
Slide 38: 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
Slide 39: 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



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 4 (more)