+ All Categories
Home > Presentations & Public Speaking > BDD tutta questione di comunicazione

BDD tutta questione di comunicazione

Date post: 06-Jul-2015
Category:
Upload: tassi-francesco
View: 875 times
Download: 2 times
Share this document with a friend
Description:
Abbiamo sperimentato BDD sul campo e c’è piaciuto parecchio, per motivi del tutto inaspettati. Spesso il fallimento dei progetti è dato da questioni umane, di comprensione, di comunicazione, non da difficoltà tecniche. Capire cosa si deve fare e quando non è così semplice come sembra. Seguendo il Behaviour Driven Development abbiamo migliorato la comunicazione tra di noi, aumentato la comprensione del dominio e messo a fuoco le priorità. Il talk racconta la nostra esperienza diretta.
74
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
Transcript
Page 1: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014 @ftassi

Francesco Tassi@ricfrank

Riccardo Franconi

Page 3: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 4: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

BDD• Vediamo cos’è

• La nostra esperienza

• Cosa abbiamo imparato

Page 5: BDD 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: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

BDD in breve• Esempi non test

• Linguaggio condiviso

• Business Value

Page 8: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Esempi non test

Page 9: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

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

Esempi non test

Page 10: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Linguaggio condiviso

Page 12: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 13: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 14: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 15: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Page 16: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

– Moretti“Le parole sono importanti”

Page 17: BDD 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: BDD 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: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Business value

Page 21: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Business valuedelive

ring

Page 22: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Come

Page 23: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

ComeDiscussione

Obiettivo FeaturesFeaturesFeaturesEsempiEsempiEsempi Specifiche

EseguibiliSpecifiche Eseguibili

Specifiche Eseguibili

Page 24: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Obiettivo(SMART)

Page 25: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

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

Obiettivo

Page 26: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

FeaturesGherkin

Page 27: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Gli strumenti che permettono di raggiungere l’obiettivo

Features

Page 28: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

EsempiGherkin

Page 29: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Descrive come l’utente utilizza la feature

Esempi

Page 30: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Specifiche eseguibiliBehat - PHPSpec

Page 31: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Bola

Page 33: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Specifiche eseguibiliScenari espressivi - Outside in - Page Object pattern

Page 47: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD 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: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Cosa abbiamo imparato

Page 59: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

ComunicazioneMigliore verso il cliente

Page 60: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

ComunicazioneMigliore nel team

Page 61: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Comprendi la funzionalità tramite esempi

Page 62: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Non sviluppare oggi quello che puoi sviluppare domani

Page 63: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Fai emergere problematiche impreviste

Page 64: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Non dare niente per scontato

Page 65: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Documentazione

Page 66: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Comprensibileanche per non tecnici

Page 67: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

CompilabileNon obsoleta

Page 68: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Ostacoli

Page 69: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Cliente non partecipa

Page 70: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

È già tutto deciso

Page 71: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Se lo sai descrivere l’hai capito

Page 72: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

Thanks

Page 73: BDD tutta questione di comunicazione

MILAN november 28th/29th 2014

https://joind.in/12837

Page 74: BDD 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


Recommended