SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Testing in Legacy: From Rags to Riches
I’d like to share our experience
2
About me
{
“First name”: “Taras”,
“Last name”: “Slipets”,
“E-mail”: “taras.slipets@gmail.com”,
“LinkedIn Profile”: “http://www.linkedin.com/
pub/taras-slipets/
48/466/516”,
“Interests”: [
“Software Engineering”,
“Music”,
“Skiing”,
]
}
3
About presentation
4
About presentation
• General feeling about legacy
• System that we’ve received for improvement
• Effective steps that were performed
• What we’ve eventually reached
5
What does it mean – Legacy system?
6
Ask expert
7
Legacy system is…
8
Just long-term project
9
Where do we go now
• General feeling about legacy
• System that we’ve received for improvement
• Effective steps that were performed
• What we’ve eventually reached
10
What we’ve received
• 11-years old system SUCCESSFULLY running on production servers
• Written in Java 1.4
• No frameworks usage
• No documentation
• No developers who has worked on it
• Impatient customers
• Pantient management
• other surprises…
11
Bus factor
12
What we’d like to have?
13
What we’d like to have?
14
Shiny system with all cutting-edge frameworks
Reduce pain of maintenance and support
What we’d like to have?
15
Shiny system with all cutting-edge frameworks
Reduce pain of maintenance and support
Where do we go now
• General feeling about legacy
• System that we’ve received for improvement
• Effective steps that were performed
• What we’ve eventually reached
16
So, how we did it?
17
Setup your environment
18
Let’s deploy
our changes!
Great! Where
do we go?
Directly to production!
“To production!”
he said…
Setup your environment
19
DEV STAGE PROD
20
Logs, logs, logs
21
Domain model – classes level
22
Domain model – database level
23
Domain model – workflows
24
Peer review VERY often
25
Before changing code
26
We need to ensure it works
27
Testing
28
Testing levels
Unit tests
29
Integration testsSystem tests
Test existing and expected behavior
30
System testing (feature testing)
31
Application
under testing
System tests
Process Process
External world communication
32
External world communication - mocks
33
External world communication - mocks
34
External world communication - mocks
35
External world communication - mocks
36
System tests automation
37
Finally – let’s touch code!
38
Top occurring issues
• “do-stuff” methods
• “I’m aware of everything” classes
• “Celebrities” classes/interfaces
• “Magic goes here” blocks without comments
• Just obsolete code
39
What to do?
40
How about
41
42
Refactoring facilities
• Extract method
• Extract interface
• Parameter object
• Method object
• Replace type-checking code with
State/Strategy
• Move method/field
• …
43
Unit tests jumps into
44
Frameworks
• EasyMock
• Mockito
• PowerMock
45
Indication
After initial tests are written, use PowerMock as
indicator of bad system design
46
What is next?
47
48
49
Most used in our case
• Template method
• Strategy
• State
• Visitor
• Command
• Chain of Responsibility
• Observer
50
And again - logs, logs, logs
51
Hey, where are new features?
52
Extend functionality AFA it’s possible
53
How deep refactoring should be?
54
Theory the Godmother
• S.O.L.I.D.
• D.R.Y.
• K.I.S.S.
• …
55
In real world
56
Now we can add integration tests
57
What about build/deployment time?
58
What about build/deployment time?
59
Simple rule
60
But for us it hurt
61
Remedy?
62
Remedy
63
• Make app self-contained
• Simplify manual installation
Operations are happy
64
If it steal hurts - automate deployment
65
Where do we go now
• General feeling about legacy
• System that we’ve received for improvement
• Effective steps that were performed
• What we’ve eventually reached
66
Complete features list + tests for them
67
The winner takes it all
68
The dreams come true - build-pipeline!
69
A-team!
70
Lessons learned
71
Lessons learned
• Old project is not a disaster, but challenge
• Start from environment setup and feature testing. At least to
some extent
• Share knowledge with your colleagues and write docs
• Do not underestimate power of classical remedies (patterns,
working techniques)
• Be agile ;)
72
Links
• http://www.amazon.com/Working-Effectively-Legacy-Michael-
Feathers/dp/0131177052
• http://xpdays.com.ua/archive/xp-days-ukraine-
2011/materials/legacy/
• http://xpdays.com.ua/archive/xp-days-ukraine-
2012/materials/code-story/
• http://jeeconf.com/archive/materials-2014/legacy-projects/
• http://jeeconf.com/materials/web-application-i-have-always-
dreamt-of/
73
Thanks for your
attention!
74

Weitere ähnliche Inhalte

Andere mochten auch

Menús de celebraciones especiales 2016 Restaurante Manolín de Valladolid
Menús de celebraciones especiales 2016 Restaurante Manolín de ValladolidMenús de celebraciones especiales 2016 Restaurante Manolín de Valladolid
Menús de celebraciones especiales 2016 Restaurante Manolín de ValladolidRestaurante Manolín Valladolid
 
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp KrennPaintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp KrennJavaDayUA
 
об’єднання італії
об’єднання італіїоб’єднання італії
об’єднання італіїkilobajt
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...JavaDayUA
 
【要約】学問のすすめ_初編
【要約】学問のすすめ_初編【要約】学問のすすめ_初編
【要約】学問のすすめ_初編Courslide
 
Diapositiva de motivacion MariAlex
Diapositiva de motivacion MariAlexDiapositiva de motivacion MariAlex
Diapositiva de motivacion MariAlexShikys Miralles
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelJavaDayUA
 
Hosting SharePoint 2016 farm in azure
Hosting SharePoint 2016 farm in azureHosting SharePoint 2016 farm in azure
Hosting SharePoint 2016 farm in azureLearning SharePoint
 
Возможен ли вирусный маркетинг в b2b?
Возможен ли вирусный маркетинг в b2b?Возможен ли вирусный маркетинг в b2b?
Возможен ли вирусный маркетинг в b2b?BeaversBrothers
 
10 tips for learning spanish
10 tips for learning spanish10 tips for learning spanish
10 tips for learning spanishSteve Kaufmann
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016James Wright
 
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...Комплето
 
Oleg Koss CEM conference 2015 v3 - English
Oleg Koss CEM conference 2015 v3 - EnglishOleg Koss CEM conference 2015 v3 - English
Oleg Koss CEM conference 2015 v3 - EnglishOleg Koss
 
Oleg Koss design thinking breaking silos
Oleg Koss design thinking breaking silosOleg Koss design thinking breaking silos
Oleg Koss design thinking breaking silosOleg Koss
 

Andere mochten auch (17)

Fracturas
FracturasFracturas
Fracturas
 
Menús de celebraciones especiales 2016 Restaurante Manolín de Valladolid
Menús de celebraciones especiales 2016 Restaurante Manolín de ValladolidMenús de celebraciones especiales 2016 Restaurante Manolín de Valladolid
Menús de celebraciones especiales 2016 Restaurante Manolín de Valladolid
 
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp KrennPaintfree Object-Document Mapping for MongoDB by Philipp Krenn
Paintfree Object-Document Mapping for MongoDB by Philipp Krenn
 
об’єднання італії
об’єднання італіїоб’єднання італії
об’єднання італії
 
Carta Restaurante Manolín Valladolid
Carta Restaurante Manolín ValladolidCarta Restaurante Manolín Valladolid
Carta Restaurante Manolín Valladolid
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...
 
【要約】学問のすすめ_初編
【要約】学問のすすめ_初編【要約】学問のすすめ_初編
【要約】学問のすすめ_初編
 
Diapositiva de motivacion MariAlex
Diapositiva de motivacion MariAlexDiapositiva de motivacion MariAlex
Diapositiva de motivacion MariAlex
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next level
 
Hosting SharePoint 2016 farm in azure
Hosting SharePoint 2016 farm in azureHosting SharePoint 2016 farm in azure
Hosting SharePoint 2016 farm in azure
 
Возможен ли вирусный маркетинг в b2b?
Возможен ли вирусный маркетинг в b2b?Возможен ли вирусный маркетинг в b2b?
Возможен ли вирусный маркетинг в b2b?
 
10 tips for learning spanish
10 tips for learning spanish10 tips for learning spanish
10 tips for learning spanish
 
FINAL_Report
FINAL_ReportFINAL_Report
FINAL_Report
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016
 
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...
Как повысить продажи в дилерских сетях: интернет-маркетинг, телефония, CRM, н...
 
Oleg Koss CEM conference 2015 v3 - English
Oleg Koss CEM conference 2015 v3 - EnglishOleg Koss CEM conference 2015 v3 - English
Oleg Koss CEM conference 2015 v3 - English
 
Oleg Koss design thinking breaking silos
Oleg Koss design thinking breaking silosOleg Koss design thinking breaking silos
Oleg Koss design thinking breaking silos
 

Ähnlich wie Testing in Legacy: from Rags to Riches by Taras Slipets

Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwareDefcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwareDaveEdwards12
 
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet
 
IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)Peter Kofler
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cppClare Macrae
 
WTF is Penetration Testing v.2
WTF is Penetration Testing v.2WTF is Penetration Testing v.2
WTF is Penetration Testing v.2Scott Sutherland
 
Saleforce For Domino Dogs
Saleforce For Domino DogsSaleforce For Domino Dogs
Saleforce For Domino DogsMark Myers
 
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010Atlassian
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureAllison Pollard
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwareDefcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwarePriyanka Aash
 
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...Gene Kim
 
Mirco hering devops for systems of record final
Mirco hering devops for systems of record finalMirco hering devops for systems of record final
Mirco hering devops for systems of record finalMirco Hering
 
Spca2014 sp buy orbuild goedhart
Spca2014 sp buy orbuild goedhartSpca2014 sp buy orbuild goedhart
Spca2014 sp buy orbuild goedhartNCCOMMS
 
Mock-interview-ppt (A)- Copy.pptx
Mock-interview-ppt (A)- Copy.pptxMock-interview-ppt (A)- Copy.pptx
Mock-interview-ppt (A)- Copy.pptxLaxmiKabadi
 
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows tool
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows toolIntroducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows tool
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows toolMichael Gough
 
What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?Taras Slipets
 
Migration Concentrate
Migration ConcentrateMigration Concentrate
Migration ConcentrateInnoTech
 

Ähnlich wie Testing in Legacy: from Rags to Riches by Taras Slipets (20)

Testing in Legacy
Testing in LegacyTesting in Legacy
Testing in Legacy
 
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwareDefcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
 
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with PuppetPuppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with Puppet
 
IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)IT Systems for Knowledge Management used in Software Engineering (2010)
IT Systems for Knowledge Management used in Software Engineering (2010)
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
 
WTF is Penetration Testing v.2
WTF is Penetration Testing v.2WTF is Penetration Testing v.2
WTF is Penetration Testing v.2
 
Saleforce For Domino Dogs
Saleforce For Domino DogsSaleforce For Domino Dogs
Saleforce For Domino Dogs
 
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010
Code Review for Teams Too Busy to Review Code - Atlassian Summit 2010
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malwareDefcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
Defcon 22-wesley-mc grew-instrumenting-point-of-sale-malware
 
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...
DOES15 - Mirco Hering - Adopting DevOps Practices for Systems of Record – An ...
 
Mirco hering devops for systems of record final
Mirco hering devops for systems of record finalMirco hering devops for systems of record final
Mirco hering devops for systems of record final
 
Spca2014 sp buy orbuild goedhart
Spca2014 sp buy orbuild goedhartSpca2014 sp buy orbuild goedhart
Spca2014 sp buy orbuild goedhart
 
Mock-interview-ppt (A)- Copy.pptx
Mock-interview-ppt (A)- Copy.pptxMock-interview-ppt (A)- Copy.pptx
Mock-interview-ppt (A)- Copy.pptx
 
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows tool
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows toolIntroducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows tool
Introducing ArTHIR - ATT&CK Remote Threat Hunting Incident Response Windows tool
 
Solr pattern
Solr patternSolr pattern
Solr pattern
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?What developers can really contribute in DevOps concept?
What developers can really contribute in DevOps concept?
 
Migration Concentrate
Migration ConcentrateMigration Concentrate
Migration Concentrate
 

Mehr von JavaDayUA

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeJavaDayUA
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in JavaJavaDayUA
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9JavaDayUA
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesJavaDayUA
 
20 Years of Java
20 Years of Java20 Years of Java
20 Years of JavaJavaDayUA
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviewsJavaDayUA
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8JavaDayUA
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsJavaDayUA
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJavaDayUA
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureJavaDayUA
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVMJavaDayUA
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaJavaDayUA
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovJavaDayUA
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovJavaDayUA
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevJavaDayUA
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovJavaDayUA
 
API first with Swagger and Scala by Slava Schmidt
API first with Swagger and Scala by  Slava SchmidtAPI first with Swagger and Scala by  Slava Schmidt
API first with Swagger and Scala by Slava SchmidtJavaDayUA
 
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed TamanJavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed TamanJavaDayUA
 
Web-application I have always dreamt of by Victor Polischuk
Web-application I have always dreamt of by Victor PolischukWeb-application I have always dreamt of by Victor Polischuk
Web-application I have always dreamt of by Victor PolischukJavaDayUA
 
Monitoring of developers. The necessity or self-indulgence by Oleksiy Dyomin
Monitoring of developers. The necessity or self-indulgence by Oleksiy DyominMonitoring of developers. The necessity or self-indulgence by Oleksiy Dyomin
Monitoring of developers. The necessity or self-indulgence by Oleksiy DyominJavaDayUA
 

Mehr von JavaDayUA (20)

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a time
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
 
20 Years of Java
20 Years of Java20 Years of Java
20 Years of Java
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviews
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOps
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVM
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman Shramkov
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris Trofimov
 
API first with Swagger and Scala by Slava Schmidt
API first with Swagger and Scala by  Slava SchmidtAPI first with Swagger and Scala by  Slava Schmidt
API first with Swagger and Scala by Slava Schmidt
 
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed TamanJavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
 
Web-application I have always dreamt of by Victor Polischuk
Web-application I have always dreamt of by Victor PolischukWeb-application I have always dreamt of by Victor Polischuk
Web-application I have always dreamt of by Victor Polischuk
 
Monitoring of developers. The necessity or self-indulgence by Oleksiy Dyomin
Monitoring of developers. The necessity or self-indulgence by Oleksiy DyominMonitoring of developers. The necessity or self-indulgence by Oleksiy Dyomin
Monitoring of developers. The necessity or self-indulgence by Oleksiy Dyomin
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 

Kürzlich hochgeladen (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

Testing in Legacy: from Rags to Riches by Taras Slipets

Hinweis der Redaktion

  1. «Ненаучно-фантастический, не совсем реалистический и не строго исторический»
  2. Moreover…
  3. Bus factor проекта — это мера сосредоточения информации среди отдельных членов проекта. Bus factor показывает количество разработчиков команды программистов, после «попадания» которых «под автобус» (или увольнения, заболевания, рождения ребёнка, смерти) проект не может быть дальше продолжен. Проект будет содержать такую информацию, с которой оставшиеся разработчики не смогут разобраться. Высокий Bus factor проекта означает, что проект будет устойчиво развиваться, если его покинет даже большое количество программистов.
  4. Если Вы – Чак, то вам нечего бояться