Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Building a testing culture
Search
Pedro Tavares
May 10, 2018
Programming
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
860
Harvest, Yield, and Scalable Tolerant Systems
ordepdev
0
290
Things you should know about Database Storage and Retrieval
ordepdev
0
180
Building a testing culture
ordepdev
0
190
Things you should know about Database Storage and Retrieval
ordepdev
0
1.7k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
440
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
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
240
App Intentsのビルドプロセスを支える技術
kntkymt
0
420
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
1
9.6k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
460
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
4.3k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
0
110
FreeBSDでZabbixを動かす
kenkino
0
320
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
480
GraphQLとの向き合い方2022年版
quramy
50
15k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Design in an AI World
tapps
1
330
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Designing Powerful Visuals for Engaging Learning
tmiket
1
570
Navigating Weather and Climate Data
rabernat
0
530
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
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