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

27601bca8f38e75cbcf9d2dc843f0b32?s=128

Chris Hartjes

October 27, 2017
Tweet

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