Download - [Agile Testing Day] Test Driven Development (TDD)

Transcript
Page 1: [Agile Testing Day] Test Driven Development (TDD)

Test Driven DevelopmentAgile Testing Day

Page 2: [Agile Testing Day] Test Driven Development (TDD)

Aurélien GALTIERSoftware Craftsman

Consultant/Formateur web et mobile

Twitter : @AurélienGaltierBlog : http://blogs.developpeur.org/agaltier/

Page 3: [Agile Testing Day] Test Driven Development (TDD)

TDD c’est quoi ?

Moi : TDD c’est quoi ? Collègue : On crée les tests avant de créer le code de production

″‶

Page 4: [Agile Testing Day] Test Driven Development (TDD)

TDD c’est quoi ?

• Une méthode de développement• Un outil de clean code• Un concept test first• Une philosophie

Page 5: [Agile Testing Day] Test Driven Development (TDD)

T comme Test

• On commence par les tests• Chaque test représente un cas d’utilisation• L’ensemble des tests représente une description de notre code• Filet de sécurité

Page 6: [Agile Testing Day] Test Driven Development (TDD)

D comme Driven

• Nos tests influencent le code• Classes• Méthodes• …

• Adapté directement aux tests• Injection• Interface• Abstraction• …

Page 7: [Agile Testing Day] Test Driven Development (TDD)

D comme development

• Parce que l’on est développeur• Code de production• Clean code• Refactoring

Page 8: [Agile Testing Day] Test Driven Development (TDD)

Phases du TDD

Analyse

Red

Green

Refactor

Red

GreenRefactor

Page 9: [Agile Testing Day] Test Driven Development (TDD)

Analyse

• Analyser le besoin métier • Mettre à jour la liste de tests• Ecrire le nom de nos tests• Choix du prochain test à implémenter

Analyse

Page 10: [Agile Testing Day] Test Driven Development (TDD)

Analyse : Ecrire le nom du test

• Le pattern Should / When

Should return I When convert 1 in roman number

Should return IV When convert 4 in roman number

Analyse

Page 11: [Agile Testing Day] Test Driven Development (TDD)

Analyse : Ecrire le nom du test

• Le cas du And

Should return I and log convert of 1 When convert 1 in roman number

Should return I When convert 1 in roman number Should log convert of 1 When convert 1 in roman number

Analyse

Page 12: [Agile Testing Day] Test Driven Development (TDD)

Analyse : Choisir son premier test

• Choisir votre prochain test :• Choisir le plus petit incrément• Un incrément qui apporte de la valeur• Un cas à la marge

Analyse

Page 13: [Agile Testing Day] Test Driven Development (TDD)

Red

• Ecriture du test• Compilation du code• Exécution du test et voir qu'il passe au rouge

Red

Page 14: [Agile Testing Day] Test Driven Development (TDD)

Red : Règle des 3 A

Red

Page 15: [Agile Testing Day] Test Driven Development (TDD)

Red : Exécution du test

Red

Page 16: [Agile Testing Day] Test Driven Development (TDD)

Green

• Implémentation du code• Respecter seulement le besoin du test

Green

Page 17: [Agile Testing Day] Test Driven Development (TDD)

Green

Green

Page 18: [Agile Testing Day] Test Driven Development (TDD)

Refactor

• Interaction sur le code• Maîtrise du code• Factoriser• Structurer• Renommer• Pattern• Design

Refactor

Page 19: [Agile Testing Day] Test Driven Development (TDD)

Refactor

• Le code de production• Le code des tests

Refactor

“Always leave the campground cleaner than you found it.”The Boy Scout Rule (by Uncle Bob)

Page 20: [Agile Testing Day] Test Driven Development (TDD)

On recommence

• On recommence à la phase d’Analyse• On ajoute 1 test• On implémente notre nouveau test• On « refactor» l’ensemble du code TDD

Page 21: [Agile Testing Day] Test Driven Development (TDD)

On recommence

• Développement par Cycle• Itération de code• Feedback rapide• Emergence du code TDD

Page 22: [Agile Testing Day] Test Driven Development (TDD)

Démonstration

• Roman Numerals

15

1050

100500

1000

IVXLCDM

Page 23: [Agile Testing Day] Test Driven Development (TDD)

Difficulté du TDD

• Coût • D’apprentissage• De développement

Page 24: [Agile Testing Day] Test Driven Development (TDD)

Difficulté du TDD

• Code legacy• Non adapté aux tests• Refactoring difficile

Page 25: [Agile Testing Day] Test Driven Development (TDD)

Difficulté du TDD

• Vous ne maîtrisez pas toujours le code• On oublie la phase de Factorisation• On ne prend pas de recul sur le code

Page 26: [Agile Testing Day] Test Driven Development (TDD)

Pourquoi faire du TDD

• Code couvert par des tests• Très peu de code inutile• Confiance en son code

Page 27: [Agile Testing Day] Test Driven Development (TDD)

Pourquoi faire du TDD

• Réduction du debug• Développement itératif• Feedback rapide• Moins de F5

Page 28: [Agile Testing Day] Test Driven Development (TDD)

Pourquoi faire du TDD

• Emergence d’une documentation automatique• Noms des tests parlants• Les tests couvrent des cas d’utilisation

Page 29: [Agile Testing Day] Test Driven Development (TDD)

Comment faire ?

• Coding Dojo• Kata• Pratiquer