3. TDD – BDD – DDD
● Méthodes de développement Agile
● TDD : Test Driven Development
● BDD : Behavior Driven Development
● DDD : Domain Driven Design
4. DDD
● Méthode de conception logiciel pilotée par le
domaine, le métier
● L'approche est reconnue mais peu connue
● Focus sur les aspect métiers
● Lignes directrices concernant pratiques et
organisation du code pour obtenir un code
reflet fidèle au métier qu'il couvre et ayant une
meilleure résistance au changement.
5. TDD
● Wikipédia :
● Écrire un premier test
● Vérifier qu'il échoue (car le code qu'il teste n'existe
pas), afin de vérifier que le test est valide
● Écrire juste le code suffisant pour passer le test
● Vérifier que le test passe ;
● Puis re factoriser le code, c'est-à-dire l'améliorer tout
en gardant les mêmes fonctionnalités.
6. LE TDD C'EST BIEN MAIS...
● Ça sert à quoi d’écrire les tests en premier ?
● Ok, j’écris les tests en premier mais quel est le
premier test que j’écris ?
● Je dois tout tester ou seulement certaines
choses ?
8. BDD
● 2003 Dan North en défini le concept
● Principes :
● "Tout est comportement", où le pôle commercial et
technologique doivent se référer à des
comportements identiques et parler le même
langage.
● "Où le business compte", c’est à dire que chaque
système doit apporter un retour sur le business
● "EnoughIsEnough", faire ce qu’il faut pour atteindre
son but fixé, ni plus, ni moins
9. BDD : Scénario
● On écrit des scénarios (story)
● Tous les scénarios suivent le même modèle :
● Un contexte
● Une demande de fonctionnalité
● La récupération d'un bénéfice (ou pas)
● Parfaitement adaptée à Scrum
● Permet à tout le monde (CP,DEV,COM,CLI...) d'exprimer des
besoins dans même langage
● Les scénarios servent de critères d'acceptations → une fois
acceptés on est sûr que l'application se comporte comme ce
qui a été défini dans les scénarios
10. BDD → cucumber
Story :
As a [rôle]
I want to (some action)
So that (business value)
Feature
Scenario: Title
Given [some context]
And [Additionnal context]
When [Event]
Then [outcome]
11. cucumber
● Gem permettant d’exécuter des fonctionnalités
écrites sous forme de fichiers texte afin de
réaliser des tests automatisés
● Chaque Feature peut contenir plusieurs
scénarios
● La facilité d'écriture des scénario permet à des
non informaticiens d'écrire les fonctionnalité
● Le développeurs développeront le code pour
réaliser les fonctions scénario
12. Exemple de scénario
Feature: www.alterway.fr
It should be up
And I should be able to search for things
Scenario: Look Host www.alterway.fr
When I lookup "www.alterway.fr"
Then the name should resolve to "XXX.XXX.XXX.XXX"
Scenario: Searching for things
When I go to "http://www.alterway.fr"
And I fill in "search_block_form" with "industrialisation"
And I press "Recherche"
Then I should see "Industrialisation Php"
13. Gherkin est i18n so...
# language: fr
Fonctionnalité: www.alterway.fr
Il devrait être en ligne
Et Il devrait être capable de chercher des trucs
Scénario: Chercher des trucs
Etant donné Je suis sur un HTTP authentifié avec les crédences suivantes:
| username | password |
|an-user | a-password |
Quand Je vais sur "http://www.example.fr/"
Et Je remplis "search_block_form" avec "industrialisation"
Et Je clique sur "Recherche"
Alors Je devrais voir "Industrialisation Php"
Quand Je suis "Industrialisation Php"
Alors Je devrais voir "Le constat est clair"