Introduction
- Pratiques d'ingénierie logicielle et méthodes Agiles.
- Le développement incrémental et itératif.
- L'équipe Agile. Scrum et XP.
Réflexion collective
Partage d'expérience et échanges autour des pratiques d'ingénierie et de test logiciel.
Les tests agiles
- Définition et périmètre des tests agiles.
- Cycle de développement : origine du TDD (Test Driven Development), ATDD, TDR, les types de tests...
Les tests développeurs
- Définition et objectifs : les patterns basiques XUnit.
- Principe des tests unitaires automatisés.
- Règles de simplicité : règle des "3 A" (Arrange, Act, Assert).
- Mise en œuvre de tests unitaires avec JUnit, le framework de test en Java.
- Lanceur de tests (TestRunner).
- Les méthodes d'Assertions.
Le TDD, développement guidé par les tests
- Le cycle de développement.
- Le principe du TDD : "test first", "tester, coder, refactorer".
- TDD et pratiques agiles (XP) : l'intégration continue, le Pair Programming.
- Démonstration du TDD sur un cas concret.
Etude de cas
Implémentation d'une solution en TDD, écriture des tests Junit.
"Refactoring", le remaniement de code
- Principes du refactoring.
- Réduire l'apparition de la dette technique, rendre le code compréhensible.
- Comment identifier le code à risque ? La notion de "Code Smells", signes de danger potentiel.
- Les principales opérations de refactoring.
- Rappel sur les Design Patterns.
Travaux pratiques
Refactoring de code à risque.
Isolation des tests
- Les doubles de test, leur utilisation.
- Le "Mock Object" pour vérifier certaines hypothèses.
- Le "Fake", pour la simulation.
- Le "Stub" : fournir une réponse prédéfinie à un appel.
Travaux pratiques
Utilisation de double de tests.
Le test comme cahier des charges, la notion d'ATDD
- Les principes et avantages de l'ATDD.
- Du scénario au test de recette.
- Combiner ATDD, BDD et TDD.
- Les outils (Fitnesse, Cucumber...).
Etude de cas
Rédaction et automatisation de scénarios de tests.
Conclusions
- Les bénéfices du TDD, le coût des tests.
- Les autres types de tests (interface graphique, Web..).
- Quelques outils.