Propulsez votre architecture grâce au TDD et aux mocks



Documents pareils
Architecture Agile et développement durable

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Les Bonnes PRATIQUES DU TEST LOGICIEL

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Testeur Agile Niveau Fondation Bertrand Cornanguer, Vice-chair Agile tester WG

Agile 360 Product Owner Scrum Master

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

XP : plus qu'agile. Extreme Programming v2 et Développement Responsable. Thierry Cros

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Développement Agile des organisations et des hommes

Règles d engagement. Présentation Diapositives Bibliographie Questions Les vertus de la marche

Le Product Owner Clé de voute d un projet agile réussi

Environnements de développement (intégrés)

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Développement guidé par les tests d acceptation (ATDD/BDD) au Ministère de la défense nationale

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Retour d expérience implémentation Scrum / XP

Agile Maroc 24 Novembre Méthodes agiles. Thierry Cros. Agile Maroc 24 novembre 2010

Les mécanismes d'assurance et de contrôle de la qualité dans un

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Fidéliser les collaborateurs tout en améliorant leurs compétences

Évaluation et implémentation des langages

Catalogue de FORMATIONS 2015

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

Compte-rendu du petit-déjeuner. Vers l entreprise Agile

Agilitéet qualité logicielle: une mutation enmarche

Vérifier la qualité de vos applications logicielle de manière continue

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Le génie logiciel. maintenance de logiciels.

Eclipse Process Framework et Telelogic Harmony/ITSW

Stage Ingénieur en développement logiciel/modélisation 3D

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Jean-Pierre Vickoff

Conditions gagnantes pour démarrer sa transition Agile

Scrum + Drupal = Julien Dubois

Analyse,, Conception des Systèmes Informatiques

Yassine ZAKARIA SÉMINAIRE : MÉTHODES AGILES

AngularJS pour une application d'entreprise

Méthode Agile de 3 ème génération J-P Vickoff

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

25/12/2012

Présentation UBO 12/2008 Présentation des méthodes agiles

Entraînement au concours ACM-ICPC

Isabelle Nicolas

Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

L Intégration Continue & Agilité

Modernisation et gestion de portefeuilles d applications bancaires

PRÉSENTATION PRODUIT. Plus qu un logiciel, la méthode plus efficace de réconcilier.

Guide de Préparation. EXIN Agile Scrum. Foundation

ISTQB Agile Tester en quelques mots ISTQB Marketing Working Group

Licence Sciences et Technologies Examen janvier 2010

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.

Introduction au génie logiciel

Intervention en Formation Gestion de Projet

Feature Team Primer. par Craig Larman et Bas Vodde. Version 1.2

INTRODUCTION AUX TESTS CODES DE L INTERFACE UTILISATEUR

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Plan de la Formation. GESTION de PROJET

Génie logiciel (Un aperçu)

Ingénieur de l'école Centrale Lille - IDN (85-88). 20 ans d'expérience en développement logiciel.

Séance 1 Méthodologies du génie logiciel

Elle accompagne les entrepreneurs, les gestionnaires et les équipes pour résoudre les défis liés à leur rôle.

Développement itératif, évolutif et agile

Environnements de développement (intégrés)

Introduc)on à l Agile

Les participants sont invités à soumettre leur communication sur les sujets s'inscrivant principalement dans les thématiques suivantes :

Architecture pragmatique pour la gestion du cycle de vie des applications (ALM)

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Java à Murex: un retour d'expérience. Jean-Pierre DACHER & Craig MORRISON

Formation Certifiante Scrum Master

Contenu. N Pages. Formavision: Une approche pratique de la formation 2. Objectifs de la séance 3

Certification Appreciative Inquiry Accompagnement des Transformations dans les Organisations

Proposition d une méthodologie agile en intelligence d affaires pour réduire les risques d échecs. par. Étienne Rivard

Extreme Programming. Le projet social. Angèle Batanero Thierry Cros. Agile Tour 2010 : XP, le projet social

CHAPITRE 3 : LES METHODES AGILES?

Manage Yourself. Rapport de planification. Projet de 4ème année informatique. Equipe :

Les méthodes Agile. Implication du client Développement itératif et incrémental

CRM pour le Service clients et l Assistance technique

Certification Scrum Master

Business Intelligence

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Documentation Ellipses Windows. Auteur : Léonard FRECHET Date : 10/01/07 Diffusion : Publique ELLIPSES Envoi Automatisé de SMS Ellipses SMS

Méthodes Agiles et gestion de projets

SCRUM chez BWIN : implémentation d une méthode agile dans Focalpoint Spasija Taseva et Corinne Bacle

CHECKLIST : OUVERTURE DES OFFRES

Augmenter la vélocité Agile avec l usine-service sur Azure

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Notre programme de formations

Mise en œuvre des serveurs d application

Jean-Pierre Vickoff J-P Vickoff

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

Solutions informatiques (SI) Semestre 1

Hadoop, Spark & Big Data 2.0. Exploiter une grappe de calcul pour des problème des données massives

Transcription:

nasa.gov Propulsez votre architecture grâce au TDD et aux mocks Agile Québec 12 juin 2013 2012 Elapse Technologies

Avertissement Cette présentation est de niveau «avancé»

Félix-Antoine Bourbonnais Formateur & Coach Agile o Tests automatisés: TDD, ATDD, BDD o Orientation objet avancée o Architecture agile o Réusinage et qualité (Clean Code) o Agile et Scrum Concepteur de logiciels o Pratiques de développement o Java, Python, etc. www.elapsetech.com fbourbonnais@elapsetech.com elapsetech.com/fab @fbourbonnais linkedin.com/in/fbourbonnais/fr

Réchauffement Qui fait du TDD? Qui utilise des Mocks? Quelles sont vos attentes? Images de: Idea Go / freedigitalphotos.net Rameshng / Flickr.com

Comment découvrir l architecture? Mocks TDD

Rappel sur les DOUBLURES ET MOCKS

Rappel: les tests unitaires But: tester les modules en isolation.

Rappel: les mocks A X CUT Test CUT B N

Rappel: les mocks A X C Test C B N

Rappel: les mocks A A C Test C Retourne [1] B Lance IOException

Rappels des fondements du TDD

Technique ou discipline? Le TDD est une discipline

Cycle du TDD Écrire un test qui échoue 1 On passe à la phase «VERTE» dès qu on a un test qui échoue. 3 Réusiner Faire passer le test Erreur de compilateur = «échec». 2 On passe à la phase «Réusinage» dès que le test passe.

Shu-Ha-Ri SHU HA RI L élève suit l enseignement d un maître Il apprend de d autres maîtres (écoles) Il suit et a sa propre pratique Power de Jardson Araújo du The Noun Project Keikogi de Tiago Dos Reis Rodrigues duthe Noun Project

Le design et le TDD «CLASSIQUE» Image: posterize / FreeDigitalPhotos.net

TDD classique Centré sur l état et le résultat final Image: nuchylee / FreeDigitalPhotos.net

TDD classique Extraction des types Classe P PTest Division Classe P PTest Mock R1 Classe R1 R1Test

Le TDD classique Problèmes algorithmiques Évolution du «design» Par division Extraction Traitement de données Calculs TDD Classique Valide l état

Rappel de L ORIENTATION OBJET

Messages et collaboration Classe ACtrl Classe B Classe C Iface E Classe D Classe Persist UI Domaine Infrastructure Collaboration des objets fonctionnalité

Le «Tell don t Ask» Image: renjith krishnan et jscreationzs / FreeDigitalPhotos.net

Pourquoi le «Tell don t ask» Cacher le «comment» Réduire la duplication Limiter l effet des modifications Laisser les objets «s occuper de leurs oignons» Limiter l effet d avalanche Éviter les «domaines anémiques»

Effet Effet Stimulus Un objet est une boîte noire Réception d un message Retour d une réponse Classe Envoi d un message à un collaborateur Envoi d un message à un collaborateur

Comment PILOTER SON DESIGN AVEC DES MOCKS? Image: jscreationzs / FreeDigitalPhotos.net

Le TDD «Mockiste» Centré sur les interactions et comportements entre les objets considérant leur rôle Images: sheelamohan / freedigitalphotos.net

Le TDD «Mockiste» Utilise les Mocks comme pierre angulaire Images: cooldesign/ freedigitalphotos.net

Évolution du «design» TDD «Mockiste» Par le raffinement Découverte des types par les Mocks Définition de l interface à partir des besoins établis dans les autres tests grâce aux mocks.

TDD piloté par les Mocks Identifier les rôles requis (dépendances) par le module testé Viewer Test Viewer <<Interface>>? Loader <<Interface>> FileReader PNGLoader Test Mock Classe PNGLoader? Mock Découverte pas à pas Tirer les types à partir de la demande

TDD piloté par les Mocks Arriver à destination Test acceptation UTest Viewer Utest <<Interface>> Loader Classe PNGLoader Utest <<Interface>> FileReader Fake FileReader Terminé

En résumé Quelle est la responsabilité de l objet testé? Classe testée (CUT) De quoi est-ce que l objet a besoin pour réaliser son travail en terme de rôles? A Responsabilité Effet sur Quels effets aura ce comportement sur l environnement immédiat? Besoin de (rôle) B

Exemple banque.acheter(carte, marchand, montant) --> carte.crediter(montant) --> marchand.debiter(montant)

Présentation de la DÉMONSTRATION Image: Stuart Miles / freedigitalphotos.net

Soumissions à une conférence Démonstration #1 Soumission d une présentation En tant que soumissionnaire Je veux soumettre une présentation à une conférence Afin qu elle soit évaluée par le comité de sélection Critères d acceptation Il est possible de soumettre une présentation La présentation est accumulée en attendant d être évaluée par le comité Le comité est avisé qu une nouvelle présentation doit être évaluée

Approche «outside-in» UI Domaine Réusinage Infrastructure TDD Duplication? Image: Simon Howden / FreeDigitalPhotos.net

Piloter le design par les mocks MyLibraryView Presenter Moc k OnlineLibrary LibraryProvider OnlineService UI Moc k Domaine Infrastructure LibraryRealTime View Presenter Book Composer à partir des interactions Position «utilisateur» Explorations successives (étape par étape) Reporter les décisions d implémentations Explorer sans trop se compromettre Image: Simon Howden / FreeDigitalPhotos.net

Avantages de l approche mockiste Favorise le «Tell don t ask» Favorise un design testable Moins de «trains d appels» (Demeter) Requiert moins d objets implémentés pour avoir une rétroaction Retarde les décisions d implémentations Classe fautive ciblée en cas d échec

Avantages de l approche mockiste Définir les interfaces à partir des appelants Développement piloté par les besoins (need-driven) Focalise sur le «Quoi» avant le «Comment»

Ce que l on obtient généralement Hiérarchie mince Nommage clair pour l appelant Design basé sur les rôles Meilleur respect des principes OO Abstraction (rôles)

Désavantages de l approche mockiste Couplage du test avec la signature des collaborateurs Danger: Trop focaliser sur le UI (outside-in) Fonctionne mal avec des problèmes algorithmiques Tests unitaires => aucun test intégré de bas niveau. Génère beaucoup de mocks et d interfaces

La Bonne question Que voulez-vous maximiser?

Complémentarité Cette école doit être combinée! Alterner entre les techniques apporte généralement de bons résultats. Choisir selon ce que l on veut découvrir

Mauvaises odeurs détectables Mauvaise odeurs avec les mocks Beaucoup de Mocks Difficile de les injecter Beaucoup de paramètres Couplage OCP? Patron «Factory»? Extraction d un concept?

Rappel: TDD et architecture Toutes approches + Code testable + Code réutilisable Rétroaction: «design» simple? + Architecture émergeante - Code couplé

Le mot de la fin Questions? Poursuivre la discussion? Félix-Antoine Bourbonnais @fbourbonnais fbourbonnais@elapsetech.com elapsetech.com/fab Image de digitalart / FreeDigitalPhotos.net

Téléchargement Diapositives http://developpementagile.com/ architecture-mocks-tdd Code source https://github.com/fbourbonnais/ propulsez-architecture-tdd-mocks Image de anamkkml/ FreeDigitalPhotos.net et github.com

Elapse Technologies Votre allié en développement logiciel Agile Formation Accompagnement (coaching) Conseils et diagnostiques Agilité (Scrum, Lean, XP) Qualité et tests automatisés Architecture Agile Pratiques de développement

Références

Références Steve Freeman, Tim Mackinnon, Nat Pryce, et Joe Walnes. Mock roles, Not objects. p. 236 246. OOPSLA 04. Vancouver, BC, Canada, ACM, 2004. Nat Pryce, et Steve Freeman, InfoQ: Mock Roles Not Object States. QCon London 2007 http://www.infoq.com/presentations/mock-objects-nat-pryce- Steve-Freeman Martin Fowler, Mocks Aren t Stubs, 2 janvier 2007. [Résumé des approches] http://martinfowler.com/articles/mocksarentstubs.html

Références Steve Freeman, Sustainable Test-Driven Development. QCon San Francisco 2009. http://www.infoq.com/presentations/sustainable-test-driven- Development Codemanship presents... Classic TDD vs. London School, 2011. [Critiqué] http://www.youtube.com/watch?v=aue155lisv4 Michael Feathers et Steve Freeman. Michael Feathers and Steve Freeman on Design, InfoQ at QCon San Francisco 2009 http://www.infoq.com/interviews/feathers-freeman-design Discussion «Classic TDD or «London School» - any opinions/comments/elaboration on Jason Gorman s post?» GOOS Mailinglist, 2011. https://groups.google.com/d/topic/growing-object-orientedsoftware/domoiaffdci/discussion