SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Reversed Tests Pyramid




              Wiktor Żołnowski

              @streser
              http://www.agileszkolenia.pl
              http://codesprinters.com
Agile Coach      Troublemaker
       Who am I?
         Passionate
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...
●
Now you can refactor and introduce
some units into your software...
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 in many cases could your (duplicated) tests!
     Software quality always remove 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
                               www.codesprinters.com



Questions?



@streser
http://www.agileszkolenia.pl
http://codesprinters.com

Weitere ähnliche Inhalte

Was ist angesagt?

Why and how to keep your code quality
Why and how to keep your code quality Why and how to keep your code quality
Why and how to keep your code quality Krešimir Antolić
 
JavaScript Unit Testing
JavaScript Unit TestingJavaScript Unit Testing
JavaScript Unit TestingMihail Gaberov
 
OpenWFEru (Ruote) @ BPMinna, June 2008
OpenWFEru (Ruote) @ BPMinna, June 2008OpenWFEru (Ruote) @ BPMinna, June 2008
OpenWFEru (Ruote) @ BPMinna, June 2008John Mettraux
 
Don’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleaguesDon’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleaguesIzzet Mustafaiev
 
JavaScript frontend testing from failure to good to great
JavaScript frontend testing from failure to good to greatJavaScript frontend testing from failure to good to great
JavaScript frontend testing from failure to good to greatPhilipp Fehre
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patternstdc-globalcode
 

Was ist angesagt? (8)

Why and how to keep your code quality
Why and how to keep your code quality Why and how to keep your code quality
Why and how to keep your code quality
 
JavaScript Unit Testing
JavaScript Unit TestingJavaScript Unit Testing
JavaScript Unit Testing
 
Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?Why do you say BDD if it is Cucumber?
Why do you say BDD if it is Cucumber?
 
OpenWFEru (Ruote) @ BPMinna, June 2008
OpenWFEru (Ruote) @ BPMinna, June 2008OpenWFEru (Ruote) @ BPMinna, June 2008
OpenWFEru (Ruote) @ BPMinna, June 2008
 
Don’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleaguesDon’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleagues
 
JavaScript frontend testing from failure to good to great
JavaScript frontend testing from failure to good to greatJavaScript frontend testing from failure to good to great
JavaScript frontend testing from failure to good to great
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
 
Best coding practices
Best coding practicesBest coding practices
Best coding practices
 

Andere mochten auch

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
 
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
 
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
 
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
 
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
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Teamkraqa
 
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
 
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
 
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
 
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
 
Eleven step of software testing process
Eleven step of software testing processEleven step of software testing process
Eleven step of software testing processHimanshu
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testingkraqa
 

Andere mochten auch (20)

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
 
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
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
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
 
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
 
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
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
 
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...
 
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
 
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
 
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)
 
Agileee 2012
Agileee 2012Agileee 2012
Agileee 2012
 
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
 
Eleven step of software testing process
Eleven step of software testing processEleven step of software testing process
Eleven step of software testing process
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testing
 
Bdd and Agile Requirements
Bdd and Agile RequirementsBdd and Agile Requirements
Bdd and Agile Requirements
 
People are awesome - ALE 2014
People are awesome - ALE 2014People are awesome - ALE 2014
People are awesome - ALE 2014
 

Ähnlich wie Xp days ukraine 2012

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
 
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
 
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
 
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
 
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
 
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
 
The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!Jonathan Ross
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)Nacho Cougil
 
Effective cplusplus
Effective cplusplusEffective cplusplus
Effective cplusplusMark Veltzer
 
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
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)Nacho Cougil
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++Michael Heron
 
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
 
Functional Prototyping For Mobile Apps
Functional Prototyping For Mobile AppsFunctional Prototyping For Mobile Apps
Functional Prototyping For Mobile AppsMovel
 
Introducing Agile Methodologies
Introducing Agile MethodologiesIntroducing Agile Methodologies
Introducing Agile MethodologiesStfalcon Meetups
 

Ähnlich wie Xp days ukraine 2012 (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
 
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
 
Agile
AgileAgile
Agile
 
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
 
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
 
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
 
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
 
The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!The Art Of Performance Tuning - with presenter notes!
The Art Of Performance Tuning - with presenter notes!
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
Effective cplusplus
Effective cplusplusEffective cplusplus
Effective cplusplus
 
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
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
Spaghetti gate
Spaghetti gateSpaghetti gate
Spaghetti gate
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
 
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
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Functional Prototyping For Mobile Apps
Functional Prototyping For Mobile AppsFunctional Prototyping For Mobile Apps
Functional Prototyping For Mobile Apps
 
Introducing Agile Methodologies
Introducing Agile MethodologiesIntroducing Agile Methodologies
Introducing Agile Methodologies
 

Kürzlich hochgeladen

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
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
 

Kürzlich hochgeladen (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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 ...
 
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
 

Xp days ukraine 2012

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