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.2k
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
470
Harvest, Yield, and Scalable Tolerant Systems
ordepdev
0
160
Things you should know about Database Storage and Retrieval
ordepdev
0
130
Building a testing culture
ordepdev
0
150
Things you should know about Database Storage and Retrieval
ordepdev
0
1.4k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
300
Consumer Driven Contracts
ordepdev
0
1.3k
Optional<Java>
ordepdev
0
1.2k
Microservices? You have to
ordepdev
0
1.2k
Other Decks in Programming
See All in Programming
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
290
HTML/CSS超絶浅い説明
yuki0329
0
190
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
200
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
590
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
700
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
300
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
1
110
.NETでOBS Studio操作してみたけど…… / Operating OBS Studio by .NET
skasweb
0
120
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
960
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
26
6k
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
250
Flatt Security XSS Challenge 解答・解説
flatt_security
0
740
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Gamification - CAS2011
davidbonilla
80
5.1k
Site-Speed That Sticks
csswizardry
3
270
Faster Mobile Websites
deanohume
305
30k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
Fireside Chat
paigeccino
34
3.1k
A Philosophy of Restraint
colly
203
16k
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