Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Félix-Antoine Bourbonnais

November 30, 2017
Tweet

More Decks by Félix-Antoine Bourbonnais

Other Decks in Technology

Transcript

  1. FÉLIX-ANTOINE BOURBONNAIS
    B. ING., M.SC., PSM
    Agile Tour Montréal 2017
    Je fais des tests unitaires...
    puis après?

    View Slide

  2. Imaginez…

    View Slide

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

    View Slide

  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

    View Slide

  5. Je vous présente Alice…
    Force:
    Outils collectés

    View Slide

  6. Qu’est-ce que Alice devrait regarder pour perfectionner son art ?
    Un tour d’horizon en 6 quêtes…

    View Slide

  7. Objectif de la présentation:
    Avoir des idées de thèmes à explorer

    View Slide

  8. View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  12. Un bon test unitaire est une documentation

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  19. Mes tests sont fragiles !

    View Slide

  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

    View Slide

  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

    View Slide

  22. Apprendre à
    fragmenter ses tests
    UI
    Domaine
    Infra

    H2 Mémoire

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  26. Tests de caractérisation
    Pour en savoir plus
    http://conferences.elapsetech.com/
    legacy-tests-caracterisation

    View Slide

  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

    View Slide

  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

    View Slide

  29. Testabilité α
    Maintenabilité
    public class
    StuffCtrlManager
    }
    {

    View Slide

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

    View Slide

  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!

    View Slide

  32. Des approches différentes selon le contexte !
    Application avec un domaine
    riche et beaucoup de logique
    d’affaires, CRUD ou
    principalement graphique ?

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  37. BDD & Spécification par l’exemple (SbE)
    Pour en savoir plus
    http://conferences.elapsetech.com/
    bdd-spec-affaires

    View Slide

  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

    View Slide

  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

    View Slide

  40. Intégration vraiment
    continue !
    Outils collectés

    View Slide

  41. Déploiement
    continu
    Outils collectés

    View Slide

  42. merci .

    View Slide

  43. Site
    elapsetech.com
    Twitter
    @fbourbonnais
    Courriel
    [email protected]
    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
    @

    View Slide