TDD - méthodes agiles

  • Test-Driven Development

  • Kent Beck 2003

  • premiers concepts d”extreme programming

  • méthodes agiles

Agile

  • Les méthodes agiles constituent de nouveaux modes d’organisation

  • Pas seulement en informatique

  • Industrie automobile, logistique, etc.

Méthodes les plus connues

  • Pair Programming

  • Test Driven Development

  • Scrum

    • Scrum Master

    • Product Owner

    • Sprints

    • StandUp meetings

    • Retrospectives


Standup Meetings

IT daily standup meetingAn other standup meeting

But de ces meetings

  • Fournir un feedback (retrospective)

  • Organiser les étapes suivantes

  • Etre dans une position “active”

Backlogs (Todo lists)

Joli backlog

Joli backlog

Overloaded backlog

backlog un peu chargé

backlog un peu chargé

Méthode Scrum

Eléments Scrum

Eléments Scrum


Scrum

  • Pierre angulaire :

    • items de Backlog

    • Tests

    • TDD et versionnage

  • Groupes :

    • Typiquement 4-5 personnes

    • certains projets concernent des centaines de personnes (noyau linux, OS, etc.)


Avant tout: les Tests

  • Différentes sortes de tests

  • exemples

  • Pourquoi le TDD ?


Différentes sortes de tests

::.. hint:: En informatique, un test est une procédure de vérification partielle d’un système

Il y a une grande diversité de tests, concentrons nous sur les 3 principales catégories

Les 3 principaux types de tests

  • tests unitaires : s’appliquent à une méthode ou fonction isolée du reste du système (d’où le nom d’unitaire)

  • tests d’intégration : comme les tests unitaires, mais sans êtres séparés du reste du système.

  • tests fonctionnels : On teste une fonctionnalité complète en décrivant une sucession d’actions effectuée par un utilisateur de l’application.

exemples

  • Pour tester une fonction, on fournit une liste d’entrées/sorties

  • Pour tester une fonctionalité, on peut décrire son comportement attendu en écrivant une User Story comme: “Alice se rend sur la page d’accueil du site, voit 2 zones de saisie de nombres qu’elle complète, puis clique sur le bouton ajouter, et constate avec plaisir que le résultat de l’addition des 2 nombres s’affiche dans une zone encadrée de vert au milieu de la page”

  • Voir TDD with Python

Test-Driven Development

  • si on formalise l’idée de penser d’abord en termes d’exemples d’entrées/sorties examples avant de coder

  • on arrive naturellement au TDD :

    • definir les tests

    • puis on code

Automatiser les tests

Tous les langages ont leur librairie de tests unitaires

  • phpUnit en PHP

  • JUnit en Java

  • pytest ou unnitest en Python

  • GoogleTest ou Boost en C++