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
PWL NY: Simple Testing Can Prevent Most Critica...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Caitie McCaffrey
June 14, 2016
Technology
510
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PWL NY: Simple Testing Can Prevent Most Critical Failures
Caitie McCaffrey
June 14, 2016
More Decks by Caitie McCaffrey
See All by Caitie McCaffrey
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Path Towards Simplifying Consistency in Distributed Systems
caitiem20
1
420
Argus Papers We Love
caitiem20
14
1.3k
The Verification of a Distributed System
caitiem20
22
2.3k
We Hear You Like Papers: Eventual Consistency
caitiem20
14
890
The Verification of a Distributed System
caitiem20
12
860
The Verification of a Distributed System
caitiem20
6
850
A Brief History of Distributed Programming: RPC
caitiem20
31
6.9k
Building Scalable Stateful Services
caitiem20
12
1.9k
Other Decks in Technology
See All in Technology
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
210
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
170
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
8
4.9k
5分でわかるDuckDB Quack
chanyou0311
4
290
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
410
初めてのDatabricks勉強会
taka_aki
2
230
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
230
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
110
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
240
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
170
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
130
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
860
The SEO identity crisis: Don't let AI make you average
varn
0
510
For a Future-Friendly Web
brad_frost
183
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Mobile First: as difficult as doing things right
swwweet
225
10k
Un-Boring Meetings
codingconduct
0
330
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
Simple Testing Can Prevent Most Critical Failures: An Analysis of
Production Failures in Distributed Data-Intensive Systems Papers We Love New York - June 2016
Caitie McCaffrey @caitie Distributed Systems Engineer CaitieM.com
None
None
Analyzed Failures in Real World Systems
“A majority (77%) of failures require more than one input
event to manifest, but most of the failures (90%) require no more than 3” Complexity of Failures
“The specific order of events is important in 88% of
the failures that require multiple events Complexity of Failures
“3 Nodes or less can reproduce 98% of Failures” Complexity
of Failures
Unit Tests “A majority of production failures (77%) can be
reproduced by a unit test”
Top Down Fault Injection & State Space Exploration is Expensive
Logging • 76% of the failures print explicit failure- related
error messages • For 84% of the failures, all of the triggering events are logged • Logs are noisy: each failure prints 824 log messages (median)
Catastrophic Failures
Error Handling • 92% of failures were the result of
incorrect handling of non-fatal errors • 58% of faults could have been detected via simple testing • 35% of failures caused by bad practices in error handling code
• Error Handling Code is simply empty or only contains
a Log statement • Error Handler aborts cluster on an overly general exception • Error Handler contains comments like FIXME or TODO Bad Practices
Aspirator Performs static analysis of Java bytecode to detect: •
error handler is empty • error handler over-catches exceptions and aborts • error handler contains phrases like “TODO” or “FIXME”
• 500 New Bugs & Bad Practices • 115 Fasle
Positives • 171 bugs reported • 143 bugs confirmed or fixed Aspirator Results
-developer “I fail to see the reason to handle every
exception” Developer Reactions
“It is often much harder to reason about the correctness
of a system’s abnormal path than its normal execution path ”
Moving Forward • Use a tool like Aspirator that is
capable of identifying trivial bugs • Enforce code reviews of error handling code • High code coverage on error handling code
Questions @caitie