[Agile Testing Day] Behavior Driven Development (BDD)

Click here to load reader

download [Agile Testing Day] Behavior Driven Development (BDD)

of 40

  • date post

    12-Apr-2017
  • Category

    Technology

  • view

    234
  • download

    0

Embed Size (px)

Transcript of [Agile Testing Day] Behavior Driven Development (BDD)

{{ Nom du cercle }}

Behavior Driven DevelopmentAgile testing Day - Janvier 2016

Who am i ?

Consultant .NET/WEB@Georges_Damienwww.georgesdamien.com

Georges DAMIEN

Pourquoi le BDD ?

Ce quon entend souvent en entrepriseTrop de politiques internes (processus lourds)Les besoins ne sont pas clairsLe client ne sait pas ce quil veutOn fait beaucoup de runions mais on discute dans le videLe client (ou PO) nest jamais disponibleLa doc nest pas jourLa doc nest pas claire

a vous rappelle quelque chose ?

Et a ?

Je veux un IPhoneMais non ! Un tlphone Iphone de la marque AppleOui mais non ! Je veux le dernier modle, la version 6

Ce quon voit trs souvent

Le dveloppeur

Le client

Le testeur

Je veux a !

Le POLe client dit quil veut a !

Voici les specs !

Voil lboulot !

Ces good ! On peut pousser en PROD

Ce que a donne comme rsultat

Le dveloppeur

Le client

Le testeur

Je veux a !

Le POLe client dit quil veut a !

Voici les specs !

Voil lboulot !

Cest good ! On peut pousser en PROD

Le besoin initialCe qui a t fait et qui a de la valeur (correspondant au besoin, test, valid).

8

Pourquoi le BDD ?National Institute of Standards and Technology estime environ 70% le pourcentage derreurs introduites par projet lors de la phase dtude de besoins.Rponse au TDD qui est mal compris

Ce que certains pensent du BDDCest juste une truc la modeCest un truc pour faire des tests (automatiss)Cest juste du Gerkins (Given When then)a resemble au TDD

La philosophie du BDD

BDD : objectifsBuilding de software rightBuilding de right softwareSoftware that matters

De lide limplmentation

Je veux a !Voil a !Comment on fait a ?Comment on fait a bien ?Comment on fait bien a ?Avec du BDD par exemple

Georges Damien (GD) - Quelques mots

BDD in action

Le besoin mtier

On commence par dfinir lobjectif mtier (business)Je veux proposer aux clients une assurance maison par dfaut

Les featuresOn rpond ensuite la question :Quelles sont les lments (features) qui vont me permettre de rpondre cet objectif ?

Tu veux donc une page web?Oui.Tu veux que ton offre dassurance saffiche ds la premire page ?Oui, faut que ce soit simpleOk, mais on affiche quoi ? Le prix de lassurance ? des images ?Le prix hors taxe et le prix TTC, dailleurs il faudrait que se soit automatiquement appliqu si on change de prixOk, il y aura des options que lutilisateur pourra choisir ?Oui mais dans un premier temps pas doption, il faut que je dmarre rapidement mon activit.Ok, a parait clair. Il faudra nous donner un exemple avec les tarifs, a nous aiderait.

Discussion autours des featuresOn discute des fonctionnalits partir dexemples concrets.On discute tous ensemble

Ubiquitous language (langage omniprsent)En tant que Je souhaite Pour

Utilisation dexemplesFeature: StringToSimpleNameDans le but d'uniformiser les noms de personnesJe voudrais que les noms de famille commencent par des majusculeset le reste des lettres en minusculesScenario Outline: Formater les nomsGiven Je saisi un When j'appelle la methode de formatageThen Mon devrait me retourner un nom commencant par une majusculeExamples:| nom | resultat || duPont | Dupont || Dupuis | Dupuis |

Comprhension partage

The three amigos

BDD : les phases

BDD : Feature

BDD : scnarii

BDD : Step definition [Binding] public class DisplayInsurancesSteps { [When(@"I open insurance page")] public void WhenIOpenInsurancePage() {} [Then(@"the result should show the home insurance")] public void ThenTheResultShouldShowTheHomeInsurance() {} [Then(@"the base price is (.*)")] public void ThenTheBasePriceIs(float basePriceExpected) {} [Then(@"the sales price is (.*)")] public void ThenTheSalesPriceIs(float salesPriceExpected) {} }

BDD : unit test (TDD) [When(@"I open insurance page")] public void WhenIOpenInsurancePage() { var homeController = new HomeController(); this.actionResult = homeController.Index() as ViewResult; } [Then(@"the result should show the home insurance")] public void ThenTheResultShouldShowTheHomeInsurance() { var viewResult = this.actionResult as ViewResult; Assert.IsInstanceOf(viewResult.Model); this.insurance = viewResult.Model as InsuranceViewModel; }

BDD : unit test (TDD) [Then(@"the base price is (.*)")] public void ThenTheBasePriceIs(float basePriceExpected) { Assert.AreEqual(basePriceExpected, this.insurance.BasePrice); } [Then(@"the sales price is (.*)")] public void ThenTheSalesPriceIs(float salesPriceExpected) { Assert.AreEqual(salesPriceExpected, this.insurance.SalesPrice); }

BDD : codage

BDD : unit test result

BDD & agilit

Les 4 valeurs de lagilitLes individus et leurs interactionsplus que les processus et les outils.Du logiciel qui fonctionneplus quune documentation exhaustive.La collaboration avec les clientsplus que la ngociation contractuelle.Ladaptation au changementplus que le suivi dun plan.

BDD

BDD : avantages

Le bon rsultatOn dveloppe le bon produitOn le dveloppe de la meilleur faon

Tests automatissLes critres dacceptances sont automatissLes tests sont automatiss

Documentation vivante et jourLa documentation est jourLes scenarii/features refltent le besoin rel du clientLe code correspondant aux tests qui drivent des features implmentes

36

BDD : inconvnients

Difficults/challengeFaire participer tout le mondeMontrer aux chefs que a marcheFaire adopter la pratique par les participantsFaire accepter de changer de mthode de travailFaire preuve dempathiePratique teste mais pas adopte

DmoDmo

https://github.com/Djdodjes/InsuranceDream

Merci de votre attentionQuestions ?

@Georges_Damien