SlideShare une entreprise Scribd logo
1  sur  36
Acceptance Test Driven Development
Giorgio Marchetti
2
“Mi serve per domani, ma è facile…”
Ho un elenco di scontrini.
Obiettivo
Nel caso degli scontrini con cross selling (ossia con prodotti appartenenti a categorie
diverse, ma acquistati nella stessa transazione), voglio sapere quali scontrini contengono la
categoria B e la categoria W e che altre categorie contengono
3
“Fatto!”
• Welcome Change: siamo un team agile, il cambiamento è il nostro pane quotidiano
• Delight your customer: soddisfare il cliente è la nostra priorità
• Feel good!: detto, fatto… Flash Gordon? Sei fuori!
4
“Però non mi torna”
Ad esempio: lo scontrino 43136 contiene sia B (tre referenze) che C (una referenza)
ma non compare tra i risultati
Perché?
Agenda di oggi
Introduzione
Cos’è ATDD
5
La matrice dei test
Dov’è ATDD
La Triade
Chi fa ATDD
Test-first! Test-when??!!
Quando si fa ATDD
A chi serve veramente?
Perché si fa ATDD
Restiamo in contatto
Condividiamo i nostri esperimenti
Introduzione
Cos’è ATDD
Quando l’incertezza
è bassa e la
conoscenza del
dominio alta,
l’enfasi è sulla
conformità.
Quando gli obiettivi
sono chiari, ma non
esiste una soluzione
nota, l’enfasi è sulla
fattibilità.
Quando gli obiettivi
sono mutevoli o
incerti, l’enfasi è
sull’apprendimento
Requisiti testati e testabili
10
 Gli AT non sono test di accettazione tradizionali
Non sono eseguiti dall’utente finale dopo l’implementazione, al fine di verificare se il sistema funziona secondo le specifiche
contrattualizzate
 Gli AT non sono System Tests
Non sono test scritti dai tester leggendo il documento dei requisiti
 Gli AT non sono Acceptance Criteria
Non sono informali
 Gli AT sono indipendenti dall’implementazione
Validano innanzitutto i requisiti, e poi possono essere usati per testare l’implementazione
 Gli AT sono definiti collaborativamente
Nascono dalla stretta collaborazione tra cliente/utente, sviluppatore e tester e sono il pilastro su cui fondare una comune
comprensione del dominio dell’applicazione
Ok, I want to do the thing right, but how I know it is the right thing?
L’albero della conoscenza
11
… dei requisiti
DDD
Specification by Example BDD
Executable Specifications
Evans
Adzic North
Beck / XP
Tanti nomi, una sola cosa?
12
 ATDD – Acceptance Test Driven Development:
Il focus è sul concetto di “accettazione” e su quello di verifica. E’ naturale il nesso con i cosiddetti Acceptance Criteria, che
sono parte essenziale della DoR (Definition of Ready) e della DoD (Definition of Done)
 BDD – Behaviour Driven Development (North):
L’attenzione è sul comportamento del sistema. È forse l’acronimo più popolare.
 Specification by Example (Adzic):
La definizione di Adzic si libera del “DD” e mette al centro il processo di costruzione delle specifiche tramite esempi
 Executable Specifications:
Qui l’accento è sulla “specifica” come vero e proprio test eseguibile e automatico
 DDD – Domain Driven Design:
Ubiquitous language! Conoscere il dominio per avere il dominio
Una questione di punti di vista
La matrice dei test
Dov’è ATDD
ATs do not
indicate how to
design a solution.
Rather, they are a
communication
mechanism.
Ken Pugh
Altough the test
are absolute (…)
they also form a
point of discussion
between the
customer and the
engineers.
Ken Pugh
La Triade
Chi fa ATDD
17
Ecco la nostra triade
Senza dimenticare il “quarto uomo”
Mario Volubile Luca Codice Mara Scrupoli Aldo Portafogli
Stakeholder Developer Tester Chief Financial Officer
Conversations
around examples,
expressed in a form
that can be easily
automated, to
reduce lost
information and
misunderstandings
John Ferguson Smart
Alla ricerca di un linguaggio comune
19
Dal dominio del linguaggio al linguaggio di dominio
Gherkin
20
 Gherkin Script: GWT
Gli script Gherkin sono una forma strutturata di linguaggio quotidiano
 Given – indica qualcosa che è dato per vero nello scenario
 When – indica un evento nello scenario
 Then – indica il risultato atteso
 “And” e “But”
Per migliorare la leggibilità sono supportate anche le parole chiave “And” e “But”
 Comprensibilità
Le clausole sono espresse nel linguaggio e con la sintassi naturali e quindi sono comprensibili anche da chi si occupa di
business e non di coding.
 DSL
Le clausole Gherkin finiscono per costituire un “Domain Specific Language” del tutto indipendente dal linguaggio di
programmazione usato per l’implementazione
Dato che è scritto in Gherkin, quando leggo lo scenario, allora lo capisco
Tabelle
21
Anche il colpo d’occhio vuole la sua parte
Test-first! Test-when??!!
Quando si fa ATDD
Subito!
23
 Identificare i desirements
 Associarli ad un obiettivo di business
 Sfidarli “by example”
 “Se sopravvivono allora vanno bene” (Charles Darwin… credo)
Un computer farà quello che gli dici, non quello che vuoi… meglio dirla giusta
Approccio outside-in
24
Iniziare dalla fine per iniziare bene
Cosa si può ottenere
25
Fare attenzione agli effetti indesiderati
Ciclo di sviluppo
26
Sembrava facile….ma poi
Automazione e tools
27
Run, test run
A chi serve veramente?
Perché si fa ATDD
Allo stakeholder
29
 Dai Desirements ai Requirements, e poi giù fino alle Specifications: non è più un viaggio solitario
 Costruire esempi aiuta a chiarire le idee
 I casi-limite come strumento di stress dei miei desideri
 Come sapere se l’obiettivo è raggiungibile: si può fare, e se sì, costerà tantissimo?
 Come sapere se ho ottenuto proprio ciò che mi serve?
Idee chiare, amicizia lunga
Al team di sviluppo
30
 Finalmente sono sicuro che sto implementando la cosa giusta
 Il valore di ciò che consegno è stato esplicitato
 Posso sapere quando ho finito
 Posso sapere se ho rotto qualcosa
 Ehi… ma questi sono i regression test… wow!
 “Ragazzi, chi si becca il task della documentazione? Ah… non c’è nessun task della documentazione…”
Beh sì… ci piace vincere facile
A tutti i protagonisti
31
“Panico: dobbiamo rivedere quella funzione sviluppata tre mesi fa. Qualcuno si ricorda qualcosa?”
“Sto leggendo gli acceptance test. Rifammi la domanda tra qualche minuto.”
“Panico: non trovo più i miei appunti. Come si è deciso di integrare quel processo nella procedura degli acquisti?”
“Sto leggendo gli acceptance test. Rifammi la domanda tra qualche minuto.”
“Panico: ci siamo accorti che questo nuovo processo non va bene. Qualcuno si ricorda com’era prima?”
“Sto leggendo la versione precedente degli acceptance test. Rifammi la domanda tra qualche minuto.”
“Panico: abbiamo una quality issue su questo articolo di due anni fa. Quali erano le norme di compliance implementate a
sistema all’epoca?”
“Sto leggendo quella versione degli acceptance test. Rifammi la domanda tra qualche minuto.”
Perché la memoria è corta
A chi verrà
32
“Ciao! Sono il nuovo sviluppatore. Da quale di queste seicento classi comincio per capirci qualcosa?”
“Lascia stare il codice per ora… qui trovi gli acceptance test. Se fossi in te partirei dalla funzione X”
“E’ cambiato il nostro referente presso il cliente… chi gli spiega come funziona il sistema?”
“Gli mando il link alla wiki, e poi se serve qualche approfondimento ci parlo direttamente”
Ai posteri la facile sentenza
Restiamo in contatto
Condividiamo i nostri esperimenti
34
Restiamo in contatto
Condividiamo i nostri esperimenti
Indirizzo
V.le Venezia 111
33100 Udine (UD)
Telefono
0432 23 48 38
Email / Website
gmarchetti@emme4.com
www.emme4.com
35
La mia prima scelta La mia prima scelta
WTF
...forse l’avevo già fatta
La mia prima scelta
ok...
c’è un dannato bug nella
funzione di ranking
Letture
“Non ti preoccupare mai della teoria fintantoché il sistema fa ciò che si è supposto faccia” – Robert A. Heinlein
36
By Example al quadrato Alla radice del problema Se non siete convinti
Testimonianze convincenti dalla
trincea!
Letture
“In teoria, la pratica e la teoria rappresentano la stessa cosa. In pratica ciò non è vero” – Yogi Berra

Contenu connexe

Similaire à ATDD - Acceptance Test Driven Development

Progettazione di Cartella Clinica Informatizzata
Progettazione di Cartella Clinica InformatizzataProgettazione di Cartella Clinica Informatizzata
Progettazione di Cartella Clinica InformatizzataRiccardo Ghignoni
 
Come applicare il listening alla seo
Come applicare il listening alla seoCome applicare il listening alla seo
Come applicare il listening alla seoSQcuola di Blog
 
BDD in DDD
BDD in DDDBDD in DDD
BDD in DDDoehsani
 
I 7 fondamentali per approcciare al design for additive manufacturing
I 7 fondamentali per approcciare al design for additive manufacturingI 7 fondamentali per approcciare al design for additive manufacturing
I 7 fondamentali per approcciare al design for additive manufacturingSimone Ravaglia
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliStefano Leli
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2Giulio Roggero
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
BDD & design paradoxes appunti devoxx2012
BDD & design paradoxes   appunti devoxx2012BDD & design paradoxes   appunti devoxx2012
BDD & design paradoxes appunti devoxx2012Nicola Pedot
 
Master presentazione 1 come nasce un'idea
Master presentazione 1   come nasce un'ideaMaster presentazione 1   come nasce un'idea
Master presentazione 1 come nasce un'ideasculling77
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshopGiulio Roggero
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Giulio Roggero
 
Ascari Project (discorso)
Ascari Project (discorso)Ascari Project (discorso)
Ascari Project (discorso)Gabriele Genta
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise softwareAlberto Brandolini
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 

Similaire à ATDD - Acceptance Test Driven Development (20)

Agile software lifecycle
Agile software lifecycleAgile software lifecycle
Agile software lifecycle
 
Progettazione di Cartella Clinica Informatizzata
Progettazione di Cartella Clinica InformatizzataProgettazione di Cartella Clinica Informatizzata
Progettazione di Cartella Clinica Informatizzata
 
Come applicare il listening alla seo
Come applicare il listening alla seoCome applicare il listening alla seo
Come applicare il listening alla seo
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 
BDD in DDD
BDD in DDDBDD in DDD
BDD in DDD
 
I 7 fondamentali per approcciare al design for additive manufacturing
I 7 fondamentali per approcciare al design for additive manufacturingI 7 fondamentali per approcciare al design for additive manufacturing
I 7 fondamentali per approcciare al design for additive manufacturing
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie Agili
 
Agile UX - AR Meetup
Agile UX - AR MeetupAgile UX - AR Meetup
Agile UX - AR Meetup
 
Le 12 pratiche
Le 12 praticheLe 12 pratiche
Le 12 pratiche
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
TDD - una introduzione
TDD -  una introduzioneTDD -  una introduzione
TDD - una introduzione
 
BDD & design paradoxes appunti devoxx2012
BDD & design paradoxes   appunti devoxx2012BDD & design paradoxes   appunti devoxx2012
BDD & design paradoxes appunti devoxx2012
 
Master presentazione 1 come nasce un'idea
Master presentazione 1   come nasce un'ideaMaster presentazione 1   come nasce un'idea
Master presentazione 1 come nasce un'idea
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshop
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!
 
Ascari Project (discorso)
Ascari Project (discorso)Ascari Project (discorso)
Ascari Project (discorso)
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise software
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 

ATDD - Acceptance Test Driven Development

  • 1. Acceptance Test Driven Development Giorgio Marchetti
  • 2. 2 “Mi serve per domani, ma è facile…” Ho un elenco di scontrini. Obiettivo Nel caso degli scontrini con cross selling (ossia con prodotti appartenenti a categorie diverse, ma acquistati nella stessa transazione), voglio sapere quali scontrini contengono la categoria B e la categoria W e che altre categorie contengono
  • 3. 3 “Fatto!” • Welcome Change: siamo un team agile, il cambiamento è il nostro pane quotidiano • Delight your customer: soddisfare il cliente è la nostra priorità • Feel good!: detto, fatto… Flash Gordon? Sei fuori!
  • 4. 4 “Però non mi torna” Ad esempio: lo scontrino 43136 contiene sia B (tre referenze) che C (una referenza) ma non compare tra i risultati Perché?
  • 5. Agenda di oggi Introduzione Cos’è ATDD 5 La matrice dei test Dov’è ATDD La Triade Chi fa ATDD Test-first! Test-when??!! Quando si fa ATDD A chi serve veramente? Perché si fa ATDD Restiamo in contatto Condividiamo i nostri esperimenti
  • 7. Quando l’incertezza è bassa e la conoscenza del dominio alta, l’enfasi è sulla conformità.
  • 8. Quando gli obiettivi sono chiari, ma non esiste una soluzione nota, l’enfasi è sulla fattibilità.
  • 9. Quando gli obiettivi sono mutevoli o incerti, l’enfasi è sull’apprendimento
  • 10. Requisiti testati e testabili 10  Gli AT non sono test di accettazione tradizionali Non sono eseguiti dall’utente finale dopo l’implementazione, al fine di verificare se il sistema funziona secondo le specifiche contrattualizzate  Gli AT non sono System Tests Non sono test scritti dai tester leggendo il documento dei requisiti  Gli AT non sono Acceptance Criteria Non sono informali  Gli AT sono indipendenti dall’implementazione Validano innanzitutto i requisiti, e poi possono essere usati per testare l’implementazione  Gli AT sono definiti collaborativamente Nascono dalla stretta collaborazione tra cliente/utente, sviluppatore e tester e sono il pilastro su cui fondare una comune comprensione del dominio dell’applicazione Ok, I want to do the thing right, but how I know it is the right thing?
  • 11. L’albero della conoscenza 11 … dei requisiti DDD Specification by Example BDD Executable Specifications Evans Adzic North Beck / XP
  • 12. Tanti nomi, una sola cosa? 12  ATDD – Acceptance Test Driven Development: Il focus è sul concetto di “accettazione” e su quello di verifica. E’ naturale il nesso con i cosiddetti Acceptance Criteria, che sono parte essenziale della DoR (Definition of Ready) e della DoD (Definition of Done)  BDD – Behaviour Driven Development (North): L’attenzione è sul comportamento del sistema. È forse l’acronimo più popolare.  Specification by Example (Adzic): La definizione di Adzic si libera del “DD” e mette al centro il processo di costruzione delle specifiche tramite esempi  Executable Specifications: Qui l’accento è sulla “specifica” come vero e proprio test eseguibile e automatico  DDD – Domain Driven Design: Ubiquitous language! Conoscere il dominio per avere il dominio Una questione di punti di vista
  • 13. La matrice dei test Dov’è ATDD
  • 14. ATs do not indicate how to design a solution. Rather, they are a communication mechanism. Ken Pugh
  • 15. Altough the test are absolute (…) they also form a point of discussion between the customer and the engineers. Ken Pugh
  • 17. 17 Ecco la nostra triade Senza dimenticare il “quarto uomo” Mario Volubile Luca Codice Mara Scrupoli Aldo Portafogli Stakeholder Developer Tester Chief Financial Officer
  • 18. Conversations around examples, expressed in a form that can be easily automated, to reduce lost information and misunderstandings John Ferguson Smart
  • 19. Alla ricerca di un linguaggio comune 19 Dal dominio del linguaggio al linguaggio di dominio
  • 20. Gherkin 20  Gherkin Script: GWT Gli script Gherkin sono una forma strutturata di linguaggio quotidiano  Given – indica qualcosa che è dato per vero nello scenario  When – indica un evento nello scenario  Then – indica il risultato atteso  “And” e “But” Per migliorare la leggibilità sono supportate anche le parole chiave “And” e “But”  Comprensibilità Le clausole sono espresse nel linguaggio e con la sintassi naturali e quindi sono comprensibili anche da chi si occupa di business e non di coding.  DSL Le clausole Gherkin finiscono per costituire un “Domain Specific Language” del tutto indipendente dal linguaggio di programmazione usato per l’implementazione Dato che è scritto in Gherkin, quando leggo lo scenario, allora lo capisco
  • 21. Tabelle 21 Anche il colpo d’occhio vuole la sua parte
  • 23. Subito! 23  Identificare i desirements  Associarli ad un obiettivo di business  Sfidarli “by example”  “Se sopravvivono allora vanno bene” (Charles Darwin… credo) Un computer farà quello che gli dici, non quello che vuoi… meglio dirla giusta
  • 24. Approccio outside-in 24 Iniziare dalla fine per iniziare bene
  • 25. Cosa si può ottenere 25 Fare attenzione agli effetti indesiderati
  • 26. Ciclo di sviluppo 26 Sembrava facile….ma poi
  • 28. A chi serve veramente? Perché si fa ATDD
  • 29. Allo stakeholder 29  Dai Desirements ai Requirements, e poi giù fino alle Specifications: non è più un viaggio solitario  Costruire esempi aiuta a chiarire le idee  I casi-limite come strumento di stress dei miei desideri  Come sapere se l’obiettivo è raggiungibile: si può fare, e se sì, costerà tantissimo?  Come sapere se ho ottenuto proprio ciò che mi serve? Idee chiare, amicizia lunga
  • 30. Al team di sviluppo 30  Finalmente sono sicuro che sto implementando la cosa giusta  Il valore di ciò che consegno è stato esplicitato  Posso sapere quando ho finito  Posso sapere se ho rotto qualcosa  Ehi… ma questi sono i regression test… wow!  “Ragazzi, chi si becca il task della documentazione? Ah… non c’è nessun task della documentazione…” Beh sì… ci piace vincere facile
  • 31. A tutti i protagonisti 31 “Panico: dobbiamo rivedere quella funzione sviluppata tre mesi fa. Qualcuno si ricorda qualcosa?” “Sto leggendo gli acceptance test. Rifammi la domanda tra qualche minuto.” “Panico: non trovo più i miei appunti. Come si è deciso di integrare quel processo nella procedura degli acquisti?” “Sto leggendo gli acceptance test. Rifammi la domanda tra qualche minuto.” “Panico: ci siamo accorti che questo nuovo processo non va bene. Qualcuno si ricorda com’era prima?” “Sto leggendo la versione precedente degli acceptance test. Rifammi la domanda tra qualche minuto.” “Panico: abbiamo una quality issue su questo articolo di due anni fa. Quali erano le norme di compliance implementate a sistema all’epoca?” “Sto leggendo quella versione degli acceptance test. Rifammi la domanda tra qualche minuto.” Perché la memoria è corta
  • 32. A chi verrà 32 “Ciao! Sono il nuovo sviluppatore. Da quale di queste seicento classi comincio per capirci qualcosa?” “Lascia stare il codice per ora… qui trovi gli acceptance test. Se fossi in te partirei dalla funzione X” “E’ cambiato il nostro referente presso il cliente… chi gli spiega come funziona il sistema?” “Gli mando il link alla wiki, e poi se serve qualche approfondimento ci parlo direttamente” Ai posteri la facile sentenza
  • 33. Restiamo in contatto Condividiamo i nostri esperimenti
  • 34. 34 Restiamo in contatto Condividiamo i nostri esperimenti Indirizzo V.le Venezia 111 33100 Udine (UD) Telefono 0432 23 48 38 Email / Website gmarchetti@emme4.com www.emme4.com
  • 35. 35 La mia prima scelta La mia prima scelta WTF ...forse l’avevo già fatta La mia prima scelta ok... c’è un dannato bug nella funzione di ranking Letture “Non ti preoccupare mai della teoria fintantoché il sistema fa ciò che si è supposto faccia” – Robert A. Heinlein
  • 36. 36 By Example al quadrato Alla radice del problema Se non siete convinti Testimonianze convincenti dalla trincea! Letture “In teoria, la pratica e la teoria rappresentano la stessa cosa. In pratica ciò non è vero” – Yogi Berra