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

Lessons Learned From 10 Years Of Testing

Lessons Learned From 10 Years Of Testing

Slides of a talk I gave at Symfony Live Berlin on October 27, 2017

Chris Hartjes

October 27, 2017
Tweet

More Decks by Chris Hartjes

Other Decks in Programming

Transcript

  1. Lessons Learned From Ten Years Of Testing © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 1
  2. TL;DR -- Tests are made of people! © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 2
  3. This talk contains no code or tests (Sorry, not sorry)

    © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 3
  4. December 2002 I am six months into working on a

    poorly-constructed dating web application where he made most of the mistakes himself with the help of other people who didn't know any better © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 4
  5. Formula for burnout — super-long commute — "mandatory" overtime ©

    Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 5
  6. The Launch Crashed Hard — so many assumptions were wrong

    © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 6
  7. "Hey Chris, I think you should read this!" © Chris

    Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 7
  8. It was the moment that changed everything for me ©

    Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 8
  9. It was the moment that changed everything for me Not

    even remotely kidding © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 9
  10. So what were the tools? — SimpleTest — Lots of

    swearing © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 10
  11. PHPUnit hadn't even been released yet! © Chris Hartjes @grmpyprogrammer

    - Symfony Live Berlin (Oktober 27, 2017) 11
  12. So li!le PHP-specific testing info was available Caused much sadness

    © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 12
  13. Lesson Number One Having one person enthusiastic about writing tests

    simply isn't enough © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 13
  14. Cowboy Testing For Anger And Sadness You can start off

    being the only one writing tests... © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 14
  15. Cowboy Testing For Anger And Sadness ...but company culture might

    make you regret it © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 15
  16. Tests will continue until bugs no longer happen Much complaining

    ensued (a common theme continuing to present-day) © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 16
  17. Tests will continue until bugs no longer happen — Tests

    got written — I started getting more interested in the process — Lost a political struggle to get the job I wanted so I left © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 17
  18. Early 2006... My gateway into OSS... and tests... and how

    to be a difficult person... and how to deal with difficult people... was via the CakePHP project © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 18
  19. Lesson Number Two Tests for a project mean that at

    least somebody used to care at some point about what they were doing © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 19
  20. — tests provide windows into bugs — tests are still

    written by people — people are willing to argue about everything and anything © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 20
  21. Tests driven by bug fixes help find all the weird

    decisions you made but don't remember why © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 21
  22. They also show you how to actually use the code

    © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 22
  23. Think of them as stealth documentation © Chris Hartjes @grmpyprogrammer

    - Symfony Live Berlin (Oktober 27, 2017) 23
  24. But tests are written by people, and bad tests happen.

    © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 24
  25. Critics like to use this as evidence that tests don't

    work. © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 25
  26. They are wrong. © Chris Hartjes @grmpyprogrammer - Symfony Live

    Berlin (Oktober 27, 2017) 26
  27. I spent some years in the wilderness © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 27
  28. I started to really learn about testing © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 28
  29. Lesson Number 3 People struggle to learn about testing without

    help © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 29
  30. — TDD examples are way too simple — People seek

    shortcuts to solutions — Repeating theme - people want to argue about tools and techniques © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 30
  31. TDD isn't simple because testing isn't simple © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 31
  32. And your code isn't simple © Chris Hartjes @grmpyprogrammer -

    Symfony Live Berlin (Oktober 27, 2017) 32
  33. It's way more important to teach people about tools and

    techniques © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 33
  34. Then they can apply them to their own code ©

    Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 34
  35. So you might snort at yet-another- FizzBuzz example © Chris

    Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 35
  36. But if you're not paying a!ention to the PROCESS you

    will miss out © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 36
  37. Testing is something that cannot be learned in isolation ©

    Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 37
  38. Testing IS code wri!en for a SPECIFIC PURPOSE © Chris

    Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 38
  39. I am changing what I teach © Chris Hartjes @grmpyprogrammer

    - Symfony Live Berlin (Oktober 27, 2017) 39
  40. It's no longer enough to just show people how to

    use the tools © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 40
  41. You have to show them where, and when, and why

    to use them © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 41
  42. Desperately Seeking Shortcuts — "I'd be finished with this task

    if I didn't have to write the tests!!!" © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 42
  43. There are no shortcuts © Chris Hartjes @grmpyprogrammer - Symfony

    Live Berlin (Oktober 27, 2017) 43
  44. Just lots and lots of work to try and create

    things with the fewest bugs possible © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 44
  45. I started writing books and giving lots of talks ©

    Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 45
  46. Lesson Number 4 All these testing problems and techniques were

    solved back in the 1970's © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 46
  47. GO BUY THIS BOOK © Chris Hartjes @grmpyprogrammer - Symfony

    Live Berlin (Oktober 27, 2017) 47
  48. All the techniques we argue about today were invented in

    the 1970's and 1980's © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 48
  49. Programmer hubris led many to think they were the first

    to figure it out © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 49
  50. Lesson Number 5 The problem is people © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 50
  51. Programming-related discussions turn toxic very easily... © Chris Hartjes @grmpyprogrammer

    - Symfony Live Berlin (Oktober 27, 2017) 51
  52. ...just like every other discussion online © Chris Hartjes @grmpyprogrammer

    - Symfony Live Berlin (Oktober 27, 2017) 52
  53. Your best weapon against toxicity is EMPATHY © Chris Hartjes

    @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 53
  54. Testing your code requires you to change how you write

    your code © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 54
  55. People do not like this © Chris Hartjes @grmpyprogrammer -

    Symfony Live Berlin (Oktober 27, 2017) 55
  56. People like to change WHAT THEY USE but NOT HOW

    THEY USE IT © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 56
  57. Funny how the quest for the new and shiny never

    seems to include tools help them make things bug free © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 57
  58. Shameless Plugs My name is Chris Hartjes — Staff Test

    Engineer at Mozilla (focussed on services) — Twitter performance artist -> @grmpyprogrammer — Buy my stuff at https://grumpy-learning.com © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 58