Après des années à faire des tests unitaires et du TDD, qu'avons-nous appris?
Quels sont les pièges les plus courants pour les tests unitaires? Qu'est-ce qui fait que les tests deviennent difficiles à maintenir? Comment augmenter son retour sur investissement?
Qu'est-ce qui a changé depuis les dernières années dans les meilleures pratiques de tests unitaires et de TDD?
Suivez l'aventure d'Alice dans sa quête... Cette présentation suivra Alice aux différents pays des tests où elle pourra collecter les outils nécessaires au succès de sa mission!
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
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%
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
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!
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
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