SlideShare une entreprise Scribd logo
1  sur  8
PLATEFORME

Applications "legacy": testez-les avec Visual Studio 2012 sans modifier leurs
architectures
BELLAHCENE Fathi
Manager pole .NET CELLENZA
MVP Visual C#
Applications « Legacy » : Testez-les avec Visual Studio

Application « Legacy » ?
Wikipédia:
“source code inherited from someone else and source code inherited
from an older version of the software”
Michael C. Feathers (Working Effectively with Legacy Code) :
“legacy code as code without tests”
Application :
 Faible connaissances fonctionnelles et techniques
 Difficilement maintenable
 Difficilement évolutif
Applications « Legacy » : Testez-les avec Visual Studio

Problématique

On ne peut
pas modifier
du code
« Legacy »
sans avoir
des tests
unitaires

Couplage!

On ne peut pas
tester
unitairement du
code «pas
testable » sans au
préalable le
modifier
Applications « Legacy » : Testez-les avec Visual Studio

Utilisation « Fakes Framework »
« Fakes Framework » :
•

Produit par l’équipe Microsoft Research sous le nom « Moles Isolation

Framework » et intégré à Visual Studio 2012
•

Génération d’objets permettant de :
•

Rediriger tout appel de méthodes .Net (framework .net inclus) : Shims

•

d’isoler le code que vous souhaitez tester avec des objets de substitution:
Stubs
Applications « Legacy » : Testez-les avec Visual Studio

Démos !
Applications « Legacy » : Testez-les avec Visual Studio

Améliorer son code en continu
•

Etape 1 : Introduire des tests unitaires avec les Shims

•

Etape 2: Refactorer son code

•

Etape 3: Remplacer les Shims par les Stubs autant que possible
Applications « Legacy » : Testez-les avec Visual Studio

Résumé
Ce qu’on a vu, ce qu’il faut savoir

VS 2012 propose un outil puissant permettant d’introduire des
tests unitaires sans modifier vos applications « Legacy »
Pour aller plus loin :
• www.cellenza.com
• http:// http://blogs.developpeur.org/fathi/
• fathi.bellahcene@cellenza.com
UN PROJET,
DES QUESTIONS ?
Retrouvez toutes les
émissions sur
visualstudio.fr/bonapp

Contenu connexe

En vedette

Tester votre libido Agile
Tester votre libido AgileTester votre libido Agile
Tester votre libido AgileCellenza
 
MobileDay - Parcours 1 Hybride (Cordova)
MobileDay - Parcours 1 Hybride  (Cordova)MobileDay - Parcours 1 Hybride  (Cordova)
MobileDay - Parcours 1 Hybride (Cordova)Cellenza
 
MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)Cellenza
 
MobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftMobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftCellenza
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryCellenza
 
MobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformMobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformCellenza
 
Contractualisation Agile
Contractualisation AgileContractualisation Agile
Contractualisation AgileCellenza
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOTCellenza
 

En vedette (8)

Tester votre libido Agile
Tester votre libido AgileTester votre libido Agile
Tester votre libido Agile
 
MobileDay - Parcours 1 Hybride (Cordova)
MobileDay - Parcours 1 Hybride  (Cordova)MobileDay - Parcours 1 Hybride  (Cordova)
MobileDay - Parcours 1 Hybride (Cordova)
 
MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)
 
MobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftMobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon Microsoft
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous Delivery
 
MobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformMobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 Crossplateform
 
Contractualisation Agile
Contractualisation AgileContractualisation Agile
Contractualisation Agile
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOT
 

Similaire à Applications "legacy": testez-les avec Visual Studio 2012 sans modifier leurs architectures

Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkMicrosoft
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Microsoft
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratiqueKhaled Ben Driss
 
TechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMTechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMJason De Oliveira
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Publicis Sapient Engineering
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklight
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklightWd601 g formation-developper-des-applications-mobiles-avec-ibm-worklight
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklightCERTyou Formation
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...vlabatut
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeadsRNS
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueAZUG FR
 

Similaire à Applications "legacy": testez-les avec Visual Studio 2012 sans modifier leurs architectures (20)

Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Maven
MavenMaven
Maven
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratique
 
TechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMTechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALM
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklight
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklightWd601 g formation-developper-des-applications-mobiles-avec-ibm-worklight
Wd601 g formation-developper-des-applications-mobiles-avec-ibm-worklight
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...
Techdays 2012 : Mise en place d'une démarche ALM avec Visual Studio pour Wind...
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par Celedev
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 

Plus de Cellenza

Global AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceGlobal AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceCellenza
 
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Cellenza
 
Soirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinSoirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinCellenza
 
Soirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareSoirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareCellenza
 
Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Cellenza
 
Soirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionSoirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionCellenza
 
Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Cellenza
 
Gouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceGouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceCellenza
 
Gouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureGouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureCellenza
 
Gouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageGouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageCellenza
 
Continuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsContinuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsCellenza
 
DevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeDevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeCellenza
 
Intégrer vos projets git dans visual studio online
Intégrer vos projets git dans visual studio onlineIntégrer vos projets git dans visual studio online
Intégrer vos projets git dans visual studio onlineCellenza
 

Plus de Cellenza (13)

Global AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceGlobal AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interface
 
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
 
Soirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinSoirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & Xamarin
 
Soirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareSoirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live Share
 
Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19
 
Soirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionSoirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - Introduction
 
Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ?
 
Gouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceGouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de Gouvernance
 
Gouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureGouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture Azure
 
Gouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageGouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommage
 
Continuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsContinuous monitoring : Dev to Ops
Continuous monitoring : Dev to Ops
 
DevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeDevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A Code
 
Intégrer vos projets git dans visual studio online
Intégrer vos projets git dans visual studio onlineIntégrer vos projets git dans visual studio online
Intégrer vos projets git dans visual studio online
 

Applications "legacy": testez-les avec Visual Studio 2012 sans modifier leurs architectures

  • 1. PLATEFORME Applications "legacy": testez-les avec Visual Studio 2012 sans modifier leurs architectures BELLAHCENE Fathi Manager pole .NET CELLENZA MVP Visual C#
  • 2. Applications « Legacy » : Testez-les avec Visual Studio Application « Legacy » ? Wikipédia: “source code inherited from someone else and source code inherited from an older version of the software” Michael C. Feathers (Working Effectively with Legacy Code) : “legacy code as code without tests” Application :  Faible connaissances fonctionnelles et techniques  Difficilement maintenable  Difficilement évolutif
  • 3. Applications « Legacy » : Testez-les avec Visual Studio Problématique On ne peut pas modifier du code « Legacy » sans avoir des tests unitaires Couplage! On ne peut pas tester unitairement du code «pas testable » sans au préalable le modifier
  • 4. Applications « Legacy » : Testez-les avec Visual Studio Utilisation « Fakes Framework » « Fakes Framework » : • Produit par l’équipe Microsoft Research sous le nom « Moles Isolation Framework » et intégré à Visual Studio 2012 • Génération d’objets permettant de : • Rediriger tout appel de méthodes .Net (framework .net inclus) : Shims • d’isoler le code que vous souhaitez tester avec des objets de substitution: Stubs
  • 5. Applications « Legacy » : Testez-les avec Visual Studio Démos !
  • 6. Applications « Legacy » : Testez-les avec Visual Studio Améliorer son code en continu • Etape 1 : Introduire des tests unitaires avec les Shims • Etape 2: Refactorer son code • Etape 3: Remplacer les Shims par les Stubs autant que possible
  • 7. Applications « Legacy » : Testez-les avec Visual Studio Résumé Ce qu’on a vu, ce qu’il faut savoir VS 2012 propose un outil puissant permettant d’introduire des tests unitaires sans modifier vos applications « Legacy » Pour aller plus loin : • www.cellenza.com • http:// http://blogs.developpeur.org/fathi/ • fathi.bellahcene@cellenza.com
  • 8. UN PROJET, DES QUESTIONS ? Retrouvez toutes les émissions sur visualstudio.fr/bonapp

Notes de l'éditeur

  1. RegressionCouplageMaintenabilité
  2. Shims Dangereux parce que :LentPuissant -> permet de faire tout donc n’importe quoiStubs :Standard: proche de ce qui existe déjà