Test Driven Development TDD en Php
TDD-P
Training created on 3/19/24. Last update on 7/8/24.
Programme version: 1
Training programme
Cette formation organisée par AgilBee vous plonge au cœur du Test Driven Development (TDD) appliqué à PHP, une compétence essentielle pour tout développeur Web souhaitant améliorer la qualité et la maintenabilité de son code. En vous initiant à la rédaction de tests unitaires avant le code lui-même, vous apprendrez à construire une base de code robuste et flexible, prête à évoluer avec les besoins des clients tout en réduisant les bugs de manière significative.
Objectives of the training
- Maîtriser le TDD pour améliorer la qualité et la robustesse des applications.
- Appliquer les frameworks de test les plus récents.
- Utiliser des Mocks pour simuler des interactions avec des composants externes.
- Intégrer le TDD dans les flux de travail de CI/CD pour accélérer le développement et garantir la qualité.
- Adapter le TDD aux architectures modernes comme les microservices.
- Positionner le TDD au cœur de la gestion de projet agile avec une compréhension des avantages des outils d'IA pour le développement logiciel.
Profile of beneficiaries
- Développeurs logiciels, ScrumMasters et chefs de projet qui souhaitent intégrer le TDD dans leur processus de développement.
- Testeurs et Assureurs Qualité désireux de maîtriser les techniques de test avancées.
- Architectes logiciels et ingénieurs système intéressés par les applications du TDD dans les architectures modernes.
- Connaître les bases du langage Php.
- (Ceci n'est pas une formation au langage Php)
- Avoir son propre ordinateur avec les droits "admin" pour installer des outils et des plugins.
Training content
-
Jour 1 : Introduction au TDD et Application aux Différents Langages
- TOUR DE TABLE
-
Introduction au TDD : Contexte et Bases
- Raison d'être des tests: pourquoi le TDD est essentiel dans le développement moderne.
- Propriétés des tests automatisés: rapide, indépendant, reproductible.
- Présentation des outils d'IA qui peuvent supporter le processus de test sans dominer la pratique du TDD.
- Types de tests: unitaires, d’intégration, fonctionnels
- Atelier : Analyse de cas d’échecs de tests dans des projets PHP pour comprendre l’importance du TDD dans l’agilité et le DevOps.
-
xUnit Patterns et Fondamentaux
- Cycle de développement TDD: Tester + Coder + Refactorer.
- Bibliothèques de test spécifiques à PHP: PHPUnit, SimpleTest, Behat.
- Assertions et Programmation par Contrat.
- Organisation des tests : Conventions spécifiques à PHP.
- Test Driven Design : Refactoring et conception émergeante en PHP.
- Travaux Pratiques : Mise en œuvre de tests unitaires en PHP avec PHPUnit et SimpleTest (adaptation possible du Framework).
- Au delà de la théorie, comment se faire aider par l’IA intelligemment.
-
Code legacy et Refactoring : Approfondissement du TDD
- Gestion des exceptions et conception émergeante.
- Stratégies de tests sans limite, correction des anomalies.
- Atelier de Refactoring: Après avoir écrit des tests pour un bloc de code existant, les participants seront guidés à travers un processus de refactoring pour améliorer la qualité du code tout en s’assurant que tous les tests passent.
- Sessions interactives de résolution de problèmes courants avec le TDD.
- Discussion sur les gains du TDD et les nouveaux enjeux industriels.
- Atelier : Quick Design Session
-
Techniques Avancées sur les Bases de Données
- Techniques pour tester unitairement les bases de données et applications concurrentes.
- Utilisation de frameworks comme Symfony et Laravel pour simplifier le refactoring.
- Travaux Pratiques : Automatisation des tests pour les applications Web et GUI.
-
Indépendance des Tests avec Doublures
- Architecture et Fonctionnement des doublures : Mocks, Fakes, Stubs, Spy et Dummies.
- Utilisation de frameworks comme Mockery ou PHPUnit_MockObject.
- Travaux Pratiques : Création de Mocks et Stubs avec PHPUnit et une assistance d'IA pour identifier les scénarios de test optimaux.
-
Jour 2: Pratiques Avancées et Intégration du TDD en PHP
-
Test d'Intégration et Fonctionnels
- Bibliothèque de Tests Fonctionnels : PHPSpec, Behat, Atoum, Kahlan, Codeception, Pest
- Intégration des tests dans les pipelines CI/CD avec des outils comme Jenkins, GitLab CI et GitHub Actions spécifiques à PHP.
-
Spécification par l'Exemple et BDD
- Application du Behavior Driven Development (BDD) et Test Driven Requirement (TDD).
- Travaux Pratiques : Mise en œuvre des spécifications par l'exemple avec un support discret d'IA pour la génération de scénarios.
-
TDD, CI/CD et DevOps
- Pratiques et outils pour l'intégration continue et le monitoring de la qualité.
- Configuration d’un pipeline CI/CD avec Jenkins ou GitHub Actions pour automatiser l'exécution des tests PHP à chaque commit.
- Travaux Pratiques : Utilisation des outils de couverture de test et autres indicateurs de qualité.
-
TDD pour les Architectures Modernes
- Application du TDD aux API RESTful en PHP.
- Atelier : Développement d'une fonctionnalité dans un contexte de microservices en PHP, écriture de tests pour les API.
-
Projet de Fin de Formation
-
Conclusion
- Récapitulatif des apprentissages et des meilleures pratiques
- Stratégies pour rester à jour avec les évolutions du TDD
- Comparaison des méthodes Test First vs Test After, et des styles de programmation.
- Discussion sur l'adoption du TDD et son intégration dans les projets agiles.
- Engagement envers l’excellence logicielle grâce au TDD
- Questions-Réponses et retour sur l'expérience de formation.
Nos intervenants sont des Coachs Agiles - Formateurs expérimentés
- Évaluation lors des ateliers tout au long de la formation Évaluation des acquis en fin de formation
- Théorie : 30 % (support de cours et slides) Pratiques : 70 % (exercices + programmation)