Je fais des tests unitaires... puis après?

Je fais des tests unitaires... puis après?

Alice écrit des tests unitaires pour… tester son code. Pour perfectionner son art, Alice entame une quête qui l'amènera à voir ses tests autrement.

Alice décrouvrira qu'un test peut être écrit pour explorer l'architecture, documenter, prédire la maintenabilité, développer le bon produit (ATDD), etc. tout en étant facile à maintenir.

Présentation en 6 tableaux sommaires de la quête d'Alice.

F209924610808dc55f985a99c6d380c3?s=128

Félix-Antoine Bourbonnais

November 30, 2017
Tweet

Transcript

  1. FÉLIX-ANTOINE BOURBONNAIS B. ING., M.SC., PSM Agile Tour Montréal 2017

    Je fais des tests unitaires... puis après?
  2. Imaginez…

  3. La communauté a appris depuis tout ce temps…

  4. Félix-Antoine Bourbonnais B.ing., PSM, M.Sc. / Formateur / Conférencier /

    Mentor / Coach d’équipes $> Essais automatisés et TDD $> Architecture évolutive et DDD $> BDD et spécification par l’exemples $> Scrum $> Conseils stratégiques $> Gestion du changement
  5. Je vous présente Alice… Force: Outils collectés

  6. Qu’est-ce que Alice devrait regarder pour perfectionner son art ?

    Un tour d’horizon en 6 quêtes…
  7. Objectif de la présentation: Avoir des idées de thèmes à

    explorer
  8. None
  9. 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
  10. 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… Quête 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. 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
  12. Un bon test unitaire est une documentation

  13. Un bon test unitaire… … pas comment c’est codé !

    … teste un comportement !
  14. Un bon test unitaire teste le comportement souhaité…

  15. … non pas l’implémentation et comment ça a été codé!

  16. •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
  17. 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
  18. Alice$ > A des milliers de tests Alice$ > Alice

    a toujours des problèmes de maintenabilité à long terme Quête 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
  19. Mes tests sont fragiles !

  20. 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
  21. Image par Gamma-Ray Productions sur Flickr La pyramide des tests

    % du portfolio de tests auto. (tous les types) Large (L) Moyen (M) Petit (S) ~10% ~20% ~70% Bout-en-bout Toutes composantes Une ou quelques classes Une composante intégrée Fragilité des tests
  22. Apprendre à fragmenter ses tests UI Domaine Infra <i> H2

    Mémoire
  23. Les mocks: trop c’est comme pas assez ! Fragilité !

  24. 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
  25. … sauf que l’équipe d’Alice travaille dans du “Legacy Code”

    {… non pour vrai!} Quête 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. Tests de caractérisation Pour en savoir plus http://conferences.elapsetech.com/ legacy-tests-caracterisation

  27. 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
  28. … 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 ?!? Quête 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
  29. Testabilité α Maintenabilité public class StuffCtrlManager } {

  30. Les tests font émerger des indices (odeurs) tôt à propos

    du design.
  31. 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 ?!? Quête 5 Le pays de l’ATDD 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
  35. ATDD 1 Écrire un scénario qui échoue 2 Scénario passe

    3 Pour en savoir plus http://conferences.elapsetech.com/ atdd-double-boucle
  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 2a 2b 1c 1a 1b
  37. BDD & Spécification par l’exemple (SbE) Pour en savoir plus

    http://conferences.elapsetech.com/ bdd-spec-affaires
  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 Outils collectés Image de Carl Warner -- carlwarner.com -- Foodscapes Utilisée avec la permission de l’auteur / With the permission of the author
  40. Intégration vraiment continue ! Outils collectés

  41. Déploiement continu Outils collectés

  42. merci .

  43. Site elapsetech.com Twitter @fbourbonnais Courriel fbourbonnais@elapsetech.com LinkedIn linkedin.com/in/fbourbonnais/fr conferences.elapsetech.com Toutes

    nos présentations conferences.elapsetech.com /tests-unitaires-apres Diapositives et références Félix-Antoine Bourbonnais @