SlideShare a Scribd company logo
Reversed Tests Pyramid




             Wiktor Żołnowski

             @streser
             http://www.agileszkolenia.pl
             http://codesprinters.com
Can you imagine perfect software?
It would be perfect to work with perfect
                        software every day...


But...



         Our everyday work looks a little bit
                                different...
It's called...




Legacy Code
Tests pyramid
It's easy...




For a perfectly coded application...
Not so easy for legacy code
●   How to implement unit tests if we don't have any separated units?
●   You need to refactor your code to test it but refactoring without tests
    is too risky...
●   There is a difference between courage and stupidity..
●   Should we give up then and for example rewrite the whole
    application?
First of all...



How did we get to this point?
It's all because of the Technical Debt
Technical Debt is evil!
●   Sometimes it is to late to payback technical debt in a simple way...
●   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...
Is it possible to pay Technical Debt back?
Reversed Tests Pyramid
Now refactor...
●   High level tests gives you courage to refactor your code...
●   You have to assume that the old version of the system works
    properly...
●   Now you can write some Unit Tests...
●   Do it step by step...
●   Cover your functionality with Unit Tests...
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.
But...
●   Remember that creating reversed tests pyramid and reversing it back
    will take some time...
●   You need to deal with it if you want to pay back your technical debt...
●   Return of investment will be visible soon...
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!
Wiktor Żołnowski
             www.codesprinters.com



Questions?

More Related Content

PPTX
Agile Evolution
PPTX
Continuous Delivery
PPTX
Dev ops is more than CI+CD tools
PPTX
Continuous Delivery
PPTX
XP (IT Brunch)
PDF
Continuous Integration, Continuous Quality, Continuous Delivery
PDF
Devops culture in customer systems
PPTX
TDD in functional testing with WebDriver
Agile Evolution
Continuous Delivery
Dev ops is more than CI+CD tools
Continuous Delivery
XP (IT Brunch)
Continuous Integration, Continuous Quality, Continuous Delivery
Devops culture in customer systems
TDD in functional testing with WebDriver

What's hot (20)

PPSX
Continuous Integration - Oracle Database Objects
PPTX
Introduction to DevOps
PDF
Continuous Integration
PDF
"DevOps > CI+CD "
PDF
How technical excellence helps in LeSS adoption
PPTX
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
PPTX
Continuous Integration and Continuous Deployment in Enterprise scenario
PPTX
Intro to DevOps
PDF
Check in dance
PPT
Scrum and Test-driven development
PDF
Security Implications for a DevOps Transformation
PPTX
Continuous Integration for Beginners
PDF
PPTX
Continuous Delivery: why ? where to start ? how to scale ?
PPTX
CI-CD and DevOps with Ruby
PDF
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
PPT
Continuous Integration and Builds
PPTX
Continuous integration with Jenkins
PPTX
Test driven development
PDF
Understanding DevOps in simpler way with Continuous Delivery
Continuous Integration - Oracle Database Objects
Introduction to DevOps
Continuous Integration
"DevOps > CI+CD "
How technical excellence helps in LeSS adoption
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Continuous Integration and Continuous Deployment in Enterprise scenario
Intro to DevOps
Check in dance
Scrum and Test-driven development
Security Implications for a DevOps Transformation
Continuous Integration for Beginners
Continuous Delivery: why ? where to start ? how to scale ?
CI-CD and DevOps with Ruby
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
Continuous Integration and Builds
Continuous integration with Jenkins
Test driven development
Understanding DevOps in simpler way with Continuous Delivery
Ad

Viewers also liked (10)

PDF
Nick Oostvogels: 5 Arguments Against Kanban
PDF
Piotr Burdylo: Managing developers is complex
PDF
Geeks vs Managers (part 2)
PDF
Henrik Kniberg: Lean from the Trenches keynote @ AgileEE
PDF
Раскрась свой Бэклог! Или о том как принимать решения на основе разных типов ...
PDF
Nathaniel Cadwell: The Art of Facilitation
PDF
Nataliya Trenina: Office magic
PPTX
Anotherpm an example of agile survival
PDF
Henrik Kniberg: Agile at home
PPTX
The recent history of management
Nick Oostvogels: 5 Arguments Against Kanban
Piotr Burdylo: Managing developers is complex
Geeks vs Managers (part 2)
Henrik Kniberg: Lean from the Trenches keynote @ AgileEE
Раскрась свой Бэклог! Или о том как принимать решения на основе разных типов ...
Nathaniel Cadwell: The Art of Facilitation
Nataliya Trenina: Office magic
Anotherpm an example of agile survival
Henrik Kniberg: Agile at home
The recent history of management
Ad

Similar to Agileee 2012 (20)

ODP
Reversed Tests Pyramid - Agile Prague 2014
ODP
Xp days ukraine 2012
ODP
Reversed Test Pyramid - Testing and dealing with Legacy Code
ODP
Sqa days2013
PDF
Agile Software Design
PDF
Refactoring 2TheMax (con ReSharper)
PDF
Let's test!
PPTX
Everything you Wanted to Know About Refactoring
PDF
Keeping code clean
PDF
Effective Unit Testing
PPTX
An Introduction to Developer Testing
PDF
Refactoring 2 The Max
PDF
Mine Your Own Code
PPTX
Software Quality via Unit Testing
PPTX
Refactoring workshop
PDF
Devnology back toschool software reengineering
PPTX
Cleaning Code - Tools and Techniques for Large Legacy Projects
PDF
Quality is a variable
PDF
[Keynote] James Higgs - Quality is a variable
PPTX
Software Design Principles and Best Practices - Satyajit Dey
Reversed Tests Pyramid - Agile Prague 2014
Xp days ukraine 2012
Reversed Test Pyramid - Testing and dealing with Legacy Code
Sqa days2013
Agile Software Design
Refactoring 2TheMax (con ReSharper)
Let's test!
Everything you Wanted to Know About Refactoring
Keeping code clean
Effective Unit Testing
An Introduction to Developer Testing
Refactoring 2 The Max
Mine Your Own Code
Software Quality via Unit Testing
Refactoring workshop
Devnology back toschool software reengineering
Cleaning Code - Tools and Techniques for Large Legacy Projects
Quality is a variable
[Keynote] James Higgs - Quality is a variable
Software Design Principles and Best Practices - Satyajit Dey

More from Wiktor Żołnowski (11)

ODP
Bdd and Agile Requirements Boiling Frogs 2016
ODP
Few Questions about Continuous Delivery
ODP
Bdd and Agile Requirements
ODP
People are awesome - ALE 2014
ODP
BDD and Agile Requirements (v 2.1)
ODP
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
ODP
Strategie automatyzacji testow
PPTX
09 tdd kata backlog
ODP
Stickies on the wall will not help you if you are building crappy software
ODP
Scrum and Kanban are not enough - Agile Slovenia 2013
ODP
Bdd and Agile Requirements Boiling Frogs 2016
Few Questions about Continuous Delivery
Bdd and Agile Requirements
People are awesome - ALE 2014
BDD and Agile Requirements (v 2.1)
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Strategie automatyzacji testow
09 tdd kata backlog
Stickies on the wall will not help you if you are building crappy software
Scrum and Kanban are not enough - Agile Slovenia 2013

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
KodekX | Application Modernization Development
PDF
Modernizing your data center with Dell and AMD
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
cuic standard and advanced reporting.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
“AI and Expert System Decision Support & Business Intelligence Systems”
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KodekX | Application Modernization Development
Modernizing your data center with Dell and AMD
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
Agricultural_Statistics_at_a_Glance_2022_0.pdf
MYSQL Presentation for SQL database connectivity
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
The Rise and Fall of 3GPP – Time for a Sabbatical?
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Understanding_Digital_Forensics_Presentation.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
cuic standard and advanced reporting.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Chapter 3 Spatial Domain Image Processing.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation

Agileee 2012

  • 1. Reversed Tests Pyramid Wiktor Żołnowski @streser http://www.agileszkolenia.pl http://codesprinters.com
  • 2. Can you imagine perfect software?
  • 3. It would be perfect to work with perfect software every day... But... Our everyday work looks a little bit different...
  • 6. It's easy... For a perfectly coded application...
  • 7. Not so easy for legacy code ● How to implement unit tests if we don't have any separated units? ● You need to refactor your code to test it but refactoring without tests is too risky... ● There is a difference between courage and stupidity.. ● Should we give up then and for example rewrite the whole application?
  • 8. First of all... How did we get to this point?
  • 9. It's all because of the Technical Debt
  • 10. Technical Debt is evil! ● Sometimes it is to late to payback technical debt in a simple way... ● 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...
  • 11. Is it possible to pay Technical Debt back?
  • 13. Now refactor... ● High level tests gives you courage to refactor your code... ● You have to assume that the old version of the system works properly... ● Now you can write some Unit Tests... ● Do it step by step... ● Cover your functionality with Unit Tests...
  • 14. 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...
  • 15. So it's all about reversing back our tests pyramid.
  • 16. But... ● Remember that creating reversed tests pyramid and reversing it back will take some time... ● You need to deal with it if you want to pay back your technical debt... ● Return of investment will be visible soon...
  • 17. 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!
  • 18. Wiktor Żołnowski www.codesprinters.com Questions?