Formation Tests Design & TDD

En ligne - 26 mars, 2,9 avril

2 100€ HT / personne (2 520€ TTC)

3 jours

Paris - 20-22 mai

2 100€ HT / personne (2 520€ TTC)

3 jours

Lyon - 16-18 juin

2 100€ HT / personne (2 520€ TTC)

3 jours

Objectifs


Savoir utiliser le Test Driven Development sur les projets réels afin de livrer un code de qualité avec des tests maintenables et par conséquent pouvoir livrer le logiciel fréquemment en production. Découvrez ou retrouvez le plaisir du développement grâce au TDD en suivant les 3 principes que sont Protect, Prepare, Produce

  • Acquérir les clés pour mettre en oeuvre le TDD dans un contexte professionnel
  • Évaluer une / sa stratégie de tests et la confronter aux principes de la pyramide de tests
  • Identifier les conditions propices à améliorer la qualité d'un code “legacy”
  • Identifier les critères pour la mise en place de tests maintenables
  • Architecturer son application pour la testabilité
  • Savoir appliquer la discipline TDD avec un assistant et contraindre un agent dans sa mise en oeuvre

Cette formation couvre la majorité des méthodes dont vous avez besoin pour tester efficacement le code d'un "vrai" projet. L'objectif est de devenir opérationnel sur nos projets du quotidien qu'ils soient de type greenfield ou brownfield.

  • Théorie : 25%
  • Pratique : 55%
  • Échanges : 20%

Acquis à l'issue de la formation

Le participant à cette formation aura acquis des bases solides pour travailler en TDD et designer son code, en particulier :

  • Utiliser TDD sur un algorithme sans code existant
  • Appliquer le cycle TDD
  • Savoir définir et reconnaître les différentes typologies de test
  • Évaluer et concevoir une stratégie de test en découpant et catégorisant les tests
  • Introduire des tests sur du code “legacy”
  • Isoler les tests des composants tiers et autres dépendances
  • Gagner en productivité dans la pratique avec son IDE et les assistants IA

Public concerné et pré-requis

Cette formation vise les développeurs confirmés ayant une bonne maîtrise d’au moins un langage de programmation (orienté objet ou fonctionnel), en terme de syntaxe, environnement de travail (nous pouvons vous aider sur Java, JS/TS, C#, PHP et Python).

La formation contient une part importante de pratique. Les sessions sont réalisées avec un maximum de 10 personnes (6 en remote), pour nous permettre d’adapter le déroulement de la formation et de contextualiser les exercices, en fonction des participants et de leurs spécificités, tout en garantissant l'acquisition des compétences visées par la formation.

Les participants devront être équipés d'un PC (non fourni) et avoir installé Git et leur IDE dans des versions récentes.

Evaluation

En début de formation, une autoévaluation est effectuée pour évaluer le niveau, ainsi que les attentes de chaque participant. Ainsi nous pouvons organiser au mieux les différents groupes de travail.
Par la suite, le formateur effectue une évaluation continue à l'aide des nombreux exercices pratiques.
En fin de formation, la progression et les acquis sont autoévalués par chacun des participants. Le formateur fournit à chacun des participants une évaluation, ainsi que les axes d'amélioration.
En option, un accompagnement postformation peut être effectué. Cela fera l'objet d'un devis complémentaire.

Programme

La formation se déroule sur une durée totale de 21 heures réparties en 6 demi-journées.

  • Première demi-journée

    TDD sur code neuf

    • Commençons par la base de la pratique
    • Introduction, allons à l'essence, le pourquoi.
    • Démo de l'approche avec plein d'astuces de codeur
    • Mise en place de l'environnement et exercices de TDD
    • Retrospective de l'itération
    • Qualifier un besoin métier, en extraire des cas de tests, et les mettre en oeuvre
    • Savoir accueillir de nouvelles demandes
  • Seconde demi-journée

    TDD sur code neuf (suite)

    • Rendre les tests maintenables et lisibles
    • Refactorer le code pour plus de flexibilité et testabilité
    • Les tests comme une contribution à la documentation
    • Introduction de la Pyramide des tests et différentes typologies de tests
    • TDD à l’échelle de (nos) projets réels et complexes
  • Troisième demi-journée

    Les doublures de tests

    • Les mocks ne sont pas des stubs
    • Apprendre à manipuler mocks et stubs avec une librairie
    • Apprendre à manipuler mocks et stubs sans librairie
    • Comprendre la différence entre les deux approches
    • Apprendre à reconnaître les bonnes pratiques de mocking et pièges

    Tests et legacy

    • Reprendre du code non couvert pas des tests
    • Comment rapidement écrire des tests de caractérisation
    • Les bénéfices d’une démarche de tests dans l'amélioration continue de la qualité / conception : refactorer
    • Couplage et tests
  • Quatrième demi-journée

    Tests et legacy (suite)

    • Techniques de testing sur du legacy endetté
    • Couvrir du code existant : 5 astuces de tests sur legacy
    • Mise en place de l'outil de couverture et exercice
    • Améliorer le design : 5 astuces de refactoring efficace
    • Rendre le code lisible comme un livre
    • Considérations architecturales
  • Cinquième demi-journée
    • Les tests nous montrent des problèmes (Code Smells), analysons-les
    • Techniques d'amélioration du design / couplage dans le code
    • TDD avec des dépendances non testables
    • Architecturer pour la testabilité et la production
    • Établir une stratégie de tests performante
    • Enjeux couverts par les principes de l'Architecture Hexagonale / Clean Architecture
  • Sixième demi-journée
    • Itération de développement
    • Débriefing et échanges autour des problématiques rencontrées
    • Élaboration d'une stratégie de testabilité suivi de la mise en épreuve de la stratégie
      • Construire du code en TDD en présence de code non testable, tels que les webservices externes et les bases de données
      • Comment tester le "non testable" quand même
      • Découper en plusieurs suites de test
    • Pistes pour aller au delà du TDD / vers une pratique de TDD avancée

Formateur / Formatrices

Johan Martinsson
Johan Martinsson

Johan Martinsson est un développeur freelance qui se passionne entre autres pour le design du code. Avec 20 ans d’expérience professionnel, il a passé les 11 dernières années à aider des équipes de maîtriser le développement accompagné de tests dans de multiples langages. Les entreprises apprécient particulièrement sa capacité à exploiter les synergies entre besoin business et approche qualité dans le code.

Régulièrement il trouve des (bonnes) excuses pour aller montrer un peu de code dans des conférences en France et à l'international. Johan est un serial-kata creator, ayant crée de nombreux katas pour s'entraîner.

Johan est instigateur ou co-organisateur de nombreux cercles et évènements communautaires, tels que des coding dojo, meetups craftsmanship, code-retreats, les rencontres européennes SoftDevGang, Agile Grenoble, Snowcamp et le tout dernier AlpesCraft.

Eric Siber
Eric Siber

Eric est développeur depuis 2003, après une formation d'ingénieur à Centrale Lille. Après un début de carrière en société de services informatique, il est passé indépendant en 2016.

Expert en Architecture et Développement Logiciel, spécialisé sur la plateforme Java et l'écosystème Spring / Tanzu, il intervient pour ses clients en audit / conseil, en tant que formateur et en tant que développeur / expert / lead technique / architecte technique, mais également en tant que Scrum Master ou Coach Agile/Craft.

Eric a notamment animé plusieurs cursus de formation longue de reconversion au métier de développeur lors desquels il s'est fait une priorité de transmettre les bonnes pratiques du métier de développeur, méthodes pédagogiques orientées vers l'apprentissage par la pratique qu'il applique sur les formations HackYourJob.

Il a également par le passé donné des formations en entreprises au travers d'autres organismes de formation et partage régulièrement ses connaissances (BBL, Webinaire, conférence, etc.).

Mickael Metesreau
Mickael Metesreau

Mickael est développeur depuis 2011, après une formation d'ingénieur à l'EFREI. Après un début de carrière chez des éditeurs de logiciels, il est passé indépendant en 2018.

Entrepreneur, développeur et co-organisateur SoCraTes-FR, F# et *DD fan, il aime apprendre, partager et construire des solutions pragmatiques, testables et évolutives.

Il a donné des formations en entreprises au travers d'autres organismes de formation.

Clément Bouillier
Clément Bouillier

Clément a démarré son parcours professionnel en tant que développeur en 2004, après une formation d'ingénieur de Télécom Sud Paris (ex-Télécom INT). Il est développeur indépendant depuis 2013 en plus de son activité de formation HackYourJob.

Il a été également chef de projet, consultant qualité, architecte technique sur différents projets, tout en conservant un profil très technique proche du développement de logiciels. Toutes ces expériences l'ont amené à considérer la formation à de bonnes pratiques de développement au travers d'HackYourJob.

Il a donné des formations en entreprises par le biais d'autres organismes de formation et a été intervenant en Licence Pro à l'IUT Lyon 1 de 2015 à 2017.

Nicolas Fedou
Nicolas Fedou

Nicolas a toujours aimé les systèmes (engrenages, mécanique) et les casse-têtes. Il est tombé dans l'informatique depuis qu'il compose des commandes avec Linux. Assembler des commandes, des objets, des composants, des pipelines, c'est comme jouer aux Légo pour lui !

Aujourd'hui, il fait de ses activités de conseil et d'accompagnement en édition de logiciels son coeur de métier. Ses interventions en audits, conceptions de solution, et accompagnements, vont du code du logiciel lui-même à l'organisation des équipes qui produisent ce code, en passant par leurs outils de travail.

Il ne se limite pas au management ou au pilotage de la mise en oeuvre. Il contribue en montrant l'exemple comme un mentor ou un responsable technique.

Témoignages

Excellente formation avec des ateliers qui permettent de mettre en pratique les TDD

Ludovic G. (WIZBII)

Une formation enrichissante et conviviale qui consolide les bases et apporte de nouvelles connaissances permettant d'aller au-delà des préjugés sur le testing.

Alexis Y. (WIZBII)

Excellent programme de formation et enchainement des parties théoriques, exercices et échanges

Camille C. (WIZBII)

Excellente formation sur le TDD ! Les explications étaient claires et parfaitement adaptées à notre niveau. Johan, le formateur, a su ajuster le contenu à nos besoins tout en nous prodiguant de précieux conseils. Sa pédagogie est excellente, et suivre les exercices a été un réel plaisir, même lorsqu'ils nous poussaient hors de notre zone de confort. Une formation enrichissante que je recommande vivement !

Syriane B. (WIZBII)

Très bonne formation qui reprend les bases du TDD. Tout le spectre du TDD est entièrement couvert au travers de différentes mises en situation et cas pratiques.

Thibaut BLAIRON (Wanadev)

Merci pour la formation, elle nous a permis de consolider nos connaissances sur le TDD. Au delà du programme complet on a aussi pu découvrir des outils et des pratiques qui seront utiles au quotidien.

Timotée NEULLAS (Wanadev)

Merci pour cette formation et merci à Johan pour sa disponibilité

Adrien CENTONZE (Wanadev)

Formation TDD intéressante et enrichissante

Développeur Wanadev