SlideShare a Scribd company logo
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?
Reversed Tests Pyramid - Agile Prague 2014
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

More Related Content

PPTX
РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021
PDF
Why and how to keep your code quality
PPTX
Outside-in Testing in Vue with Cypress
PDF
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
PDF
Continuous integration
PDF
Tdd - Test Driven Development
PDF
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
PDF
근육 기억으로 주도하는 테스트 주도 개발 입문하기
РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021
Why and how to keep your code quality
Outside-in Testing in Vue with Cypress
Front-end Testing (manual, automated, you name it) - Erich Jagomägis - Develo...
Continuous integration
Tdd - Test Driven Development
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
근육 기억으로 주도하는 테스트 주도 개발 입문하기

What's hot (20)

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

Viewers also liked (20)

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

Similar to Reversed Tests Pyramid - Agile Prague 2014 (20)

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

Recently uploaded (20)

PDF
top salesforce developer skills in 2025.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
System and Network Administraation Chapter 3
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
ai tools demonstartion for schools and inter college
PDF
Digital Strategies for Manufacturing Companies
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Nekopoi APK 2025 free lastest update
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Design an Analysis of Algorithms I-SECS-1021-03
top salesforce developer skills in 2025.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Softaken Excel to vCard Converter Software.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
2025 Textile ERP Trends: SAP, Odoo & Oracle
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
System and Network Administraation Chapter 3
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
ai tools demonstartion for schools and inter college
Digital Strategies for Manufacturing Companies
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PTS Company Brochure 2025 (1).pdf.......
Which alternative to Crystal Reports is best for small or large businesses.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Nekopoi APK 2025 free lastest update
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Design an Analysis of Algorithms I-SECS-1021-03

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?
  • 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