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
-
Vous devez écrire un test qui échoue avant d’écrire tout code de production
-
Vous ne devez pas écrire plus d’un test suffisant pour échouer, ou qui échouera à la compilation
-
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 à
-
Effectuer des Actions sur un Système
-
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