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
Building a testing culture
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Pedro Tavares
May 10, 2018
Programming
1.3k
0
Share
Building a testing culture
Pedro Tavares
May 10, 2018
More Decks by Pedro Tavares
See All by Pedro Tavares
Diving into Merkle Trees
ordepdev
2
840
Harvest, Yield, and Scalable Tolerant Systems
ordepdev
0
270
Things you should know about Database Storage and Retrieval
ordepdev
0
170
Building a testing culture
ordepdev
0
180
Things you should know about Database Storage and Retrieval
ordepdev
0
1.6k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
420
Consumer Driven Contracts
ordepdev
0
1.4k
Optional<Java>
ordepdev
0
1.4k
Microservices? You have to
ordepdev
0
1.3k
Other Decks in Programming
See All in Programming
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
680
Modding RubyKaigi for Myself
yui_knk
0
470
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
290
ふつうのFeature Flag実践入門
irof
6
2.9k
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
250
AI 時代のソフトウェア設計の学び方
masuda220
PRO
28
9.8k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
0
120
New "Type" system on PicoRuby
pocke
1
200
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
200
AI時代になぜ書くのか
mutsumix
0
460
誰も頼んでない機能を出荷した話
zekutax
0
140
分析エージェント精度向上における データアナリストの役割
oura_shoya
0
120
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
sira's awesome portfolio website redesign presentation
elsirapls
0
260
Thoughts on Productivity
jonyablonski
76
5.2k
How STYLIGHT went responsive
nonsquared
100
6.1k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
120
4 Signs Your Business is Dying
shpigford
187
22k
Into the Great Unknown - MozCon
thekraken
41
2.5k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
Transcript
TESTING building CULTURE
None
THIS IS NOT ABOUT TDD!
@ordepdev
First of all Why testing?
“It’s time for software developers to take up the mantle
of responsibility for what they produce.
Testing is the engineering rigour of software development.
Responsibility — the state or fact of being accountable or
to blame for something.
Rigour — the quality of being extremely thorough and careful.
Software Engineering
An engineering discipline that is concerned with all aspects of
software production.
MUCH MORE THAN CODING!
Types of Bad Software Projects
1. Without tests.
Zero Automated Tests.
ZERO!
Lack of professionalism?
Lack of skills?
Lack of knowledge?
Lack of time to test?
It can be all of them.
What about software quality?
Relax, they test all features with manual testing.
None
2. With Wrongly Designed Tests..
Testing is HARD.
None
Testing pitfalls: coupling.
Implementation Boundary Testing Boundary
Implementation Boundary Testing Boundary ✅ ✅ ✅ ✅ ✅ ✅
✅ ✅ ❌ ❌
Uncertainty and Doubt.
Implementation Boundary Testing Boundary ✅ ✅ ✅ ✅ ✅ ❌
❌ ❌ ❌ ❌
Testing pitfalls: performance.
Taking too much time? — that’s a no run.
Types of Testing
1. Testing after the implementation.
2. Testing during the implementation.
3. Testing that reproduce bugs.
It’s our job to build a testing culture!
But how?
5 rules.
1. Every change must have tests.
50 100 150 200 Development Unit Tests Functional Tests System
Tests Production The cost of bugs
Bugs in production are embarrassing and costly.
2. Write more than unit tests.
Mutation testing!
def add(x,y) x + y end def add(x,y) x -
y end Source Code Mutation
Property-based testing!
http://blog.jessitron.com/2013/04/property-based-testing-what-is-it.html
Contract testing!
None
Model-based testing!
Try formal methods! https://www.infoq.com/presentations/aws-testing-tla
3. Bug fixing must have tests.
Don’t repeat the same bug hunting — write a test!
4. Testing code must be reviewed.
A well-designed test suite is much easier to read, understand
and evolve.
Testing code is production code!
5. Test suites must be consistent.
L12. assertEquals(input, expectation); L35. assertEquals(expectation, input); L43. assertThat(input).isEqualTo( expectation); Assertions
L12. assertEquals(input, expectation); L35. assertEquals(expectation, input); L43. assertThat(input).isEqualTo( expectation); Assertions
L12. createEntity L35. create_withValidPayload_success L43. create_withValidPayload_shouldPersistEntity Test Methods
L12. createEntity L35. create_withValidPayload_success L43. create_withValidPayload_shouldPersistEntity Test Methods
We must share the same values, practices, and tools.
Enforce them through code reviews, static analysis, and style checking
tools.
Wrapping up.
“People who are successful at automating tasks tend to work
this way in every aspect of their jobs. It is just how they work; it is part of their culture.”
Manual work is a bug. acmqueue | january-february 2018
ALWAYS BE AUTOMATING!
GO AND FIX YOUR BROKEN CULTURE!
TESTING building CULTURE