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
June 02, 2018
Programming
0
150
Building a testing culture
Pedro Tavares
June 02, 2018
Tweet
Share
More Decks by Pedro Tavares
See All by Pedro Tavares
Diving into Merkle Trees
ordepdev
1
660
Harvest, Yield, and Scalable Tolerant Systems
ordepdev
0
250
Things you should know about Database Storage and Retrieval
ordepdev
0
140
Building a testing culture
ordepdev
0
1.3k
Things you should know about Database Storage and Retrieval
ordepdev
0
1.6k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
380
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
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
610
Namespace and Its Future
tagomoris
6
710
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.5k
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
Platformに“ちょうどいい”責務ってどこ? 関心の熱さにあわせて考える、責務分担のプラクティス
estie
1
180
個人開発で徳島大学生60%以上の心を掴んだアプリ、そして手放した話
akidon0000
1
150
Ruby Parser progress report 2025
yui_knk
1
460
旅行プランAIエージェント開発の裏側
ippo012
2
930
RDoc meets YARD
okuramasafumi
4
170
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
130
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
Featured
See All Featured
Balancing Empowerment & Direction
lara
3
630
Making Projects Easy
brettharned
117
6.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
RailsConf 2023
tenderlove
30
1.2k
Scaling GitHub
holman
463
140k
The Invisible Side of Design
smashingmag
301
51k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Transcript
TESTING building CULTURE
https://ordepdev.me/posts/test-driven-developers
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, we test all features with manual testing.
None
2. With Wrongly Designed Tests..
Testing is HARD.
https://twitter.com/codepipes/status/987934900111138816
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.
https://twitter.com/pwlporto/status/999258562370170880
We do not know how much an increase in coverage
can decrease the number of defects.” “
https://ordepdev.me/posts/code-coverage
Mutation testing!
def add(x,y) x + y end def add(x,y) x -
y end Source Code Mutation
Property-based testing! https://hypothesis.works/articles/quickcheck-in-every-language
http://blog.jessitron.com/2013/04/property-based-testing-what-is-it.html
Contract testing! https://martinfowler.com/bliki/ContractTest.html
https://ordepdev.me/posts/boost-your-confidence-with-consumer-driven-contracts
Model-based testing! http://mit.bme.hu/~micskeiz/pages/modelbased_testing.html
Instead of writing hundreds of test cases, write an abstract
model of the system and generate a set of test cases.” “
None
Formal methods! https://www.infoq.com/presentations/aws-testing-tla
Formal methods use mathematical proof as a complement to system
testing in order to ensure correct behavior.” “
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.
5+1.Test suites must be visible.
A failed test is a failed build!
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 @ordepdev ordepdev.me Thanks!