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