201001 TDD

31
Le développement piloté par les Le développement piloté par les tests tests Laurent CARON – [email protected] 1

description

by Laurent Caron

Transcript of 201001 TDD

Page 1: 201001 TDD

Le développement piloté par les Le développement piloté par les teststests

Laurent CARON – [email protected]

1

Page 2: 201001 TDD

A l’école on m’a appris…

2

Page 3: 201001 TDD

LE CYCLE EN V…

Exigences

Analyse Tests d’intégration

Tests fonctionnels

3

Implémentation

Conception Tests unitaires

mar avr mai jui juil aou sep oct nov dec jan

Page 4: 201001 TDD

ET CA FONCTIONNE ?

�Bien sûr, si on a des spécifications impeccables, limpides et lisibles…

4

Page 5: 201001 TDD

ET CA FONCTIONNE ?

�Par un client qui sait ce qui veut…

5

Page 6: 201001 TDD

ET CA FONCTIONNE ?

�Et une équipe de développeurs en béton qui respectent les délais

6

Page 7: 201001 TDD

ET DANS LA VRAIE VIE ?

� Les spécifications arrivent en retard…

�Sont retouchées…

� Le développement a été refait 18 fois !

�Pour tenir à peu près les délais, on rogne un peu sur les tests…un peu sur les tests…

�Puis beaucoup…

�On recette sur une version bêta

�Puis on croise les doigts à chaque livraison

7

Page 8: 201001 TDD

DEVELOPMENT HELL

Augmentation de la pression

Baisse de la

8

Baisse de la productivité

Code moins stable

Moins de temps pourécrire les tests

Page 9: 201001 TDD

EN PLUS…

�Ce n’est la faute de personne

Expression des besoins

Spécifications

9

Codage

Tests

Cahier de testsBUG !

Page 10: 201001 TDD

EN PLUS…

�Ce n’est la faute de personne

Expression des besoins

Spécifications

C’est leur faute !

10

Codage

Tests

Cahier de tests

Page 11: 201001 TDD

EN PLUS…

�Ce n’est la faute de personne

Expression des besoins

Spécifications

C’est mal spécifié !

11

Codage

Tests

Cahier de tests

Page 12: 201001 TDD

EN PLUS…

�Si, c’est celle du client !

Expression des besoins

Spécifications

C’est mal exprimé !

12

Codage

Tests

Cahier de tests

Voici le règne des avenants !

Page 13: 201001 TDD

UNE SEULE SOLUTION

13

Page 14: 201001 TDD

Et pourquoi pas autre chose ?

14

Page 15: 201001 TDD

LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS

�On écrit les tests AVANT le code

�Déroulement :

� Ecriture du test

� Vérification de l'échec du test (puisque le code n'existe pas encore)n'existe pas encore)

� Ecriture du code

� Vérification du test

� Refactoring (amélioration en gardant les mêmes fonctionnalités) : javadoc, commentaires…

15

Page 16: 201001 TDD

Codage du test

CompilationRefactor

LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS

Correction des erreurs de compilation

Lancement du testéchec

Ecriture du code

Lancement du testJusqu’à ce qu’il passe

16

Page 17: 201001 TDD

INTÉRÊT

� Précisent les spécifications

� Force à réfléchir très tôt aux jeux de test

� Permet d'arrêter le travail au bon moment (quand les tests passent)

�Par conséquent, la conception est �Par conséquent, la conception est meilleure

17

Page 18: 201001 TDD

INTÉRÊT

� Le code produit est testable

� Test de composants en couche sans avoir besoin des couches de présentation

� Automatisation et non-régression

� Refactoring aisé

� Confiance dans le code� Confiance dans le code

18

Page 19: 201001 TDD

Ce n’est pas seulement une technique…

19

Page 20: 201001 TDD

DANS LES PROJETS INFORMATIQUES…

�On rencontre principalement 3 types d'intervenants

� Ceux qui « spécifient »

� Ceux qui « codent »

� Ceux qui « testent »� Ceux qui « testent »

�Mais, la plupart du temps…

� Ils ne parlent pas le même langage

� Ils ne travaillent pas ensemble

� Ils ne se connaissent parfois même pas

20

Page 21: 201001 TDD

QUE FAIRE ?

� Il faut les aider…

� à travailler ensemble

� à rendre le travail de chacun utile

� à se sentir ensemble dans cette aventure

21

Page 22: 201001 TDD

QUE FAIRE ?

�Spécifier les comportements avec des exemples

� Lier les spécifications au code de production

�Ecrire des tests avant le code�Ecrire des tests avant le code

�Echanger des idées en écrivant des tests

�Partager un résultat attendu avant de coder

22

Page 23: 201001 TDD

QUE FAIRE ?

�Faire des tests les vedettes de votre projet

�Se mettre d'accord sur ce que l'on veut puis coder

�Capitaliser les conversations dans des tests

Documenter l'utilisation d'un code dans �Documenter l'utilisation d'un code dans des tests

23

Page 24: 201001 TDD

BONNES PRATIQUES

� Tests Petits

� Tests Isolés

� Fonctionnant sous n'importe quel environnement

� Tests Complets

� Tests Répétables� Tests Répétables

� Tests Automatiques

� Tests Clairs pour tout le monde

� Concevoir les tests comme des spécifications, pas comme des vérifications

24

Page 25: 201001 TDD

Et comment faire avec du code existant ?

25

Page 26: 201001 TDD

LE CODE EXISTANT…

� Il n’y a pas de test

� Ce code n’a pas été conçu pour qu’on puisse écrire simplement des tests

� Par où je commence ?

26

Page 27: 201001 TDD

ON ÉCRIT LE TEST POUR TOUT LE CODE ?

� Le projet est gros, il faut donc passer les 6 prochains mois à écrire des tests

� Evidemment, ce n’est pas réaliste !

� Commençons petit !

27

Page 28: 201001 TDD

ON COMMENCE PAR 1 TEST !

� Cherchez une portion de code testable (classe, méthode, fonction…)

� Ecrivez un test qui porte sur cette portion

� Lancez-le : il doit réussir

� (enfin, normalement ☺)� (enfin, normalement ☺)

� Ecrivez un test par jour…

28

Page 29: 201001 TDD

TESTEZ À CHAQUE MODIFICATION DU CODE

� La prochaine fois que vous devez corriger un bug, écrivez un test qui permet de reproduire ce problème…

�Et qui échoue !

�Si la portion de code n’est pas testable, �Si la portion de code n’est pas testable, modifier le code pour l’isoler et la tester !

29

Page 30: 201001 TDD

LANCEZ VOS TESTS !

�Quand vous avez écrit vos tests, vous devez les lancer !

�Si vous ne le faites pas, ils sont inutiles…

�Et c’est mieux si vous les faites exécuter automatiquement…automatiquement…

30

Page 31: 201001 TDD

LES DÉFAUTS DE L’APPROCHE TDD

�Coûteux en temps

�Parfois complexe à concevoir

�Peut sembler peu utile car le développeur doit car le développeur doit envisager tous les cas de figure, même ceux a

priori inutiles

31