Et tout un tas d'autres choses ;)

Thomas Carpaye
Thomas Ployon

TDD

Déroulé type de la journé

9:30 Accueil
Tour de table des personnes
- Présentation
- Que souhaitent elles apprendre
10:00 Théorie :
- C'est quoi le TDD ?
- Démo : Kata "FizzBuzz" (par les formateurs)
- ShaHaRi et les Kata
10:30 Pratique: Kata "Leap Year" (par les participants)
12:00 Repas
13:30 Théorie:
- C'est quoi un Test ? Pourquoi on teste ?
- Anatomie d'un test
- Comment écrire un test ?
13:45 Théorie:
Quel est le prochain test à écrire ?
- C'est quoi un test pour le TDD ?
- Baby Steps (découper le problème)
- TPP
14:00 Pratique : Kata "Roman Numerals"
15:30 Théorie
TDD As If You Meant It
16:00 Pratique: Kata "Mars Rover" en Mob avec une approche "Inside Out" sans le dire
17:30 Rétro de la journée et Conclusion

Le TDD, c'est quoi ?

Selon vous ?

Juste ça ?

Merci d'avoir suivi la formation TDD

On va boire des verres ?

TDD

Qu'est ce que c'est ?

Test Driven Development

TDD

est une
méthodologie de développement

par du refactoring en continu
 

Clean Code

Cycle

RED

Make it fail

GREEN

Make it pass

REFACTOR

Make it better

DEMO

par vos formateurs

⚠️ ATTENTION ⚠️

SHU

HA

RI

Appliquer les règles

Questionner les règles

Transcender les règles

KATA

Easy ;)

Trois lois du TDD

  1. Vous devez écrire un test qui échoue avant d’écrire tout code de production

  2. Vous ne devez pas écrire plus d’un test suffisant pour échouer, ou qui échouera à la compilation

  3. Vous ne devez pas écrire plus de code que nécessaire pour faire passer le test en cours

Permis de coder

Interdit d’écrire du code,

sans test en échec

qui prouve que ce code est nécessaire.

Une question à la fois

Interdit d’écrire

plus d’un test en échec

à la fois

Connaître les limites

Interdit d’écrire

plus de code que nécessaire,

pour faire passer le test en cours.

KATA

Write a function that returns true or false depending on whether its input integer is a leap year or not.

 

A leap year is divisible by 4, but is not otherwise divisible by 100, unless it is also divisible by 400.

 

For example, 2001 is a typical common year

and 1996 is a typical leap year,

whereas 1900 is an atypical common year

and 2000 is an atypical leap year.

 

Leap Year

Bon appétit

C'est quoi un test ?

Selon vous ?

Un TEST

Qu'est ce que c'est ?

TESTER

Processus qui consiste à 

  1. Effectuer des Actions sur un Système

  2. Analyser comment celui-ci répond

Pourquoi tester ?

Conformité

Stabilité

Confiance

Exemples

Pourquoi faire du TDD ?

Clarifier le
BESOIN

#RED

Clarifier l'
USAGE

#RED

Savoir quand on a  TERMINÉ

#GREEN

S'affranchir de
la pression de réussir

#GREEN

Pour le code
Fonctionner = Commencer

#REFACTOR

Design Emergent

#REFACTOR

Pyramide

Boucle de feedback & Niveaux de test

Anatomie d'un test

@Test
void should_print_fizz_when_input_is_multiple_of_three() {
    
    

    
    

    
    
}
@Test
void should_print_fizz_when_input_is_multiple_of_three() {
    
    

    
    

    // Then
    assertThat(result).isEqualTo("fizz");
}
@Test
void should_print_fizz_when_input_is_multiple_of_three() {
    
    

    // When
    String result = fizzBuzzOf(input);

    // Then
    assertThat(result).isEqualTo("fizz");
}
@Test
void should_print_fizz_when_input_is_multiple_of_three() {
    // Given
    int input = 3;

    // When
    String result = fizzBuzzOf(input);

    // Then
    assertThat(result).isEqualTo("fizz");
}
@Test
void should_print_fizz_when_input_is_multiple_of_three() {
    // Arrange
    int input = 3;

    // Act
    String result = fizzBuzzOf(input);

    // Assert
    assertThat(result).isEqualTo("fizz");
}

@Test
void should_be_able_to_send_an_email() {
    // GIVEN
    Session session = Session.getInstance(new Properties(), null);
    Message msg = createMessage(session);


    // WHEN
    sendMessage(session, msg);

    // THEN
  MimeMessage[] messages = mailServer.getReceivedMessages();
    assertThat(messages).first().isEqualTo(expectedEmail);

}

Unit Tests are FIRST

Fast

Isolated

Repeatable

Self verifying

Timely / Thorough

QUEL TEST

écrire ensuite ?

Petit à petit

Baby steps

Petit à petit

TPP
Transformation Priority Premises

As the tests get more specific, the code gets more generic.

Robert C. Martin (C. stands for Cringe)

Découper le problème

Axes de complexité

ZOMBIES

Zero

One

Many

Boundaries

Interface

Errors

Scenarios

KATA

TDD
As If You Meant It

Subtitle

Tout le code

dans le code de test

même le code de prod

DEMO

par vos formateurs

TDD
Double Loop

Subtitle

KATA

KATA

TDD : Synthèse J1

is NOT about testing

 

is NOT about test first

 

is a methodology

 

is about design and development

 

is your assistant

Bonne soirée

TDD Mars 2024 1/2

By tarcaye

TDD Mars 2024 1/2

  • 61