TDD en coding dojo - Agile Tour Montpellier
Transcription
TDD en coding dojo - Agile Tour Montpellier
L'apprentissage du TDD en coding-dojo Xavier Nopre www.twitter.com/xnopre xnopre.blogspot.fr [email protected] Merci à nos sponsors Platinum Silver Gold Institutionnel Puis-je avoir ce diaporama ? Un mail à [email protected] : – Votre avis sur cette session – Vos questions Qui suis-je ? Xavier Nopre Artisan-programmeur Agiliste Indépendant • Développement d'applications "sur-mesure" pour des clients finaux • Intervention en entreprises : formation, accompagnement, développement freelance @xnopre xnopre.blogspot.com Programme (2h) 14h-16h : • Préambules : 10' • Théorie et rappels : 30' – Tests unitaires, TDD, coding-dojo • Pratiquons ensemble : 60' • Démo mock : 10' • Questions / réponses : 10' Préambule Qui êtes-vous ? Vous êtes : • Développeur ? • ScrumMaster ou Product Owner ? • Manager ? • Formateur / coach ? • Autre ? Votre connaissance en agilité ? • • • • Je découvre, je n'y connais rien Je connais les bases, je ne pratique pas encore Je pratique un peu Je pratique régulièrement (ex: un des rôles de Scrum) • Je maitrise, j'explique, je forme et accompagne Votre pratique des TU et du TDD? • • • • • • Je découvre, je n'y connais rien Je sais ce que c'est mais sans pratiquer J'ai essayé les tests unitaires … le TDD … Je fais des tests unitaires après le code de prod Je pratique le TDD régulièrement Tout ça ne sert à rien ! Tests unitaires De quoi parlons-nous ? Tests unitaires = • Du code qui teste du code Coût des tests unitaires ? • Quel surcoût pour les tests unitaires ? • Quel surcoût pour le TDD ? Pourquoi des tests unitaires et du TDD ? TDD Qualité Agilité Répondre au besoin - Développement Incrémental - Accepter le changement Tests autres - Architecture Évolutive - Refactoring sans régressions Tests unitaires Code testable - Intégration continue - Automatisation … Tests unitaires = la base des tests Tests manuels Tests GUI Tests intégration / acceptance Test unitaires Pyramide des tests – Mike Cohn • Les tests unitaires sont la "base" de tous les tests • L'investissement et le volume sont plus importants pour les TU • Tous les types de tests sont complémentaires Tests unitaires = limiter les coûts des anomalies €€€ € Rappels sur les tests unitaires • • • • • • • • • Simples ("unitaires") Lisibles Rapides à écrire Rapides à exécuter Indépendants (des autres) Autonome (/ environnement) Répétables Automatisables Parallèlisables • Pas forcément partout … (pensez ROI) • Structurés – Préparations – Test (1 action) – Vérifications • Tests de "classe" sur l'API publique de la classe • Bon outillage • … TDD = "Test Driven Development" TDD pourquoi ? • Vérifier la compréhension du besoin fonctionnel et être sûr d'y répondre Traduction des specs en tests • Détecter au plus tôt des problèmes dans les specs : oublis, impressions, contradictions, … • Générer du code testable • Systématiser la présence de tests unitaires, améliorer la couverture du code par les tests • Les tests sont plus "faciles" à écrire avant le code de production que après Oui, mais … • Les débuts sont difficiles • L'apprentissage est long • C'est un investissement, qui doit être collectif (équipe) • Mais ROI important ! Le cycle du TDD Remaniement et mise au propre du code, de l'architecture, de la présentation, factorisation, commentaires, … Ecriture d'un test et un seul et s’assurer qu’il ne passe pas pour de bonnes raisons Refactoring Ecriture du test Ecriture du code de production Ecriture du code minimum pour faire passer ce test Coding-dojo Coding-dojo : introduction Apprentissage d'un sport de combat vs Apprentissage en développement logiciel (langage, techno, conception, …) Coding-dojo : Quoi ? Pour qui ? C’est quoi ? : • Un lieu d’entrainement, d’échanges, d’amélioration • Un espace « sécurisé » • Un travail collectif, de collaboration, pas de compétition • Un moment convivial, où tout le monde doit participer C’est pour qui ? : • Pour les développeurs volontaires et motivés • Pour tous les niveaux Coding-dojo : Kata et Randori Kata : Randori : • "Démonstration" • 1 personne présente 1 solution • Objectif : montrer (technique, techno) • Tout le monde doit suivre, on peut interrompre • "Travail de dév en groupe" • Résolution (partielle) collective d'un défi • Objectif : apprendre, échanger, s'entrainer, tester, se tromper, … • Pas besoin d'aller au bout A consommer sans modération ! Coding-dojo : Randori : Organisation • • • • 1 poste de travail, vidéo-projeté 2 personnes en pair-programming : "pilote" & "copilote" On tourne d’1 personne toutes les 5 à 7’ (copilote pilote) 1 animateur : vérifie le respect des règles, tranche les décisions, met l’accent sur les pratiques (bonnes ou mauvaises) • Interventions des participants : – Les participants doivent comprendre et peuvent questionner – Sinon, les participants n’interviennent que lorsque c’est « vert » • Rétrospective ! Coding-dojo : Randori : Conseil • Etre courageux : – Etre capable de programmer devant les autres = hésiter, tâtonner, se tromper, … réussir ! – Accepter la critique, être prêt(e) à se remettre en question – Accepter de voir son travail repris, modifié, … supprimé • Etre généreux : – Expliquer sa démarche, sa solution, ses choix – Montrer ses « trucs et astuces » • Etre tolérant • … TDD : pas seulement du "test first" • Plus qu'une pratique une discipline – Pas d'ajout de code sans test rouge • Plus qu'une méthode de tests une activité de conception • Etat d'esprit • Une approche addictive Partie intégrante de la pratique de développement logiciel ! A nous de jouer ! Sujet : "Tennis (scoring) Kata" Générateur de score de tennis Précisions : architecture (P-n-OO) et stateless Game : - - xxx - - xxx Tennis Score Builder Score (Texte) Légende : Bean de données (POJO) Traitement "Users Stories" 2-1 "30-15" C'est parti ! Mocks Les Mocks Collaborateur Collaborateur Classe à tester 1 rôle ! Collaborateur Collaborateur Les mocks : sujet de démo Jeu de tennis : GUI & Controller ! Les mocks : architecture pour la démo click Controller playerxHasScored() Gui Game displayScore(String) composeScore(Game) ScoreBuilder Légende : Bean de données (POJO) Traitement pur Traitement pur"aiguillage" Les mocks : démo ! Merci ! Questions ? Agile Tour Montpellier 2014 Scaling Agile www.agiletour-montpellier.fr www.bit.ly/19gwDwl www.twitter.com/atmtp [email protected]