SlideShare une entreprise Scribd logo
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

Contenu connexe

PPTX
Pourquoi vous ne pouvez pas tester votre code
PDF
La revue de code : agile, lean, indispensable !
PPTX
[Agile Testing Day] Test Driven Development (TDD)
PPTX
[Agile Testing Day] Introduction
PPTX
C'est quoi, du bon code ?
PPTX
[Agile Testing Day] Test & Métiers
PPTX
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
PPTX
Université du soir - TDD
Pourquoi vous ne pouvez pas tester votre code
La revue de code : agile, lean, indispensable !
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Introduction
C'est quoi, du bon code ?
[Agile Testing Day] Test & Métiers
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Université du soir - TDD

En vedette (7)

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

Similaire à Une architecture agile et testable (20)

PPTX
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PDF
Le rôle du testeur et le Blackbox testing
PDF
Pratiques de développement pour équipes Agile
PDF
Tester du legacy code, mission impossible ?
PPTX
Automatisation des tests - objectifs et concepts - partie 2
PDF
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
PDF
Usine Logicielle 2013
PPT
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
PPTX
Présentation des test driven development aka tdd
PDF
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
PDF
Altran soirée du test logiciel - assez des c 05-10-17
PDF
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
PDF
20070925 04 - Panorama des outils Open Source / Qualité des développements
PPT
Retour d'expérience TAA - 2011/03/29
PDF
TDD (Test Driven Developement) et refactoring
PDF
20110519 cara tests_agiles_grenoble_all
PPTX
Essential skills for the agile developer
PDF
Valider par des tests - Blend
PDF
Deux ans de développement Agile, erreurs et succès
PDF
Strategie de test à agile tour bordeaux
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
Le rôle du testeur et le Blackbox testing
Pratiques de développement pour équipes Agile
Tester du legacy code, mission impossible ?
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)
Usine Logicielle 2013
Mise En Place De Tests En Milieu Hostile (C++, CppUnit) - 25 mai 2012
Présentation des test driven development aka tdd
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Altran soirée du test logiciel - assez des c 05-10-17
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
20070925 04 - Panorama des outils Open Source / Qualité des développements
Retour d'expérience TAA - 2011/03/29
TDD (Test Driven Developement) et refactoring
20110519 cara tests_agiles_grenoble_all
Essential skills for the agile developer
Valider par des tests - Blend
Deux ans de développement Agile, erreurs et succès
Strategie de test à agile tour bordeaux
Publicité

Plus de martinsson (15)

PDF
Split my monolith - Workshop
PDF
TDD de la vraie vie - AlpesCraft 2022
PDF
Testing strategies
PDF
Testing strategies visualized
PDF
Split my monolith! Workshop
PDF
No Agility without Continuous Delivery
PDF
No agility without continuous delivery frugagile
PDF
De legacy au tdd agilegrenoble
PDF
De legacy au tdd - Agile pays basque
PDF
Usable software design ncraft
PPTX
Usable software design - code utilisable
PDF
Pyramide des tests
PPT
Changer Pour Mieux Coder
ODP
Mikado
ODP
Mikado
Split my monolith - Workshop
TDD de la vraie vie - AlpesCraft 2022
Testing strategies
Testing strategies visualized
Split my monolith! Workshop
No Agility without Continuous Delivery
No agility without continuous delivery frugagile
De legacy au tdd agilegrenoble
De legacy au tdd - Agile pays basque
Usable software design ncraft
Usable software design - code utilisable
Pyramide des tests
Changer Pour Mieux Coder
Mikado
Mikado

Une architecture agile et testable