Slides of a talk I gave at Symfony Live Berlin on October 27, 2017
Lessons Learned From Ten Years OfTesting© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 1
View Slide
TL;DR -- Tests are made of people!© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 2
This talk contains no code or tests(Sorry, not sorry)© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 3
December 2002I am six months into working on apoorly-constructed dating web application where hemade most of the mistakes himself with the help ofother people who didn't know any better© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 4
Formula for burnout— super-long commute— "mandatory" overtime© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 5
The Launch Crashed Hard— so many assumptions were wrong© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 6
"Hey Chris, I think you should read this!"© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 7
It was the moment thatchanged everything for me© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 8
It was the moment that changed everything for meNot even remotely kidding© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 9
So what were the tools?— SimpleTest— Lots of swearing© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 10
PHPUnit hadn't even beenreleased yet!© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 11
So li!le PHP-specific testing info was availableCaused much sadness© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 12
Lesson Number OneHaving one person enthusiastic about writing testssimply isn't enough© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 13
Cowboy Testing For Anger And SadnessYou can start off being the only one writing tests...© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 14
Cowboy Testing For Anger And Sadness...but company culture might make you regret it© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 15
Tests will continue until bugs no longer happenMuch complaining ensued (a common theme continuingto present-day)© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 16
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 Ileft© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 17
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
Lesson Number TwoTests for a project mean that at least somebody used tocare at some point about what they were doing© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 19
— tests provide windows into bugs— tests are still written by people— people are willing to argue about everything andanything© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 20
Tests driven by bug fixes help find allthe weird decisions you made but don'tremember why© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 21
They also show you how to actually use the code© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 22
Think of them as stealth documentation© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 23
But tests are written by people, and bad testshappen.© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 24
Critics like to use this as evidence that testsdon't work.© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 25
They are wrong.© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 26
I spent some years in thewilderness© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 27
I started to really learn abouttesting© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 28
Lesson Number 3People struggle to learn about testing without help© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 29
— TDD examples are way too simple— People seek shortcuts to solutions— Repeating theme - people want to argue about toolsand techniques© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 30
TDD isn't simple because testingisn't simple© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 31
And your code isn't simple© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 32
It's way more important to teachpeople about tools and techniques© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 33
Then they can apply them to theirown code© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 34
So you might snort at yet-another-FizzBuzz example© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 35
But if you're not paying a!entionto the PROCESS you will miss out© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 36
Testing is something that cannotbe learned in isolation© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 37
Testing IS code wri!en for aSPECIFIC PURPOSE© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 38
I am changing what I teach© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 39
It's no longer enough to just showpeople how to use the tools© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 40
You have to show them where, andwhen, and why to use them© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 41
Desperately Seeking Shortcuts— "I'd be finished with this task if I didn't have to writethe tests!!!"© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 42
There are no shortcuts© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 43
Just lots and lots of work totry and create things with thefewest bugs possible© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 44
I started writing books andgiving lots of talks© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 45
Lesson Number 4All these testing problems and techniques were solvedback in the 1970's© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 46
GO BUY THIS BOOK© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 47
All the techniques we argue abouttoday were invented in the 1970'sand 1980's© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 48
Programmer hubris led many tothink they were the first to figureit out© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 49
Lesson Number 5The problem is people© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 50
Programming-related discussionsturn toxic very easily...© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 51
...just like every other discussiononline© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 52
Your best weapon against toxicityis EMPATHY© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 53
Testing your code requires you tochange how you write your code© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 54
People do not like this© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 55
People like to change WHAT THEYUSE but NOT HOW THEY USE IT© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 56
Funny how the quest for the newand shiny never seems to includetools help them make things bugfree© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 57
Shameless PlugsMy 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