TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur,

Slides:



Advertisements
Présentations similaires
Introduction Rétro ingénierie d’interfaces graphiques
Advertisements

Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Chapitre annexe. Récursivité
Le struts validator – framework de validation
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Eclipse Plug-ins Factory
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
L’intégration continue
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Design Pattern MVC En PHP5.
Copyright © – ESUP-Portail esup-commons : où en est-on ? Pascal Aubry IFSIC / Université de Rennes 1
Cours Présenté par …………..
Filière Informatique et Réseaux
Les Enterprise Service Bus
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
LES OUTILS POUR LA GOUVERNANCE DES DONNÉES LA PASSION DES DONNÉES LA PRÉCISION DES RÉSULTATS.
Forum JEE: framework STRUTS 1 et iBATIS
MIAGE MASTER 1 Cours de gestion de projet
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
TDD & Legacy By Agile4Techos. Qui sommes nous? Bernard Huguet Luc Jeanniard Johan Martinsson Cyrille Roy.
XML-Family Web Services Description Language W.S.D.L.
« Les Mercredis du développement » Retour dexpérience / Framework de dév. Présenté par Grégory Renard [Rédo] Responsable Développement.
Principes de persistance dans les applications orienté objet
ECF 5 PRESENTATION « BULLE APPLICATIVE »
Tests unitaires et fonctionnels
Projet JAVA EE Approfondi
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
L’utilisation des bases de données
.Net Remoting.
Coding Dojo - Randori sur le TDD Anthony Hurot Octobre 2010.
Présentation du mémoire
Java Authentication And Authorization Service API
Projet de Master première année 2007 / 2008
Outils de test fonctionnel et non fonctionnel
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Eric Vernié, Développer une application en couches avec Visual Basic.NET 2005.
Patrons de conceptions de créations
‘‘Open Data base Connectivity‘‘
Tour d’horizon des outils d’aide au développement Java
Test logiciel Xavier Baril.
SOMMAIRE  Introduction  BCO / Toolbox aujourd’hui  Recommandations pour BCO  CRP aujourd’hui  Recommandations pour CRP  La base de données  Recommandations.
SIMPLIFICATION DES EQUATIONS LOGIQUES
Annexe 1 Tests unitaires d'applications Java avec JUNIT
TDD & Legacy By Agile4Techos.
L’évaluation.
Concept et utilisation.  1)Présentation du produit  2) Adaptation au contexte  3) Déploiement actuel  4) Forces et faiblesses.
Vérification dans le cycle de vie GEF492A 2014 Référence: [HvV §14.2, 14.9] Capt Vincent Roberge Collège Militaire Royal du Canada Génie électrique et.
22 DBA DAY - Administrer facilement des environnements SGBD hétérogènes Anthony Moillic Directeur Technique
Introduction à la plateforme .NET
Introduction au Génie Logiciel
Les outils de la vérification statiquedynamique unitaires intégration vérificateur de syntaxe vérificateur de syntaxe étenduABAP débogueur inspecteur de.
BEWITCHED 12/10/2006 Soutenance GLAO #5 slide 1 Soutenance GLAO #5 AGL & SYGIME Bewitched Team 12 Octobre 2006.
FTP : File Transfer Protocol (protocole de transfert de fichier ) est un protocole de communication destiné à l'échange informatique de fichiers sur.
Struts.
MOCK.
Entity/Facet/Pattern Une application qui en a…
RAPPORT DU PROJET IUT CALAIS D’oria Antony Rue Louis David
Une nouvelle manière de visualiser le fichier de contrôle de System Automation LUDIWAC ® Helcia Conseil.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Génie Logiciel 59 Nous testons les logiciels pour vous ! Bénazet Sébastien.
31/05/2007Projet Master 11 Présentation ludique de la recherche opérationnelle à la fête de la science Année universitaire 2006/2007 Sylvain FIX Julien.
Test et assurance qualité : Focus Projet Outiz
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Jenkins, votre serviteur C. Loomis (CNRS/LAL) Journée LoOPS 11 décembre 2012.
RAPPORT DE STAGE DEVELOPPEMENT APPLICATION INTERNET « Domiweb » Maître de stage Hélène CEVAËR LOGICA Brest Immeuble Grand Large Quai de la Douane
Transcription de la présentation:

TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur, Stéphane Malbéqui http://blog.valtech.fr Valtech ©

Présentation de l 'équipe Yannick, Mad Développeur qui va découvrir la qualité à travers les tests Anthony, développeur qui ne peut réfléchir sans avoir testé avant Stéphane, le Scrum Master, qui manie EasyMock comme Dartagnan son épée 1) un developpeur code un business qui utilise une dep, sans tester 2) mais y'a rien qui marche !!! il faut des Tus ! 3)il ecrit le TU, couverture pas bonne, tu n'as pas testé tous les aspects de ton code(coverage, etc..) : exception, cas aux limites 4) il faut bouchonner, en injectant : on refactore 5) avec une classe anonyme 6) avec easymock (pourquoi pas ?) 7) on est à la bourre, t'arretes tes tests maintenant ! => on a la pression de pas faire de tests après coup 8)on fait en TDD : un nouveau cas où on met en excergues l'utilité des frameworks de mock : exemple du cache et des verify TDD : avec ou sans Mocks ? Valtech ©

Sommaire de la présentation Yannick découvre les tests unitaires Comment va-t-il surpasser le problème des dépendances ? Yannick maitrise ses dépendances ! Mais pourquoi ne pas découper le code autour de la dépendance ? Vers TDD ... Conclusion 1) un developpeur code un business qui utilise une dep, sans tester 2) mais y'a rien qui marche !!! il faut des Tus ! 3)il ecrit le TU, couverture pas bonne, tu n'as pas testé tous les aspects de ton code(coverage, etc..) : exception, cas aux limites 4) il faut bouchonner, en injectant : on refactore 5) avec une classe anonyme 6) avec easymock (pourquoi pas ?) 7) on est à la bourre, t'arretes tes tests maintenant ! => on a la pression de pas faire de tests après coup 8)on fait en TDD : un nouveau cas où on met en excergues l'utilité des frameworks de mock : exemple du cache et des verify TDD : avec ou sans Mocks ? Valtech ©

Sommaire de la présentation Qu'est ce qu'un Test Unitaire Problèmes de dépendances de couches Plusieurs façons d'y remédier : Sans bouchonner En bouchonnant Faut il utiliser un framework de mocks ? TDD : pourquoi et comment ? Conclusion 1) un developpeur code un business qui utilise une dep, sans tester 2) mais y'a rien qui marche !!! il faut des Tus ! 3)il ecrit le TU, couverture pas bonne, tu n'as pas testé tous les aspects de ton code(coverage, etc..) : exception, cas aux limites 4) il faut bouchonner, en injectant : on refactore 5) avec une classe anonyme 6) avec easymock (pourquoi pas ?) 7) on est à la bourre, t'arretes tes tests maintenant ! => on a la pression de pas faire de tests après coup 8)on fait en TDD : un nouveau cas où on met en excergues l'utilité des frameworks de mock : exemple du cache et des verify TDD : avec ou sans Mocks ? Valtech ©

Qu'est ce qu'un test unitaire ? Un test unitaire est du code technique qui teste une petite partie de code fonctionnel telle qu’une classe ou une méthode Un test unitaire doit être indépendant répétable simple et rapide à développer et à exécuter exécutable automatiquement TDD : avec ou sans Mocks ? Valtech ©

Problèmes rencontrés... Les applications sont généralement architecturées « en couches » Ce qui induit des dépendances entre composants et des difficultés à tester Lenteur de la dépendance (base de données) Pas d'accès à la dépendance (composant non disponible) Comportement non déterministe (temps réel) Comment tester du code indépendamment des autres couches ? TDD : avec ou sans Mocks ? Valtech ©

Injection des dépendances! Solution Injection des dépendances! TDD : avec ou sans Mocks ? Valtech ©

Sans utiliser un framework de Mocks En utilisant des classes anonymes! Héritent de ou implémentent la dépendance En surchargeant les méthodes dont on a besoin Orchestrer son code autour de la dépendance Extraire le code avant et après l'appel à la dépendance Ne tester uniquement les méthodes extraites TDD : avec ou sans Mocks ? Valtech ©

Un Framework de Mocks ? Pour faciliter la simulation des dépendances Sans passer par une classe anonyme Sans découper le code autour de la dépendance Pour vérifier que la dépendance a été correctement utilisée Que l'on bien appelé methodeA() 2 fois Que l'on a bien appelé methodeB(paramA) avec la valeur attendue de paramA TDD : avec ou sans Mocks ? Valtech ©

Utilisation d'un framework de mocks Création du mock (create dans EasyMock) Configuration du mock (expect et return dans EM) Injection du mock dans la classe testée Enregistrement du mock (replay dans EM) Éventuellement, vérification (verify dans EM) TDD : avec ou sans Mocks ? Valtech ©

TDD : pourquoi et comment ? Introduit en 1999 par Kent Beck Si je sais tester mon code, alors je sais l'implémenter ! D'abord faire échouer le test, ensuite écrire une première implémentation TDD : avec ou sans Mocks ? Valtech ©

Conclusion Choisir une architecture facilitant les tests Tester de manière unitaire et découplée Privilégier les frameworks de tests Tests souvent plus faciles à maintenir Couverture des tests possibles à 100% Cependant, pas toujours indispensables (cas simples) TDD : avec ou sans Mocks ? Valtech ©

Aller Plus loin ! Frameworks de tests unitaires : JUnit, TestNG (Java), MbUnit, Nunit, MsTest (.NET), TestUnit (Ruby) PhpUnit (PHP) Frameworks de Mocks Objects : EasyMock, Moquito (Java), RhinoMock (.NET), Mocha (Ruby) TDD : Pragmatic unit testing with Java & JUNit, Dave Thomas Test Driven Development by example, Kent Beck http://www.MockObjects.com/book TDD : avec ou sans Mocks ? Valtech ©