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

Unit Testing @ Educ 2016

Unit Testing @ Educ 2016

Talk about unit testing in particular, and automated testing in general, at the 2016 European Dataflex Users' Conference in Berlin

Ola Eldøy

May 13, 2016
Tweet

Other Decks in Programming

Transcript

  1. UNIT TESTING
    BE A
    HAPPY
    PROGRAMMER

    View Slide

  2. OLA ELDØY
    DEVELOPER
    EMMA EDB AS

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. UNIT TESTING
    BE A
    HAPPY
    DATAFLEX
    PROGRAMMER

    View Slide

  7. BEFORE UNIT TESTING
    AFRAID
    TO CHANGE
    YOUR CODE?

    View Slide

  8. BEFORE UNIT TESTING
    SOMETHING
    MIGHT
    BREAK?

    View Slide

  9. View Slide

  10. UNIT TESTS GIVE YOU
    A SAFETY NET – INSTANT FEEDBACK
    EXECUTABLE SPECS
    WORKING SOFTWARE

    View Slide

  11. AUTOMATED TESTING
    UNIT TESTING
    INTEGRATION TESTING
    END-TO-END TESTING

    View Slide

  12. TDD ≠ UNIT TESTING
    TDD = WRITE TESTS FIRST
    THEN PRODUCTION CODE

    View Slide

  13. VERSION CONTROL
    CONTINUOUS INTEGRATION
    AUTOMATED TESTING
    THREE AMIGOS

    View Slide

  14. VERSION CONTROL
    GIT
    MERCURIAL

    View Slide

  15. View Slide

  16. View Slide

  17. VDFUNIT
    UNIT TESTING
    FOR DATAFLEX

    View Slide

  18. View Slide

  19. GETTING VDFUNIT
    • VERSION CONTROL
    or DIRECT DOWNLOAD
    • INCLUDE LIBRARY IN
    YOUR WORKSPACE

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. WHAT IS A UNIT TEST
    FAST
    REPEATABLE
    INDEPENDENT

    View Slide

  33. NOT A UNIT TEST
    USES THE
    DATABASE
    FILE SYSTEM
    NETWORK

    View Slide

  34. AN INTEGRATION TEST
    MAY USE THE
    DATABASE
    FILE SYSTEM
    NETWORK

    View Slide

  35. A UNIT TEST
    TESTS
    YOUR CODE
    LOGIC

    View Slide

  36. AN INTEGRATION TEST
    MAY USE THE DATABASE
    NEEDS A FRESH START EVERY TIME
    STILL NEEDS TO BE AUTOMATED

    View Slide

  37. View Slide

  38. LEGACY CODE
    OLD CODE
    I’M NOT TOUCHING IT!

    View Slide

  39. LEGACY CODE
    CODE
    WITHOUT
    TESTS

    View Slide

  40. LEGACY CODE NEEDS
    REGRESSION TESTS

    View Slide

  41. LEGACY CODE DEMO
    INTEGRATION TEST

    View Slide

  42. CONTINUOUS INTEGRATION
    COMPILES UPON CHECKIN
    RUNS TESTS
    CONSTANT FEEDBACK

    View Slide

  43. View Slide

  44. View Slide

  45. ACCEPTANCE TESTING
    BUSINESS FACING
    CONCRETE EXAMPLES

    View Slide

  46. ACCEPTANCE TESTING
    The human brain is much better
    at understanding concrete things
    than abstractions

    View Slide

  47. ACCEPTANCE TESTING
    BUSINESS FACING
    CONCRETE EXAMPLES

    View Slide

  48. View Slide

  49. View Slide

  50. FITNESSE FOR DATAFLEX
    OPEN SOURCE
    FREE
    AVAILABLE SOON

    View Slide

  51. WRITING GOOD UNIT TESTS
    TEST CODE vs PRODUCTION CODE
    EQUALLY IMPORTANT

    View Slide

  52. WRITING GOOD UNIT TESTS
    YOUR UNIT TESTS ARE
    A VALUABLE ASSET

    View Slide

  53. YOUR UNIT TESTS ARE
    LIVING DOCUMENTATION
    EMPIRICAL EVIDENCE
    (SAYING: YOUR SOFTWARE WORKS)

    View Slide

  54. VERSION CONTROL TESTS
    YOUR TEST CODE IS
    AN IMPORTANT ASSET
    PUT IT IN VERSION CONTROL

    View Slide

  55. TEST CODE SHOULD BE
    READABLE
    TELLS A STORY
    EASY TO UNDERSTAND
    MAINTAINABLE

    View Slide

  56. BEWARE OF
    BRITTLE TESTS
    TEST FEATURES
    NOT IMPLEMENTATION DETAILS

    View Slide

  57. SHOULD I UNIT TEST…
    EVERYTHING?

    View Slide

  58. PROBABLY NOT FOR…
    GUI
    EXPLORATORY TESTING
    PROTOTYPING

    View Slide

  59. THIS IS ALL JOLLY GOOD…
    BUT…

    View Slide

  60. BUT…
    I DON’T HAVE TIME
    TO WRITE TESTS

    View Slide

  61. NO TIME TO WRITE TESTS?
    WHAT ABOUT…
    HAVING CODE THAT WORKS
    THAT YOU CAN CHANGE, REFACTOR

    View Slide

  62. BUT…
    WRITING THE TESTS ALMOST
    TAKES AS LONG AS WRITING
    THE PRODUCTION CODE

    View Slide

  63. IT TAKES A LOT OF TIME
    "Your tests represent a significant investment. They’ll pay off in
    minimizing defects and by allowing you to keep your production
    system clean through refactoring. But they also represent a
    continual cost. You need to continually revisit your tests as your
    system changes." - Pragmatic Unit Testing in Java 8 with JUnit
    (Jeff Langr with Andy Hunt & Dave Thomas)

    View Slide

  64. WRITING TESTS IS A SKILL
    DON’T EXPECT
    TO BE PRODUCTIVE
    FROM DAY 1

    View Slide

  65. THIS IS COOL!
    HOW DO I START?

    View Slide

  66. FIRST STEPS
    ADD VDFUNIT TO YOUR PROJECT
    THEN
    TEST SOMETHING

    View Slide

  67. THEN…
    BE A
    HAPPY
    DATAFLEX
    PROGRAMMER

    View Slide

  68. QUESTIONS?

    View Slide