SlideShare a Scribd company logo
1 of 78
Continuous Testing
at Scale
Gergely Orosz, Engineering Manager
@GergelyOrosz
8 May 2018
● Engineering manager @Uber, in Amsterdam
● 10+ years of software development (Skyscanner, Skype, JP Morgan alumni)
● Full-stack, iOS, Android, (Windows Phone)
Introduction
War stories
Trading systems
Oil rig monitoring
XBox One launch
Uber apps rewrites
Payment systems
A war story:
Uber app rewrite
Testing is hard
Iterating is part of the journey
Why do we test?
We test to ship no bugs.
Bug-free code of substance
But at what cost?
Why do we test?
To minimize the business impact of mistakes
while maintaining good execution speed.
We will cover testing of
mobile apps.
Still, a lot of the concepts apply
across the stack.
Crashes
Functional
Bugs
UI Bugs
We test, so we can avoid:
… at Scale … at Uber … Tools & a
Framework
Continuous testing...
… at Scale … at Uber … Tools & a
Framework
Continuous testing...
Initial Team
Team Growth
● 600+ cities, 65+ countries, 6 continents
● 10 engineering offices (4x US, Amsterdam, Denmark, 2x India, Sofia,
Vilnius)
● 18,000+ people, of which 2,500+ engineers & 400+ mobile engineers
Some Uber facts
Hundreds of mobile
engineers?
Request a ride
Fare split
Cash
Uber for Business
Credit card rewards points
Promotions
Promotions
Safety
Over 10 ways to pay
Scheduled
rides
Drive with Uber
Uber Eats, Freight,
Bike, Rental...
Experimentation
65+ countries,
600+ cities
Performance
Cash
Instant payments
Maps & navigation
uberPOOL
Driver incentives
App health
Developer tools
Networking
Feed cards
Driver experience
Driver recognition
Airport pickup
Uber Family
Beacon
Campaigns
Fraud EATS app
Driver app
Freight app
Restaurants app
Other apps
Fleet app
What can “at scale” mean?
● More functionality
● More users & regions, locales
● More code
● More engineers
● More engineering offices & locations
● More automated testing
● More apps
● More functionality
● More users & regions, locales
● More code
● More engineers
● More engineering offices & locations
● More automated testing
● More apps
What does “at scale” mean?
● More bugs
● Smaller/local bugs have bigger impact
● Longer build times
● Communication overhead
● Developer systems need to work 24/7
● Longer time to run tests
● The same problems repeating
Problems
What does “at scale” mean?
… at Scale … at Uber … Framework
Continuous testing...
A few things I found different @Uber compared to my previous experience:
● No formal QA role, testing teams or dedicated DevOps team
● Dedicated team(s) owning testing infrastructure & developer tooling
● More formal planning process
● No staging systems: test tenancies instead
● Blameless postmortem culture
Engineering culture
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
Continuous
Integration
arc diff
Phabricator diff
Local
validations
Code
reviewers
● Commit message validation
(e.g. test plan, revert plan)
● Linting
Herald
rules
Rules like:
● “If certain files are touched, add
{certain people} as reviewers
● If the files added contain a certain
phrase, add a comment to the diff
Build results
Do a build with:
● Linting
● Unit tests
● Static code analysis
Create a pull request
Herald rules
Herald rule example
● Our lint rules are extensive, evolved since the early years
● NEAL: our language agonistic linting platform (open sourced)
Linting: a first class citizen
Continuous
Integration
arc diff
Phabricator diff
Local
validations
Lint,
Build,
Test
Update the diff
arc
land
“Merge to master”
Code Repo
Submit
Queue
Do a “full” build with:
● Linting
● Unit tests
● Static code analysis
● UI testsBuild Result
Validation
pass
Build speeds matter (even) more, as the team grows
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
● Local checks (linting)
● Continuous Integration (linting,
unit tests, static analysis)
● Code review
● Safe merging to master (UI
tests, SubmitQueue)
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
Ready for production
release.
Merge code to master
Release
candidate ?
master
Build cut
Automated tests
Manual tests
Manual testing (sanity)
Manual testing (sanity)
Test tenancy
Staging Production
code (master)
Test
accounts
Production
accounts
Production
accounts
Test
accounts
Test
tenancy
Production
tenancy
Staged rollout
code (master)
Staging & production systems Production system with test tenancy
Ready for production
release.
Merge code to master
Release
candidate
master
Build cut
Automated tests
Manual tests
Dogfooding
bugreports
Dogfooding
Dogfooding: sending bug reports
Bug reporter tool
Phabricator
ticket
Take
screenshot
Teams triage
Ready for production
release.
Merge code to master
Release
candidate
master
Build cut
Automated tests
Manual tests
Dogfooding
bugreports
Crash reports
Ready for production
release.
Merge code to master
Release
candidate
master
Build cut
Automated tests
Manual tests
Dogfooding
bugreports
Crash reports
Localization
...
Fix
Hotfix
Build Train
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
● Manual testing (sanity)
● Dogfooding
● Crash reports
● Build train
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
Facts
● Bugs will be introduced that none of the previous tests catch
● With native apps
○ New builds can take days to ship due to the app store approval
process
○ Users might not update their apps for a while.
Conclusion
● Every change should be revertable, remotely.
● Let’s use backend-controlled feature flags
Rolling out to production on mobile
Remote Bugfixing: Feature Flags
Rollout can be risky if the population is large & there is no monitoring.
Staged rollout
● Control user exposure in early stages via a feature flag
● Monitor the impact on key business metrics at each stage
Rolling out to production (not just) on mobile
Ready for production
release.
Staged rollout
Monitor
Rolled out
Rolling out a new feature
Staged rollout monitoring for business impact: statistically significant differences
Monitoring: business events
Monitoring: performance
Continuous testing process @Uber
Write code & land
to master
Pre-release
testing
Ship to users
● Staged rollout
● Monitoring & alerting
○ Crash reports
○ Business events
○ Performance
The mobile testing lifecycle
Write code & land
to master
Pre-release
testing
Ship to users
In production
Build cut Release
Staged rollout
& monitoring
Code & functional quality
checks
Functional & UX quality
checks, hotfixes
Are we done testing?
Rolled out
Things will catch fire
The mobile testing lifecycle
Write code & land
to master
Pre-release
testing
Ship to users
In production
Build cut Release
Staged rollout
& monitoring
Code & functional quality
checks
Functional & UX quality
checks, hotfixes
Uh-oh...
Monitor & triage issues/alerts
The mobile testing lifecycle
Write code & land
to master
Pre-release
testing
Ship to users
In production
Build cut Release
Staged rollout
& monitoring
Code & functional quality
checks
Functional & UX quality
checks
Outages
Uh-oh...
Monitor & triage issues/alerts
How can we make sure this
does not happen again?
Blameless postmortems
The goal of a postmortem
Understand the root cause in order to take
action to prevent the same issue from impacting
customers again.
The 5 whys
The mobile testing lifecycle
Write code & land
to master
Pre-release
testing
Ship to users
In production
Requirements &
planning
Product & engineering spec, with testing plan
Outages &
postmortems
Uh-oh...
“We did not do proper planning.”
“We did not test this edge case.”
“We did not have a test plan.”
The mobile testing lifecycle @Uber
Write code & land
to master
Pre-release
testing
Ship to users
In production
Requirements &
planning
Staged rollout
& monitoring
Code level quality checks Functional & UX quality
checks
Outages &
postmortems
Monitor & triage issues/alerts
Spec & testing plan
Build cut Release
Rolled out
… at Scale … at Uber … Tools & a
Framework
Continuous testing...
What worked for us, will
not (exactly) work for you.
Why do we test?
To minimize the business impact of mistakes
while maintaining good execution speed.
Continuous testing: tools
Crashes
Functional
Bugs
UI Bugs
We test, so we can avoid:A few tools to detect / avoid:
Continuous testing toolset
Crashes
Functional
Bugs
UI Bugs
● Crash reports
● Crash report
alerting
● Code reviews
● Unit testing
● UI testing
● Manual testing
● Dogfooding
● Staged rollout
● Manual testing
● Dogfooding
● Screenshot testing
A few tools to detect / avoid:
Continuous testing toolset
Crashes
Functional
Bugs
UI Bugs
A few tools to detect / avoid:
● Crash reports
● Crash report
alerting
● Code reviews
● Unit testing
● UI testing
● Manual testing
● Dogfooding
● Staged rollout
● Manual testing
● Dogfooding
● Screenshot testing
Other things
impacting
the business
● Business monitoring
& alerting
● Performance testing
/ monitoring
● (Tools that might
work for you)
Continuous testing toolset
Crashes
Functional
Bugs
UI Bugs
A few off the shelf tools to detect / avoid:
● Crash
reporting:
Crashlytics
● Code reviews
○ Github
○ In-house: Phab
● CI
○ Travis CI / Bitrise
○ In-house: Jenkins
● Manual testing:
crowdsourced platforms
● Screenshot testing
● UI testing
○ XCTest
○ Espresso
Other things
impacting
the business
● Analytics: GA, Mixpanel
● In-house analytics:
Kafka, Elastisearch &
Grafana + ML
● Performance testing
○ XCode & Android
studio profilers
A framework to think about testing
The Continuous Testing Pyramid
Manual
tests
UI tests
Unit Tests
Dog
fooding
Blameless
postmortems
Code reviews
Continuous
integration
Monitor
Alert
Triage
Things going wrong
for customers
Team owning testing infrastructure
To make all of this scale:
Improve
processes
& systems
All engineers
All engineers
All engineers
All teams
All employees
All teams
Continuous testing at Scale
Why do we test?
To minimize the business impact of mistakes
while maintaining good execution speed.
As you scale, iterate on the tools you use, your team
structure & processes to keep doing this.
Gergely Orosz
Engineering Manager, Uber Amsterdam
Thank you Open sourced tools for more efficient testing
● uber.github.io
● Language agonistic linting platform: NEAL
● Android
○ Nanoscope (tracing tool)
○ NullAway (static checks to avoid
NullPointer exceptions)
○ OkBuck: use the buck build system on
a gradle project
@GergelyOrosz
eng.uber.com
Proprietary and confidential © 2018 Uber Technologies, Inc. All rights reserved. No part of this
document may be reproduced or utilized in any form or by any means, electronic or mechanical,
including photocopying, recording, or by any information storage or retrieval systems, without
permission in writing from Uber. This document is intended only for the use of the individual or entity
to whom it is addressed and contains information that is privileged, confidential or otherwise exempt
from disclosure under applicable law. All recipients of this document are notified that the information
contained herein includes proprietary and confidential information of Uber, and recipient may not
make use of, disseminate, or in any way disclose this document or any of the enclosed information
to any person other than employees of addressee to the extent necessary for consultations with
authorized personnel of Uber.

More Related Content

What's hot

MAD-Lab - Mobile Automation Device Lab
MAD-Lab - Mobile Automation Device LabMAD-Lab - Mobile Automation Device Lab
MAD-Lab - Mobile Automation Device Lablavanyam210
 
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...apidays
 
Mobile applications and automation testing
Mobile applications and automation testingMobile applications and automation testing
Mobile applications and automation testingIndicThreads
 
Introduction To UiPath Studio | Edureka
Introduction To UiPath Studio | EdurekaIntroduction To UiPath Studio | Edureka
Introduction To UiPath Studio | EdurekaEdureka!
 
Robotic Process Automation Development
Robotic Process Automation DevelopmentRobotic Process Automation Development
Robotic Process Automation DevelopmentObika Gellineau
 
Ether solutions rpa - robotic process automation
Ether solutions   rpa - robotic process automationEther solutions   rpa - robotic process automation
Ether solutions rpa - robotic process automationEther Solutions
 
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | Edureka
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | EdurekaWhat is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | Edureka
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | EdurekaEdureka!
 
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...Edureka!
 

What's hot (10)

Are open source tools the best?
Are open source tools the best?Are open source tools the best?
Are open source tools the best?
 
MAD-Lab - Mobile Automation Device Lab
MAD-Lab - Mobile Automation Device LabMAD-Lab - Mobile Automation Device Lab
MAD-Lab - Mobile Automation Device Lab
 
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...
apidays LIVE Australia 2021 - Confessions of a Product Geek : My First API BY...
 
Mobile applications and automation testing
Mobile applications and automation testingMobile applications and automation testing
Mobile applications and automation testing
 
Ui path rpa_intro_v1
Ui path rpa_intro_v1Ui path rpa_intro_v1
Ui path rpa_intro_v1
 
Introduction To UiPath Studio | Edureka
Introduction To UiPath Studio | EdurekaIntroduction To UiPath Studio | Edureka
Introduction To UiPath Studio | Edureka
 
Robotic Process Automation Development
Robotic Process Automation DevelopmentRobotic Process Automation Development
Robotic Process Automation Development
 
Ether solutions rpa - robotic process automation
Ether solutions   rpa - robotic process automationEther solutions   rpa - robotic process automation
Ether solutions rpa - robotic process automation
 
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | Edureka
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | EdurekaWhat is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | Edureka
What is UiPath RPA Architecture | UiPath Studio, Robot & Orchestrator | Edureka
 
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...
Variables, Data Types and Activities in UiPath | Basics of UiPath | UiPath Tu...
 

Similar to Continuous testing at scale

Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...
Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...
Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...Turkish Testing Board
 
Building a Complete Pipeline: The Essential Components of Continuous Testing ...
Building a Complete Pipeline: The Essential Components of Continuous Testing ...Building a Complete Pipeline: The Essential Components of Continuous Testing ...
Building a Complete Pipeline: The Essential Components of Continuous Testing ...Applitools
 
Improving ROI with Scriptless Test Automation
Improving ROI with Scriptless Test AutomationImproving ROI with Scriptless Test Automation
Improving ROI with Scriptless Test AutomationMindfire LLC
 
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...Perfecto by Perforce
 
Real Testing Scenario Strategy - Bringing It All Together For Success
Real Testing Scenario Strategy - Bringing It All Together For SuccessReal Testing Scenario Strategy - Bringing It All Together For Success
Real Testing Scenario Strategy - Bringing It All Together For SuccessAdam Sandman
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerQA or the Highway
 
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...Riccardo Coppola
 
Zibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibraSoft Technologies
 
Testing the UI of Mobile Applications
Testing the UI of Mobile ApplicationsTesting the UI of Mobile Applications
Testing the UI of Mobile ApplicationsMarco Torchiano
 
The Best Automation Testing Tools To Use In 2022 | BMN Infotech
The Best Automation Testing Tools To Use In 2022 | BMN InfotechThe Best Automation Testing Tools To Use In 2022 | BMN Infotech
The Best Automation Testing Tools To Use In 2022 | BMN InfotechBMN Infotech
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityApplitools
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfICS
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQTomas Riha
 
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysDynatrace
 

Similar to Continuous testing at scale (20)

Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...
Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...
Testistanbul 2016 - Keynote: "Why Automated Verification Matters" by Kristian...
 
Future of QA
Future of QAFuture of QA
Future of QA
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
 
Building a Complete Pipeline: The Essential Components of Continuous Testing ...
Building a Complete Pipeline: The Essential Components of Continuous Testing ...Building a Complete Pipeline: The Essential Components of Continuous Testing ...
Building a Complete Pipeline: The Essential Components of Continuous Testing ...
 
GUI, Performance, Load and API testing with Test Studio
GUI, Performance, Load and API testing with Test StudioGUI, Performance, Load and API testing with Test Studio
GUI, Performance, Load and API testing with Test Studio
 
Improving ROI with Scriptless Test Automation
Improving ROI with Scriptless Test AutomationImproving ROI with Scriptless Test Automation
Improving ROI with Scriptless Test Automation
 
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...
Enhancing Your Test Automation Scenario Coverage with Selenium - QA or the Hi...
 
Real Testing Scenario Strategy - Bringing It All Together For Success
Real Testing Scenario Strategy - Bringing It All Together For SuccessReal Testing Scenario Strategy - Bringing It All Together For Success
Real Testing Scenario Strategy - Bringing It All Together For Success
 
Creating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran KinsbrunerCreating a successful continuous testing environment by Eran Kinsbruner
Creating a successful continuous testing environment by Eran Kinsbruner
 
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...
Automated Generation, Evolution and Maintenance: a perspective for mobile GUI...
 
Zibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company InidaZibrasoft | Software QA Testing Company Inida
Zibrasoft | Software QA Testing Company Inida
 
Testing the UI of Mobile Applications
Testing the UI of Mobile ApplicationsTesting the UI of Mobile Applications
Testing the UI of Mobile Applications
 
The Best Automation Testing Tools To Use In 2022 | BMN Infotech
The Best Automation Testing Tools To Use In 2022 | BMN InfotechThe Best Automation Testing Tools To Use In 2022 | BMN Infotech
The Best Automation Testing Tools To Use In 2022 | BMN Infotech
 
Neev QA Offering
Neev QA OfferingNeev QA Offering
Neev QA Offering
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous IntegrationExperitest-Infosys Co-Webinar on Mobile Continuous Integration
Experitest-Infosys Co-Webinar on Mobile Continuous Integration
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQ
 
OMSOFTWARE NEW Service
OMSOFTWARE NEW ServiceOMSOFTWARE NEW Service
OMSOFTWARE NEW Service
 
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
 

Recently uploaded

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Continuous testing at scale

  • 1. Continuous Testing at Scale Gergely Orosz, Engineering Manager @GergelyOrosz 8 May 2018
  • 2. ● Engineering manager @Uber, in Amsterdam ● 10+ years of software development (Skyscanner, Skype, JP Morgan alumni) ● Full-stack, iOS, Android, (Windows Phone) Introduction
  • 3. War stories Trading systems Oil rig monitoring XBox One launch Uber apps rewrites Payment systems
  • 4. A war story: Uber app rewrite
  • 5.
  • 6.
  • 8. Iterating is part of the journey
  • 9. Why do we test? We test to ship no bugs.
  • 10. Bug-free code of substance But at what cost?
  • 11. Why do we test? To minimize the business impact of mistakes while maintaining good execution speed.
  • 12. We will cover testing of mobile apps. Still, a lot of the concepts apply across the stack.
  • 14. … at Scale … at Uber … Tools & a Framework Continuous testing...
  • 15. … at Scale … at Uber … Tools & a Framework Continuous testing...
  • 18. ● 600+ cities, 65+ countries, 6 continents ● 10 engineering offices (4x US, Amsterdam, Denmark, 2x India, Sofia, Vilnius) ● 18,000+ people, of which 2,500+ engineers & 400+ mobile engineers Some Uber facts
  • 19. Hundreds of mobile engineers? Request a ride Fare split Cash Uber for Business Credit card rewards points Promotions Promotions Safety Over 10 ways to pay Scheduled rides Drive with Uber Uber Eats, Freight, Bike, Rental... Experimentation 65+ countries, 600+ cities Performance Cash Instant payments Maps & navigation uberPOOL Driver incentives App health Developer tools Networking Feed cards Driver experience Driver recognition Airport pickup Uber Family Beacon Campaigns Fraud EATS app Driver app Freight app Restaurants app Other apps Fleet app
  • 20. What can “at scale” mean? ● More functionality ● More users & regions, locales ● More code ● More engineers ● More engineering offices & locations ● More automated testing ● More apps
  • 21. ● More functionality ● More users & regions, locales ● More code ● More engineers ● More engineering offices & locations ● More automated testing ● More apps What does “at scale” mean? ● More bugs ● Smaller/local bugs have bigger impact ● Longer build times ● Communication overhead ● Developer systems need to work 24/7 ● Longer time to run tests ● The same problems repeating Problems
  • 22. What does “at scale” mean?
  • 23. … at Scale … at Uber … Framework Continuous testing...
  • 24. A few things I found different @Uber compared to my previous experience: ● No formal QA role, testing teams or dedicated DevOps team ● Dedicated team(s) owning testing infrastructure & developer tooling ● More formal planning process ● No staging systems: test tenancies instead ● Blameless postmortem culture Engineering culture
  • 25. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users
  • 26. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users
  • 27. Continuous Integration arc diff Phabricator diff Local validations Code reviewers ● Commit message validation (e.g. test plan, revert plan) ● Linting Herald rules Rules like: ● “If certain files are touched, add {certain people} as reviewers ● If the files added contain a certain phrase, add a comment to the diff Build results Do a build with: ● Linting ● Unit tests ● Static code analysis Create a pull request
  • 30. ● Our lint rules are extensive, evolved since the early years ● NEAL: our language agonistic linting platform (open sourced) Linting: a first class citizen
  • 31. Continuous Integration arc diff Phabricator diff Local validations Lint, Build, Test Update the diff arc land “Merge to master” Code Repo Submit Queue Do a “full” build with: ● Linting ● Unit tests ● Static code analysis ● UI testsBuild Result Validation pass
  • 32. Build speeds matter (even) more, as the team grows
  • 33. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users
  • 34. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users ● Local checks (linting) ● Continuous Integration (linting, unit tests, static analysis) ● Code review ● Safe merging to master (UI tests, SubmitQueue)
  • 35. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users
  • 36. Ready for production release. Merge code to master Release candidate ? master Build cut Automated tests Manual tests
  • 39. Test tenancy Staging Production code (master) Test accounts Production accounts Production accounts Test accounts Test tenancy Production tenancy Staged rollout code (master) Staging & production systems Production system with test tenancy
  • 40. Ready for production release. Merge code to master Release candidate master Build cut Automated tests Manual tests Dogfooding bugreports
  • 42. Dogfooding: sending bug reports Bug reporter tool Phabricator ticket Take screenshot Teams triage
  • 43. Ready for production release. Merge code to master Release candidate master Build cut Automated tests Manual tests Dogfooding bugreports Crash reports
  • 44. Ready for production release. Merge code to master Release candidate master Build cut Automated tests Manual tests Dogfooding bugreports Crash reports Localization ... Fix Hotfix
  • 46. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users ● Manual testing (sanity) ● Dogfooding ● Crash reports ● Build train
  • 47. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users
  • 48. Facts ● Bugs will be introduced that none of the previous tests catch ● With native apps ○ New builds can take days to ship due to the app store approval process ○ Users might not update their apps for a while. Conclusion ● Every change should be revertable, remotely. ● Let’s use backend-controlled feature flags Rolling out to production on mobile
  • 50. Rollout can be risky if the population is large & there is no monitoring. Staged rollout ● Control user exposure in early stages via a feature flag ● Monitor the impact on key business metrics at each stage Rolling out to production (not just) on mobile
  • 51. Ready for production release. Staged rollout Monitor Rolled out Rolling out a new feature
  • 52. Staged rollout monitoring for business impact: statistically significant differences
  • 55.
  • 56. Continuous testing process @Uber Write code & land to master Pre-release testing Ship to users ● Staged rollout ● Monitoring & alerting ○ Crash reports ○ Business events ○ Performance
  • 57. The mobile testing lifecycle Write code & land to master Pre-release testing Ship to users In production Build cut Release Staged rollout & monitoring Code & functional quality checks Functional & UX quality checks, hotfixes Are we done testing? Rolled out
  • 59. The mobile testing lifecycle Write code & land to master Pre-release testing Ship to users In production Build cut Release Staged rollout & monitoring Code & functional quality checks Functional & UX quality checks, hotfixes Uh-oh... Monitor & triage issues/alerts
  • 60. The mobile testing lifecycle Write code & land to master Pre-release testing Ship to users In production Build cut Release Staged rollout & monitoring Code & functional quality checks Functional & UX quality checks Outages Uh-oh... Monitor & triage issues/alerts
  • 61. How can we make sure this does not happen again?
  • 63. The goal of a postmortem Understand the root cause in order to take action to prevent the same issue from impacting customers again.
  • 65. The mobile testing lifecycle Write code & land to master Pre-release testing Ship to users In production Requirements & planning Product & engineering spec, with testing plan Outages & postmortems Uh-oh... “We did not do proper planning.” “We did not test this edge case.” “We did not have a test plan.”
  • 66. The mobile testing lifecycle @Uber Write code & land to master Pre-release testing Ship to users In production Requirements & planning Staged rollout & monitoring Code level quality checks Functional & UX quality checks Outages & postmortems Monitor & triage issues/alerts Spec & testing plan Build cut Release Rolled out
  • 67. … at Scale … at Uber … Tools & a Framework Continuous testing...
  • 68. What worked for us, will not (exactly) work for you.
  • 69. Why do we test? To minimize the business impact of mistakes while maintaining good execution speed.
  • 70. Continuous testing: tools Crashes Functional Bugs UI Bugs We test, so we can avoid:A few tools to detect / avoid:
  • 71. Continuous testing toolset Crashes Functional Bugs UI Bugs ● Crash reports ● Crash report alerting ● Code reviews ● Unit testing ● UI testing ● Manual testing ● Dogfooding ● Staged rollout ● Manual testing ● Dogfooding ● Screenshot testing A few tools to detect / avoid:
  • 72. Continuous testing toolset Crashes Functional Bugs UI Bugs A few tools to detect / avoid: ● Crash reports ● Crash report alerting ● Code reviews ● Unit testing ● UI testing ● Manual testing ● Dogfooding ● Staged rollout ● Manual testing ● Dogfooding ● Screenshot testing Other things impacting the business ● Business monitoring & alerting ● Performance testing / monitoring ● (Tools that might work for you)
  • 73. Continuous testing toolset Crashes Functional Bugs UI Bugs A few off the shelf tools to detect / avoid: ● Crash reporting: Crashlytics ● Code reviews ○ Github ○ In-house: Phab ● CI ○ Travis CI / Bitrise ○ In-house: Jenkins ● Manual testing: crowdsourced platforms ● Screenshot testing ● UI testing ○ XCTest ○ Espresso Other things impacting the business ● Analytics: GA, Mixpanel ● In-house analytics: Kafka, Elastisearch & Grafana + ML ● Performance testing ○ XCode & Android studio profilers
  • 74. A framework to think about testing
  • 75. The Continuous Testing Pyramid Manual tests UI tests Unit Tests Dog fooding Blameless postmortems Code reviews Continuous integration Monitor Alert Triage Things going wrong for customers Team owning testing infrastructure To make all of this scale: Improve processes & systems All engineers All engineers All engineers All teams All employees All teams
  • 76. Continuous testing at Scale Why do we test? To minimize the business impact of mistakes while maintaining good execution speed. As you scale, iterate on the tools you use, your team structure & processes to keep doing this.
  • 77. Gergely Orosz Engineering Manager, Uber Amsterdam Thank you Open sourced tools for more efficient testing ● uber.github.io ● Language agonistic linting platform: NEAL ● Android ○ Nanoscope (tracing tool) ○ NullAway (static checks to avoid NullPointer exceptions) ○ OkBuck: use the buck build system on a gradle project @GergelyOrosz eng.uber.com
  • 78. Proprietary and confidential © 2018 Uber Technologies, Inc. All rights reserved. No part of this document may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval systems, without permission in writing from Uber. This document is intended only for the use of the individual or entity to whom it is addressed and contains information that is privileged, confidential or otherwise exempt from disclosure under applicable law. All recipients of this document are notified that the information contained herein includes proprietary and confidential information of Uber, and recipient may not make use of, disseminate, or in any way disclose this document or any of the enclosed information to any person other than employees of addressee to the extent necessary for consultations with authorized personnel of Uber.