$30 off During Our Annual Pro Sale. View Details »

Tester pour ne plus douter

Tester pour ne plus douter

Benjamin Cavy

June 30, 2022
Tweet

More Decks by Benjamin Cavy

Other Decks in Programming

Transcript

  1. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Tester pour ne plus douter

    View Slide

  2. SLIDESMANIA.COM
    Benjamin Cavy
    Je fais du dev à la MAIF
    On recrute 😉

    View Slide

  3. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Izanami Otoroshi Daikoku
    Feature flipping Reverse proxy dédié à l’API
    management
    Portail API orienté
    développeurs
    https://maif.github.io/
    Melusine
    Classification de mails
    Thoth
    Event sourcing
    Shapash
    Explicabilité des modèles ML

    View Slide

  4. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Tester pour ne plus douter

    View Slide

  5. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Tester pour ne presque
    plus douter

    View Slide

  6. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Tester pour un peu moins
    douter

    View Slide

  7. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Ceci n’est pas une
    « méthode miracle »

    View Slide

  8. SLIDESMANIA.COM
    SLIDESMANIA.COM
    C’est quoi un bon test ?

    View Slide

  9. SLIDESMANIA.COM
    SLIDESMANIA.COM
    La pyramide des tests
    Unitaires
    Intégration
    E2E
    Coût
    Temps d’exécution
    Précision

    View Slide

  10. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Mon ”dream test”
    🎯 échoue quand il faut
    🧪 est reproductible
    ⏩ s’exécute vite
    💡se comprend facilement

    View Slide

  11. SLIDESMANIA.COM
    SLIDESMANIA.COM
    La pyramide des tests
    Unitaires
    Intégration
    E2E
    🧪 🧪 🧪
    ⏩ ⏩ ⏩
    🧪

    🧪 🧪 🧪
    ⏩ ⏩
    Non reproductible
    🤺

    View Slide

  12. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Les limites des tests unitaires
    🪢 Très couplés à la structure du code
    ⛓ Complique le refactoring
    🧩 On teste des bouts de code, pas des fonctionnalités
    😨 Peu de confiance

    View Slide

  13. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Le « test diamond »
    Intégration
    E2E
    Unitaires
    Inspiré de « l’outside in diamond »
    de Thomas Pierrain

    View Slide

  14. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Test d’integration : mes guidelines
    🧑💻‍‍ Se focaliser sur les foncAonnalités / parcours
    📦 Tester en mode « boîte noire »
    🍾 Bouchonner le moins possible

    View Slide

  15. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Et concrètement ?

    View Slide

  16. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Test containers
    Des conteneurs orchestrés par vos tests
    🪩 Java, node, python, go, rust, …
    🪞 Environnement technique « ISO prod »

    View Slide

  17. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Wiremock
    Des bouchons pour les appels HTTP
    🍾 Bouchonnage à une maille fine
    ⚙ Serveur démarré en standalone
    ✅ VérificaCon d’appels
    Alternatives
    oMock-server pour node
    oMock Service Worker pour le front

    View Slide

  18. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Cypress
    Fast, easy and reliable testing for anything that runs in a browser.
    🎇 une UI qui permet de visualiser les étapes du test
    🧰 fonctionnalités de navigation, bouchonnage, assertions asynchrones, …
    🔎 4 navigateurs supportés

    View Slide

  19. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Testing library
    Une librairie orientée accessibilité

    View Slide

  20. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Application API
    Application API
    Application API Frontend
    DOM

    View Slide

  21. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Application
    API
    API
    API
    Frontend
    DOM

    View Slide

  22. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Application
    API
    API
    API

    View Slide

  23. SLIDESMANIA.COM
    SLIDESMANIA.COM
    API
    API
    Application
    Frontend
    Application API
    DOM

    View Slide

  24. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Avantages
    💥 Échec : le comportement a changé
    🔧 Résistant au refactoring
    ✅ Teste toute la stack
    💡 Facilite le « TDD »

    View Slide

  25. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Les points durs
    🛠 Les bouchons sont pénibles à maintenir
    🐌 Ça peut devenir lent
    🤯 Explosion de complexité dans les tests

    View Slide

  26. SLIDESMANIA.COM
    Découplage total
    Redémarrage / reset complet
    entre chaque test
    C’est lent !!!
    2 causes principales
    🚚 Instantiation des briques techniques
    📑 Setup fonctionnel pour le test
    Couplage fort
    Contexte conservé
    ⚠ Dépendant de l’ordre d’exécution
    Couplage
    « Juste milieu »
    Nettoyage programmatique
    Contexte commun pour une suite de test

    View Slide

  27. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Mes tests sont trop compliqués !!!
    🔧 Extraire des « primitives de test »

    View Slide

  28. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Mes tests sont trop compliqués !!!
    🔧 Extraires des « primiCves de test »
    🛠 Builder foncConnel

    View Slide

  29. SLIDESMANIA.COM
    SLIDESMANIA.COM
    Mes tests sont trop compliqués !!!
    🔧 Extraires des « primiCves de test »
    🛠 Builder foncConnel
    🚆 Aller à l’essenCel dans chaque test

    View Slide

  30. SLIDESMANIA.COM
    SLIDESMANIA.COM
    S’affranchir de la pyramide des tests
    Quelques pointeurs vers d’autres talks
    Thomas Pierrain
    Outside-in Diamond pour écrire des
    tests An:fragiles & orientés mé:er
    Jonathan Boccara
    Florent Le Gall et Paola Ducolin
    Le (dés)amour des tests web
    Julien Durillon
    REX : TDD avec TestContainers
    @benjamin_cavy

    View Slide

  31. SLIDESMANIA.COM
    SLIDESMANIA.COM
    @benjamin_cavy
    Merci !
    Des questions ?

    View Slide