SlideShare une entreprise Scribd logo
1  sur  42
Reversed TTeessttss PPyyrraammiidd –– DDeeaalliinngg WWiitthh 
LLeeggaaccyy CCooddee 
Wiktor Żołnowski 
@streser 
http://www.agileszkolenia.pl 
http://codesprinters.com 
@pragmaticcoders 
http://pragmaticcoders.com
Can you imagine perfect software?
Tests pyramid 
End to End Tests 
Functional/Integration Tests 
Unit Tests
It would be perfect to work with perfect 
software every day...
But!
Reality...
Is...
Different!
Legacy Code
How did we get to this point?
It's all because of the money...
Technical Debt
Sometimes Technical Debt could be 
considered as something good...
Unfortunately temptation of easy 
making money is huge...
People lives in illusion of continuous, 
fast and low cost development...
Forgetting about the Quality...
Success in Software Development is something which is not 
continuous...
Success is state that you can achieve but also lose very fast 
if you can't respond to changes fast enough...
So, is it possible to deal with legacy code?
Reversed Tests Pyramid 
End-to-End Tests 
Functional/Integration Tests 
Unit Tests
- What?!
You can't do unit testing when there are 
no units in your software...
You can't do integration tests when 
there is nothing to integrate...
You need to refactor your code so it 
would be testable...
How to refactor without tests?!
Now refactor... 
High level tests gives you courage to refactor your code... 
●
But.. There are few reasons why you shouldn't 
reverse tests pyramid 
End-To-End tests are too long...
End-to-end tests are difficult to maintain... 
If we need end-to-end tests we are probably doing something 
wrong with our architecture...
So it's all about reversing back our 
tests pyramid.
Step by step we are introducing new 
architecture...
Remember that creating reversed tests 
pyramid and reversing it back will take 
some time...
But you need to do this if you want to 
pay your technical debt back!
Few final thoughts... 
Keep your technical debt as low as possible and try to 
pay it back every time you can. For example use your 
slack time for that!
Remember - WHY we are doing this?
“Leave the world better then you found it”
Beware of refactoring just for refactoring! 
Few final thoughts...
Few final thoughts... 
● Beware of refactoring just for refactoring! 
● Resist temptation to re-write from scratch – history is against you, 
such projects usually fail. 
● Remember to always remove your (duplicated) tests! 
● Software quality in many cases could be understood as ability to 
introduce changes into software! 
● Keep your technical debt as low as possible and try to pay it back 
every time you can. For example use your slack time for that! 
Resist temptation to re-write from scratch – history is 
against you, such projects usually fail.
Few final thoughts... 
● Beware of refactoring just for refactoring! 
● Resist temptation to re-write from scratch – history is against you, 
such projects usually fail. 
● Remember to always remove your (duplicated) tests! 
Remember to always remove your (duplicated) tests! 
● Software quality in many cases could be understood as ability to 
introduce changes into software! 
● Keep your technical debt as low as possible and try to pay it back 
every time you can. For example use your slack time for that!
False positive or false negative safety 
net is even worst than lack of safety 
net...
● Software quality in many cases could be understood as 
ability to introduce changes into software!
Wiktor Żołnowski 
agileszkolenia.pl 
Questions? 
@streser 
http://pragmaticcoders.com 
http://codesprinters.com

Contenu connexe

Tendances

Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developershamvocke
 
The art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testThe art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testMobileMonday Estonia
 
Cynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not GuaranteedCynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not GuaranteedAnna Royzman
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentpmanvi
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile DevelopmentMatt Griffin
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Sigma Software
 
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...PROIDEA
 
Test Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverTest Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverKiryl Baranoshnik
 
Managing and evolving JavaScript Code
Managing and evolving JavaScript CodeManaging and evolving JavaScript Code
Managing and evolving JavaScript CodeJean Carlo Emer
 
What Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeWhat Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeRobert Stackhouse
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is ImportaintSana Nasar
 
AWS Toolkit for Visual Studio Version 2
AWS Toolkit for Visual Studio Version 2AWS Toolkit for Visual Studio Version 2
AWS Toolkit for Visual Studio Version 2Adron Hall
 
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Johan De Wit
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmerClaudia Rosu
 

Tendances (20)

Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
 
The art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testThe art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow test
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Cynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not GuaranteedCynthia Wu: Satisfaction Not Guaranteed
Cynthia Wu: Satisfaction Not Guaranteed
 
Agileee 2012
Agileee 2012Agileee 2012
Agileee 2012
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile Development
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
 
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...
JDD2014: Continuous delivery: capitalizing high quality automated tests - Szc...
 
Test Driven Development: More Development Than Ever
Test Driven Development: More Development Than EverTest Driven Development: More Development Than Ever
Test Driven Development: More Development Than Ever
 
Design Sprints
Design SprintsDesign Sprints
Design Sprints
 
Managing and evolving JavaScript Code
Managing and evolving JavaScript CodeManaging and evolving JavaScript Code
Managing and evolving JavaScript Code
 
What Software Quality Assurance Means to Me
What Software Quality Assurance Means to MeWhat Software Quality Assurance Means to Me
What Software Quality Assurance Means to Me
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
AWS Toolkit for Visual Studio Version 2
AWS Toolkit for Visual Studio Version 2AWS Toolkit for Visual Studio Version 2
AWS Toolkit for Visual Studio Version 2
 
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
Test driven development_and_puppet-cfgmgmtcamp_eu-20140402
 
Tester vs Developer
Tester vs DeveloperTester vs Developer
Tester vs Developer
 
Unit testing for project managers
Unit testing for project managersUnit testing for project managers
Unit testing for project managers
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmer
 

En vedette

Few Questions about Continuous Delivery
Few Questions about Continuous DeliveryFew Questions about Continuous Delivery
Few Questions about Continuous DeliveryWiktor Żołnowski
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareWiktor Żołnowski
 
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunWomen in Technology Poland
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideSarah Maddox
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Wiktor Żołnowski
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Teamkraqa
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaGeek Girls Carrots Poznan
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Wiktor Żołnowski
 
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...kraqa
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Wiktor Żołnowski
 
Artur Górski - How many defects are left
Artur Górski - How many defects are leftArtur Górski - How many defects are left
Artur Górski - How many defects are leftkraqa
 
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"mamopracuj
 
BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1) BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1) Wiktor Żołnowski
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Serviceskraqa
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testingkraqa
 

En vedette (20)

Few Questions about Continuous Delivery
Few Questions about Continuous DeliveryFew Questions about Continuous Delivery
Few Questions about Continuous Delivery
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
 
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika Braun
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guide
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
 
selenium grid & docker
selenium grid & dockerselenium grid & docker
selenium grid & docker
 
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
Monika Braun - "Tester i frameworki agilowe - rola testera w różnych metodyka...
 
Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013Scrum and Kanban are not enough - Agile Slovenia 2013
Scrum and Kanban are not enough - Agile Slovenia 2013
 
Artur Górski - How many defects are left
Artur Górski - How many defects are leftArtur Górski - How many defects are left
Artur Górski - How many defects are left
 
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
Let's tests! Prezentacja Moniki Braun w trakcie warsztatów "Let's go to IT"
 
BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1) BDD and Agile Requirements (v 2.1)
BDD and Agile Requirements (v 2.1)
 
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web ServicesKraQA #22, Filip Cynarski -  Selenium Grid w chmurze Amazon Web Services
KraQA #22, Filip Cynarski - Selenium Grid w chmurze Amazon Web Services
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testing
 
People are awesome - ALE 2014
People are awesome - ALE 2014People are awesome - ALE 2014
People are awesome - ALE 2014
 
Bdd and Agile Requirements
Bdd and Agile RequirementsBdd and Agile Requirements
Bdd and Agile Requirements
 

Similaire à Reversed Tests Pyramid - Agile Prague 2014

Reversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeReversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeSQALab
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
Effective cplusplus
Effective cplusplusEffective cplusplus
Effective cplusplusMark Veltzer
 
AgilePT'10 - Evolving Software: Five powerful metaphors to explain change
AgilePT'10 - Evolving Software: Five powerful metaphors to explain changeAgilePT'10 - Evolving Software: Five powerful metaphors to explain change
AgilePT'10 - Evolving Software: Five powerful metaphors to explain changeFilipe Correia
 
Agile Development: Key to smart software development
Agile Development: Key to smart software developmentAgile Development: Key to smart software development
Agile Development: Key to smart software developmentJerlyn Manohar
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2Dino Dini
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential SkillsJohn Choi
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Peter Gfader
 
top developer mistakes
top developer mistakes top developer mistakes
top developer mistakes Hanokh Aloni
 
Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build processNicolas Mas
 
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff  - Mykel Alvis at Puppet Camp AltantaDon't Suck at Building Stuff  - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp AltantaPuppet
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpAhmed Abdou
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!Puppet
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Juraj Martinka
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Lars Thorup
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from IndustryGarth Gilmour
 

Similaire à Reversed Tests Pyramid - Agile Prague 2014 (20)

Reversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy CodeReversed Test Pyramid - Testing and dealing with Legacy Code
Reversed Test Pyramid - Testing and dealing with Legacy Code
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Effective cplusplus
Effective cplusplusEffective cplusplus
Effective cplusplus
 
AgilePT'10 - Evolving Software: Five powerful metaphors to explain change
AgilePT'10 - Evolving Software: Five powerful metaphors to explain changeAgilePT'10 - Evolving Software: Five powerful metaphors to explain change
AgilePT'10 - Evolving Software: Five powerful metaphors to explain change
 
Agile Development: Key to smart software development
Agile Development: Key to smart software developmentAgile Development: Key to smart software development
Agile Development: Key to smart software development
 
Agile
AgileAgile
Agile
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
top developer mistakes
top developer mistakes top developer mistakes
top developer mistakes
 
Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
 
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff  - Mykel Alvis at Puppet Camp AltantaDon't Suck at Building Stuff  - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in php
 
Introduction to Scrum
Introduction to ScrumIntroduction to Scrum
Introduction to Scrum
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
Beyond Technical Debt: Unconventional techniques to uncover technical and soc...
 
Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from Industry
 

Dernier

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Dernier (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

Reversed Tests Pyramid - Agile Prague 2014

  • 1. Reversed TTeessttss PPyyrraammiidd –– DDeeaalliinngg WWiitthh LLeeggaaccyy CCooddee Wiktor Żołnowski @streser http://www.agileszkolenia.pl http://codesprinters.com @pragmaticcoders http://pragmaticcoders.com
  • 2. Can you imagine perfect software?
  • 3.
  • 4. Tests pyramid End to End Tests Functional/Integration Tests Unit Tests
  • 5. It would be perfect to work with perfect software every day...
  • 11. How did we get to this point?
  • 12. It's all because of the money...
  • 14. Sometimes Technical Debt could be considered as something good...
  • 15. Unfortunately temptation of easy making money is huge...
  • 16. People lives in illusion of continuous, fast and low cost development...
  • 17. Forgetting about the Quality...
  • 18. Success in Software Development is something which is not continuous...
  • 19. Success is state that you can achieve but also lose very fast if you can't respond to changes fast enough...
  • 20. So, is it possible to deal with legacy code?
  • 21. Reversed Tests Pyramid End-to-End Tests Functional/Integration Tests Unit Tests
  • 23. You can't do unit testing when there are no units in your software...
  • 24. You can't do integration tests when there is nothing to integrate...
  • 25. You need to refactor your code so it would be testable...
  • 26. How to refactor without tests?!
  • 27. Now refactor... High level tests gives you courage to refactor your code... ●
  • 28. But.. There are few reasons why you shouldn't reverse tests pyramid End-To-End tests are too long...
  • 29. End-to-end tests are difficult to maintain... If we need end-to-end tests we are probably doing something wrong with our architecture...
  • 30. So it's all about reversing back our tests pyramid.
  • 31. Step by step we are introducing new architecture...
  • 32. Remember that creating reversed tests pyramid and reversing it back will take some time...
  • 33. But you need to do this if you want to pay your technical debt back!
  • 34. Few final thoughts... Keep your technical debt as low as possible and try to pay it back every time you can. For example use your slack time for that!
  • 35. Remember - WHY we are doing this?
  • 36. “Leave the world better then you found it”
  • 37. Beware of refactoring just for refactoring! Few final thoughts...
  • 38. Few final thoughts... ● Beware of refactoring just for refactoring! ● Resist temptation to re-write from scratch – history is against you, such projects usually fail. ● Remember to always remove your (duplicated) tests! ● Software quality in many cases could be understood as ability to introduce changes into software! ● Keep your technical debt as low as possible and try to pay it back every time you can. For example use your slack time for that! Resist temptation to re-write from scratch – history is against you, such projects usually fail.
  • 39. Few final thoughts... ● Beware of refactoring just for refactoring! ● Resist temptation to re-write from scratch – history is against you, such projects usually fail. ● Remember to always remove your (duplicated) tests! Remember to always remove your (duplicated) tests! ● Software quality in many cases could be understood as ability to introduce changes into software! ● Keep your technical debt as low as possible and try to pay it back every time you can. For example use your slack time for that!
  • 40. False positive or false negative safety net is even worst than lack of safety net...
  • 41. ● Software quality in many cases could be understood as ability to introduce changes into software!
  • 42. Wiktor Żołnowski agileszkolenia.pl Questions? @streser http://pragmaticcoders.com http://codesprinters.com