SlideShare une entreprise Scribd logo
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

Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
Thomas Zimmermann
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
Derek Smith
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
Viyaan Jhiingade
 
Writing and using Hamcrest Matchers
Writing and using Hamcrest MatchersWriting and using Hamcrest Matchers
Writing and using Hamcrest Matchers
Shai Yallin
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
Mohamed Akrouh
 
Cucumber BDD
Cucumber BDDCucumber BDD
Cucumber BDD
Pravin Dsilva
 
Google test training
Google test trainingGoogle test training
Google test training
Thierry Gayet
 
Junit
JunitJunit
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
ikhwanhayat
 
Unit testing
Unit testingUnit testing
Unit testing
Slideshare
 
Mocking in Java with Mockito
Mocking in Java with MockitoMocking in Java with Mockito
Mocking in Java with Mockito
Richard Paul
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
CloudNetCare
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
Knoldus Inc.
 
Les tests exploratoires
Les tests exploratoiresLes tests exploratoires
Les tests exploratoires
Jerry Gaetan MBANTA NYABEU
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projects
sriks7
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
Clean code
Clean codeClean code
Clean code
Bulat Shakirzyanov
 
Arquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto JavaArquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto Java
Elias Nogueira
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
hugo lu
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
David Berliner
 

Tendances (20)

Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Writing and using Hamcrest Matchers
Writing and using Hamcrest MatchersWriting and using Hamcrest Matchers
Writing and using Hamcrest Matchers
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Cucumber BDD
Cucumber BDDCucumber BDD
Cucumber BDD
 
Google test training
Google test trainingGoogle test training
Google test training
 
Junit
JunitJunit
Junit
 
Understanding Unit Testing
Understanding Unit TestingUnderstanding Unit Testing
Understanding Unit Testing
 
Unit testing
Unit testingUnit testing
Unit testing
 
Mocking in Java with Mockito
Mocking in Java with MockitoMocking in Java with Mockito
Mocking in Java with Mockito
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Les tests exploratoires
Les tests exploratoiresLes tests exploratoires
Les tests exploratoires
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projects
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
 
Clean code
Clean codeClean code
Clean code
 
Arquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto JavaArquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto Java
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
 

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 2
Christophe Rochefolle
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
neuros
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
Christophe Keromen
 
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
Agile Tour 2009 Québec
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
Frederic Hardy
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
Nicolas Fédou
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
laurent_opnworks
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
Sylvain Leroy
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
Jean-Baptiste Vigneron
 
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
Elapse Technologies
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
Fré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 collaboratif
kemenaran
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
Idriss Neumann
 
001GESTION DE PROJET INFO-Cours-GPI.pptx
001GESTION DE PROJET INFO-Cours-GPI.pptx001GESTION DE PROJET INFO-Cours-GPI.pptx
001GESTION DE PROJET INFO-Cours-GPI.pptx
blackmambaettijean
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
Klee Group
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptx
ManalAg
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
Denis Voituron
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
Cellenza
 

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
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
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
 
001GESTION DE PROJET INFO-Cours-GPI.pptx
001GESTION DE PROJET INFO-Cours-GPI.pptx001GESTION DE PROJET INFO-Cours-GPI.pptx
001GESTION DE PROJET INFO-Cours-GPI.pptx
 
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
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
 

Plus de Denis Voituron

Go lean, Go green
Go lean, Go greenGo lean, Go green
Go lean, Go green
Denis Voituron
 
DevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninjaDevDay 2021 - Codez comme un ninja
DevDay 2021 - Codez comme un ninja
Denis Voituron
 
.Net passé, présent et futur
.Net passé, présent et futur.Net passé, présent et futur
.Net passé, présent et futur
Denis 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 Disquettes
Denis 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 parfait
Denis Voituron
 
Azure for Dev
Azure for DevAzure for Dev
Azure for Dev
Denis Voituron
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
Denis Voituron
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
Denis Voituron
 
Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018Awareness Oniryx - Mai 2018
Awareness Oniryx - Mai 2018
Denis Voituron
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
Denis Voituron
 
Le futur de .NET
Le futur de .NETLe futur de .NET
Le futur de .NET
Denis 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énients
Denis 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 Online
Denis 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 Server
Denis 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 Toolkit
Denis 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 Belgique
Denis Voituron
 
Presentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStockPresentation MIC SummerCamp 2015 WaterStock
Presentation MIC SummerCamp 2015 WaterStock
Denis Voituron
 
Scrum Guide
Scrum GuideScrum Guide
Scrum Guide
Denis Voituron
 
Visual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your ProductivityVisual Studio 2015: Increase your Productivity
Visual Studio 2015: Increase your Productivity
Denis 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