SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Une architecture agile
et testable
3 clés pour réussir
l’automatisation des tests à l'échelle
$ whoami
• Java, javascript, Clojure, C#, PHP
• Independant, joueur d'équipe
• Craftsmanship
• Passionné du code et design du soft
• Ouvert
!
martinsson.johan@gmail.com
@johan_alps
A retenir
1. Ecouter les tests - Modeler pour testabilité
2. Trois types de tests
• Unit, Adapter, Application
3. Prenez le contrôle du main()
Ecouter les tests
• “Sometimes we find it difficult to write a test …
this usually means that our design can be
improved” - S. Freeman, N. Pryce
• “The tests are a canary in coal mining revealing
by their distress the presence of evil design
vapors” - Kent Beck
Ecouter les tests
• Les tests nous disent 

“fais qq chose!”
• A nous de trouver
• Il y en a toujours
• Parfois nous ne connaissons pas encore
Dogfooding
http://goo.gl/E655Qm
Carte
• Problème!
• Pyramide des tests
• Adaptateurs + tests
• Tests d’application + Composition root
• Résultat flexible
http://freeimages.com/photo/road-map-paris-119
TDD était top!
• Nombre romains, FizzBuzz!
• jusqu’à ce qu’on le fasse avec du vrai code.
On visait le ciel
• Tester l'ensemble!
• Avec vraies dépendances!
• De façon rapide et fiable!
• Couvrir tout
… on atterit en enfer!
• Dommages collatéraux!
• Evolutions => faux négatifs!
• Dépendances volatiles !
• Instabilité => faux négatifs!
• Lenteurs => huile sur le feu
Dommages collatéraux
• Evolution données de test

• Nouvelle fonctionnalité

• Assertions trop strictes
expect(resultFile).to.equal(referenceFile)
Dépendances Volatiles
• Difficiles à initialiser, pas dispos
• Etat persistant
• Lents
• Erratic
• Debug-a-lot
Carte
• Problème
• Pyramide des tests!
• Adaptateurs + tests
• Tests d’application + Composition root
• Résultat flexible
Dommages collatéraux
• Solution
• Tester plus bas
• Assertions

précises
Coût de maintenance constante!
Carte
• Problème
• Pyramide des tests
• Adaptateurs + tests!
• Tests d’application + Composition root
• Résultat flexible
Tests d'adaptateur
• Encapsuler avec une interface minimaliste -
ADAPTER
• Tester à fond avec “la vraie"
Adapter
Interfaces
Adapters
Web!
Service X
Message!
queue
Adapter
Adapter!
test
Code simplifié
L'adaptateur
Tests de l'adapteur
C’est testé à fond!
Avantages
• Adapteurs sont (plus) faciles à tester en isolation
• le reste est facile à tester - stub et mock
Inconvénients
• A court d’excuses! :)
• Pas de tests qui traversent la frontière
Mais encore!
Changez de techno!
• Faites passer le test.
• Poussez en prod!
Sert d'avertissement
• Vous saurez pourquoi vos tests systèmes
plantent … 10 min avant qu’ils tournent!
• Debug
• Pas pollué par bugs d’autres équipes
• Donnez-vos tests
Adaptateurs résumé
• Faciles à tester en isolation
• Changement d’outil simple
• Code simplifié
• Moins de debug
Résumons
• Isolation des difficultées
• Bas niveau couvert
• Quid du
• branchement?
• des refactorings importants?
Carte
• Problème
• Pyramide des tests
• Adaptateurs + tests
• Tests d’application + Composition root!
• Résultat flexible
Tests d'application
• Sans dépendences volatiles
• L’ensemble de l'appli
• Facile, rapide et fiable
Tests d'application
• Composition Root / Main module
• 2 phases
1. Build hard-to-test objects
2. Use those to build the rest: 

new Application(fakeDB, fakeWSClient,
tmpDir)
Composition Root - Dependency Injection in .NET
Main module - Bob Martin
Carte
• Problème
• Pyramide des tests
• Adaptateurs + tests
• Tests d’application + Composition root
• Résultat flexible
Autre tests
• Tests système complêt

(frontière manquante)
• UI
• Micro-services?
• Stress-, performance-tests => parametrer tests
existants
De quoi devons nous nous
isoler
• Services web
• Bases de données (habituellement)
• Processes tierces
• Serveurs d’application
• IHMs
• Lenteurs (frameworks injection, attentes, …)
Conclusions
• Tester bas niveau
• Unit & Adapter => stabilité, rapidité, isolation
• Moins besoin tests haut niveau
• Tester => pression code/architecture
• Application malléable
A retenir
1. Ecouter les tests - Modeler pour testabilité
2. Trois types de tests
• Unit, Adapter, Application
3. Prenez le contrôle du main()
Conclusions
• Tester bas niveau
• Unit & Adapter => stabilité, rapidité, isolation
• Moins besoin tests haut niveau
• Tester => pression code/architecture
• Application malléable

Weitere ähnliche Inhalte

Andere mochten auch

Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutablesSoigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
Agile Tour Genève
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp En
Gregory Renard
 
Fondation recherche médicale - schizophrénie
Fondation recherche médicale - schizophrénieFondation recherche médicale - schizophrénie
Fondation recherche médicale - schizophrénie
schizophrenie
 

Andere mochten auch (7)

Specification By Example
Specification By ExampleSpecification By Example
Specification By Example
 
Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutablesSoigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
Soigner sa schizophrénie MOA/MOE - Voyage au pays des spécifications exécutables
 
L'art du maniement des exigences agiles
L'art du maniement des exigences agilesL'art du maniement des exigences agiles
L'art du maniement des exigences agiles
 
You code sucks, let's fix it
You code sucks, let's fix itYou code sucks, let's fix it
You code sucks, let's fix it
 
Introdot Netc Sharp En
Introdot Netc Sharp EnIntrodot Netc Sharp En
Introdot Netc Sharp En
 
Agile Tour Toulouse 2015 - Patch bonheur au travail
Agile Tour Toulouse 2015 - Patch bonheur au travailAgile Tour Toulouse 2015 - Patch bonheur au travail
Agile Tour Toulouse 2015 - Patch bonheur au travail
 
Fondation recherche médicale - schizophrénie
Fondation recherche médicale - schizophrénieFondation recherche médicale - schizophrénie
Fondation recherche médicale - schizophrénie
 

Ähnlich wie Une architecture agile et testable

PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
Cyrille Grandval
 
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
 
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Agilbee (Patrice Petit)
 

Ähnlich wie Une architecture agile et testable (20)

PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
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)
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 

Mehr von martinsson

Pyramide des tests
Pyramide des testsPyramide des tests
Pyramide des tests
martinsson
 

Mehr von martinsson (15)

Split my monolith - Workshop
Split my monolith - WorkshopSplit my monolith - Workshop
Split my monolith - Workshop
 
TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022
 
Testing strategies
Testing strategiesTesting strategies
Testing strategies
 
Testing strategies visualized
Testing strategies visualizedTesting strategies visualized
Testing strategies visualized
 
Split my monolith! Workshop
Split my monolith! Workshop Split my monolith! Workshop
Split my monolith! Workshop
 
No Agility without Continuous Delivery
No Agility without Continuous DeliveryNo Agility without Continuous Delivery
No Agility without Continuous Delivery
 
No agility without continuous delivery frugagile
No agility without continuous delivery   frugagileNo agility without continuous delivery   frugagile
No agility without continuous delivery frugagile
 
De legacy au tdd agilegrenoble
De legacy au tdd   agilegrenobleDe legacy au tdd   agilegrenoble
De legacy au tdd agilegrenoble
 
De legacy au tdd - Agile pays basque
De legacy au tdd  - Agile pays basqueDe legacy au tdd  - Agile pays basque
De legacy au tdd - Agile pays basque
 
Usable software design ncraft
Usable software design ncraftUsable software design ncraft
Usable software design ncraft
 
Usable software design - code utilisable
Usable software design - code utilisableUsable software design - code utilisable
Usable software design - code utilisable
 
Pyramide des tests
Pyramide des testsPyramide des tests
Pyramide des tests
 
Changer Pour Mieux Coder
Changer Pour Mieux CoderChanger Pour Mieux Coder
Changer Pour Mieux Coder
 
Mikado
MikadoMikado
Mikado
 
Mikado
MikadoMikado
Mikado
 

Une architecture agile et testable