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

Quality from the start

Quality from the start

Talk about software quality and testing for students, given at Helloworld Conference 2018.

Filipe Freire

February 15, 2018
Tweet

More Decks by Filipe Freire

Other Decks in Programming

Transcript

  1. Quality from the start
    Filipe Freire
    15 February 2018

    View full-size slide

  2. Learner, tester, developer, husband
    2.5y work as a “coding” tester

    1y work as a developer
    OSS contributor
    Quick intro
    Currently @
    2

    View full-size slide

  3. “Job application, public ”
    Ex.: hospital
    Story time
    3

    View full-size slide

  4. “Inspect the code!”

    “Use the Dev-tools!”
    Nope.
    7

    View full-size slide

  5. The pizza problem #1
    9

    View full-size slide

  6. 1st pizza: 2nd pizza:
    The pizza problem #2
    10

    View full-size slide

  7. In the team I’m part at

    >10mil messages/day

    + tons of data & logic and flows
    If something fails for 10 mins:
    11

    View full-size slide

  8. What if :
    Your bank’s software fails?
    Your doctor’s medical device fails?
    Your country’s defences fail?
    12

    View full-size slide

  9. “It’s the user!”
    “It’s the tester!”
    “It’s the developer!”
    13
    Who’s to blame?

    View full-size slide

  10. Why do we test?
    14

    View full-size slide

  11. “To verify something

    can work”
    –James Bach & Michael Bolton
    15

    View full-size slide

  12. What prevents software from
    working?
    16

    View full-size slide

  13. –Yegor Bugayenko
    “A software bug is an error, flaw, failure, or
    fault in a computer program or system that
    causes it to violate at least one of its
    functional or non-functional
    requirements.”
    17

    View full-size slide

  14. “ (Testers are) the headlights of a project”!
    –James Bach
    Testers dispel the illusion 

    your code is good.


    Our main job: find and
    report tons of bugs using
    any means necessary
    18

    View full-size slide

  15. Remember

    “who’s to blame”? 

    Answer: anything and
    everything between our 

    code (incl.) and the user
    19

    View full-size slide

  16. –Pedro Tavares (@ordepdev)
    “No one is perfect, neither our code, but
    what matters most is our software
    craftsmanship attitude of making sure that
    our code works properly.”
    20

    View full-size slide

  17. Everyone makes their 

    own shared bed.
    “What can I do help 

    make a better bed?”
    21

    View full-size slide

  18. -9999. “Do you know the value
    of your tool?”
    - Tooling!
    22

    View full-size slide

  19. BTW, the following, credit goes
    to:
    http://www.yegor256.com/
    2015/06/08/deadly-sins-
    software-project.html
    23

    View full-size slide

  20. 1. Can I be sloppy?
    - Anti-Patterns!
    24

    View full-size slide

  21. - Anti-Patterns!
    God objects
    Temporal
    coupling
    Magic
    numbers
    Utility classes
    NULL
    references
    ORM…
    really?
    Poltergeists
    Lasagna code
    Spaghetti
    code
    Shotgun
    surgery
    Error hiding
    Ravioli code
    Macaroni
    code
    Be skeptical. Read. Learn.

    Google DuckDuckGo it.
    25

    View full-size slide

  22. 2. How do I keep track of stuff?
    26
    - Traceability!

    View full-size slide

  23. Use tickets.
    Reference them.
    Don’t hit delete.
    27
    - Traceability!

    View full-size slide

  24. Use tickets.
    28
    - Traceability!

    View full-size slide

  25. Use tickets.
    29
    - Traceability!

    View full-size slide

  26. Reference them.
    30
    @filipe: asdfasdf.
    @roberto: add function
    discussed yesterday @bob:
    - Traceability!
    @agnes: fix problem.

    View full-size slide

  27. Reference them.
    31
    @filipe: #3 - add login
    page style rules
    @roberto: #7 - refactor
    nurse page unit tests
    @bob: #2 add
    how-to-build info
    - Traceability!
    @agnes: #4 - fix report
    input warning

    View full-size slide

  28. 32
    @rita: #12 - add
    patient list as table
    @ana: #13 - delete
    patient list
    Don’t hit delete.
    - Traceability!

    View full-size slide

  29. 3. How can I package my work
    - Release and version!
    & not work nonstop?
    33

    View full-size slide

  30. “put your work in a zip
    and send an email to the
    teacher at midnight, on
    the last day to deliver”
    - Release and version!
    34

    View full-size slide

  31. “some work done:

    tell a bot or script
    to create + publish
    a package. Repeat.”
    - Release and version!
    35

    View full-size slide

  32. - Release and version!
    36
    Best advice here: learn!

    View full-size slide

  33. 4. “How can I keep my stuff tidy
    all the time?”
    - Static-analysis!
    37

    View full-size slide

  34. - Static-analysis!
    38

    View full-size slide

  35. Find some static analysis software for
    the language you code…

    Then, make it fail your builds, always.
    - Static-analysis!
    39

    View full-size slide

  36. 5. What are my numbers?
    - Coverage!
    40

    View full-size slide

  37. Do everything necessary to put
    this badge on your project
    - Coverage!
    41

    View full-size slide

  38. - Coverage!
    42
    You’ll need:
    - Unit tests (Learn and make’em)
    - Configure some coverage lib
    - Paste the badge on README

    View full-size slide

  39. - Coverage!
    (What does the badge tell me?)
    “High coverage is not a guarantee of
    high quality. (…) But, unknown
    coverage is a clear indicator of
    maintainability problems.”
    –Yegor Bugayenko
    43

    View full-size slide

  40. 6. “What does your stuff do?”
    - Document!
    44

    View full-size slide

  41. 45
    - Document!
    The tip here is:
    Write down, clearly, everything a user
    would need to know to use your software.

    Bonus point: when report time comes,
    you’ll have some sections ready :-)

    View full-size slide

  42. Best-case scenario
    Year 1:
    “Ana and Miguel do class
    assignment for X: it’s maintainable,
    well documented”
    A + M
    Work
    46

    View full-size slide

  43. Best-case scenario
    Year 2:
    “Rui and Tiago do class assignment for X: 

    they pick were Y1 colleagues left off and
    still deliver maintainable, well
    documented work”
    A + M
    Work
    R + T
    Work
    47
    +

    View full-size slide

  44. Best-case scenario
    Year 3:
    “Rita and Marta do class assignment for X:

    they pick were Y2 colleagues left off and
    still deliver maintainable, well
    documented work”
    A + M
    Work
    R + T
    Work
    R + M
    Work
    48
    +

    View full-size slide

  45. Worst case scenario
    Maintainable garbage
    Still better than most real-life scenarios :-)
    49

    View full-size slide

  46. And like in OSS:
    You’re not just setting the bar for
    the next year student on your class.
    50

    View full-size slide

  47. Example: Porto Testers Meetup
    52
    Learn, share ideas & knowledge. Go out there!
    Community!

    View full-size slide

  48. Pst… There’s more @Porto!
    53

    View full-size slide

  49. Thank you. Questions?
    filfreire filrfreire
    filfreire.com
    54
    Follow me @

    View full-size slide