Move Fast & Don't Break Things
Ankit Mehta, Google
Ankit Mehta, Google
Move Fast & Don’t Break Things
GTAC 2014
Why am I talking @ GTAC
Interesting side projects @ Google:
MAD (Millions of Automated Documents)
Scale Google’s Bug database
Surveytool
Microprocessor controlled pick n place manipulator (school)
Move Fast & Don’t Break Things
Test Engineering
“what is our purpose?”
Move Fast & Don’t Break Things
Build world class infrastructure to launch high quality innovative products fast that delight our users
Google from the outside..
Move Fast & Don’t Break Things
Google from the inside…
Move Fast & Don’t Break Things
More code
Move Fast & Don’t Break Things
More releases
Move Fast & Don’t Break Things
State of releases
Move Fast & Don’t Break Things
Moving Fast is Good!
Move Fast & Don’t Break Things
… But Breaking things isn’t
Move Fast & Don’t Break Things
My Testing Philosophy
What many teams do
How it should be done
Move Fast & Don’t Break Things
Maintenance
Slower tests
Flakiness
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Push on Amber
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Push on Green..
“As soon as test suites go green, deployment to production is automatically started”
This has evolved at Google. We have tens of thousands of tests for some projects, some of which could be failing and/or flaky
Move Fast & Don’t Break Things
Push on Amber
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Prevent Bugs
Move Fast & Don’t Break Things
What is a Hermetic Test?
The short definition would be a “test in a box”.
My version: run a test while on a airplane *without network
Move Fast & Don’t Break Things
Non-Hermetic Servers
Before
Move Fast & Don’t Break Things
Hermetic Servers
After
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Pushing Testing Upstream
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Delineate product releases and features
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Productivity First..
Move Fast & Don’t Break Things
Attack Bad Tests
Move Fast & Don’t Break Things
Flaky tests are worse than no tests
Move Fast & Don’t Break Things
Robosheriff
Move Fast & Don’t Break Things
Social @ Google | 2012 | 2013 | 2014 | Assessment |
Average presubmit time | 21 min | 28 min | 22 min | Productivity |
Code Coverage | ??? | 72.80% | 75.60% | Automation |
% Green Cycles | 71.40% | 82.40% | 89.60% | Test Hygiene |
Avg Submit to Prod Time | 17 hrs | 11 hrs | 13 hrs | Velocity |
Total presubmit run time | 196 d | 11392 d | 8033 d | Better Tests |
Total automation time | 22697 d | 52785 d | 114040 d | Better Tests |
P1 bugs avg resolution time | 69 d | 28 d | 13 d | Bug Hygiene |
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Fishfood
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Prioritize Releases
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Prioritize Releases
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Prioritize Releases
Treat Regressions as build blockers
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Treat regressions as build breaks
Cultural shift
Rollback == guaranteed fix
Verifications are simpler
Devs not under gun for fix
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Prioritize Releases
Treat Regressions as build blockers
Remember Murphy’s Law
Delineate product releases and features
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Remember Murphy’s Law
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Prioritize Releases
Treat Regressions as build blockers
Remember Murphy’s Law
Delineate product releases and features
Balance Velocity vs Quality
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Balance Velocity vs Quality
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing upstream
Productivity First
Fishfood
Prioritize Releases
Treat Regressions as build blockers
Remember Murphy’s Law
Delineate product releases and features
Balance Velocity vs Quality
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
It’s no secret mobile is taking over.
PCS
SMARTPHONES & TABLETS
Move Fast & Don’t Break Things
“Mobile First” Challenges
Come join the discussion @ “Move Fast & Don’t Break Things” G+ Community
Move Fast & Don’t Break Things
Prevent Bugs
Push on Amber
Push Testing Upstream
Productivity First
Fishfood
Prioritize Releases
Treat Regressions as build blockers
Remember Murphy’s Law
Delineate product releases and features
Balance Velocity vs Quality
Move Fast & Don’t Break Things
Move Fast & Don’t Break Things
Cultural
Cultural + Tooling
Tooling