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

3 Steps Every Test Should Take

3 Steps Every Test Should Take

Matheus Richard

May 27, 2021
Tweet

More Decks by Matheus Richard

Other Decks in Programming

Transcript

  1. 3 Steps Every Test
    Should Take

    View Slide

  2. About me
    Matheus Richard

    View Slide

  3. This is a ⚡lightning talk⚡,
    so I’m gonna go FAST
    󰝊💨

    View Slide

  4. 🧪 Tests

    View Slide

  5. 😄 Tests are good!
    They make us more productive. Right?

    View Slide

  6. ❌ WRONG!

    View Slide

  7. ✔Good tests are good

    View Slide

  8. 🐢 Poorly written tests
    slow us down!

    View Slide

  9. Developer happiness-meter: 🙁
    🐌 Slow tests

    View Slide

  10. Developer happiness-meter: 😞
    🤔 Confusing tests
    🐌 Slow tests

    View Slide

  11. 󰣽 Flaky tests
    Developer happiness-meter: 😠
    🤔 Confusing tests
    🐌 Slow tests

    View Slide

  12. 󰣽 Flaky tests
    Developer happiness-meter: 🤬
    🤔 Confusing tests
    📦 Brittle tests
    🐌 Slow tests

    View Slide

  13. 🐌 Slow tests
    󰣽 Flaky tests
    📦 Brittle tests
    🤔 Confusing tests

    View Slide

  14. Good tests tell a story

    View Slide

  15. The story has 4 acts

    View Slide

  16. 📝 1. Setup

    View Slide

  17. 📝 1. Setup Create objects
    Define function inputs

    View Slide

  18. 📝 1. Setup
    🏋 2. Exercise

    View Slide

  19. 📝 1. Setup
    🏋 2. Exercise Calling methods
    Saving objects to DB

    View Slide

  20. 📝 1. Setup
    🏋 2. Exercise
    󰡷 3. Verify

    View Slide

  21. 📝 1. Setup
    🏋 2. Exercise
    󰡷 3. Verify Check if the output
    is the expected

    View Slide

  22. 📝 1. Setup
    󰡷 3. Verify
    🏋 2. Exercise
    💥 4. Teardown

    View Slide

  23. 📝 1. Setup
    󰡷 3. Verify
    🏋 2. Exercise
    💥 4. Teardown Undo changes
    Release memory
    Restore DB

    View Slide

  24. 📝 1. Setup
    🏋 2. Exercise
    󰡷 3. Verify
    💥 4. Teardown
    You’re welcome!

    View Slide

  25. 📝 1. Setup
    󰡷 3. Verify
    🏋 2. Exercise

    View Slide

  26. 📝 1. Arrange
    󰡷 3. Assert
    🏋 2. Act
    aka

    View Slide

  27. 📝 1. Given
    󰡷 3. Then
    🏋 2. When
    aka

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. 🤨 Why is this good?

    View Slide

  32. Consistency

    View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. E
    X
    E
    R
    C
    I
    S
    E

    View Slide

  38. Tests are self-contained.
    No mystery guests here

    View Slide

  39. View Slide

  40. 1. Verify
    Developer confusion-meter: 🤔❓

    View Slide

  41. 1. Verify 2. Exercise + Setup
    Developer confusion-meter: 🥴⁉

    View Slide

  42. 1. Verify 2. Exercise + Setup? 3. Verify
    Developer confusion-meter: 😵

    View Slide

  43. Developer confusion-meter: 😵

    View Slide

  44. Developer happiness-meter: 🥰

    View Slide

  45. SPACE IS IMPORTANT
    Developer happiness-meter: 🥰

    View Slide

  46. Developer happiness-meter: 😐

    View Slide

  47. Developer happiness-meter: 🥰

    View Slide

  48. Good tests have
    4 3 steps

    View Slide

  49. 📝 1. Setup

    View Slide

  50. 📝 1. Setup
    🏋 2. Exercise

    View Slide

  51. 📝 1. Setup
    󰡷 3. Verify
    🏋 2. Exercise

    View Slide

  52. We need not only tests,
    but good tests!

    View Slide

  53. We want good code and
    tests are code too!

    View Slide

  54. That’s it
    Feel free to ask any question

    View Slide