Les projets Agiles imposent leurs propres défis aux équipes de test. Un projet Agile est souvent basé sur de multiples itérations, exploite un périmètre de développement incertain, travaille avec une documentation minimaliste. Rapidement, les Tests Unitaires se font sentir pour garantir des évolutions logicielles en douceur.
Lors de cette session, nous présenterons les concepts de base des tests unitaires, quelles en sont les implications et quels sont les sujets applicatifs à tester. Dans la seconde partie de cette session, nous présenterons, par des démonstrations en direct dans Microsoft Visual Studio, les 5 bonnes pratiques des Tests Unitaires intégrés dans un cycle de vie Agile.
Exemples sur https://github.com/dvoituron/SampleUnitTests
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.
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 ?
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)
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();
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);
}