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
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Building a testing culture
Pedro Tavares
June 02, 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
280
Things you should know about Database Storage and Retrieval
ordepdev
0
170
Building a testing culture
ordepdev
0
1.4k
Things you should know about Database Storage and Retrieval
ordepdev
0
1.7k
GitLab as an Application Lifecycle Management Suite
ordepdev
0
430
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
継続モナドとリアクティブプログラミング
yukikurage
3
700
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
220
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
400
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.5k
Built Our Own Background Agent at LayerX
layerx
PRO
9
5.1k
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
740
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.7k
その節約、円になってますか?
isamumumu
1
710
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
数百円から始めるRuby電子工作
tarosay
0
140
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
440
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
170
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
470
How to make the Groovebox
asonas
2
2.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
360
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
240
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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!