Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lessons Learned From 10 Years Of Testing
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Chris Hartjes
October 27, 2017
Programming
160
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Chris Hartjes
See All by Chris Hartjes
Confessions of a not-so-accidental leader
grumpycanuck
0
250
Learn To Test Like A Grumpy Programmer
grumpycanuck
0
260
Time Management For Grumpy Programmers
grumpycanuck
0
240
Learn To Test Like A Grumpy Programmer
grumpycanuck
1
280
Learn To Test Like A Grumpy Programmer
grumpycanuck
2
230
Grumpy Testing Patterns
grumpycanuck
1
1k
Embrace Your Inner Grumpy: Metatesting in 2016
grumpycanuck
0
160
Smelly Tests
grumpycanuck
0
120
Why You Can't Test
grumpycanuck
1
360
Other Decks in Programming
See All in Programming
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
350
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
20
6.4k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.3k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.6k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
250
The NotImplementedError Problem in Ruby
koic
1
700
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
3Dシーンの圧縮
fadis
1
690
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
170
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Technical Leadership for Architectural Decision Making
baasie
3
400
Writing Fast Ruby
sferik
630
63k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Transcript
Lessons Learned From Ten Years Of Testing © Chris Hartjes
@grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 1
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 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
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 that changed everything for me ©
Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 8
It was the moment that changed everything for me Not
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 been released yet! © Chris Hartjes @grmpyprogrammer
- Symfony Live Berlin (Oktober 27, 2017) 11
So li!le PHP-specific testing info was available Caused much sadness
© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 12
Lesson Number One Having one person enthusiastic about writing tests
simply isn't enough © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 13
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
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 happen Much complaining
ensued (a common theme continuing to 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 I left © 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 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
— 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
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
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 tests happen.
© Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 24
Critics like to use this as evidence that tests don'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 the wilderness © Chris Hartjes
@grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 27
I started to really learn about testing © Chris Hartjes
@grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 28
Lesson Number 3 People 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 tools and techniques © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 30
TDD isn't simple because testing isn'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 teach people about tools and
techniques © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 33
Then they can apply them to their own 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!ention to the PROCESS you
will miss out © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 36
Testing is something that cannot be learned in isolation ©
Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 37
Testing IS code wri!en for a SPECIFIC 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 show people how to
use the tools © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 40
You have to show them where, and when, 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 write the 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 to try and create
things with the fewest bugs possible © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 44
I started writing books and giving lots of talks ©
Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 45
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
GO BUY THIS BOOK © Chris Hartjes @grmpyprogrammer - Symfony
Live Berlin (Oktober 27, 2017) 47
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
Programmer hubris led many to think they were the first
to figure it out © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 49
Lesson Number 5 The problem is people © Chris Hartjes
@grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 50
Programming-related discussions turn toxic very easily... © Chris Hartjes @grmpyprogrammer
- Symfony Live Berlin (Oktober 27, 2017) 51
...just like every other discussion online © Chris Hartjes @grmpyprogrammer
- Symfony Live Berlin (Oktober 27, 2017) 52
Your best weapon against toxicity is EMPATHY © Chris Hartjes
@grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 53
Testing your code requires you to change 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 THEY USE but NOT HOW
THEY USE IT © Chris Hartjes @grmpyprogrammer - Symfony Live Berlin (Oktober 27, 2017) 56
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
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