SlideShare une entreprise Scribd logo
1  sur  92
Télécharger pour lire hors ligne
@codingpartner
Développement piloté par
les tests (TDD)
1
@ffalardeau
Développement piloté par
les tests (TDD)
2
Le logiciel propulse nos vies
3
Il est partout autour de nous
4
… et les erreurs coûtent cher
5
Tout va bien
6
La pression est sur le développeur
7
La pression est sur le développeur
8
Aussi bien aller jouer
9
Diagramme d’influence
10
Diagramme d’influence
11
Voici comment on reste zen !
12
Développement piloté par les tests
13
Diagramme d’influence
14
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on automatise les tests ?
● Comment écrire un bon test !
● Pourquoi commencer par les tests ?
● Retour d’expérience
15
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on automatise les tests ?
● On écrit un test
● Pourquoi commencer par les tests ?
● Retour d’expérience
16
Un nom
17
Une attente
18
Un comportement observé
19
Le résultat
20
Pourquoi on test ? 2 axes
“Are we building the right product ?”
“Are we building the product right ?”
- Dr. Barry W. Boehm
21
Catégorisation des tests
22
Les 2 types
23
Exemple de test écrit avec le client
Feature: Produce a single child file
Background:
Given a child registered with:
|first name |George |
|last name |Orwell |
|birth date |2007-03-23 |
|bottle |no |
|allergies |peanuts |
Scenario: Produce a basic child file
When I consult "George" "Orwell"'s file
And I see that his name is "George" "Orwell"
And I see that his birth date is "23 March 2007"
And I see that he does not expects a bottle
And I see that he is allergic to peanuts
24
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on automatise les tests ?
● Comment écrire un bon test !
● Pourquoi commencer par les tests ?
25
Parce que c’est rapide !
26
27
WHY: Rapidité !
28
Pour réhumaniser le rôle de testeur
”Manual testing is immoral.
Not only is it high stress,
tedious, and error prone it’s
just wrong to turn humans into
machines.” - Uncle Bob, Robert C Martin
29
Mais aussi pour ...
● Ne pas causer de régression
30
Mais aussi pour ...
● Livrer continuellement à
un rythme stable
31
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on test ?
● On écrit un test
● Pourquoi commencer par les tests ?
● Retour d’expérience
32
Cycle du TDD
Faire passer
le test
Refactoriser
Écrire un
test qui
échoue
33
Jouons au ping pong
34
Jouons au ping pong
Francis Nicholas
35
Rouge
36
Rouge
37
Rouge ?
38
On regarde le test échouer
39
Rouge
40
Rouge
41
Vert
42
Rouge
43
Rouge
44
Vert
45
Cycle du TDD
Faire passer
le test
Refactoriser
Écrire un
test qui
échoue
46
Cycle du TDD
47
Que faut-il faut changer?
48
Bleu
49
Bleu
50
2e ronde
Francis Nicholas
51
Rouge
52
Rouge
53
PING !
54
PONG !!
55
Bleu - Amélioration ?
56
PING !
57
PONG !
58
Bleu
59
Bleu
60
Bleu
61
Bleu
62
Bleu
63
Bleu
64
On nettoie continuellement
65
PING !
66
Final PONG !
67
Qui dit mieux ?
68
Comment écrire le premier test
• Ne soyez pas trop gourmand (petit pas)
• Choisir quelque chose qui va passer au vert
rapidement
Par exemple :
▪ Une opération sans effet (+ 0, * 0)
69
Comment choisir le prochain test
• Un test qui va vous rapproche de la
fonctionnalité souhaité
• Un test que vous êtes confiant de savoir faire
passer rapidement
70
Lignes directrices
• Viser à faire passer les tests le plus tôt possible
• Ne jamais passer outre l’étape de refactoring
• Programmer avec le but de partager vos
intentions
71
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on test ?
● On écrit un test
● Pourquoi commencer par les tests ?
● Retour d’expérience
72
Pourquoi commencer par les tests ?
● Couverture de test complète (haut niveau de
confiance)
● Garde le code propre continuellement (donc
facilement maintenable)
● Influence le design du code
73
Le plan !
● Qu’est-ce qu’un test ?
● Pourquoi on test ?
● On écrit un test
● Pourquoi commencer par les tests ?
● Retour d’expérience
74
Les pièges à éviter(pitfalls)
75
La folie des tests d’intégration
76
Un cas “simple”
Validation des achats d’une minuscule boutique.
● 3 langues
● 12 devises
● 10 modes de paiements
● 10 items à vendre
En intégration: 3*12*10*10 = 3600 cas des tests
En isolation : 3+12+10+10 = 35 cas de tests.
77
Mock, Stubs, Fakes, Dummies, etc
78
Test Doubles ≈ Stunt Doubles
79
Exemple de la bibliothèque
80
On écrit un double
81
Un test complet
82
Une pratique qui est encore débattue
“Je n’ai pas besoin de test parce que je
n’écris pas de bug ...”
“Nous avons essayé le TDD, mais ça
ne fonctionne pas ...”
83
On doit repousser les limites de
l’automatisation
84
Les autres types de tests
■ Tests exploratoires
■ Tests de caractérisation
■ Tests A/B
■ Tests de charge
■ Tests d’utilisabilité
■ Tests de performance
■ ….
85
Une histoire
86
… vers la tranquilité d’esprit
87
Tranquilité d’esprit
88
Merci !
Des questions ?
@codingpartner
@ffalardeau
89
Bonus !
@codingpartner
@ffalardeau
90
Demandez-nous l’histoire des millions de raptor !
91
Références
● Test Driven Development(livre) : https://www.amazon.ca/Test-Driven-Development-Kent-Beck/dp/0321146530
● Automatiser les tests à tous les niveaux: http://www.slideshare.net/vtence/confoo-2012-kata
● Le cas de Volkswagen(James liang)
https://www.nytimes.com/2017/08/25/business/volkswagen-engineer-prison-diesel-cheating.html
● TDD with Acceptance Tests and Unit Tests:
https://sites.google.com/site/unclebobconsultingllc/tdd-with-acceptance-tests-and-unit-tests
● Guidelines for validating and verifying software:
http://csse.usc.edu/csse/TECHRPTS/1979/usccse79-501/usccse79-501.pdf
● Is TDD dead ? http://martinfowler.com/articles/is-tdd-dead/
● Automating angry birds: https://www.youtube.com/watch?v=M1G45xkFuU0
● Justin Searls reality is expensive :
https://speakerdeck.com/searls/reality-is-expensive-a-better-way-of-thinking-about-mock-objects
● Intregration tests are a scam: http://www.jbrains.ca/series/integrated-tests-are-a-scam
● RailsConf 2015 keynote(when the wind blows, I sleep at night) https://www.youtube.com/watch?v=aApmOZwdPqA
● Code Smells: http://c2.com/cgi/wiki?CodeSmell
● Twitter: https://twitter.com/codingpartner
92
Matériel supplémentaire
● Test Driven Development(livre) : https://www.amazon.ca/Test-Driven-Development-Kent-Beck/dp/0321146530
● Références sur le TDD: https://github.com/testdouble/contributing-tests/wiki/Test-Driven-Development
● Reality is expensive(mocks, stubs,)
https://speakerdeck.com/searls/reality-is-expensive-a-better-way-of-thinking-about-mock-objects
● Test d’intégrations et l’implication du QA
https://sites.google.com/site/unclebobconsultingllc/tdd-with-acceptance-tests-and-unit-tests
● Not just code monkeys(Martin Fowler sur le professionnalisme) https://www.youtube.com/watch?v=4E3xfR6IBII

Contenu connexe

Similaire à Présentation TDD UQAM

Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Jean-Pierre Lambert
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisésNathaniel Richand
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLy-Jia Goldstein
 
Web-formation | La Méthode de Résolution de Problèmes
Web-formation | La Méthode de Résolution de ProblèmesWeb-formation | La Méthode de Résolution de Problèmes
Web-formation | La Méthode de Résolution de ProblèmesXL Groupe
 
Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Clément Rochas
 
Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Frantz Degrigny
 
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 2022martinsson
 
Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerEric Hogue
 
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 testingGeeks Anonymes
 
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...Samuel Le Berrigaud
 
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 teamsThierry Gayet
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
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 AgileAgile Tour 2009 Québec
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 

Similaire à Présentation TDD UQAM (20)

Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
 
Web-formation | La Méthode de Résolution de Problèmes
Web-formation | La Méthode de Résolution de ProblèmesWeb-formation | La Méthode de Résolution de Problèmes
Web-formation | La Méthode de Résolution de Problèmes
 
Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016
 
Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?
 
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
 
Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguer
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
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
 
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...
Agile Tour Strasbourg: 7 idées pour faire d'une bonne équipe une équipe excep...
 
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
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
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
 
Scrum vs XP
Scrum vs XPScrum vs XP
Scrum vs XP
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 

Présentation TDD UQAM