SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Unit Testing
Responsable
#4
Unique
#5
Atomique
#1
Les bonnes pratiques des projets Agiles
5
Descriptif
#3
Consistent
#2
A propos
Denis Voituron
Ingénieur civil (Mons)
Foundateur de BMind
Développeur VB3, VB.Net, C#
Principal .Net Architect
Créateur DevApps.be
Blogger
Agenda
1. Concepts et définition
2. Pourquoi tester ?
3. Quoi tester ?
4. Comment tester ?
Les cinq bonnes pratiques des Unit Tests
5. Démonstration
Scrum
Cadre de travail pour répondre à des
problèmes changeants, tout en livrant
des produits de qualité.
1. Transparence
• Tous les processus doivent être visibles des participants.
• Définition d’un standard commun (ex. définir « Terminé »).
2. Inspection
• L’équipe doit fréquemment inspecter l’avancement et les artéfacts Scrum.
3. Adaptation
• Ajuster, dès que possible, les dérives détectées.
Participants
Product Owner Scrum MasterDevelopment Team
Product Backlog
(Carnet de produit)
Incrément
(Produit à chaque Sprint)
Événements – Users Stories
http://scrum-poster.com
“En tant que [personne], je voudrais [faire quelque chose], ainsi [bénéfice]”
Événements – Sprint Planning
http://scrum-poster.com
Événements – Sprint
http://scrum-poster.com
Événements – Daily Scrum
http://scrum-poster.com
Événements – Sprint Review
http://scrum-poster.com
Événements
http://scrum-poster.com
Incrément
Événements
http://scrum-poster.com
Unit Tests
Concepts
• Procédure permettant de vérifier le
bon fonctionnement d'une partie
précise d'un logiciel Unit Testing
Le code fonctionne-il
correctement seul ?
Integration Testing
Le code fonctionne-il
correctement ensemble ?
User Acceptance Testing
Le système rencontre les besoins
des utilisateurs finaux ?
Mise en production
Comment mettre en Production dans les années 2000
Fonce, on verra après !
Agile
Planifier les tests sur la route Agile
• Définir une stratégie de test
• Définir le cadre des tests
• Réouvrir fréquemment les tests
• Identifier les risques
• Récupérer des retours fréquents
https://www.3pillarglobal.com/insights/5-rules-to-the-road-for-test-planning-in-agile
Pourquoi ?
1. Trouver les erreurs rapidement
Ecrire les tests en même temps, ou même avant la fonction à tester
2. Sécurise la maintenance
Lors d'une modification d'un programme les tests unitaires signalent les
éventuelles régressions
3. Documentation
Il est très utile de lire les tests pour comprendre comment s'utilise une
méthode
Quoi ?
Test Project
Test Fixture
Test Test Test Test
Test Fixture
Test Test Test Test
Un par assembly, package
Un par classe
Un par unit
(pas nécessairement par méthode)
Quoi ?
Business
Entity
Data
Layer
Data
Access
Layer
User
Interface
Unit Testing tests one layer
Integration Testing tests across layers.A Mock allows a
dependency to be
imitated so the Unit test
can be isolated.
Réactions
Bonnes Pratiques
Cinq Bonnes pratiques
#1. Consistent
Toujours retourner la même
valeur, à condition que le
code soit identique.
DateTime currentDate = DateTime.Now;
int value = new Random().Next();
Cinq Bonnes pratiques
#2. Atomique
Ne tester qu’un
petit morceau
de fonctionnalité.
Cinq Bonnes pratiques
#3. Responsabilité unique
Doit être responsable que
d'un seul scénario.
void TestMethod()
{
Assert.IsTrue(behavior1);
Assert.IsTrue(behavior2);
}
void TestMethodCheckBehavior1()
{
Assert.IsTrue(behavior1);
}
void TestMethodCheckBehavior2()
{
Assert.IsTrue(behavior2);
}
Cinq Bonnes pratiques
#4. Auto Descriptif
Doit être facile à lire
et à comprendre
• Variable Names
• Method Names
• Class Names
void CanMakeReservation()
{
...
}
void TotalBillEqualsSumOfMenuItemPrices()
{
...
}
Auto Descriptif
Cinq Bonnes pratiques
#5. Pas de conditions ou de boucles
Il ne peut pas y avoir d’incertitude.
void TestBeforeOrAfter()
{
if (before)
{
Assert.IsTrue(behavior1);
}
else if (after)
{
Assert.IsTrue(behavior2);
}
}
void TestBefore()
{
Assert.IsTrue(behavior1);
}
void TestAfter()
{
Assert.IsTrue(behavior2);
}
Demo
• Concepts et Définition
• Pourquoi Tester ?
• Quoi Tester ?
• Comment Tester ?
• Consistent
• Atomique
• Responsabilité unique
• Auto Descriptif
• Pas de conditions ou de boucles
Unit Testing

Contenu connexe

Tendances

Principles of Software testing
Principles of Software testingPrinciples of Software testing
Principles of Software testingMd Mamunur Rashid
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel Esaie88
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnelscvcby
 
Dynamic Systems Development Method (DSDM) - Agile
Dynamic Systems Development Method (DSDM) - AgileDynamic Systems Development Method (DSDM) - Agile
Dynamic Systems Development Method (DSDM) - AgileMaruf Abdullah (Rion)
 
sûreté de fonctionnement du logiciel
 sûreté de fonctionnement du logiciel sûreté de fonctionnement du logiciel
sûreté de fonctionnement du logicielEs-sahli bilal
 
A generic view of software engineering
A generic view of software engineeringA generic view of software engineering
A generic view of software engineeringInocentshuja Ahmad
 
functional testing
functional testing functional testing
functional testing bharathanche
 
Software Quality Assurance: A mind game between you and devil
Software Quality Assurance: A mind game between you and devilSoftware Quality Assurance: A mind game between you and devil
Software Quality Assurance: A mind game between you and devilNahian Al Hossain Basunia
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logicielRabia AZIZA
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deploymentLilia Sfaxi
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | EdurekaEdureka!
 

Tendances (20)

Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Principles of Software testing
Principles of Software testingPrinciples of Software testing
Principles of Software testing
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnels
 
Dynamic Systems Development Method (DSDM) - Agile
Dynamic Systems Development Method (DSDM) - AgileDynamic Systems Development Method (DSDM) - Agile
Dynamic Systems Development Method (DSDM) - Agile
 
sûreté de fonctionnement du logiciel
 sûreté de fonctionnement du logiciel sûreté de fonctionnement du logiciel
sûreté de fonctionnement du logiciel
 
A generic view of software engineering
A generic view of software engineeringA generic view of software engineering
A generic view of software engineering
 
functional testing
functional testing functional testing
functional testing
 
Software Quality Assurance: A mind game between you and devil
Software Quality Assurance: A mind game between you and devilSoftware Quality Assurance: A mind game between you and devil
Software Quality Assurance: A mind game between you and devil
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logiciel
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 
Junit
JunitJunit
Junit
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Black box software testing
Black box software testingBlack box software testing
Black box software testing
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
SDLC, Iterative Model
SDLC, Iterative ModelSDLC, Iterative Model
SDLC, Iterative Model
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | Edureka
 

Similaire à Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile

Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsCloudNetCare
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptxManalAg
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests PlanDenis Voituron
 

Similaire à Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile (20)

Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptx
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 

Plus de Denis Voituron

DevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninjaDevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninjaDenis Voituron
 
.Net passé, présent et futur
.Net passé, présent et futur.Net passé, présent et futur
.Net passé, présent et futurDenis Voituron
 
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"Denis Voituron
 
Azure Pipelines - Et si on arrêtait de mettre en production avec des Disquettes
Azure Pipelines - Et si on arrêtait de mettre en production avec des DisquettesAzure Pipelines - Et si on arrêtait de mettre en production avec des Disquettes
Azure Pipelines - Et si on arrêtait de mettre en production avec des DisquettesDenis Voituron
 
GitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfaitGitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfaitDenis Voituron
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Denis Voituron
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScriptDenis Voituron
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineDenis Voituron
 
Développer avec un Simple Object Mapping Toolkit pour SQL Server
Développer avec un Simple Object Mapping Toolkit pour SQL ServerDévelopper avec un Simple Object Mapping Toolkit pour SQL Server
Développer avec un Simple Object Mapping Toolkit pour SQL ServerDenis Voituron
 
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping Toolkit
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping ToolkitDevFM #20 : SqlDatabaseCommand, un Simple Object Mapping Toolkit
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping ToolkitDenis Voituron
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiqueDenis Voituron
 
Presentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStockPresentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStockDenis Voituron
 
Visual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your ProductivityVisual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your ProductivityDenis Voituron
 

Plus de Denis Voituron (20)

Go lean, Go green
Go lean, Go greenGo lean, Go green
Go lean, Go green
 
DevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninjaDevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninja
 
.Net passé, présent et futur
.Net passé, présent et futur.Net passé, présent et futur
.Net passé, présent et futur
 
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
 
Azure Pipelines - Et si on arrêtait de mettre en production avec des Disquettes
Azure Pipelines - Et si on arrêtait de mettre en production avec des DisquettesAzure Pipelines - Et si on arrêtait de mettre en production avec des Disquettes
Azure Pipelines - Et si on arrêtait de mettre en production avec des Disquettes
 
GitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfaitGitHub et Microsoft Azure DevOps - Le mariage parfait
GitHub et Microsoft Azure DevOps - Le mariage parfait
 
Azure for Dev
Azure for DevAzure for Dev
Azure for Dev
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
Le futur de .NET
Le futur de .NETLe futur de .NET
Le futur de .NET
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
 
Développer avec un Simple Object Mapping Toolkit pour SQL Server
Développer avec un Simple Object Mapping Toolkit pour SQL ServerDévelopper avec un Simple Object Mapping Toolkit pour SQL Server
Développer avec un Simple Object Mapping Toolkit pour SQL Server
 
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping Toolkit
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping ToolkitDevFM #20 : SqlDatabaseCommand, un Simple Object Mapping Toolkit
DevFM #20 : SqlDatabaseCommand, un Simple Object Mapping Toolkit
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
 
Presentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStockPresentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStock
 
Scrum Guide
Scrum GuideScrum Guide
Scrum Guide
 
Visual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your ProductivityVisual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your Productivity
 

Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile

  • 1. Unit Testing Responsable #4 Unique #5 Atomique #1 Les bonnes pratiques des projets Agiles 5 Descriptif #3 Consistent #2
  • 2. A propos Denis Voituron Ingénieur civil (Mons) Foundateur de BMind Développeur VB3, VB.Net, C# Principal .Net Architect Créateur DevApps.be Blogger
  • 3. Agenda 1. Concepts et définition 2. Pourquoi tester ? 3. Quoi tester ? 4. Comment tester ? Les cinq bonnes pratiques des Unit Tests 5. Démonstration
  • 4. Scrum Cadre de travail pour répondre à des problèmes changeants, tout en livrant des produits de qualité. 1. Transparence • Tous les processus doivent être visibles des participants. • Définition d’un standard commun (ex. définir « Terminé »). 2. Inspection • L’équipe doit fréquemment inspecter l’avancement et les artéfacts Scrum. 3. Adaptation • Ajuster, dès que possible, les dérives détectées.
  • 5. Participants Product Owner Scrum MasterDevelopment Team Product Backlog (Carnet de produit) Incrément (Produit à chaque Sprint)
  • 6. Événements – Users Stories http://scrum-poster.com “En tant que [personne], je voudrais [faire quelque chose], ainsi [bénéfice]”
  • 7. Événements – Sprint Planning http://scrum-poster.com
  • 9. Événements – Daily Scrum http://scrum-poster.com
  • 10. Événements – Sprint Review http://scrum-poster.com
  • 14. Concepts • Procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel Unit Testing Le code fonctionne-il correctement seul ? Integration Testing Le code fonctionne-il correctement ensemble ? User Acceptance Testing Le système rencontre les besoins des utilisateurs finaux ?
  • 15. Mise en production Comment mettre en Production dans les années 2000 Fonce, on verra après !
  • 16. Agile Planifier les tests sur la route Agile • Définir une stratégie de test • Définir le cadre des tests • Réouvrir fréquemment les tests • Identifier les risques • Récupérer des retours fréquents https://www.3pillarglobal.com/insights/5-rules-to-the-road-for-test-planning-in-agile
  • 17. Pourquoi ? 1. Trouver les erreurs rapidement Ecrire les tests en même temps, ou même avant la fonction à tester 2. Sécurise la maintenance Lors d'une modification d'un programme les tests unitaires signalent les éventuelles régressions 3. Documentation Il est très utile de lire les tests pour comprendre comment s'utilise une méthode
  • 18. Quoi ? Test Project Test Fixture Test Test Test Test Test Fixture Test Test Test Test Un par assembly, package Un par classe Un par unit (pas nécessairement par méthode)
  • 19. Quoi ? Business Entity Data Layer Data Access Layer User Interface Unit Testing tests one layer Integration Testing tests across layers.A Mock allows a dependency to be imitated so the Unit test can be isolated.
  • 22. Cinq Bonnes pratiques #1. Consistent Toujours retourner la même valeur, à condition que le code soit identique. DateTime currentDate = DateTime.Now; int value = new Random().Next();
  • 23. Cinq Bonnes pratiques #2. Atomique Ne tester qu’un petit morceau de fonctionnalité.
  • 24. Cinq Bonnes pratiques #3. Responsabilité unique Doit être responsable que d'un seul scénario. void TestMethod() { Assert.IsTrue(behavior1); Assert.IsTrue(behavior2); } void TestMethodCheckBehavior1() { Assert.IsTrue(behavior1); } void TestMethodCheckBehavior2() { Assert.IsTrue(behavior2); }
  • 25. Cinq Bonnes pratiques #4. Auto Descriptif Doit être facile à lire et à comprendre • Variable Names • Method Names • Class Names void CanMakeReservation() { ... } void TotalBillEqualsSumOfMenuItemPrices() { ... } Auto Descriptif
  • 26. Cinq Bonnes pratiques #5. Pas de conditions ou de boucles Il ne peut pas y avoir d’incertitude. void TestBeforeOrAfter() { if (before) { Assert.IsTrue(behavior1); } else if (after) { Assert.IsTrue(behavior2); } } void TestBefore() { Assert.IsTrue(behavior1); } void TestAfter() { Assert.IsTrue(behavior2); }
  • 27. Demo
  • 28. • Concepts et Définition • Pourquoi Tester ? • Quoi Tester ? • Comment Tester ? • Consistent • Atomique • Responsabilité unique • Auto Descriptif • Pas de conditions ou de boucles Unit Testing