pizza party 30-09-2011 bdd-cucumber
DESCRIPTION
Pizza Party 30 sep 2011. Industrialisation. BDDTRANSCRIPT
BDD – CUCUMBER
Behavior Driven DevelopmentIntroduction avec Cucumber & Cucumber-
nagios
Septembre 2011Septembre 2011Hervé LeclercHervé Leclerc
BDDTDDDDD
CQCB ?
TDD – BDD – DDD ● Méthodes de développement Agile● TDD : Test Driven Development● BDD : Behavior Driven Development● DDD : Domain Driven Design
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.
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.
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 ?
TDDTDD
DDDDDD
BDDBDD
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
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
BDD → cucumber
Story :As a [rôle]I want to (some action)So that (business value)
Story :As a [rôle]I want to (some action)So that (business value)
Scenario: TitleGiven [some context]And [Additionnal context]When [Event]Then [outcome]
Scenario: TitleGiven [some context]And [Additionnal context]When [Event]Then [outcome]
FeatureFeature
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
Exemple de scénarioFeature: 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"
Gherkin est i18n so...# language: frFonctionnalité: 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"
En Action !
an-useran-user a-passworda-password
cucumber-nagios● Permet de faire du BDD sur de l'infra
Demain
DEMO