SlideShare a Scribd company logo
1 of 23
Specification by Example w praktyce
Krzysztof Trzewiczek
Singup, Business Analysis Consulting
Wielkie przegrane
Commercial organisations across the European Union lost 142 billion EUR on
failed IT projects in 2004 alone, mostly because of poor alignment with
business objectives or business strategies becoming obsolete during delivery.
Gojko Adzic, Impact Mapping
DSL czytelny dla biznesu
If business people are able to look at the DSL code and understand it, then we can
build a deep and rich communication channel between software development
and the underlying domain.
Martin Fowler, http://martinfowler.com/bliki/BusinessReadableDSL.html
Język Gherkin
Czytelny dla biznesu DSL, który pozwala opisywać zachowanie aplikacji nie
dotykając tego, jak to zachowanie jest zaimplementowane.
Gherkin służy dwóm celom — dokumentacji i testom automatycznym.
Cucumber's GitHub Wiki
Gherkin na GitHubie
Scenariusz o nazwie 31 posiada:
z backgroundem, który posiada:
w pliku długości 3994 lini kodu.
194
10
84
90
Linie kodu
When
Then
And
58
3
14
Linie kodu
Given
And
Gherkin na GitHubie (ciąg dalszy)
Scenariusz o nazwie I can create a booking posiada:
w pliku zawierającym tylko jeden dodatkowy scenariusz:
I can create a booking programmatically.
124
4
9
28
33
Linie kodu
Given
When
Then
And
Specyfikuj biznes!
Specyfikacja to kanał łączący biznes z ekipą wdrażającą produkt.
Właśnie z tego powodu specyfikacja powinna odzwierciedlać
problemy biznesowe, które aplikacja stara się rozwiązać,
a nie techniczne zachowanie systemu.
Co Driven Development?
BDD nie powinno oznaczać Behavior-Driven Development.
BDD powinno oznaczać Business-Driven Development.
Piekło nazw i skrótowców
The fact that the same practices have so many names reflects the huge amount
of innovation in this field at the moment. It also reflects the fact that the practices
described in this book impact the ways teams approach specifications,
development, and testing.
Gojko Adzic, Specification by Example
Przykładowa funkcjonalność
Dashboard dla doradcy ubezpieczeniowego. W praktyce, doradca
reprezentuje swoich klientów przed firmami ubezpieczeniowymi
oraz zarządza ich umowami.
Funkcjonalność, o której mowa, to edycja profilu użytkownika.
Typowe Spec by Example
Feature: Profile settings
In order to edit my personal data
As a regular user
I want to be able to update my user profile
Scenario: I want to change my name
Given I go to the landing page
And I sign in
And I click on the “Edit your profile” button
When I change my name to “Jane Doe”
And I submit the form
Then my name is changed to Jane Doe
Scenario: I want to change my email
-- code hidden --
Scenario: I want to change my password
-- code hidden --
@edge-case
Scenario: My new email is already taken
-- code hidden --
Problemy
1. Wyciek interfejsu do specyfikacji
2. Skupienie się na rozwiązaniach, a nie wymaganiach
3. Specyfikacja opisuje strukturę systemu, a nie zasady biznesowe
Problem 1: Interfejs w specyfikacji
Feature: Profile settings
In order to edit my personal data
As a regular user
I want to be able to update my user profile
Scenario: I want to change my name
Given I go to the landing page
And I sign in
And I click on the “Edit your profile” button
When I change my name to “Jane Doe”
And I submit the form
Then my name is changed to Jane Doe
Scenario: I want to change my email
-- code hidden --
Scenario: I want to change my password
-- code hidden --
@edge-case
Scenario: My new email is already taken
-- code hidden --
Problem 2: Rozwiązania zamiast wymagań
Feature: Profile settings
In order to edit my personal data
As a regular user
I want to be able to update my user profile
Scenario: I want to change my name
Given I go to the landing page
And I sign in
And I click on the “Edit your profile” button
When I change my name to “Jane Doe”
And I submit the form
Then my name is changed to Jane Doe
Scenario: I want to change my email
-- code hidden --
Scenario: I want to change my password
-- code hidden --
@edge-case
Scenario: My new email is already taken
-- code hidden --
Problem 3: Struktura systemu, a nie biznesu
Feature: Profile settings
In order to edit my personal data
As a regular user
I want to be able to update my user profile
Scenario: I want to change my name
Given I go to the landing page
And I sign in
And I click on the “Edit your profile” button
When I change my name to “Jane Doe”
And I submit the form
Then my name is changed to Jane Doe
Scenario: I want to change my email
-- code hidden --
Scenario: I want to change my password
-- code hidden --
@edge-case
Scenario: My new email is already taken
-- code hidden --
Pierwsza iteracja zmian: Rozwiązujemy
problemy
1. Rozdzielenie tożsamości biznesowej od użytkownika
2. Pozbycie się interfejsu użytkownika ze specyfikacji
3. Wprowadzenie kontekstu biznesowego produktu
Krok 1: Rozdzielenie tożsamości biznesowej
od użytkownika
Ability: Keeping business identity up to date
In order to keep my business identity up to date
As a business consultant
I want to edit my personal data
Business Need: Account security
In order to make sure my account is secure
As a user
I want to change my password
Krok 2: Pozbycie się interfejsu użytkownika
ze specyfikacji
Scenario: I need to change my name
Given I need to update my business identity
When I change my name to Tamara Ackerman-Smith
Then all the messages to my clients are signed as “Tamara Ackerman-Smith”
Scenario: I need to change my email
Given my account uses tamara.ackerman@asia.ibm.com email
And I need to update my business identity
When I change my email to tamara.ackerman@europe.ibm.com
Then from now on, all the messages to my clients are sent from
tamara.ackerman@europe.ibm.com address
And all my clients are notified about my new email
Scenario: My new email is already taken
-- code hidden --
Krok 3: Wprowadzenie kontekstu
biznesowego produktu
Ability: Keeping business identity up to date
In order to keep my business identity up to date
As a business consultant
I want to edit my personal data
Profile settings are strictly connected to work-related activities of business
consultants. Their clients recognize them by their names; in case of longer
relationships, they type their emails almost automatically.
Scenario: I need to change my name
Tamara Ackerman changes her name to Tamara Ackerman-Smith.
-- code hidden --
Scenario: I need to change my email
Tamara Ackerman is transferred to the European branch from the Asian branch.
-- code hidden --
Scenario: My new email is already taken
Tamara Ackerman is transferred to the European branch. Her new management
created a separate account for her, not knowing she’s already got one.
-- code hidden --
Druga iteracja zmian: odkrywanie ukrytych
możliwości
Business Need: Account security
In order to make sure my account is secure
As a user
I want to change my password
To ensure that every user is treated with the best care possible when she’s
concerned about her account’s security, we use the customer service department
and the live chat feature. Our consultants can not only change her password,
but also educate her about security and make sure her concerns are addressed
adequately.
Scenario: I need to change my password
Given I need to change my password
When I contact with the customer service department
Then my ticket gets the highest priority
Co udało się osiągnąć?
1. Wprowadzić do wymagań kontekst biznesowy w jakim produkt
funkcjonuje.
2. Pozbyć się rozwiązań ze specyfikacji wymagań.
3. Wykorzystać istniejące rozwiązania, by osiągnąć te same cele biznesowe
mniejszym nakładem pracy zespołu.
Będzie książka kucharska
Kamil Nicieja, Krzysztof Trzewiczek
Gherkin Patterns: Practicing Specification by Example
Writing
Fake-world data
Almost equal
Quality feature
Asteroids
Communication
Various artists
Conversation token
Hands-off business
Process
Iterative process
Too many changes
Automation for automation’s sake
Traceability
30 praktycznych przykładów
11 wzorców specyfikacji
3 obszary zastosowania
Krzysztof Trzewiczek
krzysztof@singup.pl

More Related Content

Viewers also liked

Viewers also liked (20)

[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
 
Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
 
Kim jest Agile Coach?
Kim jest Agile Coach?Kim jest Agile Coach?
Kim jest Agile Coach?
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
 
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
 
Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
 
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
 
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
 
Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.
 
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 

Similar to [QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce

Similar to [QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce (6)

Behat
BehatBehat
Behat
 
Business Nerds informacje
Business Nerds informacjeBusiness Nerds informacje
Business Nerds informacje
 
Custom policies w Azure AD B2C jak je tworzyć, żeby nie zwariować?
Custom policies w Azure AD B2C jak je tworzyć, żeby nie zwariować?Custom policies w Azure AD B2C jak je tworzyć, żeby nie zwariować?
Custom policies w Azure AD B2C jak je tworzyć, żeby nie zwariować?
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Analiza wpływu - beIT
Analiza wpływu - beITAnaliza wpływu - beIT
Analiza wpływu - beIT
 
Bezpłatna chmura obliczeniowa dla organizacji pozarządowych
Bezpłatna chmura obliczeniowa dla organizacji pozarządowychBezpłatna chmura obliczeniowa dla organizacji pozarządowych
Bezpłatna chmura obliczeniowa dla organizacji pozarządowych
 

More from Future Processing

More from Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce

  • 1. Specification by Example w praktyce Krzysztof Trzewiczek Singup, Business Analysis Consulting
  • 2. Wielkie przegrane Commercial organisations across the European Union lost 142 billion EUR on failed IT projects in 2004 alone, mostly because of poor alignment with business objectives or business strategies becoming obsolete during delivery. Gojko Adzic, Impact Mapping
  • 3. DSL czytelny dla biznesu If business people are able to look at the DSL code and understand it, then we can build a deep and rich communication channel between software development and the underlying domain. Martin Fowler, http://martinfowler.com/bliki/BusinessReadableDSL.html
  • 4. Język Gherkin Czytelny dla biznesu DSL, który pozwala opisywać zachowanie aplikacji nie dotykając tego, jak to zachowanie jest zaimplementowane. Gherkin służy dwóm celom — dokumentacji i testom automatycznym. Cucumber's GitHub Wiki
  • 5. Gherkin na GitHubie Scenariusz o nazwie 31 posiada: z backgroundem, który posiada: w pliku długości 3994 lini kodu. 194 10 84 90 Linie kodu When Then And 58 3 14 Linie kodu Given And
  • 6. Gherkin na GitHubie (ciąg dalszy) Scenariusz o nazwie I can create a booking posiada: w pliku zawierającym tylko jeden dodatkowy scenariusz: I can create a booking programmatically. 124 4 9 28 33 Linie kodu Given When Then And
  • 7. Specyfikuj biznes! Specyfikacja to kanał łączący biznes z ekipą wdrażającą produkt. Właśnie z tego powodu specyfikacja powinna odzwierciedlać problemy biznesowe, które aplikacja stara się rozwiązać, a nie techniczne zachowanie systemu.
  • 8. Co Driven Development? BDD nie powinno oznaczać Behavior-Driven Development. BDD powinno oznaczać Business-Driven Development.
  • 9. Piekło nazw i skrótowców The fact that the same practices have so many names reflects the huge amount of innovation in this field at the moment. It also reflects the fact that the practices described in this book impact the ways teams approach specifications, development, and testing. Gojko Adzic, Specification by Example
  • 10. Przykładowa funkcjonalność Dashboard dla doradcy ubezpieczeniowego. W praktyce, doradca reprezentuje swoich klientów przed firmami ubezpieczeniowymi oraz zarządza ich umowami. Funkcjonalność, o której mowa, to edycja profilu użytkownika.
  • 11. Typowe Spec by Example Feature: Profile settings In order to edit my personal data As a regular user I want to be able to update my user profile Scenario: I want to change my name Given I go to the landing page And I sign in And I click on the “Edit your profile” button When I change my name to “Jane Doe” And I submit the form Then my name is changed to Jane Doe Scenario: I want to change my email -- code hidden -- Scenario: I want to change my password -- code hidden -- @edge-case Scenario: My new email is already taken -- code hidden --
  • 12. Problemy 1. Wyciek interfejsu do specyfikacji 2. Skupienie się na rozwiązaniach, a nie wymaganiach 3. Specyfikacja opisuje strukturę systemu, a nie zasady biznesowe
  • 13. Problem 1: Interfejs w specyfikacji Feature: Profile settings In order to edit my personal data As a regular user I want to be able to update my user profile Scenario: I want to change my name Given I go to the landing page And I sign in And I click on the “Edit your profile” button When I change my name to “Jane Doe” And I submit the form Then my name is changed to Jane Doe Scenario: I want to change my email -- code hidden -- Scenario: I want to change my password -- code hidden -- @edge-case Scenario: My new email is already taken -- code hidden --
  • 14. Problem 2: Rozwiązania zamiast wymagań Feature: Profile settings In order to edit my personal data As a regular user I want to be able to update my user profile Scenario: I want to change my name Given I go to the landing page And I sign in And I click on the “Edit your profile” button When I change my name to “Jane Doe” And I submit the form Then my name is changed to Jane Doe Scenario: I want to change my email -- code hidden -- Scenario: I want to change my password -- code hidden -- @edge-case Scenario: My new email is already taken -- code hidden --
  • 15. Problem 3: Struktura systemu, a nie biznesu Feature: Profile settings In order to edit my personal data As a regular user I want to be able to update my user profile Scenario: I want to change my name Given I go to the landing page And I sign in And I click on the “Edit your profile” button When I change my name to “Jane Doe” And I submit the form Then my name is changed to Jane Doe Scenario: I want to change my email -- code hidden -- Scenario: I want to change my password -- code hidden -- @edge-case Scenario: My new email is already taken -- code hidden --
  • 16. Pierwsza iteracja zmian: Rozwiązujemy problemy 1. Rozdzielenie tożsamości biznesowej od użytkownika 2. Pozbycie się interfejsu użytkownika ze specyfikacji 3. Wprowadzenie kontekstu biznesowego produktu
  • 17. Krok 1: Rozdzielenie tożsamości biznesowej od użytkownika Ability: Keeping business identity up to date In order to keep my business identity up to date As a business consultant I want to edit my personal data Business Need: Account security In order to make sure my account is secure As a user I want to change my password
  • 18. Krok 2: Pozbycie się interfejsu użytkownika ze specyfikacji Scenario: I need to change my name Given I need to update my business identity When I change my name to Tamara Ackerman-Smith Then all the messages to my clients are signed as “Tamara Ackerman-Smith” Scenario: I need to change my email Given my account uses tamara.ackerman@asia.ibm.com email And I need to update my business identity When I change my email to tamara.ackerman@europe.ibm.com Then from now on, all the messages to my clients are sent from tamara.ackerman@europe.ibm.com address And all my clients are notified about my new email Scenario: My new email is already taken -- code hidden --
  • 19. Krok 3: Wprowadzenie kontekstu biznesowego produktu Ability: Keeping business identity up to date In order to keep my business identity up to date As a business consultant I want to edit my personal data Profile settings are strictly connected to work-related activities of business consultants. Their clients recognize them by their names; in case of longer relationships, they type their emails almost automatically. Scenario: I need to change my name Tamara Ackerman changes her name to Tamara Ackerman-Smith. -- code hidden -- Scenario: I need to change my email Tamara Ackerman is transferred to the European branch from the Asian branch. -- code hidden -- Scenario: My new email is already taken Tamara Ackerman is transferred to the European branch. Her new management created a separate account for her, not knowing she’s already got one. -- code hidden --
  • 20. Druga iteracja zmian: odkrywanie ukrytych możliwości Business Need: Account security In order to make sure my account is secure As a user I want to change my password To ensure that every user is treated with the best care possible when she’s concerned about her account’s security, we use the customer service department and the live chat feature. Our consultants can not only change her password, but also educate her about security and make sure her concerns are addressed adequately. Scenario: I need to change my password Given I need to change my password When I contact with the customer service department Then my ticket gets the highest priority
  • 21. Co udało się osiągnąć? 1. Wprowadzić do wymagań kontekst biznesowy w jakim produkt funkcjonuje. 2. Pozbyć się rozwiązań ze specyfikacji wymagań. 3. Wykorzystać istniejące rozwiązania, by osiągnąć te same cele biznesowe mniejszym nakładem pracy zespołu.
  • 22. Będzie książka kucharska Kamil Nicieja, Krzysztof Trzewiczek Gherkin Patterns: Practicing Specification by Example Writing Fake-world data Almost equal Quality feature Asteroids Communication Various artists Conversation token Hands-off business Process Iterative process Too many changes Automation for automation’s sake Traceability 30 praktycznych przykładów 11 wzorców specyfikacji 3 obszary zastosowania