×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Lessons Learned From Ten Years Of Testing © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 1
Slide 2
Slide 2 text
TL;DR -- Tests are made of people! © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 2
Slide 3
Slide 3 text
This talk contains no code or tests (Sorry, not sorry) © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 3
Slide 4
Slide 4 text
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
Slide 5
Slide 5 text
Formula for burnout — super-long commute — "mandatory" overtime © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 5
Slide 6
Slide 6 text
The Launch Crashed Hard — so many assumptions were wrong © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 6
Slide 7
Slide 7 text
"Hey Chris, I think you should read this!" © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 7
Slide 8
Slide 8 text
It was the moment that changed everything for me © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 8
Slide 9
Slide 9 text
It was the moment that changed everything for me Not even remotely kidding © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 9
Slide 10
Slide 10 text
So what were the tools? — SimpleTest — Lots of swearing © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 10
Slide 11
Slide 11 text
PHPUnit hadn't even been released yet! © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 11
Slide 12
Slide 12 text
So li!le PHP-specific testing info was available Caused much sadness © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 12
Slide 13
Slide 13 text
Lesson Number One Having one person enthusiastic about writing tests simply isn't enough © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 13
Slide 14
Slide 14 text
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
Slide 15
Slide 15 text
Cowboy Testing For Anger And Sadness ...but company culture might make you regret it © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 15
Slide 16
Slide 16 text
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
Slide 17
Slide 17 text
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
Slide 18
Slide 18 text
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
Slide 19
Slide 19 text
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
Slide 20
Slide 20 text
— 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
Slide 21
Slide 21 text
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
Slide 22
Slide 22 text
They also show you how to actually use the code © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 22
Slide 23
Slide 23 text
Think of them as stealth documentation © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 23
Slide 24
Slide 24 text
But tests are written by people, and bad tests happen. © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 24
Slide 25
Slide 25 text
Critics like to use this as evidence that tests don't work. © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 25
Slide 26
Slide 26 text
They are wrong. © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 26
Slide 27
Slide 27 text
I spent some years in the wilderness © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 27
Slide 28
Slide 28 text
I started to really learn about testing © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 28
Slide 29
Slide 29 text
Lesson Number 3 People struggle to learn about testing without help © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 29
Slide 30
Slide 30 text
— 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
Slide 31
Slide 31 text
TDD isn't simple because testing isn't simple © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 31
Slide 32
Slide 32 text
And your code isn't simple © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 32
Slide 33
Slide 33 text
It's way more important to teach people about tools and techniques © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 33
Slide 34
Slide 34 text
Then they can apply them to their own code © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 34
Slide 35
Slide 35 text
So you might snort at yet-another- FizzBuzz example © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 35
Slide 36
Slide 36 text
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
Slide 37
Slide 37 text
Testing is something that cannot be learned in isolation © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 37
Slide 38
Slide 38 text
Testing IS code wri!en for a SPECIFIC PURPOSE © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 38
Slide 39
Slide 39 text
I am changing what I teach © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 39
Slide 40
Slide 40 text
It's no longer enough to just show people how to use the tools © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 40
Slide 41
Slide 41 text
You have to show them where, and when, and why to use them © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 41
Slide 42
Slide 42 text
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
Slide 43
Slide 43 text
There are no shortcuts © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 43
Slide 44
Slide 44 text
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
Slide 45
Slide 45 text
I started writing books and giving lots of talks © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 45
Slide 46
Slide 46 text
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
Slide 47
Slide 47 text
GO BUY THIS BOOK © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 47
Slide 48
Slide 48 text
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
Slide 49
Slide 49 text
Programmer hubris led many to think they were the first to figure it out © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 49
Slide 50
Slide 50 text
Lesson Number 5 The problem is people © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 50
Slide 51
Slide 51 text
Programming-related discussions turn toxic very easily... © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 51
Slide 52
Slide 52 text
...just like every other discussion online © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 52
Slide 53
Slide 53 text
Your best weapon against toxicity is EMPATHY © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 53
Slide 54
Slide 54 text
Testing your code requires you to change how you write your code © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 54
Slide 55
Slide 55 text
People do not like this © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 55
Slide 56
Slide 56 text
People like to change WHAT THEY USE but NOT HOW THEY USE IT © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 56
Slide 57
Slide 57 text
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
Slide 58
Slide 58 text
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