SlideShare une entreprise Scribd logo
Ecrire un Code
TESTABLE
Mohamed Cherif BOUCHELAGHEM
Twitter: @cherif_b
Problème
Code difficile à changer
Bugs difficile à détecter
Solution
ingle responsability principle
pen/Closed Closed principle
iskov substitution principle
nterface Segregation principle
ependency injection
Robert C. Martin (Uncle BOB)
L’auteur du livre ‘Clean code’ (Coder proprement)
Single responsability
principle
SOLID « S » Principe de Responsabilité unique
Une classe n’a qu’une, et une seule,
raison de changer
SOLID « S »
Principe de Responsabilité unique
SOLID « S »
Principe de Responsabilité unique
• La solution est de diviser la classe en deux , une
pour communication avec le web service et la
deuxième pour passer les donner à notre objet
• Le web service sera ‘Mocké’ dans le test
facilement
• Des méthodes plus petites, moins de
dépendances entre les méthodes et moins de
régression
OPEN/CLOSED
PRINCIPLE
Le code doit être ouvert à l’extension
mais fermé à la modification.
SOLID « O »
OPEN/CLOSED PRINCIPLE
SOLID « O »
OPEN/CLOSED PRINCIPLE
Problème si on veux rajouter un autre réseau social
switch/case n’est pas une solution (anti-pattern)
SOLID « O »
OPEN/CLOSED PRINCIPLE
SOLID « O »
OPEN/CLOSED PRINCIPLE
Augmente la testabilité du code
Chaque service peut être testé séparément
LISKOV Substitution
Principle
SOLID « L »
LISKOV Substitution Principle
Si “S” est un sous-type de “T”, alors tout objet de type “T” peut être
remplacé par un objet de type “S” sans altérer les propriétés désirables du
programme concerné.
Violation du principe Carre n’est pas un
rectangle
SOLID « L »
LISKOV Substitution Principle
Implémentation du principe avec le design pattern Adaptateur
SOLID « L »
LISKOV Substitution Principle
Interface Segregation
Principle
SOLID « I »
Interface Segregation Principle
Quand on envoie un SMS est ce qu’on a besoin d’email??
SOLID « I »
Interface Segregation Principle
SRP respecté, moins de tests par classe, moins de dépendance entre méthodes
Dependency Injection
principle
SOLID « D »
Dependency Injection Principle
Injection de dépendance
• SRP pour les acteurs et l’architecture de haut
niveau
• OCP pour la conception et l’extension des
fonctionnalités
• LSP pour l’héritage et sous typage
• ISP pour la communication entre la logique métier
et les clients (MVC, applications tierces…etc)
• DIC pour le découplage,
En résumé
L’application est un ensemble de
briques découplées (Composants)
Si SOLID sont bien
appliqués
On va constater que
Le Web, c’est juste un système de
livraison (PIPE)
La base de données c’est qu’un
détail
Le framework n’est pas le centre
du monde de notre application
Autrement dit
Autrement dit
Le framework nous aide juste dans
ces aspects de l’application
Logique métier est le
cœur de notre application
Tests Unitaire (Unit tests)
Choisissez votre aventure
Questions
Références

Contenu connexe

En vedette

Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura FamiliarReforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Barzón Nacional
 
Previna-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendasPrevina-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendas
Rakuten Brasil
 
Portales de colombia
Portales de colombiaPortales de colombia
Portales de colombia
LeidyPG1108
 
Windows presentation fundation introduccion
Windows presentation fundation introduccionWindows presentation fundation introduccion
Windows presentation fundation introduccion
Arely Guevara
 
Oretic présentation ceser 27sept2012
Oretic   présentation ceser 27sept2012Oretic   présentation ceser 27sept2012
Oretic présentation ceser 27sept2012
Fanch Daniel
 
Historia de la pc y generaciones
Historia de la pc y generacionesHistoria de la pc y generaciones
Historia de la pc y generaciones
ZuLmiitha Hernnanndezs
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
Cherif Bouchelaghem
 
Geasoc utilidad pública
Geasoc utilidad públicaGeasoc utilidad pública
Geasoc utilidad pública
Geasoc
 
Informatica i
Informatica iInformatica i
Informatica i
liizzk
 
Webquest
Webquest  Webquest
Webquest
vbarrigas98
 
Gestion et prévention des conflits mylène lavoie
Gestion et prévention des conflits mylène lavoieGestion et prévention des conflits mylène lavoie
Gestion et prévention des conflits mylène lavoie
UNDP regional center for Africa
 
Reforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la AgriculturaReforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la Agricultura
Barzón Nacional
 
Caractéristiques et transitions démographiques ouest-africaines
Caractéristiques et transitions démographiques ouest-africainesCaractéristiques et transitions démographiques ouest-africaines
Caractéristiques et transitions démographiques ouest-africaines
Sahel and West Africa Club (SWAC/OECD)
 
La Sociedad de Información
La Sociedad de InformaciónLa Sociedad de Información
La Sociedad de Información
rebeca_or
 
Herramientas Digitales
Herramientas Digitales Herramientas Digitales
Herramientas Digitales
LilianaMAguilar
 
Atelier juridique CCI de Bordeaux
Atelier juridique CCI de BordeauxAtelier juridique CCI de Bordeaux
Atelier juridique CCI de Bordeaux
CCI de Bordeaux
 
Les chiffres clés de l’internet en france
Les chiffres clés de l’internet en franceLes chiffres clés de l’internet en france
Les chiffres clés de l’internet en franceFrançois Bontemps
 
Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...
Union des Villes et Communes de Wallonie
 

En vedette (20)

Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura FamiliarReforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
Reforma al Campo- Propuestas para incentivar la Pequeña Agricultura Familiar
 
Previna-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendasPrevina-se da fraude de forma eficiente e aumente suas vendas
Previna-se da fraude de forma eficiente e aumente suas vendas
 
Portales de colombia
Portales de colombiaPortales de colombia
Portales de colombia
 
Windows presentation fundation introduccion
Windows presentation fundation introduccionWindows presentation fundation introduccion
Windows presentation fundation introduccion
 
Oretic présentation ceser 27sept2012
Oretic   présentation ceser 27sept2012Oretic   présentation ceser 27sept2012
Oretic présentation ceser 27sept2012
 
Historia de la pc y generaciones
Historia de la pc y generacionesHistoria de la pc y generaciones
Historia de la pc y generaciones
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Ch2 representation
Ch2 representationCh2 representation
Ch2 representation
 
Geasoc utilidad pública
Geasoc utilidad públicaGeasoc utilidad pública
Geasoc utilidad pública
 
Informatica i
Informatica iInformatica i
Informatica i
 
Webquest
Webquest  Webquest
Webquest
 
Gestion et prévention des conflits mylène lavoie
Gestion et prévention des conflits mylène lavoieGestion et prévention des conflits mylène lavoie
Gestion et prévention des conflits mylène lavoie
 
Reforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la AgriculturaReforma al Campo- Uso eficiente del Agua en la Agricultura
Reforma al Campo- Uso eficiente del Agua en la Agricultura
 
Caractéristiques et transitions démographiques ouest-africaines
Caractéristiques et transitions démographiques ouest-africainesCaractéristiques et transitions démographiques ouest-africaines
Caractéristiques et transitions démographiques ouest-africaines
 
La Sociedad de Información
La Sociedad de InformaciónLa Sociedad de Información
La Sociedad de Información
 
Herramientas Digitales
Herramientas Digitales Herramientas Digitales
Herramientas Digitales
 
Atelier juridique CCI de Bordeaux
Atelier juridique CCI de BordeauxAtelier juridique CCI de Bordeaux
Atelier juridique CCI de Bordeaux
 
Les chiffres clés de l’internet en france
Les chiffres clés de l’internet en franceLes chiffres clés de l’internet en france
Les chiffres clés de l’internet en france
 
La pollution
La pollutionLa pollution
La pollution
 
Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...Les outils de conception de l’aménagement du territoire: comment les choses é...
Les outils de conception de l’aménagement du territoire: comment les choses é...
 

Similaire à Ecrire un code Testable

SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​
Vincent Petetin
 
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
Christophe HERAL
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
VINOT Bernard
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
Rémi Lesieur
 
Le comportement au coeur de vos applications
Le comportement au coeur de vos applicationsLe comportement au coeur de vos applications
Le comportement au coeur de vos applications
Benoit FONTAINE
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite unique
Nicolas Capponi
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
RomainKuzniak
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdf
badrfathallah2
 
Injection de dependances - Les bases
Injection de dependances - Les basesInjection de dependances - Les bases
Injection de dependances - Les bases
Olivier Spinelli
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
Duchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
agnes_crepet
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
Normandy JUG
 
MD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un emailMD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un email
Contactlab
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgile Toulouse
 
E-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un emailE-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un email
Contactlab
 
Clean code en pratique
Clean code en pratiqueClean code en pratique
Clean code en pratique
Jérôme Avoustin
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
Microsoft
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
Interface Definition Language
Interface Definition Language Interface Definition Language

Similaire à Ecrire un code Testable (20)

SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​SOLID Maitrisez votre programmation Objet​
SOLID Maitrisez votre programmation Objet​
 
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
 
Le comportement au coeur de vos applications
Le comportement au coeur de vos applicationsLe comportement au coeur de vos applications
Le comportement au coeur de vos applications
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite unique
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdf
 
Injection de dependances - Les bases
Injection de dependances - Les basesInjection de dependances - Les bases
Injection de dependances - Les bases
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
MD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un emailMD Fair 2012 - Anatomie d'un email
MD Fair 2012 - Anatomie d'un email
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratique
 
E-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un emailE-commerce Paris 2012 - Anatomie d'un email
E-commerce Paris 2012 - Anatomie d'un email
 
Clean code en pratique
Clean code en pratiqueClean code en pratique
Clean code en pratique
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
Interface Definition Language
Interface Definition Language Interface Definition Language
Interface Definition Language
 

Dernier

Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
Institut de l'Elevage - Idele
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Institut de l'Elevage - Idele
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Institut de l'Elevage - Idele
 
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
Institut de l'Elevage - Idele
 
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdfpdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
Elisée Ndjabu
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
Institut de l'Elevage - Idele
 
Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
imed53
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
Institut de l'Elevage - Idele
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
sieousse95
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Institut de l'Elevage - Idele
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
Institut de l'Elevage - Idele
 

Dernier (11)

Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
 
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
 
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdfpdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
 
Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
 

Ecrire un code Testable