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
Pedro Tavares
May 10, 2018
Programming
0
1.3k
Building a testing culture
Pedro Tavares
May 10, 2018
Tweet
Share
More Decks by Pedro Tavares
See All by Pedro Tavares
Diving into Merkle Trees
ordepdev
1
790
Harvest, Yield, and Scalable Tolerant Systems
ordepdev
0
260
Things you should know about Database Storage and Retrieval
ordepdev
0
150
Building a testing culture
ordepdev
0
160
Things you should know about Database Storage and Retrieval
ordepdev
0
1.6k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
410
Consumer Driven Contracts
ordepdev
0
1.4k
Optional<Java>
ordepdev
0
1.3k
Microservices? You have to
ordepdev
0
1.3k
Other Decks in Programming
See All in Programming
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
330
AtCoder Conference 2025
shindannin
0
940
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
310
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
340
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
AgentCoreとHuman in the Loop
har1101
5
160
Deno Tunnel を使ってみた話
kamekyame
0
320
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
230
CSC307 Lecture 02
javiergs
PRO
1
760
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
480
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
130
Optimizing for Happiness
mojombo
379
70k
The untapped power of vector embeddings
frankvandijk
1
1.5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
48k
Producing Creativity
orderedlist
PRO
348
40k
Typedesign – Prime Four
hannesfritz
42
2.9k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
We Are The Robots
honzajavorek
0
130
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
81
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