SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
FÉLIX-ANTOINE BOURBONNAIS
B. ING.,M.SC.,PSM
Confoo 2017 – Montréal
Tests unitaires
éviter les pièges & nouvelles pratiques
Imaginez…
La communauté a appris
depuis tout ce temps…
Je vous présente Alice…
Force:
Outils collectés
Félix-Antoine Bourbonnais
B.ing., PSM, M.Sc.
/ Formateur
/ Conférencier
/ Mentor et coach
$> Essais automatisés et TDD
$> Architecture évolutive et DDD
$> BDD
$> Tests en Agilité
$> Gestion du changement
Objectif: un (trop) court survol pour découvrir
d’autres façons de faire et apprendre quelques
astuces au passage 
Malheureusement, nous n’entrerons
pas dans les détails… 
Alice$>
Fait des tests unitaires
Alice$>
Son objectif principal est d’avoir
une bonne couverture et de
s’assurer que son code fonctionne
Tableau 0: Le pays des tests
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Force:
Outils collectés
Alice$ >&2
Trouve difficile de maintenir tous ses
tests et de tout tester
Alice$ >&2
Se demande pourquoi il reste encore des
« anomalies »…
Alice$ >&2
Voudrait avoir un meilleur retour sur
investissement pour ses tests…
Prochaine quête…
Force:
Outils collectés
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Alice$ <
Doit commencer à voir son test
autrement!
Le_Test? !
 court, clair, précis
 Doit lui apprendre quelque chose
Tableau 1
Le pays du test propre
Force:
Outils collectés
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Un bon test unitaire…
… est une
documentation !
Un bon test unitaire…
… teste un
comportement !
•Poser la bonne question pour commencer
Ex.: Quel comportement?
Ex.: Quel est l’état initial plutôt que de le voir comme « tester le constructeur »
•Le test doit m’apprendre une chose sur la classe testée
Vous aurez ainsi moins de tests inutiles
Le test pourra servir plus tard pour piloter et critiquer l’architecture
Le test échouera pour une seule raison
Le test facilitera le réusinage (refactoring)
Astuce
•Nommage clair
Toujours spécifier le comportement attendu et le contexte
•Séparation des « 3A » (Arrange/Act/Assert)
•Test court et clair
•Réduire le bruit
Utilisation de méthodes privées
Utilisation de Mother Objects et/ou Builders
•Enlever les tests répétitifs
Astuces
Alice$ >
Ne voit plus ses tests de la même
manière
Alice$ >
Voit le test comme un outil pour
guider son développement
Tableau 1 : Le pays du test propre
Force:
Outils collectés
🏅
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Alice$ >
A des milliers de tests
Alice$ >
Alice a toujours des problèmes de
maintenabilité à long terme
Prochaine quête…
Force:
Outils collectés
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Mes tests sont fragiles !
Alice$ <
Doit apprendre ce qu’est un test unitaire
Alice$ <
Doit apprendre à jouer avec la portée des
tests et à les boulonner
Alice$ <
Doit savoir qu’il n’existe pas seulement
des tests unitaires et des tests bout-en-
bout
Tableau 2
Le pays de la maintenabilité
Force:
Outils collectés
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
La pyramide des tests
% du portfolio
de tests auto. Large (L)
Moyen (M)
Petit (S)
Bout-
en-bout
Unitaire
~10%
~20%
~70%
Apprendre à
fragmenter ses tests
UI
Domaine
Infra
<i>
H2 Mémoire
Alice$ >
Sait maintenant comment fragmenter
ses différents tests
Alice$ >
Sait comment jouer avec la portée et les
types de tests
Tableau 2
Le pays de la maintenabilité
Force:
Outils collectés
🏅
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
… sauf que l’équipe d’Alice
travaille dans du “Legacy Code”
{… non pour vrai!}
Prochaine quête…
Le pays du Legacy Code
Force:
Outils collectés
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Tests de caractérisation
Pour en savoir plus
conferences.elapsetech.com/
legacy-tests-caracterisation
Alice$ >
Sait maintenant comment se servir de
ses tests pour explorer, comprendre, puis
réusiner en sécurité son patrimoine!
Tableau 3
Le pays du Legacy Code
Force:
Outils collectés
🏅
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
… Alice commence à comprendre qu’elle
peut se servir de ses tests comme d’un
outil !
… pourrait-elle se servir de ses tests pour
explorer et valider son architecture ?!?
Prochaine quête…
Le pays du design émergeant
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Force:
Outils collectés
TDD ou pas TDD ?
Ce n’est pas magique mais
c’est une discipline qui peut
vous aider à apprendre de
vos tests et avoir plus de fun!
Les tests font émerger
des indices (odeurs) tôt
à propos du design.
Testabilité α
Maintenabilité
public class
StuffCtrlManager
}
{
Pour en savoir plus
conferences.elapsetech.com/
tdd-mocks-architecture/
Il existe différentes écoles de TDD
et de test… Les connaître donne
plus d’options!
Les mocks: trop c’est comme pas assez !
Fragilité !
Des approches différentes selon le contexte !
Application avec un domaine
riche et beaucoup de logique
d’affaires, CRUD ou
principalement graphique ?
Alice$ >
Alice a maintenant la capacité de piloter
son architecture avec ses tests !
Tableau 4
Le pays du design émergeant
Force:
Outils collectés
🏅
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Alice maîtrise maintenant la manière
d’utiliser ses tests pour construire
correctement son code !
... Mais est-ce le bon produit ?!?
Prochaine quête…
Le pays de l’ATDD
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Force:
Outils collectés
ATDD
1
Écrire un
scénario qui
échoue
2
Scénario
passe
3
ATDD à double boucle
* Uniquement certains scénarios (voir Pyramide des tests). Pourrait être @MEDIUM ou autre portée…
Logique
(domaine)
UI
Infra /
Données
2c
Scénario A
@LARGE*
2a
2b
Scénario A
@SMALL
1c
1a
1b
BDD & Spécification par l’exemple (SbE)
Alice peut maintenant utiliser ses tests
pour piloter toutes les couches de son
produit à partir d’une compréhension
commune des besoins d’affaires!
Tableau 5
Le pays de l’ATDD
Outils collectés
🏅
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Comme Alice peut maintenant
développer incrémentalement et
“pousser” de tous petits morceaux
fonctionnels et testés…
… elle peut considérer déployer en
continue !
Le pays des étoiles
Image de Carl Warner -- carlwarner.com -- Foodscapes
Utilisée avec la permission de l’auteur / With the permission of the author
Outils collectés
Intégration
vraiment continue !
Outils collectés
Déploiement
continu
Outils collectés
Property Based
Testing
Testing vs
Checking
merci .
Site
elapsetech.com
Twitter
@fbourbonnais
Courriel
fbourbonnais@elapsetech.com
LinkedIn
linkedin.com/in/fbourbonnais/fr
conferences.elapsetech.com
Toutes nos conférences
conferences.elapsetech.com
/tests-unitaires-apprentissages
Diapositives et références
Félix-Antoine Bourbonnais

Contenu connexe

Similaire à Tests unitaires éviter les pièges & nouvelles pratiques

Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Guillaume Saint Etienne
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodCéline Louvet
 
Live Action : assistez à la récupération d’un AD compromis
Live Action : assistez à la récupération d’un AD compromisLive Action : assistez à la récupération d’un AD compromis
Live Action : assistez à la récupération d’un AD compromisIdentity Days
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Alexis Sukrieh
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
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/29Elapse Technologies
 
Agile France 2018 : chaos engineering
Agile France 2018 : chaos engineeringAgile France 2018 : chaos engineering
Agile France 2018 : chaos engineeringBenjamin Gakic
 
Ch4HeritageSMI2015_2016.pdf
Ch4HeritageSMI2015_2016.pdfCh4HeritageSMI2015_2016.pdf
Ch4HeritageSMI2015_2016.pdfRihabBENLAMINE
 
Les bonnes pratiques de l'architecture en général
Les bonnes pratiques de l'architecture en généralLes bonnes pratiques de l'architecture en général
Les bonnes pratiques de l'architecture en généralGeoffrey Bachelet
 
Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Jean-Michel Doudoux
 
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Xavier NOPRE
 

Similaire à Tests unitaires éviter les pièges & nouvelles pratiques (16)

Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
Tout ce que vous avez voulu savoir sur les Doublures sans jamais oser le dema...
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prod
 
Langage C#
Langage C#Langage C#
Langage C#
 
Live Action : assistez à la récupération d’un AD compromis
Live Action : assistez à la récupération d’un AD compromisLive Action : assistez à la récupération d’un AD compromis
Live Action : assistez à la récupération d’un AD compromis
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
 
VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
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
 
Agile France 2018 : chaos engineering
Agile France 2018 : chaos engineeringAgile France 2018 : chaos engineering
Agile France 2018 : chaos engineering
 
Ch4HeritageSMI2015_2016.pdf
Ch4HeritageSMI2015_2016.pdfCh4HeritageSMI2015_2016.pdf
Ch4HeritageSMI2015_2016.pdf
 
Les bonnes pratiques de l'architecture en général
Les bonnes pratiques de l'architecture en généralLes bonnes pratiques de l'architecture en général
Les bonnes pratiques de l'architecture en général
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8Voxxdays luxembourg 2016 retours java 8
Voxxdays luxembourg 2016 retours java 8
 
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
Agilistes : n'oubliez pas la technique ! - Agile France - 23/05/2013
 

Tests unitaires éviter les pièges & nouvelles pratiques

  • 1. FÉLIX-ANTOINE BOURBONNAIS B. ING.,M.SC.,PSM Confoo 2017 – Montréal Tests unitaires éviter les pièges & nouvelles pratiques
  • 3. La communauté a appris depuis tout ce temps…
  • 4. Je vous présente Alice… Force: Outils collectés
  • 5. Félix-Antoine Bourbonnais B.ing., PSM, M.Sc. / Formateur / Conférencier / Mentor et coach $> Essais automatisés et TDD $> Architecture évolutive et DDD $> BDD $> Tests en Agilité $> Gestion du changement
  • 6. Objectif: un (trop) court survol pour découvrir d’autres façons de faire et apprendre quelques astuces au passage  Malheureusement, nous n’entrerons pas dans les détails… 
  • 7.
  • 8. Alice$> Fait des tests unitaires Alice$> Son objectif principal est d’avoir une bonne couverture et de s’assurer que son code fonctionne Tableau 0: Le pays des tests Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author Force: Outils collectés
  • 9. Alice$ >&2 Trouve difficile de maintenir tous ses tests et de tout tester Alice$ >&2 Se demande pourquoi il reste encore des « anomalies »… Alice$ >&2 Voudrait avoir un meilleur retour sur investissement pour ses tests… Prochaine quête… Force: Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 10. Alice$ < Doit commencer à voir son test autrement! Le_Test? ! court, clair, précis Doit lui apprendre quelque chose Tableau 1 Le pays du test propre Force: Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 11.
  • 12. Un bon test unitaire… … est une documentation !
  • 13. Un bon test unitaire… … teste un comportement !
  • 14. •Poser la bonne question pour commencer Ex.: Quel comportement? Ex.: Quel est l’état initial plutôt que de le voir comme « tester le constructeur » •Le test doit m’apprendre une chose sur la classe testée Vous aurez ainsi moins de tests inutiles Le test pourra servir plus tard pour piloter et critiquer l’architecture Le test échouera pour une seule raison Le test facilitera le réusinage (refactoring) Astuce
  • 15. •Nommage clair Toujours spécifier le comportement attendu et le contexte •Séparation des « 3A » (Arrange/Act/Assert) •Test court et clair •Réduire le bruit Utilisation de méthodes privées Utilisation de Mother Objects et/ou Builders •Enlever les tests répétitifs Astuces
  • 16. Alice$ > Ne voit plus ses tests de la même manière Alice$ > Voit le test comme un outil pour guider son développement Tableau 1 : Le pays du test propre Force: Outils collectés 🏅 Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 17. Alice$ > A des milliers de tests Alice$ > Alice a toujours des problèmes de maintenabilité à long terme Prochaine quête… Force: Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 18. Mes tests sont fragiles !
  • 19. Alice$ < Doit apprendre ce qu’est un test unitaire Alice$ < Doit apprendre à jouer avec la portée des tests et à les boulonner Alice$ < Doit savoir qu’il n’existe pas seulement des tests unitaires et des tests bout-en- bout Tableau 2 Le pays de la maintenabilité Force: Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 20. La pyramide des tests % du portfolio de tests auto. Large (L) Moyen (M) Petit (S) Bout- en-bout Unitaire ~10% ~20% ~70%
  • 21. Apprendre à fragmenter ses tests UI Domaine Infra <i> H2 Mémoire
  • 22. Alice$ > Sait maintenant comment fragmenter ses différents tests Alice$ > Sait comment jouer avec la portée et les types de tests Tableau 2 Le pays de la maintenabilité Force: Outils collectés 🏅 Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 23. … sauf que l’équipe d’Alice travaille dans du “Legacy Code” {… non pour vrai!} Prochaine quête… Le pays du Legacy Code Force: Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 24. Tests de caractérisation Pour en savoir plus conferences.elapsetech.com/ legacy-tests-caracterisation
  • 25. Alice$ > Sait maintenant comment se servir de ses tests pour explorer, comprendre, puis réusiner en sécurité son patrimoine! Tableau 3 Le pays du Legacy Code Force: Outils collectés 🏅 Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 26. … Alice commence à comprendre qu’elle peut se servir de ses tests comme d’un outil ! … pourrait-elle se servir de ses tests pour explorer et valider son architecture ?!? Prochaine quête… Le pays du design émergeant Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author Force: Outils collectés
  • 27. TDD ou pas TDD ? Ce n’est pas magique mais c’est une discipline qui peut vous aider à apprendre de vos tests et avoir plus de fun!
  • 28. Les tests font émerger des indices (odeurs) tôt à propos du design.
  • 30. Pour en savoir plus conferences.elapsetech.com/ tdd-mocks-architecture/ Il existe différentes écoles de TDD et de test… Les connaître donne plus d’options!
  • 31. Les mocks: trop c’est comme pas assez ! Fragilité !
  • 32. Des approches différentes selon le contexte ! Application avec un domaine riche et beaucoup de logique d’affaires, CRUD ou principalement graphique ?
  • 33. Alice$ > Alice a maintenant la capacité de piloter son architecture avec ses tests ! Tableau 4 Le pays du design émergeant Force: Outils collectés 🏅 Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 34. Alice maîtrise maintenant la manière d’utiliser ses tests pour construire correctement son code ! ... Mais est-ce le bon produit ?!? Prochaine quête… Le pays de l’ATDD Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author Force: Outils collectés
  • 36. ATDD à double boucle * Uniquement certains scénarios (voir Pyramide des tests). Pourrait être @MEDIUM ou autre portée… Logique (domaine) UI Infra / Données 2c Scénario A @LARGE* 2a 2b Scénario A @SMALL 1c 1a 1b
  • 37. BDD & Spécification par l’exemple (SbE)
  • 38. Alice peut maintenant utiliser ses tests pour piloter toutes les couches de son produit à partir d’une compréhension commune des besoins d’affaires! Tableau 5 Le pays de l’ATDD Outils collectés 🏅 Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  • 39. Comme Alice peut maintenant développer incrémentalement et “pousser” de tous petits morceaux fonctionnels et testés… … elle peut considérer déployer en continue ! Le pays des étoiles Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author Outils collectés
  • 42.