SlideShare a Scribd company logo
@gil_zilberfeld@gil_zilberfeld
Zen and the Art of
Test Maintenance
@gil_zilberfeld
Hello!
I AM GIL ZILBERFELD
TestinGil
www.gilzilberfeld.com
www.everydayunittesting.com
@gil_zilberfeld
@gil_zilberfeld@gil_zilberfeld
Test Maintenance
What is it good for?
@gil_zilberfeld
@gil_zilberfeld
The value of our tests
◉ Alignment with product focus
◉ Cover the right areas
◉ Stability
◉ Find bugs
◉ Pinpoint the problems
@gil_zilberfeld@gil_zilberfeld
Strategy
@gil_zilberfeld
@gil_zilberfeld@gil_zilberfeld
Once we got a map
We can create a plan of where we want to go
@gil_zilberfeld
High level view
◉ What is important for the product?
◉ What are the risks?
◉ What should we focus on?
◉ At this stage and the short-mid term future
@gil_zilberfeld
@gil_zilberfeld@gil_zilberfeld
What about Facebook?
Importance, risk, focus
@gil_zilberfeld
◉ Important:
◉ Risks
◉ Focus
Ad sales, trust
Losing money, finding out what we
really do, showing relevant
information
Algorithms
Facebook
@gil_zilberfeld@gil_zilberfeld
What about Kayak?
Importance, risks, focus
@gil_zilberfeld
◉ Important:
◉ Risks:
◉ Focus:
Commerce, Immediacy
Dependency on other systems
Information, reliability, accuracy
Integration
Kayak
@gil_zilberfeld
@gil_zilberfeld
◉ The tests we have
◉ The workflows we
cover (value)
◉ The risks we answer
◉ The costs incurred by
the tests
◉ The dependencies we
rely on
◉ The architecture
◉ The resources
◉ The skills
Testing cartography
@gil_zilberfeld
@gil_zilberfeld
◉ “Main” Workflow
coverage
◉ Architectural stability
◉ Workflow stability
◉ Manual regression
testing time
◉ Time to feedback
◉ Escaped bugs that we
could have found(by
customer or internally)
What to track
@gil_zilberfeld
@gil_zilberfeld
Test suite clean up
◉ Organize sanity, regression and acceptance
◉ Delete “Ignored” tests
◉ Fix grouping for test cohesion
@gil_zilberfeld
When adding tests
◉ Add tests at the right level
◉ Move “older stable” area tests to later build
cycles
◉ Move “newer unstable” area tests to earlier
cycles
@gil_zilberfeld
@gil_zilberfeld
@gil_zilberfeld
Uninformative tests
◉ Tests that don’t point to the problem
◉ Not enough information on failure
◉ Checking too many operations
◉ No overlapping between test types
(triangulation)
@gil_zilberfeld
@gil_zilberfeld
Unreliable tests
◉ Inability to consistently run anywhere, anytime
◉ Flaky tests
◉ Dependency on unstable resources, platforms
◉ Test isolation (resources, initialization, cleanup)
@gil_zilberfeld
@gil_zilberfeld
◉ Data transformation
◉ Tests that always pass
◉ Unclear test names
◉ Logic in tests
◉ Readability
◉ Code matching
◉ No assertions
Misleading tests
@gil_zilberfeld
@gil_zilberfeld
Tests that hurt you
◉ Hard to setup
◉ Test run length
◉ Build cycle run length
@gil_zilberfeld
@gil_zilberfeld
Maintenance issues
◉ Copy-paste, duplication
◉ Where do I add the next test?
◉ Tests that do same thing “just to be on the safe
side”
◉ Verbose and big setup, no framework (Page
object)
@gil_zilberfeld
@gil_zilberfeld
Lazy creates the norm
◉ Copy-and-paste duplication
◉ Bigger tests over smaller ones
◉ It may not be that good for you
@gil_zilberfeld
@gil_zilberfeld
Testability
◉ Accessibility
◉ Seams
◉ Big setup and mocks
◉ Shared state
◉ Unknown side effects
@gil_zilberfeld
@gil_zilberfeld
@gil_zilberfeld
@gil_zilberfeld
Thanks!
ANY QUESTIONS?
You can find me at:
gil.zilberfeld@gmail.com
@gil_zilberfeld
http://www.GilZilberfeld.com
http://www.EverydayUnitTesting.com

More Related Content

Similar to Zen And the Art of Test Maintenance Presentation

Zen and the Art of Test Maintenance
Zen and the Art of Test MaintenanceZen and the Art of Test Maintenance
Zen and the Art of Test Maintenance
Gil Zilberfeld
 
Fractal test planning
Fractal test planningFractal test planning
Fractal test planning
Gil Zilberfeld
 
Better Estimation and Planning
Better Estimation and PlanningBetter Estimation and Planning
Better Estimation and Planning
Gil Zilberfeld
 
Introduction to Unit Testing
Introduction to Unit TestingIntroduction to Unit Testing
Introduction to Unit Testing
Gil Zilberfeld
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
Gil Zilberfeld
 
Testing economics101
Testing economics101Testing economics101
Testing economics101
Gil Zilberfeld
 
The fastest BDD crash-course ever
The fastest BDD crash-course everThe fastest BDD crash-course ever
The fastest BDD crash-course ever
Gil Zilberfeld
 
Better Estimation and Planning
Better Estimation and PlanningBetter Estimation and Planning
Better Estimation and Planning
Gil Zilberfeld
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
Gil Zilberfeld
 
Why TDD is Important for Everyone
Why TDD is Important for EveryoneWhy TDD is Important for Everyone
Why TDD is Important for Everyone
Gil Zilberfeld
 
Work
WorkWork
TDD for the rest of us...
TDD for the rest of us...TDD for the rest of us...
TDD for the rest of us...
Gil Zilberfeld
 
A Horror Story
A Horror StoryA Horror Story
A Horror Story
Gil Zilberfeld
 
TDD patterns
TDD patternsTDD patterns
TDD patterns
Gil Zilberfeld
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of Us
TEST Huddle
 
Continuous Learning - The New ALM
Continuous Learning - The New ALMContinuous Learning - The New ALM
Continuous Learning - The New ALM
Gil Zilberfeld
 
Planning with #NoEstimates
Planning with #NoEstimatesPlanning with #NoEstimates
Planning with #NoEstimates
Gil Zilberfeld
 
Spaceship TDD Style
Spaceship TDD StyleSpaceship TDD Style
Spaceship TDD Style
Gil Zilberfeld
 
ROI is Dead!
ROI is Dead!ROI is Dead!
ROI is Dead!
Gil Zilberfeld
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of us
Gil Zilberfeld
 

Similar to Zen And the Art of Test Maintenance Presentation (20)

Zen and the Art of Test Maintenance
Zen and the Art of Test MaintenanceZen and the Art of Test Maintenance
Zen and the Art of Test Maintenance
 
Fractal test planning
Fractal test planningFractal test planning
Fractal test planning
 
Better Estimation and Planning
Better Estimation and PlanningBetter Estimation and Planning
Better Estimation and Planning
 
Introduction to Unit Testing
Introduction to Unit TestingIntroduction to Unit Testing
Introduction to Unit Testing
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
 
Testing economics101
Testing economics101Testing economics101
Testing economics101
 
The fastest BDD crash-course ever
The fastest BDD crash-course everThe fastest BDD crash-course ever
The fastest BDD crash-course ever
 
Better Estimation and Planning
Better Estimation and PlanningBetter Estimation and Planning
Better Estimation and Planning
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
 
Why TDD is Important for Everyone
Why TDD is Important for EveryoneWhy TDD is Important for Everyone
Why TDD is Important for Everyone
 
Work
WorkWork
Work
 
TDD for the rest of us...
TDD for the rest of us...TDD for the rest of us...
TDD for the rest of us...
 
A Horror Story
A Horror StoryA Horror Story
A Horror Story
 
TDD patterns
TDD patternsTDD patterns
TDD patterns
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of Us
 
Continuous Learning - The New ALM
Continuous Learning - The New ALMContinuous Learning - The New ALM
Continuous Learning - The New ALM
 
Planning with #NoEstimates
Planning with #NoEstimatesPlanning with #NoEstimates
Planning with #NoEstimates
 
Spaceship TDD Style
Spaceship TDD StyleSpaceship TDD Style
Spaceship TDD Style
 
ROI is Dead!
ROI is Dead!ROI is Dead!
ROI is Dead!
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of us
 

More from Gil Zilberfeld

Spock: It's Only Logical
Spock: It's Only LogicalSpock: It's Only Logical
Spock: It's Only Logical
Gil Zilberfeld
 
Dependency injection and Why It Matters to Testers
Dependency injection and Why It Matters to TestersDependency injection and Why It Matters to Testers
Dependency injection and Why It Matters to Testers
Gil Zilberfeld
 
Spring Testing Features
Spring Testing FeaturesSpring Testing Features
Spring Testing Features
Gil Zilberfeld
 
The Untold User Story
The Untold User StoryThe Untold User Story
The Untold User Story
Gil Zilberfeld
 
The Whole Story - Mapping, Slicing and Figuring things out
The Whole Story - Mapping, Slicing and Figuring things outThe Whole Story - Mapping, Slicing and Figuring things out
The Whole Story - Mapping, Slicing and Figuring things out
Gil Zilberfeld
 
Agile Intro to DevOps
Agile Intro to DevOpsAgile Intro to DevOps
Agile Intro to DevOps
Gil Zilberfeld
 
Playing games remotely
Playing games remotelyPlaying games remotely
Playing games remotely
Gil Zilberfeld
 
An agile introduction to DevOps
An agile introduction to DevOpsAn agile introduction to DevOps
An agile introduction to DevOps
Gil Zilberfeld
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
Gil Zilberfeld
 
Interview with the Vampire
Interview with the VampireInterview with the Vampire
Interview with the Vampire
Gil Zilberfeld
 
Simple
SimpleSimple
What is wrong with agile
What is wrong with agileWhat is wrong with agile
What is wrong with agile
Gil Zilberfeld
 
Rebooting Application Life Cycle Management
Rebooting Application Life Cycle ManagementRebooting Application Life Cycle Management
Rebooting Application Life Cycle Management
Gil Zilberfeld
 

More from Gil Zilberfeld (13)

Spock: It's Only Logical
Spock: It's Only LogicalSpock: It's Only Logical
Spock: It's Only Logical
 
Dependency injection and Why It Matters to Testers
Dependency injection and Why It Matters to TestersDependency injection and Why It Matters to Testers
Dependency injection and Why It Matters to Testers
 
Spring Testing Features
Spring Testing FeaturesSpring Testing Features
Spring Testing Features
 
The Untold User Story
The Untold User StoryThe Untold User Story
The Untold User Story
 
The Whole Story - Mapping, Slicing and Figuring things out
The Whole Story - Mapping, Slicing and Figuring things outThe Whole Story - Mapping, Slicing and Figuring things out
The Whole Story - Mapping, Slicing and Figuring things out
 
Agile Intro to DevOps
Agile Intro to DevOpsAgile Intro to DevOps
Agile Intro to DevOps
 
Playing games remotely
Playing games remotelyPlaying games remotely
Playing games remotely
 
An agile introduction to DevOps
An agile introduction to DevOpsAn agile introduction to DevOps
An agile introduction to DevOps
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
 
Interview with the Vampire
Interview with the VampireInterview with the Vampire
Interview with the Vampire
 
Simple
SimpleSimple
Simple
 
What is wrong with agile
What is wrong with agileWhat is wrong with agile
What is wrong with agile
 
Rebooting Application Life Cycle Management
Rebooting Application Life Cycle ManagementRebooting Application Life Cycle Management
Rebooting Application Life Cycle Management
 

Recently uploaded

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 

Recently uploaded (20)

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 

Zen And the Art of Test Maintenance Presentation