Date post: | 06-Jul-2015 |
Category: |
Presentations & Public Speaking |
Upload: | tassi-francesco |
View: | 875 times |
Download: | 2 times |
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
MILAN november 28th/29th 2014 @ftassi
Francesco Tassi@ricfrank
Riccardo Franconi
MILAN november 28th/29th 2014
MILAN november 28th/29th 2014
BDD• Vediamo cos’è
• La nostra esperienza
• Cosa abbiamo imparato
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)”
MILAN november 28th/29th 2014
– “BDD in Action” John Ferguson Smart
“Non basta scrivere software correttamente, bisogna anche scrivere il software corretto”
MILAN november 28th/29th 2014
BDD in breve• Esempi non test
• Linguaggio condiviso
• Business Value
MILAN november 28th/29th 2014
Esempi non test
MILAN november 28th/29th 2014
public function testSomma(){ //... }
Esempi non test
MILAN november 28th/29th 2014
Scenario: Somma Dato che inserisco due numeri Allora Ottengo la loro somma public function testOperazioneSommaDovrebbeSommareDueNumeri(){ //... }
Esempi non test
MILAN november 28th/29th 2014
Linguaggio condiviso
MILAN november 28th/29th 2014
MILAN november 28th/29th 2014
MILAN november 28th/29th 2014
MILAN november 28th/29th 2014
MILAN november 28th/29th 2014
– Moretti“Le parole sono importanti”
MILAN november 28th/29th 2014
Scenario: Guest deve confermare la data prima di continuare con la prenotazione
Linguaggio condiviso
MILAN november 28th/29th 2014
Scenario: Guest deve confermare la data prima di continuare con la prenotazione
Linguaggio condiviso
WTF!?!
MILAN november 28th/29th 2014
Scenario: Il giocatore deve confermare la data prima di continuare con la prenotazione
Linguaggio condiviso
MILAN november 28th/29th 2014
Business value
MILAN november 28th/29th 2014
Business valuedelive
ring
MILAN november 28th/29th 2014
Come
MILAN november 28th/29th 2014
ComeDiscussione
Obiettivo FeaturesFeaturesFeaturesEsempiEsempiEsempi Specifiche
EseguibiliSpecifiche Eseguibili
Specifiche Eseguibili
MILAN november 28th/29th 2014
Obiettivo(SMART)
MILAN november 28th/29th 2014
“Voglio aumentare il fatturato del 5% entro fine anno ricevendo più prenotazioni”
Obiettivo
MILAN november 28th/29th 2014
FeaturesGherkin
MILAN november 28th/29th 2014
Gli strumenti che permettono di raggiungere l’obiettivo
Features
MILAN november 28th/29th 2014
EsempiGherkin
MILAN november 28th/29th 2014
Descrive come l’utente utilizza la feature
Esempi
MILAN november 28th/29th 2014
Specifiche eseguibiliBehat - PHPSpec
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){…}
MILAN november 28th/29th 2014
Bola
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
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
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
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
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!
?!
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!
?!
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
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
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
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!?!
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”
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
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
MILAN november 28th/29th 2014
Specifiche eseguibiliScenari espressivi - Outside in - Page Object pattern
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
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
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
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
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
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
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
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
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
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
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
MILAN november 28th/29th 2014
Cosa abbiamo imparato
MILAN november 28th/29th 2014
ComunicazioneMigliore verso il cliente
MILAN november 28th/29th 2014
ComunicazioneMigliore nel team
MILAN november 28th/29th 2014
Comprendi la funzionalità tramite esempi
MILAN november 28th/29th 2014
Non sviluppare oggi quello che puoi sviluppare domani
MILAN november 28th/29th 2014
Fai emergere problematiche impreviste
MILAN november 28th/29th 2014
Non dare niente per scontato
MILAN november 28th/29th 2014
Documentazione
MILAN november 28th/29th 2014
Comprensibileanche per non tecnici
MILAN november 28th/29th 2014
CompilabileNon obsoleta
MILAN november 28th/29th 2014
Ostacoli
MILAN november 28th/29th 2014
Cliente non partecipa
MILAN november 28th/29th 2014
È già tutto deciso
MILAN november 28th/29th 2014
Se lo sai descrivere l’hai capito
MILAN november 28th/29th 2014
Thanks
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