Top Banner
MILAN november 28 th /29 th 2014 Riccardo Franconi e Francesco Tassi BDD Tutta questione di comunicazione Raccontiamo il BDD in un progetto reale [email protected] [email protected] - ideato
74

Behaviour Driven Development - Tutta questione di comunicazione

Aug 16, 2015

Download

Technology

Codemotion
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Riccardo Franconi e Francesco Tassi !BDD Tutta questione di comunicazione Raccontiamo il BDD in un progetto reale [email protected] [email protected] - ideato

Page 2: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014 @ftassi

Francesco Tassi@ricfrank

Riccardo Franconi

Page 3: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 4: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

BDD• Vediamo cos’è

• La nostra esperienza

• Cosa abbiamo imparato

Page 5: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

– Wikipedia

“behavior-driven development (abbreviato in BDD e traducibile in Sviluppo guidato dal

comportamento) è una metodologia di sviluppo del software basata sul test-driven development

(TDD)”

Page 6: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

– “BDD in Action” John Ferguson Smart

“Non basta scrivere software correttamente, bisogna anche scrivere il software corretto”

Page 7: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

BDD in breve• Esempi non test

• Linguaggio condiviso

• Business Value

Page 8: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi non test

Page 9: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

public function testSomma(){ //... }

Esempi non test

Page 10: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Somma Dato che inserisco due numeri Allora Ottengo la loro somma public function testOperazioneSommaDovrebbeSommareDueNumeri(){ //... }

Esempi non test

Page 11: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Linguaggio condiviso

Page 12: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 13: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 14: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 15: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 16: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

– Moretti“Le parole sono importanti”

Page 17: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Guest deve confermare la data prima di continuare con la prenotazione

Linguaggio condiviso

Page 18: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Guest deve confermare la data prima di continuare con la prenotazione

Linguaggio condiviso

WTF!?!

Page 19: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Il giocatore deve confermare la data prima di continuare con la prenotazione

Linguaggio condiviso

Page 20: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Business value

Page 21: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Business valuedelive

ring

Page 22: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Come

Page 23: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

ComeDiscussione

Obiettivo FeaturesFeaturesFeaturesEsempiEsempiEsempi Specifiche

EseguibiliSpecifiche Eseguibili

Specifiche Eseguibili

Page 24: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Obiettivo(SMART)

Page 25: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

“Voglio aumentare il fatturato del 5% entro fine anno ricevendo più prenotazioni”

Obiettivo

Page 26: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

FeaturesGherkin

Page 27: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Gli strumenti che permettono di raggiungere l’obiettivo

Features

Page 28: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

EsempiGherkin

Page 29: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Descrive come l’utente utilizza la feature

Esempi

Page 30: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Specifiche eseguibiliBehat - PHPSpec

Page 31: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Specifiche eseguibiliScenario: Prenotazione con email non valida! Dato che un giocatore ha scelto di prenotare un campo per "domani"! Quando completa la prenotazione con una mail non valida! Allora visualizza che deve inserire una mail valida!!!/**! * @Given /^che un ospite ha scelto di prenotare un campo per "domani"$/! */!public function haSceltoDiPrenotarePerIl($bookingDate = null){…}

Page 32: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Bola

Page 33: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Per avere un vantaggio competitivo rispetto ai miei concorrenti Voglio avere un sistema di prenotazione onlineChe permetta ai miei clienti di prenotare da computer o smartphone

Obiettivo

Page 34: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Feature: Prenotazione campo Per rendere più semplice e aumentare il numero delle prenotazioni ricevute Come giocatore Voglio poter prenotare online un campo

Features

Page 35: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Visualizzazione dei campi disponibili Scenario: Prenotazione di un campo Scenario: Mail di conferma della prenotazione Scenario: Prenotazione ricorrente ....

Esempi

Page 36: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi

Scenario: Visualizzazione dei campi disponibili! Quando l'utente autenticato visita la pagina dei campi! Allora può vedere i campi divisi per sport

Page 37: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Visualizzazione dei campi disponibili! Quando l'utente autenticato visita la pagina dei campi! Allora può vedere i campi divisi per sport

Esempi

Autenticato!

?!

Page 38: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Visualizzazione dei campi disponibili! Quando l'utente autenticato visita la pagina dei campi! Allora può vedere i campi divisi per sport

Esempi

-Q: “Ma l’utente quindi è un utente registrato?”

- A: “Si” - Q: “Perché?” - A: “Perché così lo posso rintracciare” - Q: “Ma, non basta il numero di telefono?”

-A: “Beh, si”

Autenticato!

?!

Page 39: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Visualizzazione dei campi disponibili! Quando l'utente autenticato il giocatore visita la pagina dei campi! Allora può vedere i campi divisi per sport

Esempi

Page 40: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi

Scenario: Visualizzazione dei campi disponibili! Quando il giocatore visita la pagina dei campi! Allora può vedere i campi divisi per sport

—- spreco

Page 41: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione ricorrente!Quando l’admin sceglie un campo!E seleziona il prossimo martedì!E seleziona la data di fine ripetizione tra 4 martedì!E la ripetizione "settimanale"!E completa la prenotazione!Allora ha prenotato quel campo per i prossimi 4 martedì

Esempi

Page 42: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione ricorrente!Quando l’admin sceglie un campo!E seleziona il prossimo martedì!E seleziona la data di fine ripetizione tra 4 martedì!E la ripetizione "settimanale"!E completa la prenotazione!Allora ha prenotato quel campo per i prossimi 4 martedì

Esempi

se non è disp

onibile!?!

Page 43: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi

Scenario: Prenotazione ricorrente!Quando l’admin sceglie un campo!E seleziona il prossimo martedì!E seleziona la data di fine ripetizione tra 4 martedì!E la ripetizione "settimanale"!E completa la prenotazione!Allora ha prenotato quel campo per i prossimi 4 martedì

se non è disp

onibile!?!

- Q: “cosa succede?”- A: “Salviamo solo le valide”

- Q: “E delle altre come tieni traccia?” - A: “Inviami un elenco di quelle

sovrapposte”

Page 44: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione ricorrente sovrapposta!Dato che il giocatore ha completato una prenotazione!Quando l'admin crea una prenotazione ricorrente che si sovrappone a quella esistente!Allora ha prenotato quel campo solo per le giornate disponibili!E riceve un riepilogo delle prenotazioni sovrapposte

Esempi

Page 45: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi++ conoscenza del dominio

Scenario: Prenotazione ricorrente sovrapposta!Dato che il giocatore ha completato una prenotazione!Quando l'admin crea una prenotazione ricorrente che si sovrappone a quella esistente!Allora ha prenotato quel campo solo per le giornate disponibili!E riceve un riepilogo delle prenotazioni sovrapposte

Page 46: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Specifiche eseguibiliScenari espressivi - Outside in - Page Object pattern

Page 47: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona il giorno dalla select "booking_day"! E seleziona il mese dalla select "booking_month"! E seleziona l'anno dalla select "booking_year"! ...

Scenari espressivi

Page 48: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona il giorno dalla select "booking_day"! E seleziona il mese dalla select "booking_month"! E seleziona l'anno dalla select "booking_year"! ...

Scenari espressivi

Page 49: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona la data! ...

Scenari espressivi

Page 50: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione con email non valida!! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona la data! E completa la prenotazione con una mail non valida! Allora visualizza che deve inserire una mail valida

Scenari espressivi

Page 51: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Scenario: Prenotazione con email non valida!! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona la data! E completa la prenotazione con una mail non valida! Allora visualizza che deve inserire una mail valida

Scenari espressivi

Page 52: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Background:! Quando un giocatore visita la pagina dei campi! E ne sceglie uno! E seleziona la data!!Scenario: Prenotazione con email non valida! E completa la prenotazione con una mail non valida! Allora visualizza che deve inserire una mail valida

Scenari espressivi

Page 53: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

/**!* @Given /^completa la prenotazione con una mail non valida$/!*/!public function completaLaPrenotazioneConUnaMailNonValida()!{!! $page = $this->mink->getSession()->getPage();!!! $this->player = $this->createPlayer();!! $this->player->email = 'fooinvalidemail';!! $page->fillField('firstName', $this->player->firstName);!! $page->fillField('lastName', $this->player->lastName);!! $page->fillField('email', $this->player->email);!! $page->fillField('phone', $this->player->phoneNumber);!!! $page->pressButton('book');!}

Codice espressivo

Page 54: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

/**!* @Given /^completa la prenotazione con una mail non valida$/!*/!public function completaLaPrenotazioneConUnaMailNonValida()!{!! $page = $this->mink->getSession()->getPage();!!! $this->player = $this->createPlayer();!! $this->player->email = 'fooinvalidemail';!! $page->fillField('firstName', $this->player->firstName);!! $page->fillField('lastName', $this->player->lastName);!! $page->fillField('email', $this->player->email);!! $page->fillField('phone', $this->player->phoneNumber);!!! $page->pressButton('book');!}

Codice espressivo

Page 55: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

/**! * @Given /^completa la prenotazione con una mail non valida$/!*/!public function completaLaPrenotazioneConUnaMailNonValida()!{!! $bookingPage = $this->getBookingPage();!!! $this->player = $this->createPlayer();!! $this->player->email = 'fooinvalidemail';!! $this->bookingPage->book($this->player);!}

Codice espressivo

Page 56: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

class BookingPage !{!! public function book($player)!! {!

! ! $this->page->fillField('firstName', $player->firstName);!! $this->page->fillField('lastName', $player->lastName);!! $this->page->fillField('email', $player->email);!! $this->page->fillField('phone', $player->phoneNumber);!!! $this->page->pressButton('book');!}!

}

Codice espressivo

Page 57: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Outside in

Behat

phpspec

1

2

3

45

6

7

1 - Discussione di uno scenario

2 - Step rosso

3 - Spec rossa

4 - Implementazione

5 - Refactoring

6 - Step verde

7 - Refactoring

Page 58: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Cosa abbiamo imparato

Page 59: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

ComunicazioneMigliore verso il cliente

Page 60: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

ComunicazioneMigliore nel team

Page 61: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Comprendi la funzionalità tramite esempi

Page 62: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Non sviluppare oggi quello che puoi sviluppare domani

Page 63: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Fai emergere problematiche impreviste

Page 64: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Non dare niente per scontato

Page 65: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Documentazione

Page 66: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Comprensibileanche per non tecnici

Page 67: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

CompilabileNon obsoleta

Page 68: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Ostacoli

Page 69: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Cliente non partecipa

Page 70: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

È già tutto deciso

Page 71: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Se lo sai descrivere l’hai capito

Page 72: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Thanks

Page 73: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

https://joind.in/12837

Page 74: Behaviour Driven Development - Tutta questione di comunicazione

MILAN november 28th/29th 2014

Risorse• http://www.ideato.it/tag/bdd!

• Bdd in Action: Behavior-driven Development for the Whole Software Lifecycle di John

Ferguson Smart!

• Specification by Example: How Successful Teams Deliver the Right Software di Gojko

Adzic!

• The RSpec Book: Behaviour Driven Development di Dave Astels, Bryan Helmkamp, Dan

North, Zac David Chelimsky