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
Caitie McCaffrey
June 14, 2016
Technology
540
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
440
Argus Papers We Love
caitiem20
14
1.3k
The Verification of a Distributed System
caitiem20
22
2.4k
We Hear You Like Papers: Eventual Consistency
caitiem20
14
910
The Verification of a Distributed System
caitiem20
12
880
The Verification of a Distributed System
caitiem20
6
860
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
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
240
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
170
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
260
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
270
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
770
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
240
少人数データチームのDevin活用実践事例
runandy16
2
440
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
110
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
180
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
620
AndroidでHDRメディアを「壊さずに」扱う
chigichan24
0
400
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
The Language of Interfaces
destraynor
162
27k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
Rails Girls Zürich Keynote
gr2m
96
14k
WENDY [Excerpt]
tessaabrams
12
39k
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