Pratiquer le TDD (Test Driven Development) en C++

  • Filière :

    Méthodes, Tests, normes

  • Sous-filière :

    Testing logiciel

  • Référence

    MT-CPPT

  • Durée

    3 jours (21 h)

  • Prix unitaire HT

    Sur demande

Objectifs pédagogiques

  • Acquisition des principes fondamentaux et des bonnes pratiques du TDD
  • Prise en main approfondie du Framework GoogleTest (GT) / GoogleMock (GM)
  • Rédaction de tests élaborés et simulation avec GT / GM (Mocking / Facking)
  • Pratique du refactoring d’un code développé avec l’approche TDD
  • Principes de conception

Public cible

  • Chefs de projets
  • Développeurs
  • Responsables qualité
  • Responsables tests

Pré-requis

Pratique professionnelle du développement C++

Programme de la formation

La place des tests dans le processus de développement

  • Processus, qualité, tests
  • Typologie des tests
    • Approche TDR (Test Driven Requirements)
      • from user stories to test cases
    • Tests unitaires
    • Tests d’intégration
    • Tests de (non) régression, …
  • Mise en place du TDD au sein d’une démarche agile
    • Scrum, eXtreme Programming, …
    • Pair Programming

Frameworks de tests automatisés

  • Familles de frameworks
  • Frameworks C++

Principes fondamentaux du TDD

  • Calibrage des tests, principe YAGNI
  • Le cycle de développement du TDD
    • Le triple A « Arrange, Act, Assert »
  • Stratégies pour faire passer les tests
    • Approche Outside-In vs. Inside-Out

Prise en main de GoogleTest

  • Création d’un projet
  • Concepts de base
  • Assertions
  • Tests élémentaires
  • Tests multiples : suites de tests et Test Cases
  • Préparation et mutualisation des tests avec les Test fixtures
  • Pilotage des tests

Mocks et doublures

  • Qu’est-ce qu’une doublure ?
  • Types de doublures
  • Mocks et Fakes

Prise en main de GoogleMock

  • Création d’une classe Mock
    • Méthodes privées, publiques, surchargées, …
  • Mocking et classes génériques
  • Mocking de méthodes scellées
  • Mocking de code C « legacy »
  • Mocking par délégation
  • Collaboration des Mocks et des objets réels

Utilisation des Matchers Hamcrest

  • Matchers élémentaires et combinaisons
  • Casting de Matchers
  • Matchers multiples et dispatching
  • Prédicats
  • Arguments non copiables
  • Validation de membres et pointeurs
  • Matching et conteneurs

Tests comportementaux

  • Simulation du cycle de vie d’un objet
  • Attentes (« expectations »)
  • Changement de comportement du mock selon l’état de l’ « objet réel »
  • Cas particuliers
    • Retour de références, pointeurs, exceptions
    • Classes et méthodes génériques

Refactoring et principes de conception

  • Composition versus spécialisation
  • Polymorphisme versus généricité
  • Inversion des dépendances
  • Quelques « mauvaises odeurs » à combattre
  • Techniques de refactoring en TDD
  • Présentation de quelques patterns simples mis en oeuvre lors du refactoring / TDD

Qualité

Cette formation est accessible aux personnes en situation de handicap, nous contacter en cas de besoin d’informations complémentaires.

Programme mis à jour le